Valósítsd meg a titkos üzenetek összeállításának klasszikus módszerét, az úgynevezett négyzetkódot.
Adott egy angol nyelvű szöveg; add ki a szöveg kódolt változatát.
Először a bemenetet normalizáljuk: eltávolítjuk a szóközöket és az írásjeleket az angol szövegből, és az üzenetet kisbetűssé alakítjuk.
Ezután a normalizált karaktereket sorokra bontjuk. Ezek a sorok téglalapot alkotnak, ha sortörésekkel elválasztva írjuk ki őket.
Például az alábbi mondat
"If man was meant to stay on the ground, god would have given us roots."
normalizált alakja:
"ifmanwasmeanttostayonthegroundgodwouldhavegivenusroots"
A nyílt szöveget a lehető leginkább négyzet alakú téglalapba kell rendezni. A téglalap méretét az üzenet hossza határozza meg.
Ha c az oszlopok száma és r a sorok száma, akkor az r x c méretű téglalaphoz keresd meg a legkisebb olyan c egész számot, amelyre:
r * c >= length of message,c >= r,c - r <= 1.A normalizált szövegünk 54 karakter hosszú, így egy c = 8 és r = 7 méretű téglalap adódik:
"ifmanwas"
"meanttos"
"tayonthe"
"groundgo"
"dwouldha"
"vegivenu"
"sroots "
A kódolt üzenetet úgy kapjuk meg, hogy az oszlopokat balról jobbra haladva fentről lefelé olvassuk.
A fenti üzenet kódolva:
"imtgdvsfearwermayoogoanouuiontnnlvtwttddesaohghnsseoau"
A kódolt szöveget olyan darabokban add ki, amelyek kitöltenek egy tökéletes (r X c) méretű téglalapot: c darab, egyenként r hosszúságú, szóközzel elválasztva.
Ha egy mondat n karakterrel rövidebb a tökéletes téglalapnál, akkor az utolsó n darabot egy-egy záró szóközzel egészítsd ki.
"imtgdvs fearwer mayoogo anouuio ntnnlvt wttddes aohghn sseoau "
Figyeld meg, hogy ha egymás alá raknánk ezeket, vizuálisan vissza tudnánk fejteni a rejtjelezett szöveget az eredeti üzenetté:
"imtgdvs"
"fearwer"
"mayoogo"
"anouuio"
"ntnnlvt"
"wttddes"
"aohghn "
"sseoau "
Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) Visual Basic nyelvet 113 feladat segítségével, valódi emberi mentorálással, mindez ingyen.