El rompecabezas cuadrado 3x3 Hexa Prime
Introducción
Consideramos 3x3 cuadrados de dígitos hexadecimales (de 0
a F
) como:
2 E 3 1 F 3
8 1 5 7 2 7
D D 5 B B 9
Definimos un 3x3 Hexa Prime Square ( HPS3 ) como un cuadrado para el cual todos los números hexadecimales leídos de izquierda a derecha y de arriba a abajo son números primos impares (es decir, números primos mayores que 2).
Esto es cierto para el cuadrado izquierdo y falso para el cuadrado derecho:
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
Objetivo
Dada una lista de 9 dígitos hexadecimales, su objetivo es encontrar una disposición que forme un HPS3.
Ejemplo:
Input: 123558DDE
Possible output: 2E3815DD5 (a flattened representation of the above left example)
De entrada y salida
Los formatos de entrada y salida son flexibles. El único requisito es que los dígitos de salida se ordenen de izquierda a derecha y de arriba a abajo. A continuación se presentan algunas opciones posibles:
"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.
No es necesario usar el mismo formato para entrada y salida.
Reglas
- Este es el código de golf, por lo que gana la respuesta más corta en bytes. Las lagunas estándar están prohibidas.
- Su algoritmo debe ser determinista.
- No puede simplemente bogosort la matriz hasta que sea válida, incluso de una manera determinista (mediante el uso de una semilla aleatoria constante).
- Usted puede listar todas las soluciones posibles para una entrada dada, pero esto no es ni necesaria ni está sujeta a un bono.
- No está obligado a admitir entradas que no admiten ninguna solución. (Está perfectamente bien si su código se repite para siempre o falla en ese caso).
Casos de prueba
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
code-golf
primes
hexadecimal
Arnauld
fuente
fuente
Respuestas:
05AB1E ,
2321 bytesUtiliza la codificación CP-1252 .
Demasiado lento para TIO.
Explicación
fuente
Python 2,
212206197194 bytesRequiere entrada entre comillas, como
"123558dde"
Ahorrando 9 y 3 bytes gracias a Jonathan Allan
Se encontró un nuevo filtro de cebado de xnor (se modificó el cuadrado, ya que no queremos 2 como cebado aquí), el filtro de cebado antiguo es de Bob
fuente
P+=[k][:p%k]
? Cuandop%k
no es0
la rebanada rendirá[k]
, cuando lo sea0
, rendirá[]
.from itertools import*
es un buen truco de golf que ahorrará un par de bytes. También renunciar a la eficiencia y hacerk<5e3
.P
es genial.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 bytesTiempo de espera en línea, pero termina en 1,5 minutos en mi computadora portátil. Toma entrada entre comillas.
Explicación
fuente
Jalea ,
3430 bytes(Debería poder usar un nfind para obtener la primera coincidencia,
1#
en lugar deÐfḢ
, por menos bytes y más velocidad, pero veo errores cuando lo intento. EDITAR: escribió algunos cambios para posiblemente implementar esto en Jelly).Búsqueda de fuerza bruta de todas las permutaciones, filtrada por los criterios, devolviendo la primera coincidencia.
Demasiado lento para TtyItOnline. Ejemplos de salida local:
¿Cómo?
fuente
J, 49 bytes
Búsqueda de fuerza bruta que prueba todas las permutaciones y genera todas las permutaciones que satisfacen las condiciones del rompecabezas.
El rendimiento es lo suficientemente bueno como para calcular cada caso de prueba en aproximadamente 3 segundos.
Uso
Explicación
fuente
Mathematica, 115 bytes
La entrada debe ser una lista de caracteres (p
{"1", "2", "3", "5", "5", "8", "D", "D", "E"}
. Ej. )fuente
Ruby, 146 bytes
La función anónima toma una matriz de nueve enteros, devuelve una solución como una matriz de nueve enteros. Se basa en la función auxiliar
g
y arequire
.Esta versión de 140 bytes imprime todas las soluciones posibles, con los enteros como decimales (no estoy seguro si eso está permitido).
Sin golf en el programa de prueba
fuente
Groovy, 134 Bytes
Encuentra todas las soluciones posibles y las devuelve como una matriz, devuelve
[]
si no hay una solución.Ejemplo de entrada:
123558dde
Salida:
Ejemplo de entrada:
222222222
Salida:[]
Si alguien quiere que lo comente, grita a un hermano.
fuente