Реалізуйте цей ключовий шифр
Мета
Використовуйте алгоритм (пояснений у розділі Алгоритм) для реалізації певного шифру.
Програма повинна зчитувати вхід з STDIN або найближчого доступного еквівалента, використовувати алгоритм для генерації шифротексту та ключа.
Шифротекст і ключ будуть записані в STDOUT або найближчий доступний еквівалент. Дозволений будь-який формат, доки він видає шифротекст і ключ.
Алгоритм
Перетворіть символи в рядку у відповідні значення ASCII. Наприклад:
Hello -> 72 101 108 108 111
Далі вам потрібно буде згенерувати ключ до тих пір, як рядок із випадковими числами в діапазоні 0-9.
Hello -> 62841
Додайте цілі числа у послідовності випадкових чисел до значень ASCII рядка. У наведених вище прикладах 72 стали б 78, а 101 - 104.
72 + 6 = 78, 101 + 2 = 103, 108 + 8 = 116, etc
Далі конвертуйте нові значення назад у символи. У наведених вище прикладах текст Hello
став Ngtpp
.
Приклади
(Це просто приклади того, як може виглядати вихід. Вихід може і змінюватись.)
Hello World
Lfrlu)_supg
41606984343
This will be encoded
Zhjs$~koo gj$iuhofgj
60104723305544750226
Правила
- Можна припустити, що вхід буде містити лише символи в діапазоні az, AZ та пробілах.
- Подання повинні бути повноцінними програмами або функціями.
- Подання будуть оцінені в байтах.
- Стандартні лазівки заборонені.
- Це код-гольф, тому найкоротший код виграє.
(Це одна з моїх перших проблем: якщо з цим щось не так, сміливо скажіть, як я міг би це покращити.)
preferably with the format (ciphertext)\n(key).
"бажані функції" та код гольфу не дуже добре поєднуються. Вам слід зробити це обов'язковим або дозволити інші формати виводу. 3. Чи потрібно друкувати ключ без пробілів? Що з друком у форматі списку, наприклад[0, 5, 2, ...]
?