W tym prostym, ale zabawnym wyzwaniu poproszono Cię o ustalenie, czy Jimmy spadnie z platformy. Jimmy trzy części ciała /
, o
oraz \
umieszczony tak
/o\
Platformy są reprezentowane przez -
. Jimmy spadnie z platformy, jeśli mają dwie lub więcej części ciała, które nie znajdują się bezpośrednio nad platformą.
Kilka przykładów:
/o\
- -------
Jimmy zrównoważy się, ponieważ wszystkie ich części ciała znajdują się powyżej -
.
/o\
------ ---
Jimmy zbalansuje się, ponieważ dwie części ciała są powyżej -
s.
/o\
-- ---- --
Jimmy zrównoważy się, mimo że są podzielone na dwie platformy
/o\
-
Jimmy nie zbalansuje się, ponieważ dwie części ciała nie znajdują się nad platformą.
Twoim zadaniem jest napisanie programu, który przyjmuje platformę jako wydłużony kontener zawierający tylko -
s i s (np. Ciąg znaków) i wyświetla liczbę Jimmys, które można umieścić na platformie, tak aby żaden z nich nie spadł i żaden z nich nie spadł zakładka. Jimmy może mieć jedną z części ciała po lewej stronie początku struny lub po prawej stronie końca struny.
To jest golf golfowy, więc odpowiedzi są punktowane w bajtach, a celem jest mniejsza liczba bajtów.
Przypadki testowe
Wejścia
- - -
- -
--
-- --
----
- -- --
------- -
Odpowiednie wyniki
0
0
1
1
2
2
2
3
---
nie siedział ze mną albo dobrze, dopóki nie działa na moim porcie i zorientował się, że nie były potrzebne. Myślę, że zadzwonię tu dzień, wezmę torbę puszek i sam rzucę SMG - nie grałem w nią od wieków.Python 2 , 53 bajty
Wypróbuj online!
Na podstawie wyrażenia regularnego Arnaulda . Chciwie wyszukuje wszystkie nie nakładające się podciągi długości-3 z dwoma lub więcej
-
. Sztuczka polega na`s`
umieszczeniu ciągu wejściowego w cudzysłowach jako wypełnienia, aby pozostawić miejsce dla Jimmys na zawieszenie się na obu końcach, jakPython 2 , 57 bajtów
Wypróbuj online!
Wymaga tandetnego formatu wejścia / wyjścia już w cudzysłowie. Wyjścia
False
dla 0.Funkcja rekurencyjna, która umieszcza każdego Jimmy'ego na skrajnie lewej dozwolonej pozycji, albo umieszczając Jimmy'ego nad pierwszymi trzema postaciami, jeśli mogą one trzymać Jimmy, albo w inny sposób usuwając pierwszą postać. A cute Sztuką jest, aby sprawdzić, czy
s[:3]
zawiera dwa lub więcej-
, wykonując'--'in s[:3]*2
, który łączy dwa egzemplarzes[:3]
i czeki dla dwóch sąsiednich-
.źródło
Perl 5
-p
, 28 bajtówUżywa tej samej metody, co JavaScript @ Arnauld.
Wypróbuj online!
źródło
Japt , 16 bajtów
Oparty na oryginalnym rozwiązaniu JS firmy Arnauld. Wypróbowałem kilka różnych metod, aby uzyskać niezbędne wypełnienie po obu stronach wejścia, ale wszystkie pojawiły się w tej samej długości - wciąż szukając krótszej drogi ...
Sprawdź to
źródło
Excel, 96 bajtów
A1
= platforma. Wprowadzony jako tablica FormulaCtrl
+Shift
+Enter
źródło
05AB1E , 16 bajtów
Zdecydowanie można grać w golfa .. Czasami denerwujące jest zobaczenie wszystkich tych wyrażeń regularnych w wyzwaniu przy użyciu 05AB1E, w którym brakuje jakiegokolwiek wyrażenia regularnego. ;)
Wypróbuj online lub sprawdź wszystkie przypadki testowe .
Wyjaśnienie:
źródło
Rubin , 39 bajtów
Wypróbuj online!
źródło
Stax , 13 bajtów
Uruchom i debuguj
źródło
Java 8, 41 bajtów
Wypróbuj online.
Port @Arnauld JavaScript odpowiedź „s , oprócz tego, że
+0
jest+10
do przypadków testowych, jak naprawić----
. Jest to konieczne, ponieważString#split
wbudowane oprogramowanie Java domyślnie usuwa końcowe ciągi znaków. Można to zmienić, dodając dodatkowy parametr dosplit
wbudowanego (który jest0
domyślnie wsplit
-builtin z pojedynczym argumentem String). Aby zacytować użycie tego dodatkowego parametru z dokumentów:Z tego powodu zwykle
.split("...",-1)
służy do zachowania WSZYSTKICH końcowych pustych ciągów, a ja mogłem go również użyć do tej odpowiedzi ( Wypróbuj online ). W tym zmieniającym przypadku+0
aby+10
zaoszczędzić dwa bajty ciągu,-1
, choć. :)źródło
Galaretka , 12 bajtów
Wypróbuj online!
Na podstawie odpowiedzi 05AB1E @ KevinaCrujissena, więc pamiętajcie o nim również.
źródło
Węgiel , 25 bajtów
Wypróbuj online! Link jest do pełnej wersji kodu. Wyjaśnienie:
Wydrukuj platformę bez przesuwania kursora, a następnie przesuń kursor w górę i w lewo, ponieważ jest to pierwsza potencjalna pozycja Jimmy'ego.
Poszukaj tyle Jimmies, ile jest pozycji na platformie.
Sprawdź, czy w tej pozycji jest więcej niż jeden kawałek platformy.
Jeśli tak, zanotuj prawidłową pozycję Jimmy'ego ...
... i przesuń trzy postacie w prawo, aby Jimmies się nie nakładały.
W przeciwnym razie następną potencjalną pozycją Jimmy'ego będzie jedna postać po prawej stronie.
Wyczyść platformę i wypisz liczbę wykrytych pozycji.
źródło
PowerShell , 38 bajtów
Odpowiedź JavaScript na Port of Arnauld .
Wypróbuj online!
źródło
Wiąz 0,19, 108 bajtów
Oparte na regex w Arnauld JavaScript jest odpowiedź . Zweryfikować wszystkie przypadki testowe tutaj .
Alternatywne rozwiązanie bez wyrażenia regularnego, znacznie dłuższe przy 171 bajtach :
Zweryfikować wszystkie przypadki testowe tutaj .
źródło