Voltar à rotina...
Como professor da escola primária local (série?), Você precisa de uma maneira de ensinar à turma as tabelas de horários. À sua disposição, você tem cem quadrados e uma carga de canetas vermelhas. Você também precisa mostrar à sua classe as respostas corretas rapidamente.
Agora, você é esperto o suficiente para escrever um programa que pode fazer tabelas de horários, mas você pode desenhá-las em cem quadrados?
O desafio
Crie cem quadrados para stdout ou equivalente usando códigos de escape para sombrear números que são múltiplos da entrada.
- Saída uma grade 10x10 contendo os números 1-100.
- Não importa o alinhamento de números de 2 dígitos em cada caixa, desde que seja consistente
- Para números de 1 dígito, você pode preencher até 2 dígitos e usar a mesma formatação que os números de 2 dígitos ou centralizar no meio da caixa.
- Se o número na caixa for múltiplo da entrada, colora a caixa inteira em vermelho.
- Isso significa a caixa inteira, não apenas a parte numérica
Por exemplo, dada a entrada 3
, imprima os cem quadrados dados
Isso é código de golfe, então a resposta mais curta em bytes vence!
code-golf
arithmetic
grid
Azul
fonte
fonte
<table>
, por exemplo?white
ougrey
?curses
lo não deve importar - vermelho é curto de qualquer maneira.Respostas:
Python 2, 166 bytes
Substitua
♥
por octal033
(o caractere de escape ANSI).Explicação
Tratamos a saída como uma
41×21
grade e computamos diretamente o caractere e a cor em cada ponto.Ou seja, a estrutura do código é:
para alguma função
F
.O resultado de
F
é sempre da seguinte forma:Usamos a string de formato
'\33[%dm%s\33[m'
, onde a primeira%d
é 0 ou 41 e%s
é o caractere que queremos imprimir.Para a cor , temos a seguinte fórmula:
Não vou explicar completamente isso, mas basicamente passa por todos os retângulos que devem ter a cor vermelha e verifica se
(x, y)
está dentro de algum deles.Observe o uso do encadeamento do operador: eu reescrevi
-1<A<5 and -1<B<3
para5>A>-1<B<3
.Para o personagem , temos a seguinte fórmula:
Se
y % 2 == 0
então, parax = 0, 1, …
isso irá gerar+---+---+---…
Se
y % 2 == 1
então, parax = 0, 1, …
isso irá gerar| p |p+1|p+2…
fonte
Julia,
219182169167 bytesUsado assim:
!7
Ungolfed:
Observe que isso é muito simples, para máxima legibilidade.
fonte
HTML + Javascript, 379
HTML:
Javascript:
jsfiddle.
fonte