Реалізуйте класичний метод укладання таємних повідомлень під назвою «квадратний код».
Маючи англійський текст, виведіть закодовану версію цього тексту.
Спершу вхідні дані нормалізують: з англійського тексту прибирають пробіли й розділові знаки, а повідомлення переводять у нижній регістр.
Потім нормалізовані символи розбивають на рядки. Ці рядки можна вважати такими, що утворюють прямокутник, якщо надрукувати їх із символами нового рядка між ними.
Наприклад, речення
"If man was meant to stay on the ground, god would have given us roots."
нормалізується до:
"ifmanwasmeanttostayonthegroundgodwouldhavegivenusroots"
Відкритий текст потрібно впорядкувати в прямокутник, якомога ближчий до квадрата. Розмір прямокутника визначається довжиною повідомлення.
Якщо через c позначити кількість стовпців, а через r кількість рядків, то для прямокутника r x c знайдіть найменше можливе ціле число c таке, що:
r * c >= length of message,c >= r,c - r <= 1.Наш нормалізований текст має довжину 54 символи, що задає прямокутник із c = 8 та r = 7:
"ifmanwas"
"meanttos"
"tayonthe"
"groundgo"
"dwouldha"
"vegivenu"
"sroots "
Закодоване повідомлення отримують, читаючи стовпці згори вниз, рухаючись зліва направо.
Повідомлення вище закодовано так:
"imtgdvsfearwermayoogoanouuiontnnlvtwttddesaohghnsseoau"
Виведіть закодований текст фрагментами, що заповнюють ідеальні прямокутники (r X c): c фрагментів довжиною r, розділених пробілами.
Для фраз, яким до ідеального прямокутника бракує n символів, доповніть кожен із останніх n фрагментів одним пробілом у кінці.
"imtgdvs fearwer mayoogo anouuio ntnnlvt wttddes aohghn sseoau "
Зауважте: якби ми поставили ці рядки один під одним, ми могли б візуально розшифрувати шифротекст назад у вихідне повідомлення:
"imtgdvs"
"fearwer"
"mayoogo"
"anouuio"
"ntnnlvt"
"wttddes"
"aohghn "
"sseoau "
Зареєструйтеся на Exercism, щоб вивчати й опановувати Visual Basic, а також 113 вправ та справжнє наставництво від людей, і все це безкоштовно.