Le puzzle carré 3x3 Hexa Prime
introduction
Nous considérons 3x3 carrés de chiffres hexadécimaux (de 0
à F
) tels que:
2 E 3 1 F 3
8 1 5 7 2 7
D D 5 B B 9
Nous définissons un carré Hexa Prime 3x3 ( HPS3 ) comme un carré pour lequel tous les nombres hexadécimaux lus de gauche à droite et de haut en bas sont des nombres premiers impairs (c'est-à-dire des nombres premiers supérieurs à 2).
Cela est vrai pour le carré de gauche et faux pour le carré de droite:
2 E 3 --> 0x2E3 = 739 1 F 3 --> 0x1F3 = 499
8 1 5 --> 0x815 = 2069 7 2 7 --> 0x727 = 1831
D D 5 --> 0xDD5 = 3541 B B 9 --> 0xBB9 = 3001
| | | | | |
| | +---> 0x355 = 853 | | +---> 0x379 = 889 = 7 x 127
| +-----> 0xE1D = 3613 | +-----> 0xF2B = 3883 = 11 x 353
+-------> 0x28D = 653 +-------> 0x17B = 379
Objectif
Étant donné une liste de 9 chiffres hexadécimaux, votre objectif est de trouver un arrangement qui forme un HPS3.
Exemple:
Input: 123558DDE
Possible output: 2E3815DD5 (a flattened representation of the above left example)
Entrée sortie
Les formats d'entrée et de sortie sont flexibles. La seule exigence est que les chiffres de sortie soient classés de gauche à droite et de haut en bas. Voici quelques options possibles:
"2E3815DD5"
[ 0x2, 0xE, 0x3, 0x8, 0x1, 0x5, 0xD, 0xD, 0x5 ]
[ "2", "E", "3", "8", "1", "5", "D", "D", "5" ]
[
[ 0x2, 0xE, 0x3 ],
[ 0x8, 0x1, 0x5 ],
[ 0xD, 0xD, 0x5 ]
]
[ "2E3", "815", "DD5" ]
etc.
L'utilisation du même format pour l'entrée et la sortie n'est pas requise.
Règles
- Il s'agit de code-golf, donc la réponse la plus courte en octets l'emporte. Les failles standard sont interdites.
- Votre algorithme doit être déterministe
- Vous ne pouvez pas simplement tordre le tableau jusqu'à ce qu'il soit valide, même de manière déterministe (en utilisant une graine aléatoire constante).
- Vous pouvez lister toutes les solutions possibles pour une entrée donnée, mais ce n'est ni requis ni soumis à un bonus.
- Vous n'êtes pas obligé de prendre en charge les entrées qui n'admettent aucune solution. (C'est très bien si votre code est en boucle pour toujours ou se bloque dans ce cas.)
Cas de test
Input Possible output
---------------------------
123558dde 2e3815dd5
1155578ab a7b851551
03bddffff ffd0dfb3f
35899beff 8f99e3bf5
15899bbdf 581bb9fd9
14667799f 6f1469779
13378bcdd 78d1cd33b
24577bbdd 7274bd5db
1118bbddd 11b18dbdd
223556cdd 623c25dd5
12557899a 8a5295971
113579bbd 5b3db7191
la source
Réponses:
05AB1E ,
2321 octetsLes usages encodage CP-1252 .
Trop lent pour TIO.
Explication
la source
Python 2,
212206197194 octetsNécessite une entrée entre guillemets, comme
"123558dde"
Enregistrement de 9 et 3 octets grâce à Jonathan Allan
Nouveau filtre principal trouvé de xnor (modifié le carré, car nous ne voulons pas que 2 soit ici), l'ancien filtre principal est de Bob
la source
P+=[k][:p%k]
- quandp%k
n'est pas0
la tranche donnera[k]
, quand elle sera,0
elle donnera[]
.from itertools import*
une astuce de golf soignée qui économisera quelques octets. Oubliez également l'efficacité et faitesk<5e3
.P
c'est super.print[s for s in map(''.join,permutations(input()))if all(int(s[3*i:][:3],16)in P and int(s[i::3],16)in P for i in(0,1,2))]
Pyth,
2321 octetsExpire en ligne, mais se termine en 1,5 minute sur mon ordinateur portable. Prend entrée entre guillemets.
Explication
la source
Gelée ,
3430 octets(Je devrais pouvoir utiliser un nfind pour récupérer la première correspondance,
1#
à la place deÐfḢ
, pour moins d'octets et plus de vitesse, mais je vois des erreurs lorsque j'essaie. EDIT: a écrit quelques modifications pour éventuellement implémenter cela dans Jelly.)Recherche de force brute de toutes les permutations, filtrée pour les critères, renvoyant la première correspondance.
Beaucoup trop lent pour TtyItOnline. Exemples de sortie locale:
Comment?
la source
J, 49 octets
Recherche par force brute qui teste toutes les permutations et génère toutes les permutations qui satisfont aux conditions du puzzle.
Les performances sont suffisamment bonnes pour calculer chaque cas de test en environ 3 secondes.
Usage
Explication
la source
Mathematica, 115 octets
L'entrée doit être une liste de caractères (par exemple
{"1", "2", "3", "5", "5", "8", "D", "D", "E"}
)la source
Rubis, 146 octets
La fonction anonyme prend un tableau de neuf entiers, renvoie une solution sous la forme d'un tableau de neuf entiers. S'appuie sur la fonction d'assistance
g
et arequire
.Cette version de 140 octets imprime toutes les solutions possibles, avec les nombres entiers sous forme décimale (je ne sais pas si cela est autorisé.)
Non testé dans le programme de test
la source
Groovy, 134 octets
Recherche toutes les solutions possibles et les renvoie sous forme de tableau, renvoie
[]
s'il n'y a pas de solution.Exemple d'entrée:
123558dde
Sortie:
Exemple d'entrée:
222222222
Sortie:[]
Si quelqu'un veut que je le commente, braillez un frère.
la source