To wyzwanie opiera się na grze Layerz.
Biorąc pod uwagę, jako argument stdin lub jako funkcję, prostokątny układ 2D komórek, w którym każda komórka zawiera albo puste (możesz użyć zer zamiast pustych miejsc bez kary), 1, 2, 3 lub 4 ; znaleźć sposób na podzielenie go na prawidłowe regiony (jak zdefiniowano poniżej), tak aby każda niepusta komórka była zawarta w dokładnie jednym regionie. Następnie wypisz znalezione rozwiązanie w dowolnym rozsądnym formacie. Jeśli nie ma rozwiązania, zatrzymaj się bez wytworzenia wyjścia lub wyjmij jedną wartość falsey, a następnie zatrzymaj.
Dowolne z poniższych stanowi prawidłowy region:
- Pojedyncza komórka zawierająca 1
- Komórka zawierająca 2 i dokładnie jeden z niepustych ortogonalnych sąsiadów
- Komórka zawierająca 3 i dokładnie dwa z niepustych ortogonalnych sąsiadów
- Komórka zawierająca 4 i dokładnie trzy z niepustych, ortogonalnych sąsiadów
To jest golf golfowy , więc wygrywa najkrótsza ważna odpowiedź w bajtach.
Niektóre przypadki testowe:
1. Raczej banalny:
Oto rozwiązanie, w którym każdy region ma inny kolor:
2. Bardziej interesujący
Ten ma więcej niż jedno rozwiązanie, ale oto jedno z nich:
3. Mniejszy, zawierający spacje, który nie ma żadnych rozwiązań (w zależności od tego, czy użyjesz jednej z dwójek, aby „złapać” trójkę, czy trójki, aby wziąć dwie dwójki, albo zostaniesz z para nieprzylegających [i dlatego nierozgrupowalnych] dwójek lub pojedynczych dwóch):
Ponieważ ta siatka nie ma rozwiązań, twój program powinien zatrzymać się bez generowania żadnych wyników, gdy otrzyma tę siatkę.
4. Ta (z górną 2 przesuniętą jedną komórką w lewo) ma jednak rozwiązanie:
Rozwiązanie:
(Prawy dolny 2 służy do „przechwytywania” 3)
5. Ponieważ potrzebowaliśmy skrzynki testowej z kilkoma czwórkami:
Jedno rozwiązanie:
4
s, jeśli są to prawidłowe dane wejściowe.