diff --git a/Yavsc.Abstract/IT/CodeFromChars.cs b/Yavsc.Abstract/IT/CodeFromChars.cs new file mode 100644 index 00000000..cd1864cc --- /dev/null +++ b/Yavsc.Abstract/IT/CodeFromChars.cs @@ -0,0 +1,62 @@ +using System; +using System.Collections; +using System.Collections.Generic; + +namespace Yavsc.Abstract.IT +{ + + public class CharArray : List, IEnumerable, IList + { + + public CharArray (char [] charArray) : base (charArray) + { + + } + public CharArray (IList word): base(word) { + + } + public CharArray (IEnumerable word): base(word) { + + } + + public IList Aggregate(char other) + { + this.Add(other); + return this; + } + + IEnumerator IEnumerable.GetEnumerator() + { + return GetEnumerator(); + } + } + + public class CodeFromChars : List, ICode + { + public void AddLetter(IEnumerable letter) + { + var candide = new CharArray(letter); + + // TODO build new denied letters: compute the automate + + Add(candide); + } + + + public bool Validate() + { + throw new NotImplementedException(); + } + + IEnumerator> IEnumerable>.GetEnumerator() + { + return GetEnumerator(); + } + + IEnumerator IEnumerable.GetEnumerator() + { + return GetEnumerator(); + } + + } +} \ No newline at end of file diff --git a/Yavsc.Abstract/IT/ICode.cs b/Yavsc.Abstract/IT/ICode.cs index 925a7f9f..c190065a 100644 --- a/Yavsc.Abstract/IT/ICode.cs +++ b/Yavsc.Abstract/IT/ICode.cs @@ -1,22 +1,24 @@ using System.Collections.Generic; -namespace Yavsc +namespace Yavsc.Abstract.IT { - public interface ILetter : IEqualityComparer { - } - public interface IWord where TLetter : ILetter - { - IWord Aggregate(TLetter other); - } + // un code est, parmis les ensembles de suites de signes, + // ceux qui n'ont qu'une seule suite de suites pouvant représenter toute suite de suite de signes - public interface ICode : IEnumerable where TLetter : ILetter + public interface ICode : IEnumerable> { /// - /// Checks that (b!=c) => a.b != a.c + /// Checks false that a letter list combinaison correspond to another one /// /// bool Validate(); - IWord CreateWord(TLetter letter); + /// + /// Defines a new letter in this code, + /// as an enumerable of TLetter + /// + /// + /// + void AddLetter(IEnumerable letter); } } diff --git a/Yavsc.Server/Models/IT/Modeling/Code.cs b/Yavsc.Server/Models/IT/Modeling/Code.cs deleted file mode 100644 index 378421b8..00000000 --- a/Yavsc.Server/Models/IT/Modeling/Code.cs +++ /dev/null @@ -1,39 +0,0 @@ -using System; -using System.Collections; -using System.Collections.Generic; - -namespace Yavsc.Models.IT.Modeling -{ - public abstract class Code : ICode where TLetter : ILetter - { - IEnumerator IEnumerable.GetEnumerator() - { - throw new NotImplementedException(); - } - - /// - /// !a Count^3 task len - /// - /// - public bool Validate() - { - foreach (var letter in this) { - var word = this.CreateWord(letter); - foreach (var other in this) { - IWord first = word.Aggregate(other); - foreach (var tierce in this) - { - var otherword = word.Aggregate(tierce); - if (first.Equals(otherword)) - return false; - } - } - } - return true; - } - - public abstract IEnumerator GetEnumerator(); - - public abstract IWord CreateWord(TLetter letter); - } -} diff --git a/Yavsc.Server/Models/IT/Modeling/Letter.cs b/Yavsc.Server/Models/IT/Modeling/Letter.cs deleted file mode 100644 index 525c0eec..00000000 --- a/Yavsc.Server/Models/IT/Modeling/Letter.cs +++ /dev/null @@ -1,14 +0,0 @@ - -namespace Yavsc.Models.IT.Modeling -{ - public abstract class Letter : ILetter - { - public abstract bool Equals(T x, T y); - - public int GetHashCode(T obj) - { - return obj.GetHashCode(); - } - - } -}