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,distancecome 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
yposizione 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 alxcoord. delle riprese di Bob. distanceè laxcoordinata 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-1ecc.), 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.523598776radianti.velocitylo è13m/s.distanceha 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 yche sarà <1.0) in 12.9358m = ~13mseguito 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
