Egy garázsvásáron találsz egy gyönyörű, régi írógépet bagóért! Izgatottan hazarohansz, beteszel egy lapot, és nekiállsz gépelni. A lelkesedésed azonban alábbhagy, amikor megnézed az eredményt: minden szó összekavarodott! Például „stop”-ot ír a „post” helyett, és „least”-et a „stale” helyett. Óvatosan újrapróbálod, de most „spot”-ot és „slate”-et ír. Egy kis kísérletezés után rájössz, hogy minden betű kinyomtatása előtt véletlenszerű késleltetés van, ami összekavarja a sorrendet. Most már érted, miért adták el olyan kevés pénzért!
Rájössz, hogy ez a sajátosság lehetővé teszi anagrammák készítését: az anagramma olyan szó, amit úgy kapsz, hogy egy másik szó betűit átrendezed. Örülve a felfedezésnek, a nap hátralévő részét azzal töltöd, hogy több száz anagrammát készítesz.
Adott egy cél szó és egy vagy több jelölt szó. A feladatod, hogy megkeresd azokat a jelölteket, amelyek a cél szó anagrammái.
Az anagramma a betűk átrendezése egy új szóvá: például a "owns" a "snow" anagrammája.
Egy szó nem a saját anagrammája: például a "stop" nem anagrammája önmagának.
A cél szó és a jelölt szavak egy vagy több ASCII-betűből (A-Z és a-z) állnak.
A kis- és a nagybetűk egyenértékűek: például a "PoTS" a "sTOp" anagrammája, a "StoP" viszont nem anagrammája a "sTOp" szónak.
A megkeresendő szavakat a jelölt szavak közül kell venni, ugyanolyan kis- és nagybetűhasználattal.
Ha a cél szó "stone", a jelölt szavak pedig "stone", "tones", "banana", "tons", "notes" és "Seton", akkor a megkeresendő anagrammák: "tones", "notes" és "Seton".
Az anagrammákat ugyanabban a sorrendben kell visszaadnod, ahogyan a jelöltszavak listájában szerepelnek.
Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) OCaml nyelvet 60 feladat segítségével, valódi emberi mentorálással, mindez ingyen.