Osoba musi ukończyć N
jednostki pracy; charakter pracy jest taki sam.
Aby się zawiesić, wykonuje pierwszego dnia tylko jedną jednostkę pracy .
Chce uczcić zakończenie pracy, więc decyduje się wykonać jedną jednostkę pracy w ostatnim dniu .
Dozwolony jest tylko do wykonania x
, x+1
czyli x-1
jednostek pracy w ciągu dnia , gdzie x
jednostki pracy zostały ukończone poprzedniego dnia.
Twoim zadaniem jest stworzenie programu lub funkcji, która obliczy minimalną liczbę dni potrzebnych do ukończenia N
jednostek pracy.
Przykładowe dane wejściowe i wyjściowe:
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]
Dane wejściowe mogą być pobierane za pomocą STDIN
lub jako argument funkcji lub w dowolny odpowiedni sposób.
Dane wyjściowe mogą być drukowane lub w wyniku funkcji lub w dowolny odpowiedni sposób.
To jest golf golfowy . Najkrótsze rozwiązanie wygrywa.
źródło
Odpowiedzi:
Galaretka , 5 bajtów
To wykorzystuje zamkniętą formę podejścia @ LeakyNun .
Wypróbuj online!
Ze względu na szczęśliwy zbieg okoliczności
Ḟ
jest przeciążony jakofloor
/real
dla liczb rzeczywistych / zespolonych. Jest to jeden z niewielu przeciążonych atomów w galarecie.Jak to działa
źródło
Pyth , 8 bajtów
Jak to działa:
Wypróbuj online!
W pseudokodzie:
bonus, 22 bajty
„powinien zwrócić 7 dla -1”
Wypróbuj online!
źródło
JavaScript (ES2016), 24 bajty
Skrócona wersja wariantu ES6 poniżej dzięki @Florent i Operatorowi wykładniczemu (obecnie tylko w Firefoxowych kompilacjach nocnych lub transpilatorach).
JavaScript (ES6), 30 bajtów
Na podstawie tej sekwencji .
źródło
f=n=>(n-1)**.5+(n+1)**.5|0
JavaScript,
3231 bajtówNieskluczony kod:
Wykorzystuje ten sam algorytm co anwser Kenny'ego Laua, ale został zaimplementowany jako rekurencyjne zamknięcie w celu zaoszczędzenia niektórych bajtów.
Stosowanie:
Rozwiązanie REPL, 23 bajty
Przygotuj się
q=
do uruchomienia fragmentu:źródło
>=
do<
: Dfor(t=1;;)if(t*t++/4>=q)return t-1;
ma tylko 36 bajtów :)Python, 28 bajtów
Wysyła liczbę zmiennoprzecinkową.
max
Jest tam, aby dać0
don<=0
unikając błędu do pierwiastka kwadratowego z ujemną.źródło
UGL ,
3025 bajtówWypróbuj online!
Nie działa dla negatywnych danych wejściowych.
Jak to działa:
Poprzednie 30-bajtowe rozwiązanie:
Tłumacz online tutaj .
Nie działa dla negatywnych danych wejściowych.
Jak to działa:
źródło
MATL, 11 bajtów
Algorytm podobny do @KennyLau z tym wyjątkiem, że zamiast zapętlać w nieskończoność, zapętlam od 1 ... 2n, aby zaoszczędzić trochę bajtów.
Wypróbuj online!
Wyjaśnienie
źródło
Pyke, 8 bajtów
Wypróbuj tutaj!
Używa tego samego algorytmu co @KennyLau
źródło
Python, 43 bajty
źródło
Java 8,
3024 bajtówWypróbuj online.
Nie trzeba sprawdzać, czy
n
jest większe niż 0, ponieważMath.sqrt
zwroty JavyNaN
dla negatywnych danych wejściowych, które stają się0
z rzutowaniem do,int
których już używamy dla pozytywnych danych wejściowych.źródło
Rubinowy , 30 bajtów
Wypróbuj online!
Zapisywanie bajtu tutaj za pomocą
.to_i
zamiast.floor
.Wsparcie dla dodatnich nakładów pracy kosztuje 6 bajtów (
n<1?0:
).źródło