Dado um número decimal k
, encontre o menor número inteiro, de n
modo que a raiz quadrada de n
esteja dentro k
de um número inteiro. No entanto, a distância deve ser diferente de zero - n
não pode ser um quadrado perfeito.
Dado k
, um número decimal ou uma fração (o que for mais fácil para você), de modo que 0 < k < 1
, produz o menor número inteiro positivo, de n
modo que a diferença entre a raiz quadrada de n
e o número inteiro mais próximo da raiz quadrada de n
seja menor ou igual a, k
mas diferente de zero .
Se i
é o número inteiro mais próximo da raiz quadrada de n
, você está procurando o primeiro n
onde 0 < |i - sqrt(n)| <= k
.
Regras
- Você não pode usar a implementação insuficiente de um número não inteiro de um idioma para banalizar o problema.
- Caso contrário, você pode assumir que
k
isso não causará problemas com, por exemplo, arredondamento de ponto flutuante.
Casos de teste
.9 > 2
.5 > 2
.4 > 3
.3 > 3
.25 > 5
.2 > 8
.1 > 26
.05 > 101
.03 > 288
.01 > 2501
.005 > 10001
.003 > 27888
.001 > 250001
.0005 > 1000001
.0003 > 2778888
.0001 > 25000001
.0314159 > 255
.00314159 > 25599
.000314159 > 2534463
Entradas de caso de teste separadas por vírgula:
0.9, 0.5, 0.4, 0.3, 0.25, 0.2, 0.1, 0.05, 0.03, 0.01, 0.005, 0.003, 0.001, 0.0005, 0.0003, 0.0001, 0.0314159, 0.00314159, 0.000314159
Isso é código-golfe , então a resposta mais curta em bytes vence.
JavaScript (ES7),
5150 bytesExperimente online!
(falha nos casos de teste que exigem muita recursão)
Versão não recursiva,
5756 bytesExperimente online!
Ou para 55 bytes :
Experimente online!
(mas este é significativamente mais lento)
fonte
J ,
3929 bytesNB. Esta versão mais curta simplesmente usa a fórmula de @ alephalpha.
Experimente online!
39 bytes, força bruta original
Experimente online!
Lida com todos os casos de teste
fonte
Japonês ,
1816 bytes-2 bytes de Shaggy
Experimente online!
fonte
%1 &&
é desagradável, não tenho certeza se o uso da solução de Arnauld seria mais curto (talvez não)Z¬u1
paraZ
no início da função.[1,-1]®*U²Ä /U/2 c ²-Z} rm
Pitão,
2221 bytesExperimente online aqui ou verifique todos os casos de teste de uma vez aqui .
Outro porto da excelente resposta de alefhalpha , certifique-se de dar-lhes um voto positivo !
Edit: Salvo um byte, graças a Kevin Cruijssen
fonte
[-1,1]
em 3 bytes também, ou você precisa de um reverso adicional para que se torne 4 bytes? Se for possível em 3 bytes, você pode fazer isso e depois alterar*_d
para*d
e+d
para-d
. Além disso, Pyth não tem um mínimo embutido, em vez de classificar e pegar primeiro?- ... d
, me economiza um byte! Obrigado[1,-1]
ou não[-1,1]
. Eu estava comparando a*d
e-d
com a minha resposta 05AB1E, onde não uso um mapa, mas posso subtrair / multiplicar uma matriz 2D de / com outra matriz 2D, portanto não preciso de um mapa. Ainda bem que pude ajudar a salvar um byte nesse caso. :) E obrigado pela inspiração para a minha resposta 05AB1E.Perl 6 ,
343329 bytes-1 byte graças ao Grimy
Experimente online!
fonte
>=
por>
. As raízes quadradas dos números inteiros são inteiros ou irracionais; portanto, o caso da igualdade provavelmente não pode acontecer.APL (Dyalog Unicode) , SBCS de 27 bytes
Experimente online!
Trem monádico, tendo um argumento. Este é um porto de resposta dos alefalpha .
Quão:
fonte
C # (compilador interativo do Visual C #) ,
898571 bytesExperimente online!
-4 bytes graças a Kevin Cruijssen!
fonte
n++
no loop, para que ele-1
possa ser removido do retorno:k=>{double n=1,p;for(;Math.Abs(Math.Round(p=Math.Sqrt(0d+n))-p)>k|p%1==0;n++);return n;}
0d+
pode ser removido, não pode?n
já era duploJava (JDK) ,
7370 bytesExperimente online!
-3 bytes
graças a @ceilingcatfonte
Java 8, 85 bytes
Porta da resposta C # .NET do EmbodimentOfIgnorance .
Experimente online.
Como
Math.round
alternativa, pode ser isso, mas infelizmente é a mesma contagem de bytes:Experimente online.
fonte
MathGolf , 16 bytes
Experimente online!
Não é um grande fã desta solução. É uma porta da solução 05AB1E, baseada na mesma fórmula que a maioria das respostas está usando.
Explicação
fonte
byte
código de golfe? Porque alguns de seus personagens requerem mais de um único byte. Eu não quero nit-pick, eu estou realmente me perguntando :)'ԓ'
caractere é na verdade 2 bytes, mas o restante são caracteres de 1 byte.Quarto (gforth) , 76 bytes
Experimente online!
Explicação
Inicia um contador em 1 e o incrementa em um loop. Cada iteração verifica se o valor absoluto da raiz quadrada do contador - o número inteiro mais próximo é menor que k
Código Explicação
fonte
Gelatina , 13 bytes
Eu não consegui ficar nada mais tenso do que a mesma abordagem que os alefalpha
- voto a favor da resposta dele no Mathematica !
Experimente online!
Quão?
fonte
Japonês , 14 bytes
Tente
fonte
Perl 5
-p
, 42 bytesExperimente online!
fonte