Celem tego wyzwania jest napisanie programu lub funkcji, która zwraca najmniejszą liczbę uderzeń potrzebnych do ukończenia danego kursu.
Wkład
- Układ kursu można przekazać w dowolny odpowiedni sposób i format. (odczytane z konsoli, przekazane jako parametr wejściowy, odczytane z pliku lub dowolnego innego, wielowierszowego łańcucha znaków, tablicy znaków, dwuwymiarowej tablicy znaków / bajtów).
- Pozycja początkowa piłki i dołka można również podać jako dane wejściowe, nie trzeba go analizować od wartości wejściowej. W przypadkach testowych są one uwzględnione w kursie, aby upewnić się, że nie ma wątpliwości co do rzeczywistej pozycji.
- Możesz ponownie przypisać znaki wejściowe do czegoś innego, o ile nadal są one rozpoznawalne jako odrębne znaki (np. Znaki ASCII do wydruku).
Wydajność
- Program musi zwrócić najniższą możliwą liczbę punktów (najmniejszą liczbę uderzeń potrzebnych do dotarcia do dołka) dla każdego kursu zaliczonego jako dane wejściowe w rozsądnym formacie (łańcuch, liczba całkowita, liczba zmiennoprzecinkowa lub haiku opisujące wynik)
- Jeśli nie można pokonać kursu, zwróć
-1
(lub dowolną inną wybraną przez ciebie wartość fałszowania , która nie zostałaby zwrócona dla kursu możliwego do pokonania ).
Przykład:
W tym przykładzie pozycje są zapisywane w oparciu o 0, X / Y, od lewej do prawej, od góry do dołu - ale możesz użyć dowolnego formatu, który ci się podoba, ponieważ wynik i tak jest całkowicie niezależny od formatu.
Wkład:
###########
# ....#
# ...#
# ~ . #
# ~~~ . #
# ~~~~ #
# ~~~~ #
# ~~~~ o #
# ~~~~ #
#@~~~~ #
###########
Ball (Start-Position): 1/9
Hole (End-Position): 8/7
Wydajność:
8
Zasady i pola
Kurs może składać się z następujących pól:
'@'
Piłka - początek kursu'o'
Dziura - cel kursu'#'
Ściana - kula zatrzyma się, gdy uderzy w ścianę'~'
Woda - należy tego unikać'.'
Piasek - kula natychmiast zatrzyma się na piasku' '
Ice - Ball będzie się ślizgać, dopóki nie trafi w coś
Podstawowe zasady i ograniczenia gry:
- Piłka nie może się poruszać po przekątnej, tylko w lewo, w prawo, w górę iw dół.
- Piłka nie zatrzyma się przed wodą, tylko przed ścianami, na piasku i dołku.
- Strzały do wody są nieprawidłowe / niemożliwe
- Piłka pozostanie w dołku, nie przeskakując nad nią jak na lodzie
- Pole jest zawsze prostokątne.
- Kurs zawsze graniczy z wodą lub ścianami (nie są wymagane kontrole graniczne).
- Zawsze jest dokładnie jedna piłka i jeden dołek.
- Nie wszystkie kursy można pokonać.
- Może istnieć wiele ścieżek, które dają ten sam (najniższy) wynik.
Luki i warunki wygranej
- Standardowe luki są zabronione
- Programy muszą zostać zakończone
- Nie możesz wymyślić dodatkowych zasad (uderzanie piłki tak mocno, że przeskakuje nad wodą, odbija się od ściany, przeskakuje pola piasku, zakręty wokół narożników itp.)
- To jest golf golfowy , więc wygrywa rozwiązanie z najmniejszą liczbą znaków.
- Rozwiązania muszą być w stanie obsłużyć wszystkie dostarczone przypadki testowe, jeśli jest to niemożliwe z powodu ograniczeń używanego języka, należy to zaznaczyć w odpowiedzi.
Przypadki testowe
Kurs nr 1 (2 uderzenia)
####
# @#
#o~#
####
Kurs nr 2 (niemożliwy)
#####
#@ #
# o #
# #
#####
Kurs nr 3 (3 uderzenia)
~~~
~@~
~.~
~ ~
~ ~
~ ~
~ ~
~.~
~o~
~~~
Kurs nr 4 (2 uderzenia)
#########
#~~~~~~~#
#~~~@~~~#
## . ##
#~ ~ ~ ~#
#~. o .~#
#~~~ ~~~#
#~~~~~~~#
#########
Kurs nr 5 (niemożliwy)
~~~~~~~
~... ~
~.@.~.~
~... ~
~ ~ ~.~
~ . .o~
~~~~~~~