Jesteś rybą w stawie, który musi przetrwać, jedząc inne ryby. Możesz jeść tylko te ryby, które są tego samego rozmiaru lub mniejsze od ciebie. Musisz stworzyć program, który pobiera ławicę ryb jako posortowane dane wejściowe. Na tej podstawie musisz obliczyć, ile ryb możesz zjeść i ostatecznie osiągnąć rozmiar.
Tabela rozmiarów
+--------------+--------------+--------------+--------------+
| | 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 |
+--------------+--------------+--------------+--------------+
Zasady
- Twój rozmiar zaczyna się od 1
- Dane wejściowe do ławicy będą zawierać liczby całkowite ryb od 0 do 9
- 0 = glony i nie pomogą ci karmić.
- Liczba całkowita ryby reprezentuje rozmiar ryby (1-9).
- Możesz jeść tylko ryby o tym samym rozmiarze lub mniejszym od siebie.
- Możesz jeść ryby w dowolnej kolejności, aby zwiększyć swój rozmiar.
- Każdą rybę możesz zjeść tylko raz.
- Im większe ryby jesz, tym szybciej rośniesz. Ryba w rozmiarze 2 to dwie ryby w rozmiarze 1, ryba w rozmiarze 3 to trzy ryby w rozmiarze 1 i tak dalej.
- Twój rozmiar zwiększa się o jeden za każdym razem, gdy osiągniesz poniższe kwoty.
Zwraca liczbę całkowitą maksymalnego rozmiaru, jaki możesz być
Przykłady
"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
Najkrótszy kod (liczony w bajtach) do wykonania w dowolnym języku, w którym liczby wygrywają.
code-golf
programming-puzzle
Oszust
źródło
źródło
5,6
lub6,6
z ostatniego przykładu Marka i przejść do rozmiaru 13;5,5
zamiast tego usuń, a można osiągnąć tylko rozmiar pięć.Odpowiedzi:
JavaScript (ES6), 44 bajty
Pobiera dane wejściowe jako tablicę liczb całkowitych.
Wypróbuj online!
W jaki sposób?
źródło
Python 2 , 60 bajtów
Wypróbuj online!
źródło
Wolfram Language (Mathematica) ,
4039 bajtówWypróbuj online!
Wyjaśnienie
Przechowywać
floor(s)
wf
symbolicznie. Zacznij ods=1
(rozmiar).Iteruj przez każdy element na wejściu ...
Jeśli element nie jest większy niż
s
, zwiększs
o<element> / (4 * floor(s))
. WOr (||)
przeciwnym razie zwarcia.Return
floor(s)
.źródło
Galaretka , 17 bajtów
Wypróbuj online!
Interesująca metoda, która mogłaby zostać pokonana przez jakąś pętlę lub rekurencję.
W jaki sposób?
źródło
Haskell , 46 bajtów
Wypróbuj online!
źródło
Lua , 214 bajtów
Wypróbuj online!
Nawet nie najkrótszy tutaj, ale fajnie było to rozgryźć: D
źródło