Una persona tiene que completar N
unidades de trabajo; La naturaleza del trabajo es la misma.
Para acostumbrarse al trabajo, completa solo una unidad de trabajo en el primer día .
Él desea celebrar la finalización del trabajo, por lo que decide completar una unidad de trabajo en el último día .
Solo se le permite completar x
, x+1
o x-1
unidades de trabajo en un día , donde x
están las unidades de trabajo completadas el día anterior.
Su tarea es crear un programa o función que calcule la cantidad mínima de días que tardará en completar las N
unidades de trabajo.
Entrada de muestra y salida:
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]
La entrada puede tomarse a través STDIN
o como argumento de función, o de cualquier manera apropiada.
La salida puede imprimirse o como resultado de una función, o de cualquier manera apropiada.
Este es el código de golf . La solución más corta gana.
fuente
Respuestas:
Jalea , 5 bytes
Esto utiliza una forma cerrada del enfoque de @ LeakyNun .
Pruébalo en línea!
Debido a una coincidencia afortunada,
Ḟ
se sobrecarga comofloor
/real
para números reales / complejos. Este es uno de los únicos tres átomos sobrecargados en Jelly.Cómo funciona
fuente
Pyth , 8 bytes
Cómo funciona:
Pruébalo en línea!
En pseudocódigo:
bonificación, 22 bytes
"debería devolver 7 por -1"
Pruébalo en línea!
fuente
JavaScript (ES2016), 24 bytes
Versión acortada de la variante ES6 a continuación gracias a @Florent y al Operador de exponenciación (actualmente solo en las compilaciones o transpiladores nocturnos de Firefox).
JavaScript (ES6), 30 bytes
Basado en esta secuencia .
fuente
f=n=>(n-1)**.5+(n+1)**.5|0
JavaScript
3231 bytesCódigo sin golf:
Utiliza el mismo algoritmo que la respuesta de Kenny Lau, pero se implementa como cierre recursivo para guardar algunos bytes.
Uso:
Solución REPL, 23 bytes
Prependa
q=
a ejecutar el fragmento:fuente
>=
al<
: Dfor(t=1;;)if(t*t++/4>=q)return t-1;
es solo 36 bytes :)Python, 28 bytes
Emite un flotador. El
max
está ahí para dar0
an<=0
evitando al mismo tiempo un error de raíz cuadrada de negativo.fuente
UGL ,
3025 bytesPruébalo en línea!
No funciona para entradas negativas.
Cómo funciona:
Solución anterior de 30 bytes:
Intérprete en línea aquí .
No funciona para entradas negativas.
Cómo funciona:
fuente
MATL, 11 bytes
Algoritmo similar a @KennyLau, excepto que en lugar de hacer un bucle indefinido, hago un bucle de 1 ... 2n para guardar algunos bytes.
Pruébalo en línea!
Explicación
fuente
Pyke, 8 bytes
Pruébalo aquí!
Utiliza el mismo algoritmo que @KennyLau
fuente
Python, 43 bytes
fuente
Java 8,
3024 bytesPruébalo en línea.
No es necesario verificar si
n
es mayor que 0, ya que JavaMath.sqrt
devuelveNaN
las entradas negativas, lo que se convierte0
en la conversiónint
que ya usamos para las entradas positivas.fuente
Rubí , 30 bytes.
Pruébalo en línea!
Guardar un byte aquí con en
.to_i
lugar de.floor
.El soporte para cantidades de trabajo no positivas tiene un costo de 6 bytes (
n<1?0:
).fuente