/// <summary> /// Creates a file with all arrangements in the order that is used for the alphabet of the classifier. /// </summary> public IEnumerable <IList <Arrangement> > Create() { var orderedPath = Path.Combine(_workingDirectory, "OrderedArrangements.txt"); if (File.Exists(orderedPath)) { return(File.ReadAllLines(orderedPath).Select(Arrangement.MultipleFromString).Select(a => a.ToList())); } var words = new ArrangementWordCreator(_workingDirectory).CreateUnordered(); var classifierBuilder = new ClassifierBuilder(); classifierBuilder.SetLanguage(words); var nullTransitions = CountNullTransitions(classifierBuilder); var ordered = nullTransitions.Select((n, i) => new { n, i }).OrderBy(p => p.n).Select(p => p.i).ToList(); var oldArrangements = new CompactAnalyzedDataCreator(_workingDirectory).GetUniqueArrangements().ToList(); var newArrangements = ordered.Select(i => oldArrangements[i]).ToList(); var lines = newArrangements.Select(a => string.Join("", a)).ToList(); File.WriteAllLines(orderedPath, lines); return(newArrangements); }
private IStateMachineBuilder GetArrangementBuilder() { var language = new ArrangementWordCreator(_workingDirectory).CreateOrdered(); return(GetClassifierBuilder(language)); }