コード例 #1
0
        public void StringifyLeastFrequent_BuildsString_BasedOnFrequencies_InColumns()
        {
            var expected = "advent";

            var actual = LetterFrequency.StringifyLeastFrequent(() => TestCase.Data);

            Assert.Equal(expected, actual);
        }
コード例 #2
0
        public async Task <string> Handle(CalcFrequencyCommand request, CancellationToken cancellationToken)
        {
            var posts = await _postService.GetLastPostInfoAsync(request.UserName, COUNT_POST);

            var resultFrequency = new LetterFrequency().Calc(posts.Select(p => p.Text));
            var result          = FormatterFactory.GetFormatter().PrepareString(resultFrequency.allLetter, resultFrequency.letterCounter);

            var statisticMessage = $"{request.UserName}, статистика для последних {COUNT_POST} постов: {result}";
            await _postService.CreatePostAsync(statisticMessage, request.UserName);

            return(result);
        }
コード例 #3
0
        public static string Solve(string CipherText, Mode mode = Mode.Alphabet)
        {
            int             bestKey   = 0;
            double          bestScore = -1;
            Language        language  = Language.English;
            LetterFrequency frequency = LetterFrequency.GenerateFrequency(CipherText);

            for (int keyAttempt = 0; keyAttempt < (mode == Mode.Alphabet ? 26 : 256); keyAttempt++)
            {
                LetterFrequency tempFrequency = frequency.Shift(-keyAttempt, mode != Mode.Alphabet);
                double          tempScore     = -1;
                double          tempID        = -1;
                if (mode == Mode.CharacterUTF8)
                {
                    for (int ID = 0; ID < LetterFrequency.AllLanguages.Length; ID++)
                    {
                        double langScore = tempFrequency.Compare(LetterFrequency.AllLanguages[ID]);
                        if (langScore > tempScore)
                        {
                            tempScore = langScore;
                            tempID    = ID;
                        }
                    }
                }
                else
                {
                    for (int ID = 0; ID < LetterFrequency.AlphaLanguages.Length; ID++)
                    {
                        double langScore = tempFrequency.Compare(LetterFrequency.AlphaLanguages[ID]);
                        if (langScore > tempScore)
                        {
                            tempScore = langScore;
                            tempID    = ID;
                        }
                    }
                }
                if (tempScore > bestScore)
                {
                    bestScore = tempScore;
                    language  = (Language)tempID;
                    bestKey   = keyAttempt;
                }
            }

            string output = "The best language of choice was: " + language.ToString() + "\n";

            output += "The best key of choice was " + bestKey + " with a score of " + bestScore + "\nDecoded message is:\n";
            output += Decrypt(CipherText, bestKey, mode);
            return(output);
        }
コード例 #4
0
        public static void Problem6()
        {
            var s = LetterFrequency.StringifyLeastFrequent(() => FileStringReader.Read("P6.txt"));

            Console.WriteLine("Frequented string = {0}", s);
        }