Dado um número quadrado positivo como entrada. Envie o número de valores entre a entrada e o próximo quadrado mais alto.
Exemplo
Entrada: 1
Saída: 2
Razão: Os números 2 e 3 estão entre 1 e 4, o próximo quadrado mais alto
Entrada: 4
Saída: 4
Razão: Os números 5, 6, 7, 8 estão entre 4 e 9
Respostas:
Geléia , 2 bytes
Experimente online!
Porta da minha resposta do Mathematica (faça a raiz quadrada e depois o dobro). Isso é limitado a entradas que podem ser representadas exatamente como um número de ponto flutuante. Se isso é um problema, a solução de três bytes
ƽḤ
funciona para quadrados arbitrários (que Dennis postou primeiro, mas depois excluiu).fonte
Flak cerebral ,
38, 22 bytesExperimente online!
Estou muito orgulhoso desta resposta. OMI, um dos meus melhores campos de tiro certeiro.
Como funciona?
Como muitos outros usuários apontaram, a resposta é simplesmente sqrt (n) * 2 . No entanto, calcular a raiz quadrada no cérebro-flak é muito pouco trivial. Como sabemos que a entrada sempre será quadrada, podemos otimizar. Então escrevemos um loop que subtrai
da entrada e acompanhe quantas vezes ele é executado. Quando atinge 0, a resposta é simplesmente o último número que subtraímos menos um.
Originalmente, eu havia empurrado um contador para a outra pilha. No entanto, podemos usar a própria pilha principal como um contador, aumentando a altura da pilha.
No pseudocódigo python-y, este é basicamente o seguinte algoritmo:
fonte
Mathematica, 8 bytes
Experimente online! (Usando matemática.)
A diferença entre n 2 e (n + 1) 2 é sempre 2n + 1, mas queremos apenas os valores entre eles, excluindo as duas extremidades, que é 2n .
Isso pode ser encurtado
2#^.5&
dependendo dos requisitos de precisão.fonte
Julia 0,5 , 8 bytes
Experimente online!
fonte
dc, 5
Experimente online .
Anteriormente, eu interpretei mal a pergunta. Esta versão funciona para qualquer entrada inteira positiva, e não apenas quadrados perfeitos:
dc, 12
Experimente online .
fonte
Geléia ,
76 bytesPerdi a ressalva "a entrada será quadrada", mas isso funcionará para todos os números inteiros não negativos ... Martin Ender já deu a solução de 2 bytes .
Um link monádico retornando a contagem.
Experimente online!
fonte
Japonês ,
53 bytesExperimente online!
Raiz quadrada da entrada e multiplique por 2.
fonte
Flak cerebral , 20 bytes
Grite para a incrível resposta de DJMcMayhem (um pouco mais longa) aqui
Experimente online!
Explicação
Esse código funciona contando o número do quadrado em incrementos ímpares. Como cada quadrado é a soma dos números ímpares consecutivos, esse número chegará a 0 em n 1/2 etapas. O truque aqui é que, na verdade, acompanhamos nossas etapas em um número par e usamos uma estática
()
para compensá-la para o número ímpar apropriado. Como a resposta é 2n 1/2 , esse número par será a nossa resposta. Então, quando atingimos 0, removemos o zero e nossa resposta está lá na pilha.fonte
Mathematica, 17 bytes
Experimente online!
fonte
Oitava ,
2510 bytesExperimente online!
Economizou 15 bytes usando a abordagem muito melhor de Martin. O intervalo consiste em
2*sqrt(n)
elementos. A função faz exatamente isso: Multiplica-se2
com a raiz da entrada.fonte
Geléia , 7 bytes
Experimente online!
Explicação:
fonte
Python 3 , 16 bytes
Experimente online!
fonte
Ohm , 2 bytes
Experimente online!
fonte
JavaScript ES6, 10 bytes
Experimente online!
Math.sqrt
é muito longo e é por isso que usamos**.5
fonte
TI-Basic, 3 bytes
Abordagem mais simples ...
fonte
05AB1E , 2 bytes
Experimente online!
Outro porto de submissão de Martin Ender ...
fonte
Adicionar ++ ,
2220 bytesExperimente online!
Deseja saber como funciona? Bem, não tema! Estou aqui para educar você!
fonte
MATL (
87 bytes)Tenho certeza de que isso pode ser reduzido significativamente (editar: obrigado Luis), mas uma solução ingênua é:
Experimente online!
Explicação:
fonte
2^
porU
(e este trabalhou na versão 20.1.1 , que foi o mais recente no momento do desafio, então a resposta seria elegível até mesmo por nosso velho padrão)Pari / GP , 9 bytes
Experimente online!
fonte
PHP , 44 bytes
Experimente online!
fonte
Alice , 10 bytes
Experimente online!
Explicação
Mais uma vez, calcula 2 sqrt (n) . O layout salva dois bytes sobre a solução padrão:
Divisão do código, excluindo o redirecionamento do IP:
fonte
Go , 56 bytes
Experimente online!
fonte
QBIC ,
199 bytesEconomizei muito copiando a abordagem de @ MartinEnder.
Infelizmente, nenhum link TIO para QBIC.
Explicação
fonte
Na verdade , 3 bytes
Experimente online!
fonte
05AB1E ,
43 bytesRiscado 4 ainda é 4: c
Experimente online!
fonte
Retina , 21 bytes
Experimente online! Explicação: Funciona utilizando a raiz quadrada do número com base no solucionador de números triangular do @ MartinEnder. Depois de corresponder o número do quadrado,
$1
é a diferença entre o número do quadrado e o número do quadrado anterior, em unário. Queremos a próxima diferença, mas exclusiva, que é apenas mais 1. Para conseguir isso, contamos o número de cadeias nulas em$1
.fonte
T-SQL, 22 bytes
A entrada é feita através de uma tabela pré-existente, de acordo com nossos padrões .
fonte
Java (OpenJDK 9) / JShell, 17 bytes
Experimente online!
Nota: Isso exigiria
import java.util.function.*;
entrarIntFunction<T>
no Java 8 ou Java 9, mas ojava.util.function
pacote é importado por padrão no JShell.fonte
Haskell, 9 bytes
Experimente online
Entrada e saída serão tratadas como valores flutuantes.
fonte
Noether, 7 bytes
Experimente aqui!
Exatamente o mesmo que qualquer outra resposta: gera duas vezes a raiz quadrada.
fonte