¡Felicidades! La NASA te acaba de contratar para trabajar en el nuevo proyecto Horizons 2.
Lamentablemente, recientemente ha habido grandes recortes presupuestarios, por lo que la alta gerencia ha decidido fingir todo el sobrevuelo planeado de Plutón (como lo hicieron para los alunizajes en los años 70).
Su tarea es escribir un programa que acepte como entrada una fecha en el formato yyyymmdd
y proporcionará una fotografía falsa de Plutón para esta fecha. Puede suponer que la fecha ingresada será en el año 2015 o 2016.
La fotografía es una cuadrícula de 15x15 de caracteres ASCII. Los caracteres en la cuadrícula tienen sus coordenadas x e y dentro del rango [-7, 7]
: el carácter superior izquierdo está en (-7, -7)
mientras que el carácter inferior derecho está en (7, 7)
.
La fotografía se computará con las siguientes reglas:
- La sonda será la más cercana a Plutón el 25/12/2015
- La distancia
d
a Plutón viene dada por esta fórmula:square root of ((difference in days to christmas) ^ 2 + 10)
- El radio
r
de la imagen de Plutón en la foto viene dado por:22 / d
- Un carácter con coordenadas
(x, y)
en la cuadrícula debe establecerse en#
ifx^2 + y^2 <= r^2
; debe establecerse en espacio de lo contrario. - Hay estrellas en las posiciones
(-3, -5)
,(6, 2)
,(-5, 6)
,(2, 1)
,(7, -2)
. Las estrellas están representadas por un punto.
y, por supuesto, están ocultas por Plutón.
Una cosa más: la junta de la NASA llegó a la conclusión de que el descubrimiento de la vida en Plutón probablemente resultaría en un aumento sustancial del presupuesto. Su programa debería agregar pistas de la vida en Plutón:
- Cuando la distancia a Plutón es <= 4, agregue un plutoniano en las coordenadas
(-3,-1)
:(^_^)
Fotografía de ejemplo para entrada 20151215
: (Su código debe tener todas las líneas nuevas como lo hace este código)
.
# .
###
#####
###.
# .
.
Fotografía para entrada 20151225
:
#######
#########
###########
#############
#############.
###(^_^)#####
#############
#############
#############
#############
###########
#########
. #######
A modo de comparación, aquí hay una foto del satélite Hydra de Plutón tomada por New Horizons. Las diferencias apenas se notan con nuestro arte ASCII.
Este es el código de golf, por lo que gana el código más corto en bytes.
`
s a favor de<pre><code>
; siéntase libre de retroceder si no le gusta.You can assume the entered date will be in the year 2015 or 2016.
Pero entonces, ¿por qué especificar un año?Respuestas:
JavaScript (ES6), 237 bytes
Demostración en vivo . Ejecutar en Firefox.
Versión original
Golf
Esto fue divertido para el golf.
No necesito crear un objeto Date, así que codifiqué el valor en milisegundos para guardar 13 bytes:
Reemplace la matriz asociativa con una cadena delimitada para eliminar 9 bytes:
El refactor más grande fue reemplazar los bucles for con IIFE anidados y recursivos para eliminar 10 bytes:
También me deshice de
Math.sqrt
8 bytes más.Cuestiones
Solo pude obtener la fotografía correcta para los casos de prueba cambiando la fecha más cercana a 2015/12/24, y no sé si el problema radica en mi código o la pregunta. Por favor aclare y actualizaré mi respuesta.Aquí está mi salida usando las diferencias de 2015/12/25.Editar: Respuesta actualizada para usar Navidad como la fecha más cercana.
Fotografía de "20151215":
Fotografía de "20151225":
fuente
C # 4.0, 393 bytes
Ejemplo:
Salida:
fuente
CJam, 165 bytes
La primera parte calcula la diferencia del día y la almacena en la
D
variable. El resto es un doble ciclo que itera a través deX
yY
.Pruébalo aquí
fuente