A una vendita in garage trovi una splendida macchina da scrivere vintage a un prezzo d'occasione! Tutto emozionato, corri a casa, inserisci un foglio di carta e cominci a scrivere. Però l'entusiasmo svanisce quando esamini l'output: tutte le parole sono incomprensibili! Per esempio, stampa «stop» invece di «post» e «least» invece di «stale». Provi di nuovo con attenzione, ma ora stampa «spot» e «slate». Dopo qualche prova, scopri che c'è un ritardo casuale prima che ogni lettera venga stampata, il che scombina l'ordine. Ora capisci perché te l'hanno venduta per così pochi soldi!
Ti rendi conto che questo strano comportamento ti permette di generare anagrammi, cioè parole formate riordinando le lettere di un'altra parola. Felice della tua scoperta, passi il resto della giornata a generare centinaia di anagrammi.
Data una parola obiettivo e una o più parole candidate, il tuo compito è trovare le candidate che sono anagrammi della parola obiettivo.
Un anagramma è un riarrangiamento di lettere che forma una nuova parola: ad esempio "owns" è un anagramma di "snow".
Una parola non è un anagramma di sé stessa: ad esempio, "stop" non è un anagramma di "stop".
La parola obiettivo e le parole candidate sono composte da uno o più caratteri alfabetici ASCII (A-Z e a-z).
I caratteri minuscoli e maiuscoli sono equivalenti: ad esempio, "PoTS" è un anagramma di "sTOp", ma "StoP" non è un anagramma di "sTOp".
Le parole che devi trovare vanno prese dalle parole candidate, rispettando la stessa combinazione di maiuscole e minuscole.
Data la parola obiettivo "stone" e le parole candidate "stone", "tones", "banana", "tons", "notes" e "Seton", le parole anagramma che devi trovare sono "tones", "notes" e "Seton".
Gli anagrammi possono essere restituiti in qualsiasi ordine.
Iscriviti a Exercism per imparare e padroneggiare TypeScript con 108 esercizi e il mentoring di persone reali, tutto gratis.