En griffonnant sur du papier quadrillé l'autre jour, j'ai trouvé la police à espace négatif ci-dessus pour les chiffres. Au cas où vous ne l'auriez pas encore repéré, les espaces entre les formes ci-dessus donnent le nombre d'or de 1,618033988749 . Dans ce défi, votre tâche consiste à prendre un nombre en entrée et à le rendre exactement comme le montre l'exemple ci-dessus.
Voici comment ceux-ci sont créés. Toutes les lignes seront sur une grille régulière, de sorte que les chiffres individuels sont constitués d'un petit nombre de cellules de grille. Voici les formes des 10 chiffres (nous ignorerons le point décimal pour ce défi):
Oui, le 7 diffère de l'exemple du nombre d'or en haut. J'ai un peu gâché ça. Nous irons avec celui-ci.
Notez que chaque chiffre mesure cinq cellules de haut et trois cellules de large. Pour rendre un nombre, vous pouvez imaginer placer tous ses chiffres l'un à côté de l'autre, de sorte qu'il y ait exactement une colonne vide entre chaque paire de chiffres. Par exemple, en prenant 319
comme entrée, nous écririons:
Notez que nous ajoutons une colonne vide de début et de fin. Maintenant, nous inversons les cellules:
La sortie doit alors être les limites des polygones résultants:
Bien sûr, vous pouvez générer le résultat de toute autre manière, tant que la sortie rendue est identique.
Contribution
- Vous pouvez écrire un programme ou une fonction, en prenant une entrée via STDIN (ou l'alternative la plus proche), un argument de ligne de commande ou un argument de fonction, sous forme de chaîne ou de liste de chiffres. (Vous ne pouvez pas prendre un nombre car cela ne vous permettrait pas de prendre en charge les zéros non significatifs.)
- Vous pouvez supposer qu'il n'y aura plus de 16 chiffres dans l'entrée.
Sortie
- La sortie peut être affichée à l'écran ou écrite dans un fichier dans un format d'image commun.
- Vous pouvez utiliser des graphiques raster et vectoriels.
- Dans les deux cas, le rapport d'aspect des cellules de la grille sous-jacente doit être 1 (c'est-à-dire que les cellules doivent être des carrés).
- Dans le cas de graphiques raster, chaque cellule doit couvrir au moins 20 x 20 pixels.
- Les lignes ne doivent pas dépasser 10% de la taille des cellules. Je suis prêt à donner un ou deux pixels de latitude en raison de l'aliasing ici.
- Les lignes et l'arrière-plan peuvent être deux couleurs clairement distinctes, mais les formes créées par les lignes ne doivent pas être remplies (c'est-à-dire que l'intérieur doit également être la couleur d'arrière-plan).
- Il ne doit y avoir aucun espace dans chaque boucle fermée.
- Bien sûr, le résultat entier doit être visible.
Cas de test
Voici 10 entrées, qui couvrent ensemble toutes les paires possibles de chiffres adjacents, ainsi que tous les chiffres avant et arrière possibles:
07299361548
19887620534
21456837709
39284106657
49085527316
59178604432
69471338025
79581224630
89674235011
97518264003
Et voici les résultats attendus pour ceux-ci:
Assurez-vous que votre code fonctionne également lorsqu'il est donné un seul chiffre (je ne veux pas inclure les résultats attendus ici, car ils devraient être évidents, et la section de cas de test est assez gonflée telle quelle).