Почему 13 мест в ROT13?

Рекс, ты, конечно, открыл интересную дискуссию, но, похоже, ты упустил все возможности - то есть ты, кажется, отвергаешь как (1) рекурсивную логику потребителя при записи и (2) раскрытие класса своего узла отношения более одного градуса.

Или, возможно, вы не полностью исключили (2). Я могу вспомнить еще один подход, который почти столь же выразителен, как метод (или свойство) GetDescendents, но, возможно, не настолько «тяжелый» (в зависимости от формы вашего дерева) ...

from item in AllItems where item.Parent == currentNode select item

и

from item in AllItems where item.Ancestors.Contains(currentNode) select item
7
задан Alex Mcp 19 October 2009 в 15:54
поделиться

4 ответа

Потому что у нее есть приятное свойство быть инволютивным , то есть ROT13 (ROT13 (alphaOnlyString)) = alphaOnlyString.

38
ответ дан 6 December 2019 в 04:45
поделиться

Согласно Википедии:

Сдвиг тринадцати был выбран по сравнению с другими значениями, такими как три, как в исходном шифре Цезаря, потому что тринадцать - это значение, для которого кодирование и декодирование эквивалентны, тем самым обеспечивая удобство использования одной команды для обоих.

12
ответ дан 6 December 2019 в 04:45
поделиться

Вероятно, потому что это его собственный инверс. Один и тот же алгоритм может использоваться как для «шифрования», так и для «дешифрования».

7
ответ дан 6 December 2019 в 04:45
поделиться

Потому что сдвиг на 13 перемещает символы наполовину по алфавиту (в котором 26 знаков). Итак, чтобы вернуться к обычному тексту, вам нужно всего лишь снова сдвинуть его на 13 ходов. Таким образом, вам не нужно иметь отдельные функции для кодирования или декодирования, потому что одна и та же операция будет кодироваться или декодироваться.

7
ответ дан 6 December 2019 в 04:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: