Kurzusok
/
PureScript
PureScript
/
Feladatok
/
Kriptonégyzet
Kriptonégyzet

Kriptonégyzet

Közepes

Utasítások

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,
  • és c >= r,
  • és 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 "
Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg
PureScript Exercism

Készen állsz elkezdeni a(z) Kriptonégyzet feladatot?

Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) PureScript nyelvet 31 feladat segítségével, valódi emberi mentorálással, mindez ingyen.