Mientras garabateaba en papel de regla cuadrada el otro día, se me ocurrió la fuente de espacio negativo anterior para dígitos. En caso de que aún no lo haya visto, los espacios entre las formas anteriores producen la proporción dorada 1.618033988749 . En este desafío, su tarea es tomar un número como entrada y representarlo exactamente como se muestra en el ejemplo anterior.
Así es como se crean estos. Todas las líneas estarán en una cuadrícula regular, de modo que los dígitos individuales estén formados por un pequeño número de celdas de la cuadrícula. Aquí están las formas de los 10 dígitos (ignoraremos el punto decimal para este desafío):
Sí, el 7 difiere del ejemplo de la proporción áurea en la parte superior. Lo arruiné un poco. Iremos con este.
Observe que cada dígito tiene cinco celdas de alto y tres celdas de ancho. Para representar un número, puede imaginarse colocando todos sus dígitos uno al lado del otro, de modo que haya exactamente una columna vacía entre cada par de dígitos. Por ejemplo, tomando 319
como entrada, escribiríamos:
Observe que agregamos una columna vacía inicial y final. Ahora invertimos las células:
La salida debería ser los límites de los polígonos resultantes:
Por supuesto, puede generar el resultado de cualquier otra manera, siempre que la salida representada tenga el mismo aspecto.
Entrada
- Puede escribir un programa o función, tomando la entrada a través de STDIN (o la alternativa más cercana), argumento de línea de comando o argumento de función, como una cadena o lista de dígitos. (No puede tomar un número ya que eso no le permitiría admitir ceros iniciales).
- Puede suponer que no habrá más 16 dígitos en la entrada.
Salida
- La salida puede mostrarse en la pantalla o escribirse en un archivo en un formato de imagen común.
- Puede usar tanto gráficos de trama como gráficos vectoriales.
- En cualquier caso, la relación de aspecto de las celdas de la cuadrícula subyacente debe ser 1 (es decir, las celdas deben ser cuadrados).
- En el caso de los gráficos de trama, cada celda debe cubrir al menos 20 por 20 píxeles.
- Las líneas no deben ser más anchas que el 10% del tamaño de la celda. Estoy dispuesto a dejar uno o dos píxeles de margen debido al alias aquí.
- Las líneas y el fondo pueden ser dos colores claramente distinguibles, pero las formas creadas por las líneas no deben rellenarse (es decir, el interior también debe ser el color de fondo).
- No debe haber huecos dentro de cada circuito cerrado.
- Por supuesto, todo el resultado debe ser visible.
Casos de prueba
Aquí hay 10 entradas, que juntas cubren todos los pares posibles de dígitos adyacentes, así como todos los dígitos iniciales y finales posibles:
07299361548
19887620534
21456837709
39284106657
49085527316
59178604432
69471338025
79581224630
89674235011
97518264003
Y aquí están los resultados esperados para aquellos:
Asegúrese de que su código también funcione cuando se le da un solo dígito (no quiero incluir los resultados esperados aquí, porque deberían ser obvios, y la sección del caso de prueba está lo suficientemente hinchada como está).