Formule auto-référentielle de Tupper (copie de Wikipedia)
La formule auto-référentielle de Tupper est une formule définie par Jeff Tupper qui, lorsqu'elle est représentée graphiquement en deux dimensions à un endroit très spécifique du plan, peut être "programmée" pour reproduire visuellement la formule elle-même. Il est utilisé dans divers cours de mathématiques et d'informatique comme exercice de représentation graphique de formules.
Où est la fonction de sol.
Soit k
le numéro à 543 chiffres suivant:
960939379918958884971672962127852754715004339660129306651505519271702802395266424689642842174350718121267153782770623355993237280874144307891325963941337723487857735749823926629715517173716995165232890538221612403238855866184013235585136048828693337902491454229288667081096184496091705183454067827731551705405381627380967602565625016981482083418783163849115590225610003652351370343874461848378737238198224849863465033159410054974700593138339226497249461751545728366702369745461014655997933798537483143786841806593422227898388722980000748404719
Si un graphique l'ensemble des points (x, y)
dans 0 <= x < 106
et k <= y < k + 17
satisfaisant à l'inégalité donnée ci - dessus, l'aspect graphique résultant comme celui - ci (note que les axes dans ce complot ont été inversés, sinon l'image ressorte à l' envers):
Et alors?
Ce qui est intéressant à propos de cette formule est qu’elle peut être utilisée pour représenter graphiquement toute image possible en noir et blanc au format 106x17. Effectivement, effectuer une recherche serait extrêmement fastidieux. Il existe donc un moyen de déterminer la valeur k où votre image apparaît. Le processus est assez simple:
- Commencez par le pixel en bas de la première colonne de votre image.
- Si le pixel est blanc, un 0 sera ajouté à la valeur-k. S'il est noir, ajoutez un 1.
- Montez la colonne en répétant l'étape 2.
- Une fois à la fin de la colonne, passez à la colonne suivante et partez du bas en suivant le même processus.
- Une fois chaque pixel analysé, convertissez cette chaîne binaire en décimal et multipliez-la par 17 pour obtenir la valeur k.
Quel est mon travail
Votre travail consiste à créer un programme qui peut prendre n'importe quelle image 106x17 et générer sa valeur k correspondante. Vous pouvez faire les hypothèses suivantes:
- Toutes les images seront exactement 106x17
- Toutes les images ne contiendront que des pixels noirs (# 000000) ou blancs (#FFFFFF), rien entre les deux.
Il y a aussi quelques règles:
- La sortie est simplement la valeur k. Il doit être dans la base appropriée, mais peut être dans n’importe quel format.
- Les images doivent être lues à partir d’un fichier PNG ou PPM.
- Aucune échappatoire standard.
Images d'essai
[ ] devrait produire ~ 1.4946x10 542
[ ] devrait produire ~ 7.2355x10 159
[ ] devrait produire 2 1801 * 17
[ ] devrait produire (2 1802 -1) * 17
Découvrez ce Gist pour les solutions exactes.
C'est le code-golf , donc le moins d'octets gagne.
Liens utiles
quine
quelque part.