Wyzwanie
Biorąc pod uwagę macierz dodatnich liczb całkowitych, sprawdź, czy są jakieś „pierścienie” gór. Formalna definicja tego wyzwania brzmi: biorąc pod uwagę macierz dodatnich liczb całkowitych, czy istnieje jakakolwiek dodatnia liczba całkowita, n
dla której w matrycy jest zamknięty pierścień komórek, które są ściśle większe niż n
takie, że wszystkie komórki zamknięte w pierścieniu są mniejsze lub równe do n
.
Weźmy prawdziwy przykład:
3 4 5 3
3 1 2 3
4 2 1 3
4 3 6 5
Jeśli stawiamy n
na 2
:
1 1 1 1
1 0 0 1
1 0 0 1
1 1 1 1
Jak możemy wyraźnie zobaczyć, 1
s wzdłuż krawędzi tworzą pierścień.
Definiujemy pierścień jako uporządkowany zbiór komórek, w których sąsiednie komórki w kolekcji również sąsiadują (krawędź lub narożnik) na siatce. Ponadto pierścień musi zawierać co najmniej 1 komórkę; to znaczy próba wypełnienia krawędzi tylko BFS zalewaniem całej macierzy z wyłączeniem komórek w kolekcji i nigdy nie przechodzenie przez komórkę w kolekcji musi ominąć co najmniej jedną komórkę.
Prawdziwe przypadki testowe
4 7 6 5 8 -> 1 1 1 1 1
6 2 3 1 5 -> 1 0 0 0 1 (n = 3)
6 3 2 1 5 -> 1 0 0 0 1
7 5 7 8 6 -> 1 1 1 1 1
1 3 2 3 2
1 6 5 7 2
1 7 3 7 4
1 6 8 4 6
1 3 1
3 1 3
1 3 1
7 5 8 7 5 7 8 -> if you have n = 4, you get an interesting ridge shape around the top and right of the grid
8 4 4 2 4 2 7
6 1 8 8 7 2 7
5 4 7 2 5 3 5
5 6 5 1 6 4 5
3 2 3 2 7 4 8
4 4 6 7 7 2 5
3 2 8 2 2 2 8
2 4 8 8 6 8 8
5 7 6 8 6 8 7 -> there is an island in the outer ring (n = 4), but the island is a ring
5 3 2 4 2 4 7
6 3 7 8 5 1 5
8 2 5 2 8 2 7
8 3 8 8 8 4 7
6 1 4 1 1 2 8
5 5 5 5 7 8 7
150 170 150
170 160 170
150 170 150
Falsy Test Cases
1 2 3 2 1 -> this is just a single mountain if you picture it graphcially
2 3 4 3 2
3 4 5 4 3
2 3 4 3 2
1 2 3 2 1
4 5 4 3 2 -> this is an off-centered mountain
5 6 5 4 3
4 5 4 3 2
3 4 3 2 1
1 1 1 1 1 -> this is four mountains, but they don't join together to form a ring
1 2 1 2 1
1 1 1 1 1
1 2 1 2 1
1 1 1 1 1
3 3 3 3 3 -> there is a ring formed by the `3`s, but the `4` in the middle is taller so it doesn't qualify as a mountain ring
3 1 1 1 3
3 1 4 1 3
3 1 1 1 3
3 3 3 3 3
3 4 4 4 3
4 4 3 4 4
3 3 3 3 4
4 4 3 4 4
3 4 4 4 3
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
22 23 24 25 26
Zasady
- Obowiązują standardowe luki
- To jest golf golfowy , więc najkrótsza odpowiedź w bajtach w każdym języku zostaje ogłoszona zwycięzcą swojego języka. Żadne odpowiedzi nie będą akceptowane.
- Dane wejściowe można przyjąć jako dowolną rozsądną formę macierzy dodatnich liczb całkowitych
- Dane wyjściowe można podać jako dowolne dwie rozsądne, spójne, odrębne wartości wskazujące na [prawda] lub [fałsz].
źródło
n
trzeci „prawdziwy” przypadek testowy jest rzeczywiście prawdziwy? [1,2] ?Odpowiedzi:
Galaretka , 38 bajtów
Wypróbuj online!
Wyjście 1, jeśli macierz zawiera łańcuchy górskie, w przeciwnym razie 0 .
Jak to działa (nieco nieaktualne)
Być może uda mi się trochę skrócić kod, więc ta sekcja prawdopodobnie zostanie poddana ciężkiej edycji.
Link pomocnika
Na przykład, biorąc pod uwagę macierz w postaci:
Zwraca tablice (kolejność nie ma znaczenia):
Krótko mówiąc, generuje to najbardziej zewnętrzne rzędy i kolumny, z usuniętymi narożnikami.
Główny link
źródło
Czysty ,
224... 161 bajtówWypróbuj online!
Definiuje funkcję
? :: [[Int]] -> Int
, zwracając,0
jeśli jest dzwonek, i1
inaczej.Działa, zamieniając macierz na
2
s dla gór i0
s dla dolin, a następnie zalewa1
s, aż wynik przestanie się zmieniać. Jeśli0
nadal istnieją jakieś s dla dowolnej wysokości góry, produktem będzie0
.źródło
JavaScript (Node.js) , 302 bajty
Wypróbuj online!
Sprawdza, czy przepływ z punktu nie może dotrzeć do granicy, a granica może dojść do każdego punktu
źródło