Jesteś najostrzejszym, najtwardszym i najfajniejszym kowbojem na zachód od Missisipi. Jednak jakiś dziwny facet na obłąkanej stronie frajerów uznał, że fajnie byłoby wrzucić cię w losowe niedokończone krajobrazy i walczyć. Bez względu na to, nadal wygrywasz. Jednak, aby pomóc Ci wygrać te wyczerpujące strzelaniny, o których napiszesz do domu, warto wiedzieć, ile kul ma tchórz czający się w krajobrazie.
Co powiesz na pomoc temu biednemu facetowi? Biorąc pod uwagę krajobraz ASCII, znajdź w nim broń i powiedz mu, ile pocisków jest w nią załadowanych. To jest pistolet:
(X)
(X\ /X)
(XVX)
\X/
Każde X
z powyższych zdjęć jest potencjalnym miejscem na pocisk. Miejsce będzie albo zawierać spację, albo jedno z nich 0,O,o
(może nie być spójne - kowboj mógł załadować różne rodzaje pocisków do swojej broni).
W krajobrazie zawsze będzie dokładnie jedna broń zgodna z powyższym opisem. Należy jednak pamiętać, że przestrzenie wokół i wewnątrz pistoletu mogą zawierać wszystko.
Wkład
Otrzymasz ciąg znaków zawierający drukowalne ASCII (więc nie tabulatory) i znaki nowej linii do oddzielnych linii. Możesz również wziąć listę ciągów, jeśli chcesz. Wszystkie ciągi zostaną wypełnione spacjami, więc będą miały tę samą długość. Dane wejściowe będą miały co najmniej 4 rzędy wysokości i 7 kolumn szerokości.
W krajobrazie zawsze będzie dokładnie jedna broń.
Wydajność
Wyrzucisz ile pocisków ( 0, O, o
) jest w pistolecie, więc twój wynik zawsze będzie pomiędzy 0
a 6
.
Przypadki testowe
(0) ( )
(o\ /o( \ / )
(oVo) ( V )
\o/ \ /
0
----------------------------
////////////////////////////
////////////////////////////
/////////////(o)////////////
///////////(0\// )//////////
////////////( Vo)///////////
/////////////\ /////////////
////////////////////////////
----------------------------
3
()()()()()()()()()()()()()()()()\)/)()()()()()()()()()()()()
()()()()()()()()()()()()()()()()(V)()()()()()()()()()()()()(
()()()()()()()(\0/)()()()()()()()()()()()()()()()()()()()()(
()()()()()()()()()()()()()()()()()()()()()()()( )()()()()()(
()()()()()()(o)()()()()()()()(00)()()()()()(( \(/0)()()()()(
()()()()()()()()()()()()()()()()()()()()()()(( V )()()()()()
()()()()()()()()()()()()()()()()()()()()()()()\O/()()()()()(
2
------(0)---
||||(0\|/0)
-----(0V0)--
||||||\0/
-------_------
|||||||-|
------|-|
|||||||-|
------|-|
6
00ooOO(0)/\\/V
( )
( \\/ )
( V )
\\ /
00OOoo()()()())))
0
(\) (0)
(0\\/0) ( \0/ )
(0V0) ( V )
\\0/ \ /
1 (left gun is invalid because of the `\` in the bullet slot)
-00(0)00\0
-(O\0/o)\
- (OVo)o\0
-o \ /oo/
5
To jest golf golfowy , więc wygrywa najkrótsza odpowiedź w bajtach.
0
wnętrze obwiedni pistoletu, ale poza pistoletem.Odpowiedzi:
Ślimaki , 71 bajtów
Wypróbuj online.
źródło
Programming language for 2-dimensional pattern matching.
musisz się cieszyć, że podjąłem wtedy to wyzwanie: PMathematica, 170 bajtów
Pobiera tablicę ciągów znaków / znaków. Zwraca liczbę pocisków.
źródło
JavaScript,
215211209 bajtówDzięki Shaggy za -4 bajty!
Zasadniczo próbuje dopasować
n
znaki pistoletu po przerwaniu linii,n
od0
do długości łańcucha.źródło
Z
literału przy pierwszym użyciu i pozbyciu się{}
.Python 2,
219224227 bajtówEDYCJA: Naprawiono błąd, który kosztował mnie 5 bajtów: (... znalazłem 3 bajty dodatkowych
r''
s, które nie były potrzebne. A potem Grrr !! Nie zliczał\
poprawnie znaków w moim kodzie, więc dodał 6 ...Bierze ciąg z nowymi liniami; resetuje liczbę znalezionych kul.
Zasadniczo stosuje wyrażenie regularne, które szuka wzoru pistoletu ze znakami padu 0, 1, ... lineLength na początku linii.
źródło
C (gcc) ,
357351 bajtówWypróbuj online! (golfed) (rozwinięty)
(357 golfa) (357 rozwinięty)Zastanawiałem się, jak złe byłoby rozwiązanie w języku bez wbudowanego dopasowania wzorca. Wyszło znacznie mniej niż się obawiałem.
Zasadniczo takie podejście dzieli pistolet na szereg pojedynczych części, które spodziewa się zobaczyć w określonych lokalizacjach w stosunku do określonego indeksu. Jeśli wszystkie części zostaną znalezione tam, gdzie są oczekiwane, to broń! Test pocisku zwiększa globalny licznik, aby śledzić, ile było w nim pocisków, które drukujemy, gdy znajdziemy jedyną broń w krajobrazie.
Uwaga 1: Wypełniłem przypadki testowe spacjami, aby zapewnić spójne szerokości wierszy.
Uwaga 2: Dodaj 10 bajtów, jeśli nie podoba ci się przypisanie zamiast lewy powrotu . Dla jasności użyłem rzeczywistych instrukcji return w rozszerzonym kodzie.
źródło