Uma pessoa tem que completar N
unidades de trabalho; a natureza do trabalho é a mesma.
Para pegar o jeito do trabalho, ele conclui apenas uma unidade de trabalho no primeiro dia .
Ele deseja comemorar a conclusão do trabalho e decide concluir uma unidade de trabalho no último dia .
Ele só pode concluir x
, x+1
ou x-1
unidades de trabalho em um dia , onde x
estão as unidades de trabalho concluídas no dia anterior.
Sua tarefa é criar um programa ou função que calcule o número mínimo de dias que ele levará para concluir as N
unidades de trabalho.
Entrada de amostra e saída:
input -> output (corresponding work_per_day table)
-1 -> 0 []
0 -> 0 []
2 -> 2 [1,1]
3 -> 3 [1,1,1]
5 -> 4 [1,1,2,1] or [1,2,1,1]
9 -> 5 [1,2,3,2,1]
13 -> 7 [1,2,2,2,3,2,1]
A entrada pode ser obtida através STDIN
ou como argumento de função, ou de qualquer maneira apropriada.
A saída pode ser impressa ou como resultado de uma função ou de qualquer maneira apropriada.
Isso é código-golfe . A solução mais curta vence.
fonte
Respostas:
Gelatina , 5 bytes
Isso usa um formulário fechado da abordagem do @ LeakyNun .
Experimente online!
Devido a uma coincidência de sorte,
Ḟ
está sobrecarregado comofloor
/real
para números reais / complexos. Este é um dos únicos três átomos sobrecarregados em Jelly.Como funciona
fonte
Pitão , 8 bytes
Como funciona:
Experimente online!
No pseudo-código:
bônus, 22 bytes
"deve retornar 7 para -1"
Experimente online!
fonte
JavaScript (ES2016), 24 bytes
Versão reduzida da variante ES6 abaixo, graças ao @Florent e ao Operador de Exponenciação (atualmente apenas no Firefox, versões noturnas ou transpilers).
JavaScript (ES6), 30 bytes
Com base nesta sequência .
fonte
f=n=>(n-1)**.5+(n+1)**.5|0
JavaScript,
32.31 bytesCódigo não destruído:
Ele usa o mesmo algoritmo que o analisador de Kenny Lau, mas é implementado como fechamento recursivo para economizar alguns bytes.
Uso:
Solução REPL, 23 bytes
Anexar
q=
para executar o snippet:fonte
>=
para<
: Dfor(t=1;;)if(t*t++/4>=q)return t-1;
é apenas 36 bytes :) #Python, 28 bytes
Produz um flutuador. O
max
que há para dar0
paran<=0
, evitando um erro de raiz quadrada do negativo.fonte
UGL ,
3025 bytesExperimente online!
Não funciona para entradas negativas.
Como funciona:
Solução anterior de 30 bytes:
Intérprete online aqui .
Não funciona para entradas negativas.
Como funciona:
fonte
MATL, 11 bytes
Algoritmo semelhante ao @KennyLau, exceto que, em vez de fazer um loop indefinidamente, faço um loop de 1 ... 2n para salvar alguns bytes.
Experimente Online!
Explicação
fonte
Pyke, 8 bytes
Experimente aqui!
Usa o mesmo algoritmo que o @KennyLau
fonte
Python, 43 bytes
fonte
Java 8,
3024 bytesExperimente online.
Não é necessário verificar se
n
é maior que 0, porque o JavaMath.sqrt
retornaNaN
para entradas negativas, que se tornam0
com o elencoint
que já usamos para as entradas positivas.fonte
Ruby , 30 bytes
Experimente online!
Salvando um byte aqui com em
.to_i
vez de.floor
.O suporte para quantidades não positivas de trabalho tem um custo de 6 bytes (
n<1?0:
).fonte