Треки
/
F#
F#
/
Вправи
/
Шифр паркану
Шифр паркану

Шифр паркану

Середня

Вказівки

Реалізуймо кодування та декодування для шифру залізничної огорожі.

Шифр залізничної огорожі - це різновид шифру перестановки, назва якого походить від способу кодування. Його використовували ще давні греки.

У шифрі залізничної огорожі повідомлення записують униз по послідовних «рейках» уявної огорожі, а дійшовши до низу, рухаються вгору (як зигзаг). Потім повідомлення зчитують по рядках.

Наприклад, використовуючи три «рейки» та повідомлення «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 . .

Якщо тепер читати вздовж зигзагоподібної форми, можна прочитати початкове повідомлення.


Джерело

WikipediaПосилання відкривається в новому вікні або вкладці
Редагувати через GitHub Посилання відкривається в новому вікні або вкладці
F# Exercism

Час розпочати Шифр паркану?

Зареєструйтеся на Exercism, щоб вивчати й опановувати F#, а також 18 концепцій148 вправ та справжнє наставництво від людей, і все це безкоштовно.