Parfois, pour m'endormir, je compterai aussi haut que possible, tout en sautant les nombres qui ne sont pas sans carré . Je ressens un peu de frisson quand je peux sauter plusieurs chiffres d'affilée - par exemple, ils ne 48,49,50
sont PAS tous sans carré (48 est divisible par 2 ^ 2, 49 par 7 ^ 2 et 50 par 5 ^ 2).
Cela m'a amené à m'interroger sur le premier exemple de nombres adjacents divisibles par une séquence arbitraire de diviseurs.
Contribution
L'entrée est une liste ordonnée a = [a_0, a_1, ...]
d'entiers strictement positifs contenant au moins 1 élément.
Sortie
La sortie est le plus petit entier positif n
avec la propriété qui a_0
divise n
, a_1
divise n+1
et plus généralement a_k
divise n+k
. S'il n'en n
existe pas, le comportement de la fonction / du programme n'est pas défini.
Cas de test
[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
Notation
C'est du golf de code ; le résultat le plus court (par langue) gagne des droits de vantardise. Les failles habituelles sont exclues.
Réponses:
Wolfram Language (Mathematica) , 51 octets
Essayez-le en ligne!
la source
Husk , 7 octets
Essayez-le en ligne!
Explication
la source
MATL , 11 octets
Essayez-le en ligne!
Pas exactement optimisé pour la vitesse ... le plus grand cas de test prend une minute entière en utilisant MATL, et environ 0,03 s sur MATLAB. Il y a une petite possibilité que MATL ait un peu plus de surcharge.
la source
n:q`QtG\a]1)
12 octets maisn:
c'est évidemment le mêmef
qu'ici. J'oublie toujours cela, vous pouvez donc l'ajouter comme alternative à 11 octets.fq`QtG\a}@
renvoie une copie superflue de l'entrée.JavaScript,
4240 octetsLance une erreur de récursivité s'il n'y a pas de solution (ou si la solution est trop grande).
Enregistré 2 octets avec un pointeur de Rick Hitchcock
Essayez-le
Entrez une liste de nombres séparés par des virgules.
la source
[4,9,25,49]
.(a,y=n=0)=>a.some(x=>y++%x)?f(a,++n):n
f=
, cependant.Python 3 , 62 octets
Essayez-le en ligne!
la source
05AB1E , 9 octets
Essayez-le en ligne!
Explication
la source
Haskell ,
4544 octetsEssayez-le en ligne!
Edit: -1 octet grâce à nimi!
la source
sum(zipWith mod[n..]a)<1
.Nettoyer , 61 octets
Essayez-le en ligne!
la source
[1..]
au lieu d'[0..]
éviter la sortie0
, un entier non positif, pour les listes singleton.Pyth , 11 octets
Essayez-le en ligne!
la source
2
à la fin? Je suis sûr qu'il y a plus à sauver ici mais je ne connais pas Pyth.2
corrige le problèmeJ , 23 octets
Essayez-le en ligne!
la source
I.
qu'il ne renverra qu'un seul résultat? N'est-il pas possible qu'il y en ait plusieurs?R , 51 octets
Essayez-le en ligne!
L'utilisation de
any
jette desk
avertissements sur la conversion implicite verslogical
, oùk
est la valeur de retour.la source
l=c(15)
, carseq(l)==1:l
dans ce cas.seq
c'est ennuyeux comme ça!seq_along
est tout simplement trop long.sum
au lieu deany
se débarrasser de ces avertissements, FYI.Perl 6 , 34 octets
Essayez-le en ligne!
la source
APL (Dyalog Unicode) ,
24 2322 octetsEssayez-le en ligne!
Techniquement, c'est une fonction tacite. J'ai dû le faire car la seule entrée autorisée est la liste des entiers. Utilisations
⎕IO←0
(0-indexation)Il convient de noter que la fonction expire si elle
n
n'existe pas.Merci à @ngn et @ H.PWiz pour 1 octet chacun.
Comment?
la source
Perl 5 , 49 + 2 (
-pa
) = 51 octetsEssayez-le en ligne!
la source
Japt, 10 octets
Sortira éventuellement
undefined
si aucune solution n'existe, si elle ne plante pas d'abord votre navigateur.Essayez-le
Explication
la source
Rubis , 48 octets
Essayez-le en ligne!
la source
Python 2 , 80 octets
Essayez-le en ligne!
la source
ML standard (MLton) , 96 octets
Essayez-le en ligne!
Non golfé:
Essayez-le en ligne! À partir de
n=1
, la fonctionf
incrémenten
jusqu'à ce que la conditionall
-c soit remplie, auquel cas ellen
est renvoyée.tabulate(m,g)
avec un entierm
et une fonctiong
construit la liste[g 0, g 1, ..., g m]
. Dans notre conditiontabulate
est appelée avec la longueur de la liste d'entréel
et une fonction qui vérifie si lei
e élément desl
divisionsn+i
. Cela donne une liste de booléens, doncall
avec la fonction d'identitéfn x=>x
vérifie si tous les éléments sont vrais.J'ai trouvé un truc de golf agréable de réduire la fonction d'identité dans ce cas par quatre octets: Au lieu du lambda
(fn x=>x)
, l'accumulation de la fonctionhd
est utilisée, qui renvoie le premier élément d'une liste, et les bools résultant entabulate
sont enveloppés dans[
et]
à créer des listes singleton.la source
PowerShell ,
6562 octetsEssayez-le en ligne!
PowerShell n'a pas l'équivalent d'un
any
ousome
ou similaire, nous avons donc besoin d'une approche légèrement différente.Cela prend l'entrée
$args[0]
comme un tableau, puis entre dans unefor
boucle infinie . Chaque itération que nous avons définie$o
pour être1
(expliquée plus loin) et définie$i
pour être++$j
. L'incrémentation$j
garde un œil sur le premier numéro de la solution proposée, tandis que l'$i
incrémentation sur le reste de la solution proposée.Nous envoyons ensuite chaque élément de l'entrée
$args[0]
dans uneForEach-Object
boucle. À l'intérieur de la boucle intérieure, nous multiplions par booléen$o
le résultat d'un calcul. Cela fera en sorte que si le calcul échoue pour une valeur, le$o
deviendra0
. Le calcul est!($i++%$_)
, ou le booléen-pas de l'opération modulo. Étant donné que toute valeur non nulle est truthy dans PowerShell, cela transforme tout en une valeur reliquats de Falsey, transformant ainsi$o
en0
.En dehors de la boucle interne,
if
$o
n'est pas nul, nous avons trouvé une solution d'incrémentation qui fonctionne, nous avons donc sorti$j
etexit
.la source
tinylisp , 108 octets
La dernière ligne est une fonction lambda sans nom qui prend une liste et retourne un entier. Essayez-le en ligne!
Non golfé
la source
Julia 0.6 , 79 octets
Essayez-le en ligne!
Les entrées sans solutiosn valide provoqueront une boucle infinie ... :)
la source
Python 2, 78 octets
EDIT: -26 grâce à @Chas Brown
la source
Gelée , 10 octets
Essayez-le en ligne!
la source
APL NARS, 140 octets, 70 caractères
tester
la source
Java 8,
8275 octetsExplication:
Essayez-le en ligne.
la source
Rubis ,
47 46 4342 octetsEssayez-le en ligne!
NB: la
(1..)
syntaxe n'est supportée que dans ruby 2.6, pour l'instant TIO ne supporte que 2.5 donc le lien est vers une version plus ancienne (43 octets).la source