Opis
Zadaniem tego wyzwania jest opracowanie programu lub funkcji, która śledzi dany obiekt w przestrzeni .
I / O
Twój program otrzyma 3 dane wejściowe, które można wykorzystać w dowolny rozsądny sposób :
nbędzie wielkości boku samolotu. (Zatem, dla , samolot będzie ). Możesz założyć, nże zawsze będzie nieparzysta liczba całkowita.
sbędzie początkową pozycją obiektu, podaną jako para współrzędnych .
Dbędzie wektorem uporządkowanych par. Dbędzie miała postać , gdzie będzie zawsze jednym z 'N', 'NE', 'E', 'SE', 'S', 'SW', 'W', 'NW', dla kardynalnego i pierwotnego kierunku międzysercowego, a będzie liczbą całkowitą dla liczby „tyknięć”.
Biorąc pod uwagę te dane wejściowe, program musi wyprowadzić śledzenie obiektu w płaszczyźnie.
Zasady
Dane wyjściowe muszą zawierać granice płaszczyzny. Na przykład:
- 21012 + + ┌─────┐ 2│ │ 1│ │ 0│ │ 1│ │ 2│ │ -└─────┘
byłby przykładem pustej płaszczyzny . Liczby powyżej i z boku mają jedynie charakter poglądowy i nie muszą być drukowane.
Możesz użyć dowolnego znaku (znaków) dla granic, o ile nie jest to biały znak (lub jest renderowany jako biały znak). Wybrane postacie muszą wyznaczyć pełną płaszczyznę, co oznacza, że między nimi nie może być przerw.
Niektóre akceptowalne samoloty obejmują:
┌──┐ .... ---- + - +
│ │. . | | | |
│ │. . | | | |
└──┘; ....; ----; + - +
Niedopuszczalne samoloty obejmują:
.... .... ++++. .
. . + +. .
. + +. .
; ....; ....; + +; . .
Obiektem, który ma być śledzony, może być dowolny wybrany przez ciebie znak, o ile zajmuje on tylko 1 pole na płaszczyźnie i różni się od znaków granicznych.
Śladem śledzonego obiektu mogą być również dowolne wybrane znaki, o ile zajmują one tylko 1 miejsce na płaszczyźnie i różnią się od obiektu.
Dla każdego elementu w obiekt musi przesunąć spacje w kierunku i pozostawić ślad za sobą.
Jeśli obiekt uderzy w granicę, zostanie odbity. Jeśli obiekt nadal ma jakieś ruchy, będzie poruszał się w kierunku, w którym został odbity.
Dla odniesienia, te kierunki odzwierciedlają się nawzajem:
→ po spełnieniu górnej lub dolnej granicy;
→ po spełnieniu granicy bocznej;
Ostateczne dane wyjściowe będą zawierać najnowsze możliwe ślady, to znaczy, jeśli obiekt pozostawiłby ślad w miejscu, w którym już jest ślad, nowszy znak śledzenia zastąpi starszy.
Jak zwykle standardowe luki są domyślnie zabronione .
Punktacja:
To wyzwanie dla golfa .
Przykłady:
Dane wejściowe: , ,
Opracowanie:
0 ┌─────┐ │ │ │ │ 0│ ○ │ │ │ │ │ └─────┘
0 ┌─────┐ │ ○ │ │ \ │ 0│ \ │ │ │ │ │ └─────┘
0 ┌─────┐ │∧ │ │ | \ │ 0│ ○ \ │ │ │ │ │ └─────┘
0 ┌─────┐ │∧ │ │ | \ │ 0│└ ○ \ │ │ │ │ │ └─────┘
(Zera są tylko w celach informacyjnych i nie muszą znajdować się w końcowym wyniku).
Dane wejściowe:
0 ┌─────────┐ │ │ │ │ │ │ │ ∧ │ 0│ / | │ │ ○ / | │ │⟨ / │ │ \ / │ │ ∨ │ └─────────┘
0 ┌─────────┐ │ ○ │ │ \ │ │ \ │ │ \ │ 0│ / | ⟩│ │ ∧ / / │ │⟨ \ / / │ │ \ \ / │ │ ∨ ∨ │ └─────────┘
Przypadki testowe:
Dane wejściowe: ,
Wynik:
0 ┌─────┐ │∧ │ │ | \ │ 0│└ ○ \ │ │ │ │ │ └─────┘
Dane wejściowe: , ,
Wynik:
0 ┌─────────┐ │ ○ │ │ \ │ │ \ │ │ \ │ 0│ / | ⟩│ │ ∧ / / │ │⟨ \ / / │ │ \ \ / │ │ ∨ ∨ │ └─────────┘
Dane wejściowe: , ,
Wynik:
0 ┌───┐ │ | │ 0│- ○ ┐│ │ | │ └───┘
Dane wejściowe: , ,
Wynik:
0 ┌───────────┐ │ ∧ │ │ / \ │ │┌ - / - \ \ │ │ \ | / \ \ │ │ \ | \ \ │ 0│ | / ⟩│ │ | \ / / │ │ | / ○ │ │ | / \ │ │ ∨ \ │ │ \ │ └───────────┘
'N', 'NE', 'E', 'SE', 'S', 'SW', 'W', 'NW'zamiast tego możemy przyjmować jako liczbę całkowitą 0-indeksowaną (lub 1-indeksowaną)? Tak [('NW',2),('S',2),('E',1)]staje się [[7,2],[4,2],[2,1]]na przykład.