Une personne doit terminer des N
unités de travail; la nature du travail est la même.
Afin de se familiariser avec le travail, il ne termine qu'une seule unité de travail le premier jour .
Il souhaite célébrer la fin des travaux, il décide donc de terminer une unité de travail le dernier jour .
Il n'est autorisé à terminer x
, x+1
ou x-1
unités de travail dans une journée , où x
sont les unités de travail achevées la veille.
Votre tâche consiste à créer un programme ou une fonction qui calculera le nombre minimum de jours qu'il faudra pour terminer les N
unités de travail.
Exemple d'entrée et de sortie:
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]
L'entrée peut être effectuée via STDIN
ou comme argument de fonction, ou de toute manière appropriée.
La sortie peut être imprimée ou à la suite d'une fonction, ou de toute manière appropriée.
C'est du code-golf . La solution la plus courte l'emporte.
la source
Réponses:
Gelée , 5 octets
Cela utilise une forme fermée de l'approche de @ LeakyNun .
Essayez-le en ligne!
En raison d'une heureuse coïncidence,
Ḟ
est surchargé en tant quefloor
/real
pour les nombres réels / complexes. C'est l'un des trois seuls atomes surchargés de Jelly.Comment ça fonctionne
la source
Pyth , 8 octets
Comment ça fonctionne:
Essayez-le en ligne!
En pseudo-code:
bonus, 22 octets
"devrait renvoyer 7 pour -1"
Essayez-le en ligne!
la source
JavaScript (ES2016), 24 octets
Version raccourcie de la variante ES6 ci-dessous grâce à @Florent et à l' Exponentiation Operator (actuellement uniquement dans les versions ou transpilers nocturnes de Firefox).
JavaScript (ES6), 30 octets
Basé sur cette séquence .
la source
f=n=>(n-1)**.5+(n+1)**.5|0
JavaScript,
3231 octetsCode non golfé:
Il utilise le même algorithme que la réponse de Kenny Lau mais il est implémenté comme une fermeture récursive pour économiser quelques octets.
Usage:
Solution REPL, 23 octets
Préparez
q=
à exécuter l'extrait de code:la source
>=
vers<
: Dfor(t=1;;)if(t*t++/4>=q)return t-1;
n'est que de 36 octets :)Python, 28 octets
Sort un flottant. Le
max
est là pour donner0
desn<=0
tout en évitant une erreur de racine carrée négative.la source
UGL ,
3025 octetsEssayez-le en ligne!
Ne fonctionne pas pour les entrées négatives.
Comment ça fonctionne:
Solution précédente de 30 octets:
Interprète en ligne ici .
Ne fonctionne pas pour les entrées négatives.
Comment ça fonctionne:
la source
MATL, 11 octets
Algorithme similaire à @KennyLau sauf que plutôt que de boucler indéfiniment, je boucle de 1 à 2n pour économiser quelques octets.
Essayez-le en ligne!
Explication
la source
Pyke, 8 octets
Essayez-le ici!
Utilise le même algorithme que @KennyLau
la source
Python, 43 octets
la source
Java 8,
3024 octetsEssayez-le en ligne.
Pas besoin de vérifier si
n
est supérieur à 0, car lesMath.sqrt
retours de JavaNaN
pour les entrées négatives, qui deviennent0
avec le cast queint
nous utilisons déjà pour les entrées positives.la source
Rubis , 30 octets
Essayez-le en ligne!
Enregistrer un octet ici avec
.to_i
au lieu de.floor
.La prise en charge des volumes de travail non positifs coûte 6 octets (
n<1?0:
).la source