Exemple #1
0
        /// <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));
        }