Notwen quiere estudiar la cinemática de los cuerpos arrojados desde grandes alturas en un campo gravitacional uniforme, pero desafortunadamente no tiene la posibilidad técnica de ir a lugares suficientemente altos y observar los objetos mientras cae. Pero quién no quiere ver avances en la ciencia, así que ... ¡Ayudemos a Notwen a construir un simulador de gravedad!
Antecedentes fisicos
Un objeto caído desde una altura ( sin velocidad inicial ) en un campo gravitacional uniforme, descuidando los efectos atmosféricos como el arrastre o el viento gana velocidad y acelera hacia el suelo con el tiempo. Esta "tasa de cambio" de velocidad en una unidad de tiempo se llama aceleración gravitacional . Cerca de la superficie de la Tierra, es aproximadamente igual a , pero para los propósitos de este desafío usaremos el valor , lo que significa que en un solo segundo, un objeto aumenta su velocidad en aproximadamente . Considere tener una altura , que es un múltiplo deg ≈ 9.8 m100Δhk=vktk+1e imagine dividir esa altura en intervalos iguales, cada uno de metros de largo. Notwen quiere medir cuánto tiempo tarda el objeto en atravesar cada uno de esos intervalos, así que eso es lo que pretendemos calcular también. La cinemática moderna , sin tecnicismos, nos dice que:
donde para todos los valores de en nuestro caso, es la inicial velocidad al comienzo de nuestro intervalo y es la duración del intervalo de tiempo (para referencia, la indexación comienza en con
El reto
Entrada: La altura de la que el objeto se tira ya sea como: un múltiplo entero positivo de , o el número de intervalos (de modo ya sea o significaría que ) - cuál depende de ti. N = h
Salida: una animación artística ASCII de un objeto que cae, que se cae desde una altura (detalles a continuación).
La estructura de un marco de salida debe ser la siguiente:
- líneas nuevas que preceden al "terreno", representadas por al menos un carácter que no es un espacio en blanco (por ejemplo
@
). Al menos uno de los personajes del suelo debe estar en la vertical sobre la que cae el objeto. - Otro personaje que no sea un espacio en blanco que represente el objeto (por ejemplo
X
), que no sea el que eligió para el suelo. - Opcionalmente , un carácter al comienzo de cada línea que representa el eje vertical o el muro hecho en líneas. Cualquier cantidad de espacios iniciales y finales están bien siempre que sean consistentes entre los marcos, así como cualquier cantidad de espacios entre la pared y el objeto. Ejemplos de tramas válidas incluyen 1 (para o ):
h = 700 m N = 7
| X > | @ > A | > | or or or > | O > | > | > @@@ ^ ----- &&&
El objeto debe comenzar en la primera línea del primer fotograma, luego, después de la salida debe enjuagarse y su programa debe mostrar el objeto en la misma vertical pero en la siguiente línea en el segundo fotograma; luego, después de la salida debe volver a enjuagarse y su programa debe mostrar el objeto en la misma vertical pero en la siguiente línea en el tercer cuadro y así sucesivamente, hasta que el objeto alcance la línea justo por encima del suelo. Ejemplo:
Reglas
- La salida debe ser un texto escrito en una consola interactiva (descargable), un GIF, un archivo separado para cada cuadro o alguna otra técnica razonable de salida.
- Cada cuadro debe sobrescribir completamente el último cuadro y estar en la misma ubicación.
- Puede suponer que el tiempo requerido para que el compilador / intérprete muestre el texto es insignificante y que la precisión mínima permitida para calcular las raíces cuadradas es de 2 decimales.
- Puede tomar entradas y proporcionar salidas a través de cualquier método estándar , mientras toma nota de que estas lagunas están prohibidas de forma predeterminada. Este es el código de golf , así que intente completar la tarea en la menor cantidad de bytes que pueda administrar en el idioma que elija.
1: Soy indulgente sobre lo que constituye un marco válido porque quiero permitir lo que mejor se adapte a su solución y no estoy tratando de agregar cosas superfluas al desafío. Si algo no está claro, pregunte en los comentarios.
chr(27)
?'\33'
aún debe ser más corto.2*5**.5
es20**.5
.C # (.NET Core) ,
201, 180 + 13 = 193 bytesNecesita usar el sistema; por 13 bytes adicionales.
Curiosamente, Console.Clear () no parece estar funcionando para mí en TIO. Sin embargo, esto funciona perfectamente en una aplicación de consola bajo VS2017.
EDITAR: Gracias a Encarnación de la ignorancia por acortar el ciclo, señalando mi asignación de variable innecesaria e innecesaria usando System.Threading; declaración (sobrante de la copia VS), y señalando que el terreno era necesario! Total de 8 bytes de golf hasta el momento con la adición de la tierra. Ty Ty!
Pruébalo en línea!
fuente