Niektóre nieuczciwe polubienia oparte na tekście nie pozwalają wejść do ścian i cofają się, jeśli spróbujesz. Po co to robić, skoro gracz może poruszać się w najbliższym ważnym kierunku?
Wyzwanie
Napisz program funkcji, który, biorąc pod uwagę kierunek i siatkę znaków 3 na 3, wyświetla tę samą siatkę po wykonaniu kroku przez gracza.
Na przykład,
9
#..
.@#
#.#
staje się
#.@
..#
#.#
Wejście
Kierunek jest podawany przez jedną cyfrę od 1 do 9, z których każda odpowiada 8 kierunkom głównym i stoi w miejscu. Wywodzi się to ze względnych lokalizacji liczb na klawiaturze:
NW N NE .. \ | / ... 7 8 9 W- 4 5 6 -E ... 1 2 3 ../ | \ SW S SE
Możesz jednak użyć liczb 123, 456, 789 zamiast 789, 456, 123. Innymi słowy, możesz zamienić górne i dolne 2 rzędy lub liczby, jeśli tak wybierzesz. Są to jedyne 2 dopuszczalne kombinacje indeksów.Siatka 3 na 3 będzie się składać z 3 różnych, drukowalnych znaków ASCII reprezentujących podłogę, ściany i gracza. (W przypadkach testowych
.
jest używany do podłóg,#
s są ścianami i@
jest odtwarzaczem)- Możesz wybrać, jakich znaków używa Twój program, ale musisz podać je w swojej odpowiedzi i muszą one być spójne przez wiele prób.
- Znak reprezentujący postać zawsze będzie w środku siatki 3 na 3, a kierunek zawsze będzie wynosił od 1 do 9 (włącznie)
- Możesz przyjmować dane wejściowe w dowolnej kolejności
- Siatkę 3 na 3 można wprowadzić jako tablicę char, tablicę łańcuchów, łańcuch o długości 9 lub inną rozsądną alternatywę.
Wynik
- Powrót z funkcji lub wyjście do StdOut lub najbliższej alternatywy
- Końcowe spacje i znaki nowej linii są dozwolone
- Musisz użyć tych samych reprezentacji znaków co danych wejściowych
- Te same formaty dozwolone dla danych wejściowych są dozwolone dla danych wyjściowych
Jak porusza się gracz
Jeśli określony kierunek jest zablokowany przez ścianę (np. Jeśli powyższy przykład miał kierunek 6), spójrz na 2 najbliższe kierunki:
- Jeśli jeden (i tylko jeden) kierunek jest wolny, przesuń gracza w tym kierunku.
- Jeśli żadne kierunki nie są wolne, spójrz na najbliższe 2 najbliższe kierunki (wyłączając kierunek 5). Jeśli owinąłeś się dookoła i nie znalazłeś otwartego kierunku (gracz otoczony murami), nie ruszaj gracza
- Jeśli oba kierunki są otwarte, wybierz jeden, aby przejść losowo (choć niekoniecznie jednakowo).
Jeśli podanym kierunkiem jest 5, nie ruszaj gracza
Przypadki testowe
( #
= ściana, .
= podłoga, @
= gracz)
Wejście: 9 # .. . @ # #. # Wynik: #. @ .. # #. # Wejście: 3) # .. . @ # #. # Wynik: # .. .. # # @ # Wejście: 7 ##. # @ # .. # Wynik: ## @ ##. #. # lub #. # .. # @. # Wejście: 5 ... . @. ... Wynik: ... . @. ... Wejście: 2) ### # @ # ### Wynik: ### # @ # ###
Punktacja
To jest golf golfowy , więc wygrywa najkrótsza odpowiedź w bajtach.
123;456;789
zamiast 789;456;123
?
yuhjklbn
? ROZERWAĆ.