Biorąc pod uwagę widok z boku pola do minigolfa i siłę uderzenia, określ, czy piłka trafi do dołka.
Kurs będzie w tym formacie:
____ ____ _
__/ \ / U \
__/ \ / \_
\_/
Piłka zaczyna się bezpośrednio przed pierwszym kawałkiem ziemi po lewej stronie i podąża za konturem pola aż do otworu (wielka litera U
poniżej aktualnego poziomu podłoża). Jeśli dojdzie do dziury, wypisz prawdziwą wartość. Mocą uderzenia będzie początkowa prędkość piłki. Podczas każdej iteracji piłka przesuwa się do następnej postaci po prawej, a następnie zmienia się prędkość w zależności od postaci, w której się znajduje. Jeśli prędkość osiągnie 0
lub mniej przed dołkiem, wypisz wartość falsey.
_
zmniejsza prędkość o1
/
zmniejsza prędkość o5
\
zwiększa prędkość o4
Kursy mogą być opcjonalnie wypełnione spacjami. Moc huśtawki zawsze będzie dodatnią liczbą całkowitą.
Nie musisz się martwić, że piłka będzie zbyt szybka, aby wejść do dołka, przetoczyć się do tyłu lub skoczyć / odbić się od wzgórz.
Przypadki testowe
Input: 27
____ ____ _
__/ \ / U \
__/ \ / \_
\_/
Output: true
----------
Input: 26
____ ____ _
__/ \ / U \
__/ \ / \_
\_/
Output: false
----------
Input: 1
U
Output: true
----------
Input: 1
_
U
Output: false
----------
Input: 22
/U
/
/
/
\/
Output: true
----------
Input: 999
_ _
\ /
\ /
\ /
U
Output: true
----------
Input: 5
/
/U
Output: false
----------
Input: 9
/\/\/\/\/U
Output: false
----------
Input: 16
_/\ _
\ __ /\/\/\ /
\ / \ / \ /
\__/ \ / \____________ _/
\_/ U
Output: true
To jest kod do minigolfa, wygrywa najkrótsza odpowiedź w bajtach!
źródło
\_/
), wykonując następujące kroki: podziel na tablicę linii, obracaj, spłaszczaj, rozstawiaj spacje.\/\/\/\/\/
jest to bardziej wydajny kurs niż__________
.Odpowiedzi:
Pyth, 27 bajtów
Demonstracja
Ten kod robi coś bardzo sprytnego i wcale nie jest bezpieczny dla typu
X
. Sprawdź to poniżej.Wyjaśnienie:
źródło
Q
? Czyli ostatni przykład może powodować problemy?< ... Q
prace jako liczbowego porównania aż do otworu, a nie plaster. Po dołku liczy się tylko to, że wynik jest prawdziwy.Haskell,
111109 bajtówPrzykład użycia:
Jak to działa:
Edycja: @ user81655 znalazł 2 bajty do zapisania. Dzięki!
źródło
Ruby,
10487 znakówPrzykładowy przebieg:
źródło
Japt, 38 bajtów
Try it here!
Pokonując CJam!
Wyjaśnienie
Zasadniczo pobiera ciąg znaków, obraca go o 90 stopni zgodnie z ruchem wskazówek zegara, usuwa spacje i znaki nowej linii, usuwa dziurę i wszystko po niej oraz dzieli wzdłuż znaków. Następnie sprawdza, czy piłka kiedykolwiek osiągnie zero lub mniej, używając
every
funkcji.źródło
%
i>0
można go zastąpić¬
, ponieważ sqrt liczby dodatniej jest zawsze fałszem (0 -> 0
,-1 -> NaN
).CJam,
4039 bajtówWejście ma moc na pierwszej linii, a kurs zaczyna się na drugiej linii. Dane wyjściowe to
0
lub1
.Sprawdź to tutaj.
Wyjaśnienie
źródło
Retina,
82817774686768 bajtówWypróbuj online
>
s - na przykład 4 to>>>>\n
. (czy to legalne?)+`(?<=(.)*) (?=.*¶(?<-1>.)*(.))
$2
- spłaszcz kurs - zastąp spacje postacią pod nimi.Po tym etapie dane będą wyglądać następująco:
Możemy po prostu zignorować wszystko po pierwszym
U
, i tak tam nie dotrzemy.>
reprezentują krok, który możemy zrobić, lub pozostałą energię.\
z nich czterema>
- nachylenie daje nam dodatkową energię.>_
lub>>>>>/
dopóki nie pozostanie żadna._
y i/
y zużywa energię.^>*U
- sprawdź, czy możemy osiągnąćU
pozytywną energię (lub brak energii).Spowoduje to wygenerowanie
0
lub1
.Inną zamkniętą opcją z
9179 bajtami jest:Wypróbuj online
Jest to to samo podejście, ale z grupą równoważącą zamiast kontrowersyjnej wymiany.
Jestem pewien, że oba można dalej grać w golfa, więc każdy z nich może być krótszy.
źródło
0
lub1
jako cyfry, jeśli nie spowoduje to dodatkowych bajtów.ES6, 117 bajtów
Nie golfowany:
Edycja: Zapisano 4 bajty dzięki ՊՓԼՃՐՊՃՈԲՍԼ.
źródło
JavaScript (ES6),
108107106 bajtówOto rozwiązanie, które wymyśliłem, tworząc wyzwanie.
Wyjaśnienie
Traktuje moc jako liczbę, a przebieg jako ciąg. Zwraca
1
zatrue
lub0
zafalse
. Tor musi być wypełniony spacjami.Test
źródło
Python (3.5)
169160 bajtówRozwiązanie rekurencyjne bez funkcji transpozycji (zip)
Bez golfa
c dla kursu, p dla mocy, v dla prędkości, h dla wysokości
Stosowanie
źródło
Pyth, 35 bajtów
Wyjaśnienie
źródło
Ruby, 85 znaków
Dostosowano odpowiedź @ manatwork
źródło
JavaScript,
266263244 bajtówBez golfa
Stosowanie
źródło
Java, 219 bajtów
Spłaszcz kurs, ponieważ współrzędna y nie ma znaczenia, niestety Java nie ma pionowego wykończenia. Nie ma też transpozycji ciągów.
Iteruj nad spłaszczonym kursem i śledź prędkość piłki.
źródło
Oktawa,
111110 bajtówWyjaśnienie:
max
dla każdej kolumny'_/\'
na[1, 5, -4]
(wszystkie inne znaki mniejsze niż'_'
są zamapowane0
)True
jeśli wszystkie sumy sumaryczne od początku kursu do kubka są mniejsze niż prędkość początkowa (wFalse
przeciwnym razie).Oto przypadek testowy, który już opracowałem, podobny do drugiego zaproponowanego przez @Erwan i kilka wyników:
A oto pierwszy przypadek testowy:
źródło
"//_U\\\\\\\_
wynik jest nieprawidłowy, ponieważ nie usunąć znak poU
same rzeczy, jeśli masz kurs z lokalnym maksimum podobnego_//\\\\\U
U
. To właśnie(1:find(m==85))
robi; pobiera podrzędną tablicę z pierwszego indeksu do lokalizacjiU
. Sprawdzę twój test z kilkoma początkowymi prędkościami i skontaktuję się z tobą.cumsum
zmiennej pośredniej, a następnie użyć jej do ostatecznego porównaniaall(v>tmp(1:find(m==85)))
.C, 629 bajtów
Nie golfowany:
Zasadniczo wykonuję tylko jedno przejście, aby przekonwertować ciąg wejściowy, aby pasował do wszystkiego w jednym wierszu
źródło
if
/else
npx+=*n==' ')?1:*n=='\n'?-x:(olc[x]=*n,1
. Kolejna wskazówka: w Cunsigned int
można zapisaćunsigned
, oszczędzając od razu 4 bajty.Python,
212201188143 bajtówDuża część tej iteracji tego skryptu przypada @Erwan, który dał mi zupełnie inne podejście do próby i kilka wskazówek, które w końcu pozwoliły mi zaoszczędzić 55 bajtów.
Nie rekurencyjne, więc powinno znacznie różnić się od innych rozwiązań python.
Ungolfed trochę:
źródło
o=[''.join(x).split()[0] for x in zip(*c.split('\n'))]
że wygrywają 40 bajtów, myślębreak
przezreturn p>0
i usunąćif p...
if"U"==v or p<1
jeśli istnieje lokalne maksimum, takie jak_//\\\\\U