Jour le plus long de l'année - voici quelque chose pour perdre le temps supplémentaire ...
Aperçu
Notez que ce n'est pas un concours de popularité et pas un défi de sortie graphique - vous devez uniquement produire une chaîne de 65 536 zéros et uns. L'extrait de pile au bas de la question l'affichera sous la forme d'une image en noir et blanc de 256 x 256 et calculera votre score officiel. Vous pouvez ensuite enregistrer l'image et la télécharger dans votre réponse à côté de votre code (car la sortie de chaîne ne tiendra pas dans une réponse Stack Exchange de 30 000 caractères).
Notation
Le score d'une image est la somme des scores de ses pixels individuels. Le score d'un pixel individuel est la somme des sous - scores pour chacune des non-orthogonales , la distance premiers pixels qui sont d' une couleur opposée au pixel étant marqué. Le sous - score pour chaque pixel est 1/p
où p
est la distance de premier choix.
Dans le contexte de cette question, les termes ont les définitions suivantes:
Non orthogonal: Un pixel n'est pas orthogonal au pixel évalué s'il n'est pas dans la même ligne et n'est pas dans la même colonne.
Distance principale: Un pixel est à une distance principale du pixel évalué s'il est séparé par une distance euclidienne qui est exactement un nombre premier. En particulier, la distance est la distance minimale mesurée toroïdalement - le pixel supérieur gauche est une distance du
sqrt(2)
pixel inférieur droit (les 4 bords enveloppent).Couleur opposée: un pixel est de couleur opposée au pixel évalué si ses valeurs totalisent 1. Autrement dit, le premier est 0 et le second est 1, ou le premier est 1 et le second est 0.
L'extrait de pile comprend un exemple de code qui montre comment marquer une image, mais n'inclut aucune optimisation ni approche efficace, juste un code correct pour que la notation des images finales puisse être effectuée de manière cohérente.
Si quelque chose dans le code n'est pas correct, faites-le moi savoir dans les commentaires ou dans le chat .
JavaScript n'est pas nécessairement le meilleur langage pour répondre à ce défi particulier. Notez que le code Snippet ne donne délibérément aucun indice quant à des approches plus rapides. Il n'y aura que des gains d'efficience introduits qui ont déjà été démontrés dans une réponse existante.
Visualisation
Les pixels marquants
Pour une impression intuitive de la distribution des pixels de notation, voici (en violet) les pixels de distance principale non orthogonaux pour le pixel (128, 128) d'une image 256 par 256:
Une image aléatoire
Il s'agit de l'image générée aléatoirement à partir de l'exemple de réponse Python 3. Il a un score de 138 267,64 et vous donne quelque chose à battre.
Contribution
Le code ne nécessite pas d'entrée.
Production
Le code doit produire une chaîne de 65 536 zéros et uns, représentant les pixels d'une image en noir et blanc 256 x 256. Les chiffres doivent être une chaîne continue, sans séparateurs. Vous pouvez trouver le copier-coller plus facile si vous effectuez une sortie vers un fichier, mais cela dépend de vous.
Votre code peut également générer d'autres informations que vous jugez utiles, tant que la chaîne peut être copiée et collée dans l'extrait de pile. Par exemple, vous souhaiterez peut-être sortir la meilleure chaîne à ce jour dans un fichier et le meilleur score à STDOUT à intervalles réguliers, permettant à l'utilisateur de choisir quand arrêter la recherche.
Extrait de pile
Comme l'a souligné Sp3000 , l'extrait prenait 10 minutes pour calculer un score, ce qui est un peu trop lent, même pour une implémentation de référence délibérément inefficace. J'ai édité dans l'amélioration suggérée par Sp3000 de précalculer les décalages de pixels pour le score, et il faut maintenant quelques secondes pour calculer un score.
Si vous utilisez la sortie ou le code d'une autre réponse comme point de départ pour votre propre code, n'oubliez pas de donner un crédit et un lien vers la réponse à l'appui. Les réponses à cette question n'ont pas besoin de créditer l'exemple de réponse ou le code de la question.
la source
Python 3, score 138267,64
Ceci est une réponse minimale comme exemple de ce qui est requis et comme quelque chose à battre ...
Il comprend
Production
Code
C'est juste un exemple. Python n'est pas nécessairement le meilleur langage pour des réponses compétitives à ce défi particulier.
la source