Pour une image N par N , recherchez un ensemble de pixels tel qu'aucune distance de séparation ne soit présente plus d'une fois. Autrement dit, si deux pixels sont séparés par une distance d , alors ce sont les deux seuls pixels qui sont séparés par exactement d (en utilisant la distance euclidienne ). Notez que d n'a pas besoin d'être entier.
Le défi est de trouver un tel ensemble plus grand que quiconque.
spécification
Aucune contribution n'est requise - pour ce concours, N sera fixé à 619.
(Puisque les gens continuent de demander - le nombre 619 n'a rien de spécial. Il a été choisi pour être suffisamment grand pour rendre improbable une solution optimale, et assez petit pour permettre à une image N par N d'être affichée sans que Stack Exchange la rétrécisse automatiquement. Les images peuvent être affiché en taille réelle jusqu'à 630 par 630, et j'ai décidé d'aller avec le plus grand nombre premier qui ne dépasse pas cela.)
Le résultat est une liste d'entiers séparés par des espaces.
Chaque entier dans la sortie représente l'un des pixels, numéroté dans l'ordre de lecture anglais à partir de 0. Par exemple pour N = 3, les emplacements seraient numérotés dans cet ordre:
0 1 2
3 4 5
6 7 8
Vous pouvez générer des informations de progression pendant l'exécution si vous le souhaitez, tant que la sortie de notation finale est facilement disponible. Vous pouvez exporter vers STDOUT ou vers un fichier ou tout ce qui est plus facile à coller dans le juge d'extrait de pile ci-dessous.
Exemple
N = 3
Coordonnées choisies:
(0,0)
(1,0)
(2,1)
Sortie:
0 1 5
Gagnant
Le score est le nombre d'emplacements dans la sortie. Parmi les réponses valides qui ont le score le plus élevé, la première à publier la sortie avec ce score l'emporte.
Votre code n'a pas besoin d'être déterministe. Vous pouvez publier votre meilleure sortie.
Domaines de recherche connexes
(Merci à Abulafia pour les liens Golomb)
Bien qu'aucun de ces éléments ne soit identique à ce problème, ils sont tous deux de concept similaire et peuvent vous donner des idées sur la façon d'aborder ce problème:
- Règle de Golomb : le cas 1 dimension.
- Rectangle de Golomb : une extension bidimensionnelle de la règle de Golomb. Une variante du cas NxN (carré) connu sous le nom de tableau Costas est résolue pour tous les N.
Notez que les points requis pour cette question ne sont pas soumis aux mêmes exigences qu'un rectangle de Golomb. Un rectangle de Golomb s'étend du cas unidimensionnel en exigeant que le vecteur de chaque point à l'autre soit unique. Cela signifie qu'il peut y avoir deux points séparés par une distance de 2 horizontalement, et également deux points séparés par une distance de 2 verticalement.
Pour cette question, c'est la distance scalaire qui doit être unique, donc il ne peut pas y avoir une séparation horizontale et verticale de 2. Chaque solution à cette question sera un rectangle de Golomb, mais tous les rectangles de Golomb ne seront pas une solution valide pour cette question.
Limites supérieures
Dennis a utilement souligné dans le chat que 487 est une limite supérieure sur le score, et a donné une preuve:
Selon mon code CJam (
619,2m*{2f#:+}%_&,
), il y a 118800 nombres uniques qui peuvent être écrits comme la somme des carrés de deux entiers compris entre 0 et 618 (les deux inclus). n pixels nécessitent n (n-1) / 2 distances uniques entre eux. Pour n = 488, cela donne 118828.
Il y a donc 118 800 longueurs différentes possibles entre tous les pixels potentiels de l'image, et placer 488 pixels noirs entraînerait 118 828 longueurs, ce qui rend impossible leur caractère unique.
Je serais très intéressé d'entendre si quelqu'un a une preuve d'une limite supérieure inférieure à celle-ci.
Classement
(Meilleure réponse de chaque utilisateur)