Это простой метод шифрования, который использует цифры PI для кодирования сообщения, метод прост:
Ключ - только положительное целое число, которое указывает, где окно начинается тогда:
Получив строку для шифрования, содержащую только строчные буквы, без пробелов, вы берете ее длину, затем вы находите N-ю цифру PI и затем сдвигаете каждую букву вправо на величину, указанную цифрой.
Например, если ключ 2
и я хочу кодировать house
, я беру окно из 5 цифр из второго: 14159
и тогда оно становится:
h -> i
o -> s
u -> v
s -> x
e -> n
a.- Ваша программа / функция / алгоритм получит два параметра: строку, состоящую только из строчных букв без пробелов, и ключ, который будет просто положительным целым числом от 1 (1 относится к 3) до 1000, что может быть больше или менее, поскольку я не совсем уверен, сколько времени потребуется для вычисления PI с указанной точностью, потому что:
b.- Вы должны сами вычислить PI в своем коде, вот аккуратная веб-страница для сравнения с: Pi Day . На входе никогда не должно быть расчета PI за 1000 цифр, что означает, что длина (сообщение) + клавиша <= 1000.
Вычисляя Pi, я имею в виду не кодировать его в вашем коде (глупо для гольф-кода), не использовать ни встроенную константу в вашем коде, ни тригонометрическую идентификацию (2 * acos (0)), ни какие-либо веб-ссылки.
c.- На выходе будет только зашифрованная строка.
Это вопрос кода гольф, короче код выигрывает!
Я приму победный ответ 14 июля 2014 года.
ArcCos(-1)
?Ответы:
CJam - 51
Пример ввода:
Выход:
Это работает для (длина строки) + ключ <= 2000, но довольно медленно для онлайн-переводчика (все еще быстро с Java-интерпретатором).
Вот версия, которая работает до 200, и вы можете попробовать на http://cjam.aditsu.net/, не ожидая слишком долго:
источник
Питон - 370
Хорошо, хороший, наконец , получил пи вещь , работая с благодаря link1 и LINK2 .
Пример вывода:
и другой:
источник
JavaScript - 167
173176Спасибо Михаилу за умное представление полномочий 16.
Это может вычислить PI до 16-й цифры.
Контрольный пример:
источник
m=1
аm<<=4
вместоm='0x1'
иm+=0
? Сохраняет 3 байта.Питон -
321304288285Большая часть гольф-версии легко читается и понимается. Финальная строка показана ниже:
РЕДАКТИРОВАТЬ # 1: упростил мой модуль арифметики.
РЕДАКТИРОВАНИЕ № 2: рефакторинг формулы BBP.
источник
Хаскелл - 265
267байты (без ввода-вывода)p
это версия алгоритма для гольфа, которую можно найти по адресу http://rosettacode.org/wiki/Pi#Haskelle
это функция кодирования:Он не зацикливается, если индекс находится за пределами строчного алфавита. Это означает, что некоторые другие символы могут проскальзывать в закодированной строке:
К сожалению, это занимает несколько секунд со смещениями больше, чем
10 000
для вычисления выходных данных. К счастью, при использовании одного и того же смещения несколько раз, цифры нужно вычислять только в первый раз.Бонус - Расшифровка
Опять же, если мы проверим с
isvxn
:источник
d 2 "isvsn"
должно бытьd 2 "isvxn"
CoffeeScript - 148 символов / байт
Мой первый в истории Code Golf
К сожалению, он не поддерживает перенос (так что в конечном итоге az будет пунктуацией)
Демо на CSSDeck
Вызывается с:
источник