Twoim zadaniem jest znalezienie długości linii brzegowej mapy wysp na mapie ASCII. Mapa wejściowa będzie się składać z 1 lub więcej #
znaków wskazujących ląd i spacji wskazujących wodę. Linia brzegowa jest uważana za dowolną krawędź między lądem a wodą, w tym śródlądowymi jeziorami i wyspami.
Rozwiązaniem powinno być kompletny program, który wczytuje plik, ciąg znaków lub tablicę ciągów i wyświetla jedną liczbę całkowitą na ekranie lub standardowym wyjściu. Każda linia wejściowa może mieć spację wiodącą lub końcową oraz zero lub więcej znaków skrótu. Przyjmuje się, że granice mapy to przestrzeń (woda).
Linie mogą mieć różne długości.
Przykłady:
Input:
##
##
Output: 8
Input:
### ###
##### #
##
Output: 26
Input:
#####
# #
# # #
# #
#####
Output: 36
To jest golf golfowy, więc wygrywa najmniejsza liczba bajtów.
Odpowiedzi:
Ślimaki , 8 bajtów
Ta
A
opcja oznacza policzenie wszystkich pasujących ścieżek, a nie punktów początkowych, w których odniesiono sukces.\#
pochłania a#
,o
obraca się w kierunku kardynalnym i!\#
jest twierdzeniem negatywnym, które się powiedzie, jeśli nie będzie#
przed nami.źródło
Pyth -
2523 bajtówNajpierw dopełnia wejście do prostownika. Następnie zlicza wystąpienia
" #"
ponad 4 permutacji transpozycji i odwrotności wejścia + spacja.Wypróbuj online tutaj .
źródło
ES6,
123115114 bajtówEdycja: Zapisano 9 bajtów dzięki @ edc65.
źródło
a=>['',...a,''].map((s,i,a)=>s.replace(/#/g,(_,j)=>r+=(s[j-1]!=_)+(s[j+1]!=_)+(a[i-1][j]!=_)+(a[i+1][j]!=_)),r=0)|r
a=>a.map((s,i)=>s.replace(/#/g,(_,j)=>r+=(s[j-1]!=_)+(s[j+1]!=_)+((a[i-1]||'')[j]!=_)+((a[i+1]||'')[j]!=_)),r=0)|r
MATL , 42 bajty
Akceptuje to dane wejściowe jako tablicę komórek ciągów formy
Najpierw konwertuje dane wejściowe na tablicę znaków 2D, wypełniając je spacjami, a następnie na macierz zer i jedynek. Splot 2D jest następnie stosowany dwukrotnie, z dwiema różnymi maskami: pierwsza do rozszerzenia matrycy, druga do wykrywania krawędzi.
Wypróbuj online!
źródło
Japt,
2219 bajtówZakłada, że dane wejściowe są wypełnione spacjami, aby utworzyć prostokąt. Przetestuj online!
Jak to działa
źródło