I miei figli hanno un tappetino con cui giocare, qualcosa del genere:
Dopo mesi con le tessere del tappetino posizionate casualmente, mi sono stancato e ho posizionato tutte le tessere del tappetino raggruppate per sezioni in base al colore di sfondo. Quindi, se le lettere rappresentano il colore di sfondo, ho un tappetino come questo:
AABBCDDDE
ABBCCCDEE
ABCCCCDDE
AACCCDDEE
AAAACCCCE
AAAAAACCC
Quindi, per i colori A, B, C, D ed E c'è sempre un modo per collegare tutte le tessere con lo stesso colore di sfondo sia in orizzontale che in verticale nel supporto. Questo è quello che chiamo un tappetino correttamente raggruppato per colore . Puoi vedere i gruppi per l'esempio precedente nelle seguenti tabelle:
AA
A
A
AA
AAAA
AAAAAA
BB
BB
B
C
CCC
CCCC
CCC
CCCC
CCC
DDD
D
DD
DD
E
EE
E
EE
E
Inoltre, esiste un solo gruppo per ogni colore, quindi questo non sarebbe valido:
ABA
ABA
Perché le tessere di colore A non sono raggruppate in un solo gruppo. Anche questo non sarebbe valido perché i riquadri non si collegano né in orizzontale né in verticale:
AB
BA
La sfida
Dato un array bidimensionale di caratteri nell'intervallo ASCII stampabile (non è necessario che sia quadrato se le dimensioni di entrambe le dimensioni sono uguali o maggiori di 1), verificare se l'array rappresenta un tappetino correttamente raggruppato per colore (ogni carattere diverso nell'array rappresenta un colore diverso). L'input può essere in qualsiasi formato ragionevole purché rappresenti un array di caratteri bidimensionale (array di caratteri 2D, array di stringhe della stessa lunghezza e così via) e l'output deve essere una coppia di valori di verità e falsità (0 / 1, 't' / 'f', vero / falso, qualunque cosa fintanto che viene restituito qualcosa e i valori di ritorno sono coerenti tra gli input).
Questo è code-golf, quindi può vincere il programma / funzione / metodo / lambda più breve per ogni lingua!
Esempi
A truthy
AB
AB truthy
AB
BA falsey
ABCDE truthy
ABCDC falsey
**::dd22
***:d222
*:::::22 truthy
$$$%%%&&
$$%%&&&&
&&$$$%&& falsey
AABBCDDDE
ABBCCCDEE
ABCCCCDDE
AACCCDDEE
AAAACCCCE
AAAAAACCC truthy
AABB
ABBA
AAAA truthy
AAAB
AAAA
AAAA truthy
Il mio tappetino correttamente raggruppato per colore
(Devo ancora correggere quei bordi ...)