Eine Person muss N
Arbeitseinheiten absolvieren; Die Art der Arbeit ist die gleiche.
Um den Dreh raus zu bekommen, erledigt er am ersten Tag nur eine Arbeitseinheit .
Er möchte den Abschluss der Arbeiten feiern und beschließt, am letzten Tag eine Arbeitseinheit fertigzustellen .
Er ist nur zu vervollständigen erlaubt x
, x+1
oder x-1
an einem Tag Arbeitseinheiten , wobei x
die Einheiten der Arbeit am Vortag abgeschlossen sind.
Ihre Aufgabe ist es, ein Programm oder eine Funktion zu erstellen, die die Mindestanzahl von Tagen berechnet, die er für die Fertigstellung N
von Arbeitseinheiten benötigt.
Beispiel Eingabe und Ausgabe:
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]
Die Eingabe kann durch STDIN
oder als Funktionsargument oder auf geeignete Weise erfolgen.
Die Ausgabe kann gedruckt oder als Ergebnis einer Funktion oder auf geeignete Weise erfolgen.
Das ist Code-Golf . Die kürzeste Lösung gewinnt.
quelle
Antworten:
Gelee , 5 Bytes
Dies verwendet eine geschlossene Form des Ansatzes von @ LeakyNun .
Probieren Sie es online aus!
Aufgrund eines glücklichen Zufalls
Ḟ
wird alsfloor
/real
für reelle / komplexe Zahlen überladen . Dies ist eines der wenigen überladenen Atome in Jelly.Wie es funktioniert
quelle
Pyth , 8 Bytes
Wie es funktioniert:
Probieren Sie es online aus!
Im Pseudocode:
Bonus, 22 Bytes
"sollte 7 für -1 zurückgeben"
Probieren Sie es online aus!
quelle
JavaScript (ES2016), 24 Byte
Verkürzte Version der folgenden ES6-Variante dank @Florent und dem Exponentiation Operator (derzeit nur in Firefox Nightly Builds oder Transpilern).
JavaScript (ES6), 30 Byte
Basierend auf dieser Sequenz .
quelle
f=n=>(n-1)**.5+(n+1)**.5|0
JavaScript,
3231 BytesUngolfed Code:
Es verwendet den gleichen Algorithmus wie Kenny Laus Antwort, wird jedoch als rekursiver Abschluss implementiert, um einige Bytes zu sparen.
Verwendungszweck:
REPL-Lösung, 23 Bytes
Bereiten Sie vor
q=
, um das Snippet auszuführen:quelle
>=
an<
D wenden : Dfor(t=1;;)if(t*t++/4>=q)return t-1;
ist nur 36 Bytes :)Python, 28 Bytes
Gibt einen Float aus. Das
max
ist es zu geben ,0
für dien<=0
während eines Fehlers für Quadratwurzel von negativen zu vermeiden.quelle
UGL ,
3025 BytesProbieren Sie es online aus!
Funktioniert nicht für negative Eingänge.
Wie es funktioniert:
Vorherige 30-Byte-Lösung:
Online-Dolmetscher hier .
Funktioniert nicht für negative Eingänge.
Wie es funktioniert:
quelle
MATL, 11 Bytes
Ein ähnlicher Algorithmus wie bei @KennyLau, außer dass ich nicht auf unbestimmte Zeit eine Schleife durchführe, sondern eine Schleife von 1 ... 2n durchführe, um einige Bytes zu sparen.
Probieren Sie es online aus!
Erläuterung
quelle
Pyke, 8 Bytes
Probieren Sie es hier aus!
Verwendet den gleichen Algorithmus wie @KennyLau
quelle
Python, 43 Bytes
quelle
Java 8,
3024 BytesProbieren Sie es online aus.
Es muss nicht überprüft werden, ob
n
es größer als 0 ist, da Java für negative EingabenMath.sqrt
zurückgibtNaN
, was0
mit der Umwandlung zu wird, dieint
wir bereits für die positiven Eingaben verwenden.quelle
Ruby , 30 Bytes
Probieren Sie es online aus!
Speichern eines Bytes hier mit
.to_i
statt.floor
.Die Unterstützung für nicht positive Arbeitsmengen kostet 6 Byte (
n<1?0:
).quelle