Volver a lo básico...
Como profesor en la escuela primaria local (¿primaria?), Necesita una forma de enseñar a su clase sus horarios. A su disposición, tiene cientos de cuadrados y una carga de bolígrafos rojos. También debe poder mostrar a su clase las respuestas correctas rápidamente.
Ahora, eres lo suficientemente inteligente como para escribir un programa que pueda hacer tablas de multiplicar, pero ¿puedes dibujarlas en cien cuadrados?
El reto
Emite cien cuadrados a stdout o equivalentes usando códigos de escape ansi para sombrear números que son múltiplos de la entrada.
- Salida de una cuadrícula de 10x10 que contiene los números 1-100.
- No importa la alineación de números de 2 dígitos en cada cuadro siempre que sea consistente
- Para números de 1 dígito, puede rellenar hasta 2 dígitos y usar el mismo formato que los números de 2 dígitos o centrados en el centro del cuadro.
- Si el número en el cuadro es un múltiplo de la entrada, colorea todo el cuadro de rojo.
- Esto significa la caja completa, no solo la parte numérica
Por ejemplo, dada la entrada 3
, imprima los cien cuadrados dados
Este es el código de golf, por lo que gana la respuesta más corta en bytes.
code-golf
arithmetic
grid
Azul
fuente
fuente
<table>
, por ejemplo?white
ogrey
?curses
no debería importar: el rojo es corto de todos modos.Respuestas:
Python 2, 166 bytes
Reemplazar
♥
por octal033
(el carácter de escape ANSI).Explicación
Tratamos la salida como una
41×21
cuadrícula y calculamos directamente el carácter y el color en cada punto.Es decir, la estructura del código es:
para alguna función
F
.El resultado de
F
siempre es de la siguiente forma:Usamos la cadena de formato
'\33[%dm%s\33[m'
, donde el primero%d
es 0 o 41, y%s
es el carácter que deseamos imprimir.Para el color , tenemos la siguiente fórmula:
No voy a explicar completamente esto, pero básicamente recorre todos los rectángulos que deberían ser de color rojo, y verifica si
(x, y)
está dentro de alguno de ellos.Tenga en cuenta el uso de encadenamiento de operador: reescribí
-1<A<5 and -1<B<3
en5>A>-1<B<3
.Para el personaje , tenemos la siguiente fórmula:
Si
y % 2 == 0
entonces parax = 0, 1, …
esto generará+---+---+---…
Si
y % 2 == 1
entonces parax = 0, 1, …
esto generará| p |p+1|p+2…
fuente
Julia,
219182169 169167 bytesUsado así:
!7
Sin golf:
Tenga en cuenta que esto es muy poco estricto, para una máxima legibilidad.
fuente
HTML + Javascript, 379
HTML:
Javascript:
jsfiddle.
fuente