A veces, para conciliar el sueño, cuento lo más alto que puedo, mientras salteo los números que no están libres de cuadrados . Me emociona un poco saltar varios números seguidos, por ejemplo, 48,49,50
NO están libres de cuadrados (48 es divisible por 2 ^ 2, 49 por 7 ^ 2 y 50 por 5 ^ 2).
Esto me llevó a preguntarme sobre el primer ejemplo de números adyacentes divisibles por alguna secuencia arbitraria de divisores.
Entrada
La entrada es una lista ordenada a = [a_0, a_1, ...]
de enteros estrictamente positivos que contiene al menos 1 elemento.
Salida
La salida es el entero positivo más pequeño n
con la propiedad que a_0
divide n
, a_1
divide n+1
y, en general, a_k
divide n+k
. Si no n
existe, el comportamiento de la función / programa no está definido.
Casos de prueba
[15] -> 15
[3,4,5] -> 3
[5,4,3] -> 55
[2,3,5,7] -> 158
[4,9,25,49] -> 29348
[11,7,5,3,2] -> 1518
Tanteo
Este es el código de golf ; El resultado más corto (por idioma) gana los derechos de fanfarronear. Se excluyen las lagunas habituales.
Respuestas:
Wolfram Language (Mathematica) , 51 bytes
Pruébalo en línea!
fuente
Casco , 7 bytes
Pruébalo en línea!
Explicación
fuente
MATL , 11 bytes
Pruébalo en línea!
No está exactamente optimizado para la velocidad ... el caso de prueba más grande toma un minuto completo usando MATL, y aproximadamente 0.03s en MATLAB. Existe una pequeña posibilidad de que MATL tenga un poco más de sobrecarga.
fuente
n:q`QtG\a]1)
12 bytes peron:
obviamente es lo mismo quef
aquí. Siempre me olvido de eso, así que puedes agregarlo como una alternativa de 11 bytes.fq`QtG\a}@
devuelve una copia extraña de la entrada.JavaScript,
4240 bytesLanzará un error de recursión si no hay solución (o si la solución es demasiado grande).
Guardado 2 bytes con un puntero de Rick Hitchcock
Intentalo
Ingrese una lista de números separados por comas.
fuente
[4,9,25,49]
.(a,y=n=0)=>a.some(x=>y++%x)?f(a,++n):n
f=
embargo, no olvides el .Python 3 , 62 bytes
Pruébalo en línea!
fuente
05AB1E , 9 bytes
Pruébalo en línea!
Explicación
fuente
Haskell ,
4544 bytesPruébalo en línea!
Editar: -1 byte gracias a nimi!
fuente
sum(zipWith mod[n..]a)<1
.Limpio , 61 bytes
Pruébalo en línea!
fuente
[1..]
lugar de[0..]
evitar la salida0
, un número entero no positivo, para listas singleton.Pyth , 11 bytes
Pruébalo en línea!
fuente
2
al final? Estoy seguro de que hay más para guardar aquí, pero no sé Pyth.2
soluciona el problemaJ , 23 bytes
Pruébalo en línea!
fuente
I.
que solo devolverá 1 resultado? ¿No es posible que haya múltiples?R , 51 bytes
Pruébalo en línea!
El uso de advertencias
any
arrojak
sobre la conversión implícita alogical
, dondek
está el valor de retorno.fuente
l=c(15)
, yaseq(l)==1:l
que en ese caso.seq
es molesto así!seq_along
es demasiado largo.sum
lugar deany
deshacerse de esas advertencias, para su información.Perl 6 , 34 bytes
Pruébalo en línea!
fuente
APL (Dyalog Unicode) ,
24 2322 bytesPruébalo en línea!
Técnicamente, esta es una función tácita. Tenía que hacerlo así, ya que la única entrada permitida es la lista de enteros. Usos
⎕IO←0
(indexación 0)Vale la pena señalar que la función agota el tiempo de espera si
n
no existe.Gracias a @ngn y @ H.PWiz por 1 byte cada uno.
¿Cómo?
fuente
Perl 5 , 49 + 2 (
-pa
) = 51 bytesPruébalo en línea!
fuente
Japt, 10 bytes
Eventualmente saldrá
undefined
si no existe una solución, si no bloquea su navegador primero.Intentalo
Explicación
fuente
Ruby , 48 bytes
Pruébalo en línea!
fuente
Python 2 , 80 bytes
Pruébalo en línea!
fuente
ML estándar (MLton) , 96 bytes
Pruébalo en línea!
Sin golf:
Pruébalo en línea! Comenzando con
n=1
, la función sef
incrementan
hasta queall
se cumple la condición, en cuyo cason
se devuelve.tabulate(m,g)
con algún enterom
y funcióng
construye la lista[g 0, g 1, ..., g m]
. En nuestra condicióntabulate
se llama con la longitud de la lista de entradal
y una función que verifica si eli
elemento th sel
dividen+i
. Esto produce una lista de booleanos, por lo queall
con la función de identidad sefn x=>x
comprueba si todos los elementos son verdaderos.Encontré un buen truco de golf para acortar la función de identidad en este caso en cuatro bytes: en lugar de lambda
(fn x=>x)
,hd
se utiliza la función incorporada , que devuelve el primer elemento de una lista, y los bools resultantestabulate
se envuelven en[
y]
para crear listas singleton.fuente
PowerShell ,
6562 bytesPruébalo en línea!
PowerShell no tiene el equivalente de un
any
osome
similar, por lo que necesitamos un enfoque ligeramente diferente.Esto toma la entrada
$args[0]
como una matriz, luego ingresa unfor
bucle infinito . Cada iteración establecemos$o
ser1
(explicado más adelante) y establecemos$i
ser++$j
. El incremento$j
mantiene pestañas sobre cuál es el primer número de la solución propuesta, mientras que$i
se incrementará sobre el resto de la solución propuesta.Luego enviamos cada elemento de la entrada
$args[0]
a unForEach-Object
bucle. Dentro del bucle interno, multiplicamos booleanamente en$o
el resultado de un cálculo. Esto hará que si el cálculo falla para un valor,$o
se convertirá en0
. El cálculo es!($i++%$_)
, o el booleano, no de la operación de módulo. Dado que cualquier valor distinto de cero es verdadero en PowerShell, esto convierte cualquier resto en un valor falsey, convirtiéndose así$o
en0
.Fuera del ciclo interno,
if
$o
es distinto de cero, hemos encontrado una solución incremental que funciona, por lo que generamos$j
yexit
.fuente
tinylisp , 108 bytes
La última línea es una función lambda sin nombre que toma una lista y devuelve un entero. Pruébalo en línea!
Sin golf
fuente
Julia 0.6 , 79 bytes
Pruébalo en línea!
Las entradas sin una solución válida provocarán bucles infinitos ... :)
fuente
Python 2, 78 bytes
EDITAR: -26 gracias a @Chas Brown
fuente
Jalea , 10 bytes
Pruébalo en línea!
fuente
NARS APL, 140 bytes, 70 caracteres
prueba
fuente
Java 8,
8275 bytesExplicación:
Pruébalo en línea.
fuente
Ruby ,
47 46 4342 bytesPruébalo en línea!
NB: la
(1..)
sintaxis solo es compatible con ruby 2.6, por el momento TIO solo es compatible con 2.5, por lo que el enlace es a una versión anterior (43 bytes).fuente