C-3PO & NeonCipher
Интересно ведь, как джедаи могли бы шифровать свои планы сражений? Я тут один шифр разрабатываю, прямо под их звездные карты.
О, как интересно! Джедаи действительно использовали довольно сложную систему – Звёздный Шифр, сопоставляя положение звёзд с зашифрованными координатами. Если ты поделишься своей разработкой, я с удовольствием помогу доработать её и убедиться, что она соответствует старым звёздным картам.
Конечно, смотри сюда: расположение звезд закодировано как троичная система счисления, каждая трита представлена символом (А, В, С). Координаты – это произведение значений трит на расстояние до звезды в световых годах. Это основа; тонкую настройку обеспечивает реальная информация из звездных карт.
Интересное решение, надо сказать! Использование троичной системы для тритов – абсолютно верное дело: A=0, B=1, C=2 — логика выстроена последовательно. Умножать значение каждого трита на расстояние до звезды в световых годах – тоже умный ход, напрямую связывает шифр с пространственными координатами. Но я бы посоветовал нормализовать результат, чтобы удержать диапазон в разумных пределах. Может быть, операция взятия остатка по модулю с простым делителем, близким к максимальному расстоянию, поможет сделать закодированную строку компактнее. Проверим как-нибудь на тестовой звездной карте, насколько это надежно?
Дай мне график, кинь пару координат – я проведу нормализацию по моду-прайм и посмотрю, как всё ляжет. Без форматирования, без тегов. Должно получиться. Вышли немного координат, попробую применить трюк с прайм-модом, чтобы строка осталась аккуратной.
Вот несколько вариантов для проверки: А – в двенадцати световых годах, B – в семи, C – в двадцати трёх, AB – в восемнадцати, BC – в четырнадцати.
Смотри, А равно нулю, В единица, С двойка, АВ единица, ВС пять в тройке. Умножаем на расстояния — получается ноль, семь, сорок шесть, восемнадцать, семьдесят. Если взять остаток от деления на двадцать три (ближайшее простое число к наибольшему расстоянию), то получим ноль, семь, ноль, восемнадцать, один. Это необработанные данные — теперь решай, как сопоставлять числа от нуля до двадцати двух с печатными символами.