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.
A feladatod, hogy adott célszó és jelöltszavak halmaza esetén megkeresd a jelöltek azon részhalmazát, amelyek a célszó anagrammái.
Az anagramma betűk átrendezése új szó létrehozásához: például az "owns" a "snow" anagrammája.
Egy szó nem a saját anagrammája: például a "stop" nem anagrammája a "stop"-nak.
A célszó és a jelöltek egy vagy több ASCII-betűből álló szavak (A-Z és a-z).
A kis- és nagybetűk egyenértékűek: például a "PoTS" a "sTOp" anagrammája, a StoP viszont nem anagrammája a sTOp-nak.
Az anagrammahalmaz a jelölthalmaz azon részhalmaza, amelynek elemei a célszó anagrammái (tetszőleges sorrendben).
Az anagrammahalmaz szavait ugyanolyan kis- és nagybetűvel kell írni, mint ahogy a jelölthalmazban szerepelnek.
Ha a célszó "stone", a jelöltek pedig "stone", "tones", "banana", "tons", "notes", "Seton", akkor az anagrammahalmaz a "tones", "notes", "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) Nim nyelvet 70 feladat segítségével, valódi emberi mentorálással, mindez ingyen.