Кодування та декодування дельта
Дельта-шифр — це проста, але ефективна схема шифрування, яка є вдосконаленням шифру підстановки. Ось як вона працює: кожній літері від A до Z присвоюється числове значення від 0 до 25. Ці значення можуть бути надані в будь-якому порядку, але відображення має бути взаємно однозначним. (Тривіальне відображення, де A має значення 0, B — 1 і так далі, є шифром за замовчуванням. Це те, що ви використовуєте, коли немає кращого варіанту.)
Для шифрування повідомлення використовуються різниці між послідовними значеннями.
Усі символи, крім літер, переносяться в зашифроване повідомлення без змін.
Якщо перед літерою стоїть не літера, вона обробляється так, ніби перед нею стояла літера A.
Регістр літер має значення в цій схемі шифрування. Якщо літера спочатку велика, зашифрована версія повинна бути великою. Якщо вона мала, зашифрована версія повинна бути малою. Однак A і a вважаються однією і тією ж літерою.
Коли перед однією літерою стоїть інша, різниця між їхніми значеннями визначається як значення першої літери, відняте від другої. Літера, значення якої еквівалентне цій різниці за модулем 26, замінить другу літеру в новому тексті.
Вхідні дані та Вихідні дані
Вхідні дані складаються з послідовності команд, по одній на рядок, і завершуються EOF. Жоден рядок не містить більше 10000 символів. Існує три команди: ENCRYPT, DECRYPT та CIPHER. Регістр літер у цих словах не має значення, і кожне слово буде супроводжуватися принаймні одним пробілом. Будь-який рядок, що починається з іншого слова, ніж одна з цих трьох команд, вимагає відповіді "Команда не зрозуміла."
Команди ENCRYPT та DECRYPT зрозумілі самі по собі. Команда шифрування супроводжується відкритим текстом, який потрібно зашифрувати, а команда дешифрування супроводжується зашифрованим текстом, який потрібно перетворити у відкритий текст. Все, що слідує за одним з цих двох командних слів, повинно бути або зашифроване, або дешифроване з використанням поточного шифру. Якщо шифр ще не надано, слід використовувати шифр за замовчуванням.
Команда CIPHER повинна супроводжуватися двадцятьма шістьма літерами алфавіту. Порядок цих літер важливий, і він визначає значення для кожного символу: перша літера має значення 0, друга — 1 і так далі. Пробіли та пунктуація можуть бути присутніми, але їх слід ігнорувати; однак у цьому рядку повинно бути рівно двадцять шість літер без повторень. Будь-яка проблема вимагає відповіді "Поганий шифр. Використовується за замовчуванням." (І, як зазначено, слід фактично використовувати шифр за замовчуванням). Якщо шифр зрозумілий, вам потрібно відобразити його користувачеві, як показано нижче, і потім використовувати його для всіх наступних команд.