Retour aux sources...
En tant que professeur à l'école primaire (primaire?) Locale, vous avez besoin d'un moyen d'enseigner à votre classe leurs horaires. A votre disposition, vous avez cent carrés et une charge de stylos rouges. Vous devez également pouvoir montrer rapidement à votre classe les bonnes réponses.
Maintenant, vous êtes assez intelligent pour écrire un programme qui peut faire des tables de multiplication, mais pouvez-vous les dessiner sur cent carrés?
Le défi
Sortez cent carrés vers stdout ou équivalent en utilisant des codes ansi-escape pour ombrer les nombres qui sont des multiples de l'entrée.
- Sortez une grille 10x10 contenant les nombres 1-100.
- Peu importe l'alignement des nombres à 2 chiffres dans chaque case tant qu'il est cohérent
- Pour les nombres à 1 chiffre, vous pouvez remplir à 2 chiffres et utiliser le même formatage que les nombres à 2 chiffres ou centré au milieu de la boîte.
- Si le nombre dans la case est un multiple de l'entrée, coloriez la case entière en rouge.
- Cela signifie que la boîte entière, pas seulement la partie numérique
Par exemple, étant donné l'entrée 3
, imprimez les cent carrés donnés
C'est le golf de code, donc la réponse la plus courte en octets l'emporte!
code-golf
arithmetic
grid
Bleu
la source
la source
<table>
, par exemple?white
ougrey
?curses
ne devrait pas avoir d'importance - le rouge est de toute façon court.Réponses:
Python 2, 166 octets
Remplacez
♥
par octal033
(le caractère d'échappement ANSI).Explication
Nous traitons la sortie comme une
41×21
grille et calculons directement le caractère et la couleur à chaque point.Autrement dit, la structure du code est la suivante:
pour une certaine fonction
F
.Le résultat de
F
est toujours de la forme suivante:Nous utilisons la chaîne de formatage
'\33[%dm%s\33[m'
, où la première%d
est 0 ou 41, et%s
le caractère que nous souhaitons imprimer.Pour la couleur , nous avons la formule suivante:
Je ne vais pas l'expliquer complètement, mais il passe en boucle sur tous les rectangles qui devraient être colorés en rouge et vérifie s'il se
(x, y)
trouve à l'intérieur de l'un d'eux.Notez l'utilisation du chaînage opérateur: j'ai réécrit
-1<A<5 and -1<B<3
en5>A>-1<B<3
.Pour le personnage , nous avons la formule suivante:
Si
y % 2 == 0
alors pourx = 0, 1, …
cela va générer+---+---+---…
Si
y % 2 == 1
alors pourx = 0, 1, …
cela va générer| p |p+1|p+2…
la source
Julia,
219182169167 167 octetsUtilisé comme ceci:
!7
Non golfé:
Notez que ce n'est pas du tout golfé, pour une lisibilité maximale.
la source
HTML + Javascript, 379
HTML:
Javascript:
jsfiddle.
la source