Los números primos solitarios (como los llamo) son números primos, donde, dada una cuadrícula numérica con ancho w ≥ 3
, son números primos que no tienen otros números primos adyacentes a ellos de forma ortogonal o diagonal.
Por ejemplo, si tomamos esta cuadrícula donde w = 12
(primos resaltados en negrita):
1 2 3 4 5 6 7 8 9 10 11 12
13 14 15 16 17 18 19 20 21 22 23...
...86 87 88 89 90 91 92 93 94 95 96
97 98 99 100 101 102 103 104 105 106 107 108
109 110 111 112 113 114 115 116 117 118 119 120
Puede ver que solo los dos números primos 103 y 107 no tienen números primos ortogonal o diagonalmente adjetivos. Me he saltado una sección porque no hay primos solitarios allí. (excepto 37, en realidad)
Su tarea es, dada dos entradas w ≥ 3
y i ≥ 1
, determinar el primer primo solitario en una cuadrícula de números con ancho w
, donde dicho primo solitario debe ser mayor o igual que i
. Las entradas pueden tomarse en cualquier formato razonable (incluso tomarlas como cadenas). Se garantiza que habrá un cebado solitario para el ancho w
.
La cuadrícula no se envuelve.
Ejemplos:
w i output
11 5 11
12 104 107
12 157 157
9 1 151
12 12 37
Como se trata de código de golf , ¡el código más corto gana!
w=12
no37
a un primer solo? Ninguno de los números que lo rodean{25, 26, 38, 49, 50}
es primo.Respuestas:
C (gcc) ,
159158149 bytesPruébalo en línea!
fuente
JavaScript (ES6),
116104bytesToma entrada en la sintaxis de curry
(w)(i)
.Casos de prueba
Mostrar fragmento de código
Comentado
fuente
Python 2 , 144 bytes
Pruébalo en línea!
Argumentos en orden:
w
,i
.No se utilizan módulos externos aquí.
Python 2 + sympy, 127 bytes
Pruébalo en línea!
No merece una publicación diferente, ya que la única diferencia aquí es que usa en
sympy.isprime
lugar de una función de verificación principal implementada manualmente.fuente
MATL , 38 bytes
Pruébalo en línea! O verificar todos los casos de prueba .
Explicación
El código consiste esencialmente en un bucle que sigue ampliando la cuadrícula como se describe en el desafío en una fila en cada iteración.
Después de crear la cuadrícula en cada iteración, se elimina la última fila (no podemos saber si esos primos son solitarios o no) y los números restantes se prueban para ver si existe al menos un primo solitario. Esto se hace a través de convolución 2D.
Si hay algún primo solitario, salimos del bucle y sacamos el primer primo. De lo contrario, procederemos con la siguiente iteración, que intentará con una cuadrícula más grande.
(El código en realidad usa una versión transpuesta de la cuadrícula, que se amplía por columnas en lugar de por filas).
fuente
Julia 0.6, 135 bytes
TIO no tiene el
Primes
paquete. Es 5 bytes más corto si se me permite devolver todos los primos solitarios (sefindfirst
conviertefind
). El intento de Julia de mover la funcionalidadBase
está perjudicando el golf (no es un objetivo de Julia),Primes
se incluyó en 0.4.Sin golf (en su mayoría)
fuente
Jalea , 20 bytes
Pruébalo en línea!
Cómo funciona
fuente
Perl 6 ,
113104bytesPruébalo en línea!
fuente
Limpio ,
181... 145 bytesPruébalo en línea!
Sin golf:
fuente
Jalea ,
3029 bytesSupongo que esto es probablemente superable por un margen justo
Un enlace diádico que toma
i
a la izquierda yw
a la derecha que devuelve el primo solitario.Pruébalo en línea!
¿Cómo?
fuente
Java 8, 176 bytes
Puerto de Jonathan Frech 'C respuesta .
Pruébalo en línea.
fuente