Eine Person muss NArbeitseinheiten 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+1oder x-1an einem Tag Arbeitseinheiten , wobei xdie 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 Nvon 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 STDINoder 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.