Beschreibung
Die Aufgabe dieser Herausforderung besteht darin, ein Programm oder eine Funktion zu entwickeln, die ein bestimmtes Objekt in einem Raum verfolgt.
I / O.
Ihr Programm erhält 3 Eingaben, die auf jede sinnvolle Weise vorgenommen werden können :
n
wird die Größe der Flugzeugseite sein. (Für ist Ihre Ebene also ). Sie können davon ausgehen, dass n
es sich immer um eine ungerade Ganzzahl handelt.
s
wird die Startposition des Objekts sein, angegeben als ein Paar von Koordinaten.
D
wird ein Vektor von geordneten Paaren sein. D
folgt dem Format , wobei immer eine von 'N', 'NE', 'E', 'SE', 'S', 'SW', 'W', 'NW'
für die kardinale und primäre interkardinale Richtung ist und eine ganze Zahl für die Anzahl von 'Ticks' ist.
Angesichts dieser Eingaben muss Ihr Programm eine Verfolgung des Objekts in der Ebene ausgeben.
Regeln
Die Ausgabe muss die Grenzen der Ebene enthalten. Z.B:
- 21012 + + ┌─────┐ 2│ │ 1│ │ 0│ │ 1│ │ 2│ │ -└─────┘
wäre ein Beispiel für eine leere Ebene. Die Zahlen oben und seitlich dienen nur als Referenz und müssen nicht gedruckt werden.
Sie können beliebige Zeichen für die Grenzen verwenden, sofern es sich nicht um Leerzeichen handelt (oder als Leerzeichen gerendert werden). Die von Ihnen ausgewählten Zeichen müssen die gesamte Ebene abgrenzen, sodass zwischen ihnen keine Lücken bestehen dürfen.
Einige akzeptable Flugzeuge umfassen: ┌──┐ .... ---- + - + │ │. . | | | | │ │. . | | | | └──┘; ....; ----; + - + Nicht akzeptable Flugzeuge umfassen: .... .... ++++. . . . + +. . . + +. . ;; ....; ....; + +; . .
Das zu verfolgende Objekt kann ein beliebiges Zeichen sein, solange es nur 1 Feld in der Ebene einnimmt und sich von den Begrenzungszeichen unterscheidet.
Die Spur des verfolgten Objekts kann auch ein beliebiges Zeichen sein, sofern diese nur 1 Feld in der Ebene belegen und sich vom Objekt unterscheiden.
Für jedes Element in muss das Objekt Leerzeichen in Richtung und eine Spur hinterlassen.
Wenn das Objekt eine Grenze treffen würde, wird es reflektiert. Wenn das Objekt noch Bewegungen hat, bewegt es sich weiter in die Richtung, in die es reflektiert wurde.
Als Referenz spiegeln sich diese Richtungen zueinander wider:
→ wenn die obere oder untere Grenze erreicht ist;
→ wenn eine seitliche Grenze erreicht ist;
Die endgültige Ausgabe enthält die neuesten möglichen Spuren. Wenn das Objekt eine Spur in einem Bereich hinterlassen würde, in dem bereits eine Spur vorhanden ist, überschreibt das neuere Spurenzeichen das ältere.
Standardschlupflöcher sind wie üblich standardmäßig verboten .
Wertung:
Dies ist eine Code-Golf- Herausforderung.
Beispiele:
Arbeiten Sie es aus:
0 ┌─────┐ │ │ │ │ 0│ ○ │ │ │ │ │ └─────┘
0 ┌─────┐ │ ○ │ │ \ │ 0│ \ │ │ │ │ │ └─────┘
0 ┌─────┐ │∧ │ │ | \ │ 0│ ○ \ │ │ │ │ │ └─────┘
0 ┌─────┐ │∧ │ │ | \ │ 0│└ ○ \ │ │ │ │ │ └─────┘
(Die Nullen dienen nur als Referenz und müssen nicht in der endgültigen Ausgabe enthalten sein.)
0 ┌─────────┐ │ │ │ │ │ │ │ ∧ │ 0│ / | │ │ ○ / | │ │⟨ / │ │ \ / │ │ ∨ │ └─────────┘
0 ┌─────────┐ │ ○ │ │ \ │ │ \ │ │ \ │ 0│ / | ⟩│ │ ∧ / / │ │⟨ \ / / │ │ \ \ / │ │ ∨ ∨ │ └─────────┘
Testfälle:
Ausgabe:
0 ┌─────┐ │∧ │ │ | \ │ 0│└ ○ \ │ │ │ │ │ └─────┘
Eingabe: , ,
Ausgabe:
0 ┌─────────┐ │ ○ │ │ \ │ │ \ │ │ \ │ 0│ / | ⟩│ │ ∧ / / │ │⟨ \ / / │ │ \ \ / │ │ ∨ ∨ │ └─────────┘
Eingabe: , ,
Ausgabe:
0 ┌───┐ │ | │ 0│- ○ ┐│ │ | │ └───┘
Eingabe: , ,
Ausgabe:
0 ┌───────────┐ │ ∧ │ │ / \ │ │┌ - / - \ \ │ │ \ | / \ \ │ │ \ | \ \ │ 0│ | / ⟩│ │ | \ / / │ │ | / ○ │ │ | / \ │ │ ∨ \ │ │ \ │ └───────────┘
'N', 'NE', 'E', 'SE', 'S', 'SW', 'W', 'NW'
eine 0-indizierte (oder 1-indizierte) Ganzzahl verwenden? So [('NW',2),('S',2),('E',1)]
wird [[7,2],[4,2],[2,1]]
zum Beispiel.