Шифр Цезаря: Как сделать сортировку в шифре, чтобы дешифратор выдал единственно верное решение - C#
Формулировка задачи:
Люди, как сделать сортировку в шифре, чтобы дешифратор выдал единственно верное решение
Нужно как то по этой библиотеке прогнать...
Вот мой код
Листинг программы
- public static string[] errorStrCont = { "гй", "щы", "щю", "щв", "щц", "щж", "щр", "щг", "кг", "гк", "сй", "шы", "шй", "чй", "зй", "бй", "йй", "кй", "жй", "рй", "вй", "лй", "жы", "ыъ", "ъы", "ъь", "йы", "йъ", "жы", "жы", "йй", "шш", "щщ", "ъъ", "ыы", "ьь", "ээ", "аы", "аь", "гъ", "еэ", "йж", "жф", "жч", "жш", "жщ", "зп", "зщ", "йь", "оы", "уы", "уь", "фц", "хщ", "цщ", "цэ", "чщ", "чэ", "шщ", "ьы", "ыэ", "аъ", "иъ", "йъ", "къ", "лъ", "мъ", "оъ", "пъ", "ръ", "уъ", "фъ", "цъ", "чъ", "шъ", "щъ", "ыъ", "ьъ", "эъ" };
- public static char[] errorStrBegin = {'ъ', 'ы', 'ь'};
Листинг программы
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace ConsoleApplication29
- {
- class Program
- {
- static void Main(string[] args)
- {
- Console.WriteLine("Исходный текст: КЭЧУЙЧБЗЪАДЮНЮКБИЭКЗШФДЙНОЮБМЬЙББЙБДИБЗДАКНОПЛЬЖЖ МДЛОКЯМЬРДУБНЖДИОБСЙКЗКЯДЫИЮКБЙЙКЯКПМКЮЙЫ");
- string Text = "КЭЧУЙЧБЗЪАДЮНЮКБИЭКЗШФДЙНОЮБМЬЙББЙБДИБЗДАКНОПЛЬЖЖМДЛОКЯМЬРДУБНЖДИОБСЙКЗКЯДЫИЮКБЙЙКЯКПМКЮЙЫ";
- Console.WriteLine("Укажите сдвиг:");
- int a = int.Parse(Console.ReadLine());
- for (int i = a; i < 32; i++)
- {
- Console.WriteLine(cipher(Text, -i));
- Console.WriteLine("Сдвиг: " + i);
- }
- Console.ReadLine();
- }
- public static string cipher(string s, int shift) //s-это исходный текст, а shift-сдвиг
- {
- StringBuilder sb = new StringBuilder(); // экземпляр класса StringBuilder, программа может изменять исходную строку
- shift = (shift < 0) ? 32 + shift : shift; //для отрицательных смещений
- foreach (char c in s.ToLower()) //пройдемся по всем буквам
- {
- int t;
- t = (((c - 'а') + shift) % 32) + 'а'; // работаем без пробелов
- sb.Append((char)t); //добавим текущий символ к результату и возьмем следующий.
- }
- return sb.ToString(); //вернем сдвинутую строку
- }
- }
- }
Решение задачи: «Шифр Цезаря: Как сделать сортировку в шифре, чтобы дешифратор выдал единственно верное решение»
textual
Листинг программы
- for (int i = a; i < 32; i++)
- {
- string decripted=cipher(Text, i);
- //для всех буквосочетаний проверяем содержится ли оно в результате
- //если такое есть - переходим на следующую итерацию цикла и не выводим строку
- if(errorStrCont.Any(a=>decripted.IndexOf(a)>0)) continue;
- Console.WriteLine(decripted);
- Console.WriteLine("Сдвиг: " + i);
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д