Due parole sono isomorfi se hanno lo stesso modello di ripetizioni di lettere. Ad esempio, entrambi ESTATE
e DUELED
hanno un modelloabcdca
ESTATE
DUELED
abcdca
poiché le lettere 1 e 6 sono uguali, le lettere 3 e 5 sono uguali e nient'altro. Questo significa anche che le parole sono correlate da un codice di sostituzione, qui con la corrispondenza E <-> D, S <-> U, T <-> E, A <-> L
.
Scrivi un codice che impiega due parole e controlla se sono isomorfi. Vince il minor numero di byte.
Input: due stringhe non vuote di lettere maiuscole A..Z
. Se lo desideri, puoi prenderli come una raccolta di due stringhe o come singola stringa con un separatore.
Output: un valore di Verità coerente per le coppie che sono isomorfi e un valore di Falsey coerente se non lo sono. Stringhe di diverse lunghezze sono input validi che non sono mai isomorfi.
Casi test:
Vero:
ESTATE DUELED
DUELED ESTATE
XXX YYY
CBAABC DEFFED
RAMBUNCTIOUSLY THERMODYNAMICS
DISCRIMINATIVE SIMPLIFICATION
falso:
SEE SAW
ANTS PANTS
BANANA SERENE
BANANA SENSES
AB CC
XXY XYY
ABCBACCBA ABCBACCAB
ABAB CD
Sentiti libero di aggiungere altri casi di test che ritieni utili.
Classifica
Ecco uno snippet di stack per generare sia una classifica regolare che una panoramica dei vincitori per lingua.
Per assicurarti che la tua risposta venga visualizzata, ti preghiamo di iniziare la risposta con un titolo, usando il seguente modello Markdown:
# Language Name, N bytes
dov'è N
la dimensione del tuo invio. Se si migliora il punteggio, è possibile mantenere i vecchi punteggi nel titolo, colpendoli. Per esempio:
# Ruby, <s>104</s> <s>101</s> 96 bytes
ABAB CD
(per approcci simili a zip)