Шифр Цезаря: Как сделать сортировку в шифре, чтобы дешифратор выдал единственно верное решение - 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); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д