Data l'arte ASCII di due vettori, trova la grandezza e il grado del vettore risultante.
Ingresso
Questo può essere ricevuto tramite STDIN, letto da un file locale o fornito tramite una chiamata di funzione. Ecco un esempio di un input di due vettori:
^------>
|
|
|
x
Ciò rappresenta un cambiamento di 4 unità a nord e 7 unità a est. Il punto iniziale di ogni input sarà rappresentato da un x(decimale 120).
Tutti i vettori sono linee orizzontali o verticali.
Ogni vettore ha uno di questi quattro punti finali:
^v<>ed è costituito da un trattino (-, 45 decimale) o da una barra verticale (|, 124 decimale).I punti vuoti sul piano sono riempiti di spazi (
, decimale 32).L'input può essere un singolo
x.I vettori adiacenti sono sempre perpendicolari tra loro.
Tutti i vettori sono da punta a coda.
Produzione
Questo sarà lo spostamento del punto risultante (distanza dal punto iniziale) e il grado in cui si è spostato, rispetto al punto iniziale.
Per l'input sopra, l'output dovrebbe essere 8.06unità e 60.3gradi. Ognuno dovrebbe avere esattamente 3 cifre significative. Ecco alcuni esempi di numeri con 3 cifre significative:
- 1.00
- 60,1
- 453
- 7.08
- 4.50
- 349
Tutte le misure dell'unità saranno <= 999.
Questi numeri dovrebbero essere emessi nel formato seguente. Questo sta usando i numeri dall'alto.
8.06 units @ 60.3 degrees
Questo può essere seguito da un singolo spazio finale o da una nuova riga.
Se l'input è un singolo x, senza spostamento e quindi senza angolo di spostamento, l'output dovrebbe essere una riga vuota (un singolo carattere di nuova riga) o nel seguente formato:
0 units @ - degrees
Se stai cercando di qualificarti per il bonus, anche la direzione dovrebbe essere -.
Nel caso in cui i bonus 2, 3 o entrambi siano completati, l'output dovrebbe seguire il modello seguente e rispettare le stesse restrizioni di cui sopra.
8.06 units @ 60.3 degrees NE
I gradi dovrebbero essere misurati secondo il piano standard.
90
135 | 45
\|/
180 ---x---- 0
/|\
225 | 315
270
0gradi è est, 1 - 89gradi è nord-est, 90è nord, ecc.
bonus
Quanto segue vale un totale di -50%.
Prendi un bonus del -10% per ogni vettore aggiuntivo che può essere gestito. Questo bonus può essere applicato fino a 3 volte. I vettori non si sovrappongono mai o si incrociano.
Prendi un bonus del -10% se l'output include la direzione cardinale dell'angolo (nord, sud, est, ovest).
Prendi un bonus del -10% se la tua uscita include le direzioni intermedie dell'angolo (nord-est, nord-ovest, sud-est, sud-ovest).
Esempi
Nel:
x---->
|
v
Su:
5.39 units @ 338 degrees
facoltativamente SE
Nel:
<--------------^
|
|
x
Su:
15.3 units @ 169 degrees
facoltativamente NW
Nel:
x
|
|<-----^
| |
v------>
Su:
2.24 units @ 297 degrees
facoltativamente SE
Esempi (più vettori)
Nel:
x--->
|
|
v----------->
Su:
16.3 units @ 349 degrees
facoltativamente SE
Nel:
<-------^
| |
| |
v |
|
|
x
Su:
8.54 units @ 159 degrees
facoltativamente NW
Nel:
^-->
| |
| v
|
<--------x
Su:
6.32 units @ 162 degrees
facoltativamente NW
x-->. I vettori possono attraversare?
x. Potrebbero essercene più di due (se si tenta di completare il bonus), ma non di meno. Sto lavorando ad esempi per più input vettoriali. In nessun caso i vettori si incrociano. @ThomasKwa
x? Qual è il confine tra nord e nord-ovest?