Алфавит действительно зацикливается, то есть буквы в конце алфавита преобразуются в буквы начала алфавита. Например, обозначение ROT2 обозначает сдвиг на 2 позиции, то есть, «а» превращается в «в», «б» в «г», и так далее, и в конце «ю» превращается в «а» а «я» — в «б». Число разных преобразований конечно и зависит от длины алфавита. Для русского языка возможно 32 разных преобразования (преобразования ROT0 и ROT33 сохраняют исходный текст, а дальше начинаются уже повторения). В связи с этим шифр является крайне слабым и исходный текст можно восстановить просто проверив все возможные преобразования.
Алфавит действительно зацикливается, то есть буквы в конце алфавита преобразуются в буквы начала алфавита. Например, обозначение ROT2 обозначает сдвиг на 2 позиции, то есть, «а» превращается в «в», «б» в «г», и так далее, и в конце «ю» превращается в «а» а «я» — в «б». Число разных преобразований конечно и зависит от длины алфавита. Для русского языка возможно 32 разных преобразования (преобразования ROT0 и ROT33 сохраняют исходный текст, а дальше начинаются уже повторения). В связи с этим шифр является крайне слабым и исходный текст можно восстановить просто проверив все возможные преобразования.
ROT1 ЛПВСБ
C#. Пример работы на изображении.
using System;
using System.Linq;
namespace Цифры_в_числе
{
class Program
{
static void Main(string[] args)
{
string numb; bool flag;
do
{
Console.Write("Введите любое целое число: ");
numb = Console.ReadLine();
if (flag = !int.TryParse(numb, out int some))
Console.WriteLine("Не число!");
} while (flag);
if (numb[0] == '-')
numb = numb.Substring(1, numb.Length - 1);
var q = from x in numb
group x by x into g
let count = g.Count()
orderby count descending
select new { Value = g.Key, Count = count };
Console.WriteLine("Правда ли, что все цифры в этом числе одинаковы?");
Console.WriteLine($"ответ: {(q.Count() == 1 ? "Да" : "Нет")}");
}
}
}