Реалізуймо кодування та декодування для шифру залізничної огорожі.
Шифр залізничної огорожі - це різновид шифру перестановки, назва якого походить від способу кодування. Його використовували ще давні греки.
У шифрі залізничної огорожі повідомлення записують униз по послідовних «рейках» уявної огорожі, а дійшовши до низу, рухаються вгору (як зигзаг). Потім повідомлення зчитують по рядках.
Наприклад, використовуючи три «рейки» та повідомлення «WE ARE DISCOVERED FLEE AT ONCE», шифрувальник записує:
W . . . E . . . C . . . R . . . L . . . T . . . E
. E . R . D . S . O . E . E . F . E . A . O . C .
. . A . . . I . . . V . . . D . . . E . . . N . .
Потім зчитує:
WECRLTEERDSOEEFEAOCAIVDEN
Щоб розшифрувати повідомлення, треба взяти зигзагоподібну форму й заповнити рядки шифротекстом.
? . . . ? . . . ? . . . ? . . . ? . . . ? . . . ?
. ? . ? . ? . ? . ? . ? . ? . ? . ? . ? . ? . ? .
. . ? . . . ? . . . ? . . . ? . . . ? . . . ? . .
У першому рядку є сім місць, які можна заповнити символами «WECRLTE».
W . . . E . . . C . . . R . . . L . . . T . . . E
. ? . ? . ? . ? . ? . ? . ? . ? . ? . ? . ? . ? .
. . ? . . . ? . . . ? . . . ? . . . ? . . . ? . .
Тепер другий рядок приймає «ERDSOEEFEAOC».
W . . . E . . . C . . . R . . . L . . . T . . . E
. E . R . D . S . O . E . E . F . E . A . O . C .
. . ? . . . ? . . . ? . . . ? . . . ? . . . ? . .
А для останнього рядка залишається «AIVDEN».
W . . . E . . . C . . . R . . . L . . . T . . . E
. E . R . D . S . O . E . E . F . E . A . O . C .
. . A . . . I . . . V . . . D . . . E . . . N . .
Якщо тепер читати вздовж зигзагоподібної форми, можна прочитати початкове повідомлення.
Зареєструйтеся на Exercism, щоб вивчати й опановувати Crystal, а також 26 концепцій142 вправи та справжнє наставництво від людей, і все це безкоштовно.