Seseorang harus menyelesaikan N
unit kerja; sifat pekerjaannya sama.
Untuk menguasai pekerjaan, ia menyelesaikan hanya satu unit pekerjaan di hari pertama .
Dia ingin merayakan penyelesaian pekerjaan, jadi dia memutuskan untuk menyelesaikan satu unit pekerjaan di hari terakhir .
Ia hanya diizinkan menyelesaikan x
, x+1
atau x-1
unit kerja dalam satu hari , di mana x
unit kerja selesai pada hari sebelumnya.
Tugas Anda adalah membuat program atau fungsi yang akan menghitung jumlah hari minimum yang akan ia ambil untuk menyelesaikan N
unit kerja.
Input Sampel dan Ouput:
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]
Masukan dapat diambil melalui STDIN
atau sebagai argumen fungsi, atau dengan cara apa pun yang sesuai.
Keluaran dapat dicetak atau sebagai hasil dari suatu fungsi, atau dengan cara apa pun yang sesuai.
Ini adalah kode-golf . Solusi terpendek menang.
sumber
Jawaban:
Jelly , 5 byte
Ini menggunakan bentuk tertutup dari pendekatan @ LeakyNun .
Cobalah online!
Karena kebetulan yang beruntung,
Ḟ
kelebihan beban sebagaifloor
/real
untuk bilangan real / kompleks. Ini adalah salah satu dari tiga atom kelebihan beban di Jelly.Bagaimana itu bekerja
sumber
Pyth , 8 byte
Bagaimana itu bekerja:
Cobalah online!
Dalam pseudo-code:
bonus, 22 byte
"harus mengembalikan 7 untuk -1"
Cobalah online!
sumber
JavaScript (ES2016), 24 byte
Versi singkat dari varian ES6 di bawah ini berkat @Florent dan Operator Eksponensial (saat ini hanya di Firefox nightly builds atau transpiler).
JavaScript (ES6), 30 byte
Berdasarkan urutan ini .
sumber
f=n=>(n-1)**.5+(n+1)**.5|0
JavaScript,
3231 byteKode tidak dikunci:
Ia menggunakan algoritma yang sama dengan anwser Kenny Lau tetapi diimplementasikan sebagai penutupan rekursif untuk menghemat beberapa byte.
Pemakaian:
Solusi REPL, 23 byte
Berlaku
q=
untuk menjalankan cuplikan:sumber
>=
ke<
: Dfor(t=1;;)if(t*t++/4>=q)return t-1;
hanya 36 byte :)Python, 28 byte
Output mengapung. The
max
ada untuk memberikan0
untukn<=0
sementara menghindari kesalahan untuk akar kuadrat negatif.sumber
UGL ,
3025 byteCobalah online!
Tidak berfungsi untuk input negatif.
Bagaimana itu bekerja:
Solusi 30 byte sebelumnya:
Penerjemah online di sini .
Tidak berfungsi untuk input negatif.
Bagaimana itu bekerja:
sumber
MATL, 11 byte
Algoritma mirip dengan @ KennyLau kecuali bahwa alih-alih mengulang tanpa batas, saya mengulang dari 1 ... 2n untuk menyimpan beberapa byte.
Cobalah secara Online!
Penjelasan
sumber
Pyke, 8 byte
Coba di sini!
Menggunakan algoritma yang sama dengan @KennyLau
sumber
Python, 43 byte
sumber
Java 8,
3024 byteCobalah online.
Tidak perlu memeriksa apakah
n
lebih besar dari 0, karenaMath.sqrt
pengembalian JavaNaN
untuk input negatif, yang menjadi0
dengan para pemain yangint
telah kita gunakan untuk input positif.sumber
Ruby , 30 byte
Cobalah online!
Menyimpan byte di sini dengan
.to_i
alih - alih.floor
.Dukungan untuk jumlah pekerjaan non-positif datang dengan biaya 6 byte (
n<1?0:
).sumber