Notwen vuole studiare la cinematica dei corpi lanciati da grandi altezze in un campo gravitazionale uniforme, ma sfortunatamente non ha la possibilità tecnica di andare in luoghi sufficientemente alti e osservare gli oggetti mentre cadono. Ma chi non vuole vedere i progressi della scienza quindi ... Aiutiamo Notwen a costruire un simulatore di gravità!
Background fisico
Un oggetto lasciato cadere da un'altezza ( senza velocità iniziale ) in un campo gravitazionale uniforme, trascurando gli effetti atmosferici come la resistenza o il vento aumenta la velocità e accelera verso il suolo con il tempo. Questo "tasso di variazione" della velocità in un'unità di tempo è chiamato accelerazione gravitazionale . Vicino alla superficie della Terra, è approssimativamente uguale a , ma ai fini di questa sfida useremo il valore , nel senso che in un solo secondo, un oggetto aumenta la sua velocità di circa . Valuta di avere un'altezza , che è un multiplo die immagina di dividere quell'altezza in intervalli uguali, ciascuno lungo metri. Notwen vuole misurare quanto tempo impiega l'oggetto a superare ciascuno di quegli intervalli, quindi è quello che intendiamo calcolare anche noi. La cinematica moderna - saltando i tecnicismi - ci dice che:
dove per tutti i valori di nel nostro caso, è l'iniziale velocità all'inizio del nostro intervallo e è la durata dell'intervallo di tempo (per riferimento, l'indicizzazione inizia da con
La sfida
Input: l'altezza da cui viene lanciato l'oggetto come: un numero intero positivo di , o il numero di intervalli (quindi o significherebbe che ) - quale dipende da te.
Output: un'animazione in arte ASCII di un oggetto che cade, lasciato cadere da un'altezza (dettagli sotto).
La struttura di un frame di output deve essere la seguente:
- newline che precedono il "terreno", rappresentato da almeno un carattere non bianco (es
@
.). Almeno uno dei personaggi del terreno deve trovarsi sulla verticale su cui cade l'oggetto. - Un altro personaggio non bianco che rappresenta l'oggetto (ad esempio
X
), diverso da quello che hai scelto per il terreno. - Opzionalmente , un carattere all'inizio di ogni linea che rappresenta l'asse verticale o il muro fatto su linee. Qualsiasi quantità di spazi iniziali e finali va bene purché siano coerenti tra i fotogrammi, nonché qualsiasi quantità di spazi tra il muro e l'oggetto. Esempi di frame validi includono 1 (per o ):
| X > | @ > A | > | or or or > | O > | > | > @@@ ^ ----- &&&
L'oggetto deve iniziare sulla prima riga del primo fotogramma, quindi dopo l'output deve essere e il programma deve visualizzare l'oggetto sulla stessa verticale ma sulla riga successiva nel secondo fotogramma; quindi dopo l'output deve essere nuovamente scaricato e il programma dovrebbe visualizzare l'oggetto sulla stessa verticale ma sulla riga successiva nel terzo frame e così via, fino a quando l'oggetto raggiunge la linea sopra il terreno. Esempio:
Regole
- L'output dovrebbe essere un testo scritto su una console interattiva (flushable), una GIF, un file separato per ogni frame o qualche altra ragionevole tecnica di output.
- Ogni fotogramma dovrebbe sovrascrivere completamente l'ultimo fotogramma e trovarsi nella stessa posizione.
- Si può presumere che il tempo richiesto dal compilatore / interprete per produrre il testo sia trascurabile e che la precisione minima consentita per il calcolo delle radici quadrate sia di 2 decimali.
- Puoi prendere input e fornire output attraverso qualsiasi metodo standard , tenendo presente che queste scappatoie sono vietate per impostazione predefinita. Questo è code-golf , quindi prova a completare l'attività nel minor numero di byte che puoi gestire nella tua lingua preferita.
1: Sono indulgente su ciò che costituisce un frame valido perché voglio consentire ciò che si adatta meglio alla tua soluzione e non sto cercando di aggiungere elementi superflui alla sfida. Se qualcosa non è chiaro, chiedere nei commenti.
chr(27)
?