Anda adalah ikan di kolam yang perlu untuk bertahan hidup dengan makan ikan lainnya. Anda hanya bisa makan ikan dengan ukuran yang sama atau lebih kecil dari diri Anda sendiri. Anda harus membuat sebuah program yang mengambil kawanan ikan sebagai masukan diurutkan. Dari ini Anda harus bekerja keluar berapa banyak ikan yang Anda bisa makan dan akhirnya ukuran Anda akan tumbuh.
Ukuran grafik
+--------------+--------------+--------------+--------------+
| | Amount extra | Total size 1 | Increase to |
| Current size | needed for | fish | size |
| | next size | | |
+--------------+--------------+--------------+--------------+
| 1 | 4 | 4 | 2 |
+--------------+--------------+--------------+--------------+
| 2 | 8 | 12 | 3 |
+--------------+--------------+--------------+--------------+
| 3 | 12 | 24 | 4 |
+--------------+--------------+--------------+--------------+
| 4 | 16 | 40 | 5 |
+--------------+--------------+--------------+--------------+
| 5 | 20 | 60 | 6 |
+--------------+--------------+--------------+--------------+
| 6 | 24 | 84 | 7 |
+--------------+--------------+--------------+--------------+
Aturan
- Ukuran Anda dimulai pada 1
- Input beting akan berisi bilangan bulat ikan antara 0-9
- 0 = ganggang dan tidak akan membantu Anda memberi makan.
- Bilangan bulat ikan mewakili ukuran ikan (1-9).
- Anda hanya bisa makan ikan dengan ukuran yang sama atau kurang dari diri Anda sendiri.
- Anda dapat makan ikan dalam urutan apapun yang Anda pilih untuk memaksimalkan ukuran Anda.
- Anda hanya bisa makan setiap ikan satu kali.
- Ikan yang lebih besar Anda makan, semakin cepat Anda tumbuh. Ikan ukuran 2 sama dengan dua ikan ukuran 1, ikan ukuran 3 sama dengan ikan ukuran tiga, dan seterusnya.
- Ukuran bertahap dengan satu setiap kali Anda mencapai jumlah di bawah ini.
Mengembalikan integer dari ukuran maksimum yang bisa
Contohnya
"11112222" => 3
4 fish size 1 increases to 2, 4 size 2 makes you 3
"111111111111" => 3
4 fish size 1 increases to 2, 8 size 1 makes you 3
Kode terpendek (menghitung dalam byte) untuk melakukannya dalam bahasa apa pun di mana angka menang.
5,6
atau6,6
dari contoh terakhir Markus dan mencapai ukuran 13; belum menghapus5,5
dan satu hanya dapat mencapai ukuran lima.Jawaban:
JavaScript (ES6), 44 byte
Mengambil input sebagai array bilangan bulat.
Cobalah online!
Bagaimana?
sumber
Python 2 , 60 byte
Cobalah online!
sumber
Wolfram Bahasa (Mathematica) ,
4039 bytesCobalah online!
Penjelasan
Simpan
floor(s)
dif
, secara simbolis. Mulailah dengans=1
(ukuran).Ulangi setiap elemen dalam input ...
Jika elemen tidak lebih besar dari
s
, maka bertambahs
oleh<element> / (4 * floor(s))
. HubunganOr (||)
arus pendek sebaliknya.Kembali
floor(s)
.sumber
Jelly , 17 bytes
Cobalah online!
Metode yang menarik yang bisa dipukuli dengan semacam loop atau rekursi.
Bagaimana?
sumber
Haskell , 46 byte
Cobalah online!
sumber
Lua , 214 byte
Cobalah online!
Bahkan dekat terpendek di sini tapi itu menyenangkan untuk mencari tahu: D
sumber