Moje dzieci mają matę alfabetyczną do zabawy, coś takiego:
Po miesiącach z losowo rozmieszczonymi kafelkami maty, zmęczyłem się i umieściłem wszystkie kafelki maty pogrupowane w sekcje zgodnie z ich kolorami tła. Więc jeśli litery reprezentują kolor tła, mam matę taką:
AABBCDDDE
ABBCCCDEE
ABCCCCDDE
AACCCDDEE
AAAACCCCE
AAAAAACCC
Tak więc dla kolorów A, B, C, D i E zawsze istnieje sposób na połączenie wszystkich płytek z tym samym kolorem tła, poziomo lub pionowo, w macie. Tak nazywam matę odpowiednio pogrupowaną według kolorów . Grupy z poprzedniego przykładu możesz zobaczyć w następujących tabelach:
AA
A
A
AA
AAAA
AAAAAA
BB
BB
B
C
CCC
CCCC
CCC
CCCC
CCC
DDD
D
DD
DD
E
EE
E
EE
E
Ponadto dla każdego koloru istnieje tylko jedna grupa, więc nie będzie to poprawne:
ABA
ABA
Ponieważ kafelki w kolorze A nie są pogrupowane w jednej grupie. Nie byłoby to również ważne, ponieważ kafelki nie łączą się poziomo ani pionowo:
AB
BA
Wyzwanie
Biorąc pod uwagę dwuwymiarową tablicę znaków w zakresie do wydruku ASCII (nie musi być kwadratowy, o ile rozmiar obu wymiarów jest równy lub większy niż 1), sprawdź, czy tablica reprezentuje matę odpowiednio pogrupowaną według kolorów (każdy inny znak w tablicy reprezentuje inny kolor). Dane wejściowe mogą być w dowolnym rozsądnym formacie, o ile reprezentują dwuwymiarową tablicę znaków (tablica znaków 2D, tablica ciągów o tej samej długości itd.), A dane wyjściowe muszą być parą wartości prawdziwych i falsey (0 / 1, „t” / „f”, prawda / fałsz, niezależnie od tego, o ile coś jest zwracane, a zwracane wartości są spójne we wszystkich danych wejściowych).
To jest golf golfowy, więc może wygrać najkrótszy program / funkcja / metoda / lambda dla każdego języka!
Przykłady
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
Moja mata odpowiednio pogrupowana według kolorów
(Nadal muszę naprawić te granice ...)