Às vezes, para adormecer, contarei o mais alto que puder, ignorando números que não são quadrados . Fico um pouco emocionado ao pular vários números seguidos - por exemplo, 48,49,50
todos NÃO são livres de quadrados (48 é divisível por 2 ^ 2, 49 por 7 ^ 2 e 50 por 5 ^ 2).
Isso me levou a pensar sobre o exemplo mais antigo de números adjacentes divisíveis por alguma sequência arbitrária de divisores.
Entrada
Input é uma lista ordenada a = [a_0, a_1, ...]
de números inteiros estritamente positivos contendo pelo menos 1 elemento.
Saída
A saída é o menor número inteiro positivo n
com a propriedade que a_0
divide n
, a_1
divide n+1
e mais geralmente a_k
divide n+k
. Se não n
existir, o comportamento da função / programa não está definido.
Casos de teste
[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
Pontuação
Isso é código-golfe ; o resultado mais curto (por idioma) ganha direito de se gabar. As brechas usuais são excluídas.
Respostas:
Wolfram Language (Mathematica) , 51 bytes
Experimente online!
fonte
Casca , 7 bytes
Experimente online!
Explicação
fonte
MATL , 11 bytes
Experimente online!
Não exatamente otimizado para velocidade ... o maior caso de teste leva um minuto inteiro usando MATL e aproximadamente 0,03s no MATLAB. Há uma pequena possibilidade de o MATL ter um pouco mais de sobrecarga.
fonte
n:q`QtG\a]1)
12 bytes, masn:
é obviamente o mesmo quef
aqui. Eu sempre esqueço disso, então você pode adicioná-lo como um 11 byter alternativo.fq`QtG\a}@
retorna uma cópia estranha da entrada.JavaScript,
4240 bytesIrá gerar um erro de recursão se não houver solução (ou a solução for muito grande).
2 bytes salvos com um ponteiro de Rick Hitchcock
Tente
Digite uma lista de números separados por vírgula.
fonte
[4,9,25,49]
,.(a,y=n=0)=>a.some(x=>y++%x)?f(a,++n):n
f=
, no entanto.Python 3 , 62 bytes
Experimente online!
fonte
05AB1E , 9 bytes
Experimente online!
Explicação
fonte
Haskell ,
4544 bytesExperimente online!
Edit: -1 byte graças a nimi!
fonte
sum(zipWith mod[n..]a)<1
.Limpo , 61 bytes
Experimente online!
fonte
[1..]
vez de[0..]
evitar a saída0
, um número inteiro não positivo, para listas singleton.Pitão , 11 bytes
Experimente online!
fonte
2
do final? Tenho certeza de que há mais a ser salvo aqui, mas não conheço Pyth.2
corrige o problemaJ , 23 bytes
Experimente online!
fonte
I.
que retornará apenas 1 resultado? Não é possível que haja vários?R , 51 bytes
Experimente online!
O uso de
any
lançak
avisos sobre conversão implícita paralogical
, ondek
é o valor de retorno.fonte
l=c(15)
, poisseq(l)==1:l
nesse caso.seq
é chato assim!seq_along
é muito longo.sum
vez deany
se livrar desses avisos, FYI.Perl 6 , 34 bytes
Experimente online!
fonte
APL (Dyalog Unicode) ,
24 2322 bytesExperimente online!
Tecnicamente, essa é uma função tácita. Eu tive que fazê-lo, uma vez que a única entrada permitida é a lista de números inteiros. Usos
⎕IO←0
(indexação 0)Vale a pena notar que a função atinge o tempo limite, se
n
não existir.Obrigado a @ngn e @ H.PWiz por 1 byte cada.
Quão?
fonte
Perl 5 , 49 + 2 (
-pa
) = 51 bytesExperimente online!
fonte
Japonês, 10 bytes
Eventualmente, produzirá
undefined
se não houver solução, se não travar o navegador primeiro.Tente
Explicação
fonte
Ruby , 48 bytes
Experimente online!
fonte
Python 2 , 80 bytes
Experimente online!
fonte
ML padrão (MLton) , 96 bytes
Experimente online!
Ungolfed:
Experimente online! Começando com
n=1
, a função éf
incrementadan
até que aall
condição-seja cumprida; nesse caso,n
é retornada.tabulate(m,g)
com algum número inteirom
e funçãog
cria a lista[g 0, g 1, ..., g m]
. Em nossa condiçãotabulate
é chamada com o comprimento da lista de entradal
e uma função que verifica se oi
th elemento de sel
dividen+i
. Isso gera uma lista de booleanos, portanto,all
com a função de identidade,fn x=>x
verifica se todos os elementos são verdadeiros.Encontrei um bom truque de golfe para encurtar a função de identidade nesse caso em quatro bytes: em vez do lambda
(fn x=>x)
,hd
é usada a função interna, que retorna o primeiro elemento de uma lista, e os bools resultantestabulate
são agrupados em[
e]
para crie listas singleton.fonte
PowerShell ,
6562 bytesExperimente online!
O PowerShell não tem o equivalente a um
any
ou algosome
parecido, por isso precisamos de uma abordagem ligeiramente diferente.Isso recebe a entrada
$args[0]
como uma matriz e entra em umfor
loop infinito . Cada iteração configurada$o
para ser1
(explicada mais adiante) e configurada$i
para ser++$j
. O incremento$j
mantém um controle sobre qual é o primeiro número da solução proposta, enquanto o$i
incremento será feito sobre o restante da solução proposta.Em seguida, enviamos cada elemento da entrada
$args[0]
para umForEach-Object
loop. Dentro do loop interno, multiplicamos booleanos no$o
resultado de um cálculo. Isso fará com que, se o cálculo falhar para um valor,$o
ele retornará para0
. O cálculo é!($i++%$_)
, ou o Boolean-not da operação do módulo. Como qualquer valor diferente de zero é verdadeiro no PowerShell, isso transforma qualquer restante em um valor falsey, transformando-o$o
em0
.Fora do loop interno,
if
$o
é diferente de zero, encontramos uma solução incremental que funciona, portanto, produzimos$j
eexit
.fonte
tinylisp , 108 bytes
A última linha é uma função lambda sem nome que pega uma lista e retorna um número inteiro. Experimente online!
Ungolfed
fonte
Julia 0.6 , 79 bytes
Experimente online!
Entradas sem solução válida causarão loop infinito ... :)
fonte
Python 2, 78 bytes
EDIT: -26 graças a @Chas Brown
fonte
Gelatina , 10 bytes
Experimente online!
fonte
NARS APL, 140 bytes, 70 caracteres
teste
fonte
Java 8,
8275 bytesExplicação:
Experimente online.
fonte
Ruby ,
47 46 4342 bytesExperimente online!
Nota: a
(1..)
sintaxe é suportada apenas no ruby 2.6, no momento o TIO suporta apenas 2.5, portanto o link é para uma versão mais antiga (43 bytes).fonte