La nueva supercomputadora que pronostica el clima ha llegado y no funciona.
Mientras tanto, su jefe quiere que compre a los técnicos en algún momento fingiendo los mapas de viento diarios.
Su tarea es dibujar una cuadrícula de flechas que represente la dirección del viento.
La cuadrícula es:
- compuesto por azulejos cuadrados de 15px
- 8 fichas por 8 fichas
- 120px total cuadrado
000 antecedentes
Cada cuadrícula tiene 8 orientaciones potenciales, que representan la dirección del viento:
- norte
- Noreste
- Este
- Sureste
- Sur
- Sur oeste
- Oeste
- Noroeste
Que debe representarse de la siguiente manera:
N NE E SE S SW W NW
Los mapas deben variar gradualmente para ser creíbles.
Esto significa que cada mosaico solo puede diferir de su vecino en un paso. Específicamente:
- Un mosaico solo puede diferir en un incremento o decremento de cada uno de los 4 mosaicos adyacentes. (o 3 para fichas laterales, 2 para fichas de esquina).
- Por ejemplo, un mosaico con el vecino E podría ser NE, E o SE (suponiendo que coincida con sus otros vecinos).
- Las orientaciones pueden retroceder, es decir, N -> NW y NW -> N.
Para ilustrar, el siguiente mapa es válido:
NW N NE NE NE NE NE NE
N NE NE NE NE NE NE E
NE NE NE NE NE NE E SE
E NE NE NE NE E SE S
SE E E E E SE S SE
S SE SE SE SE S SE E
SW S S S S SE E NE
SW SW S S SE E NE N
Los mapas deben ser únicos , no generar el mismo mapa para diferentes entradas.
- La entrada es un número entero que corresponde a los días entre ahora y su pronóstico (por ejemplo, 1 es el pronóstico de mañana, 365 es el tiempo de un año).
- La salida es el mapa como una imagen.
- La salida debe ser reproducible, la misma entrada siempre dará la misma salida
- Debe proporcionar mapas únicos durante al menos 8 años, es decir, sin salida idéntica para ninguna entrada entre 1 y 2920 (estoy ignorando los años bisiestos).
- No hay salida definida para ninguna entrada mayor que 2920.
El envío ganador producirá mapas válidos (hasta el día 2920) con la menor cantidad de bytes de código fuente.
Respuestas:
BBC Basic, 83 caracteres ASCII, tamaño de archivo tokenizado 72
Descargue el emulador en http://www.bbcbasic.co.uk/bbcwin/bbcwin.html
Esto es básicamente un puerto del concepto de Martin, pero la implementación en BBC basic es muy diferente. Reprogramaré la fuente para los números
0
y1
luego generaré los dígitos binariosn
en orden inverso.El código sin golf está debajo. En BBC basic puede imprimir caracteres ASCII individuales utilizando el
VDU
comando, pero el lenguaje tiene una serie de códigos específicos de la máquina similares a las secuencias de escape pero que comienzan con caracteres no imprimibles. Para reprogramar la fuente, comenzamos con ASCII 23. Normalmente se toman valores de 8 bits, pero si usa un punto y coma como separador en lugar de una coma, toma pequeños valores endianos de 16 bits (como se usa en la versión golfizada).Salida
Para los números del 0 al 7. Tenga en cuenta que la fuente no se restablece al final del programa, por lo tanto, los números 0 y 1 aparecen como flechas en los primeros dos ejemplos.
fuente
Matlab (182 *)
Se supone que la entrada se almacena en
n
. Al mirar el algoritmo, no estoy seguro de que los resultados sean únicos, pero verifiquén=1 upto 3000
si son únicos y satisfacen las reglas. Básicamente, solo uso números complejos del círculo unitario y los 'suavizo' mediante conv2 con un filtro gaussiano. Después de eso, se 'redondean' a las 8 direcciones posibles.* No sé cómo escalar la salida a un cierto número de píxeles, por lo que debe hacerse manualmente = /
EDITAR: Acabo de descubrir que hay casos en los que mi programa de verificación no reconoció soluciones incorrectas (cambios en más de 1 paso), pero estoy tratando de encontrar otra solución.
Entrada:
Código:
fuente
Mathematica,
116115 bytesSupongo que un buen caballo nunca salta más alto de lo necesario. 2920 cuadrículas diferentes se logran muy fácilmente usando solo dos direcciones (estoy usando
N
yNE
), lo que hace que satisfacer la regla de continuidad sea trivial. Simplemente elijo entre N y NE en función de los bits den
, por lo que esto realmente producirá 2 64 mapas de viento diferentes.Aquí están los primeros diez mapas:
PD: Mi idea original era enumerar las 8 4 combinaciones para las 4 esquinas y la interpolación "lineal" del resto de la cuadrícula. Eso probablemente habría resultado en mapas más agradables, pero este es el código golf después de todo, así que elegí lo que cumple con los requisitos mínimos.
fuente
PHP 5.4, 549 bytes
Algo obstaculizado por la necesidad de definir flechas como gráficos, aquí está mi código PHP:
Toma su argumento de la línea de comando, como:
Esta solución utilizará la entrada como la definición de las cuatro esquinas. El resto del mapa se interpolará suavemente entre los valores. ¡Ha definido resultados para todos los valores de 0 a 4095, un total de ~ 11.25 años de pronóstico falso, que debería ser tiempo más que suficiente para arreglar el software meteorológico!
Aquí hay un GIF de todos los resultados:
Y un ZIP que contiene cada mapa se puede descargar aquí
(Pequeña nota: mi dominio expiró recientemente porque no estaba prestando atención. Lo he renovado, pero la imagen y el enlace anteriores pueden no funcionar hasta que se actualice el DNS)
No calificado:
fuente