Bob the Bowman
o
/( )\ This is Bob.
L L Bob wants to be an archer.
#############
.
/ \ <--- bow So he bought himself a
(c -)-> <--- arrow nice longbow and is about
( )/ <--- highly focused Bob shoot at a target.
L L
#############
___________________________________________________________________________________________
sky
Bob is a smart guy. He already knows what angle and
velocity his arrow has / will have. But only YOU know
the distance to the target, so Bob doesn't know if he
will hit or miss. This is where you have to help him.
. +-+
/ \ | |
(c -)-> | |
( )/ +++
L L |
###########################################################################################
Compito
Il tuo compito è rendere un'immagine ASCII di Bob che colpisce o manca il bersaglio. Per il calcolo:
- Il programma riceverà
arrow_x,angle,velocity,distance
come input separato da virgole nell'ordine desiderato. - Un carattere ASCII è uguale
1m
. - Il primo carattere nell'ultima riga ha le coordinate
(0,0)
, quindi il terreno (reso come#
) è ay=0
. - Bob è sempre a terra, la sua
y
posizione non cambia. - Non c'è max
y
. Tuttavia, l'apice delle frecce dovrebbe adattarsi all'immagine renderizzata. - Tutto l'input è fornito come intero decimale.
- Durante il calcolo, supponiamo che la freccia sia un punto.
- L'origine della freccia è la punta della freccia
>
di un tiro a segno (vedi sopra). Quindi datoarrow_x
, devi calcolarearrow_y
. Il piede sinistro di Bob nell'output deve corrispondere alx
coord. delle riprese di Bob. distance
è lax
coordinata del piede del bersaglio . (cioè il centro del bersaglio).- Tutte le misure sono fornite rispettivamente in metri e gradi.
- Attenzione: il tiro di Bob non viene mai eseguito, utilizzato solo per i calcoli! Vedi sotto per i due Bob di output validi
- Colpire il bersaglio significa che il percorso delle frecce attraversa una delle due pareti del bersaglio più a sinistra (
|
) (ovvero (distanza-1,3) o (distanza-1,4). Se ad un certo punto la freccia si trova all'interno di quei 2m², posizionare la X invece del muro che colpisce. Il bersaglio ha sempre la stessa altezza e solo la sua posizione x può cambiare.). I colpi d'angolo o una freccia che cade dal cielo sul bersaglio non contano. - Si applica la terra standard g (9,81 m / s ^ 2).
distance+1
è la fine del campo, dopodiché tutto è un errore e nessuna freccia deve essere resa.- Se la freccia colpisce il bersaglio in qualsiasi altro modo (
distance-1
ecc.), Nessuna freccia dovrebbe essere resa.
Perdere
Questo è un esempio di rendering di Bob mancante (la freccia entra nel terreno a 34m, l'angolo è 45 °, il tempo in aria è 10s, la velocità è ~ 50 - ma ci sono molti più input possibili per causare questo output. Mostra solo che il tuo programma utilizza il formule abituali per calcolare risultati fisicamente "accurati".):
+-+
| |
c\ | |
/( ) v +++
L L | |
###########################################################################################
Colpire
Questo è un esempio di rendering del punteggio di Bob (la freccia entra nel bersaglio (= incrocia il suo percorso)):
+-+
>--X |
\c/ | |
( ) +++
L L |
###########################################################################################
Esempio
arrow_x
è 7.arrow_y
è sempre 3.angle
è30°
o0.523598776
radianti.velocity
lo è13m/s
.distance
ha 20 anni.
Quindi, per colpire il bersaglio, la freccia deve attraversare (19,3)
o (19,4)
. Tutto il resto ci mancherà. In questo caso, la freccia entrerà nel terreno (significa y
che sarà <1.0
) in 12.9358m = ~13m
seguito 1.149s
.
Limiti e punteggio
- Questo è code-golf , quindi vince la soluzione più breve. Non ci sono bonus.
- Il tuo programma (in quanto non funzionante ) deve accettare l'input nel formato sopra descritto, l'input aggiuntivo non è consentito.
- Non è necessario gestire input errati / inutili / impossibili.
- Stampa su qualunque sia l'output ragionevole più breve per la tua lingua (std, file, ...).
- Non mi interessa trascinare gli spazi bianchi.
- Suggerimento: la larghezza dell'output è
distance+2
. L'altezza èapex+1
.
The left foot of Bob in the output has to match the x coord. of the shooting Bob.
eSee below for the two valid output-Bobs