Sie sind Fische in einem Teich, der überleben muss, indem Sie andere Fische essen. Sie können nur Fisch essen, der gleich groß oder kleiner ist als Sie. Sie müssen ein Programm erstellen, das einen Fischschwarm als sortierte Eingabe verwendet. Daraus müssen Sie herausfinden, wie viele Fische Sie essen können und wie groß Sie letztendlich werden.
Größentabelle
+--------------+--------------+--------------+--------------+
| | 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 |
+--------------+--------------+--------------+--------------+
Regeln
- Deine Größe beginnt bei 1
- Die Schwärmeingabe enthält ganze Fischzahlen zwischen 0 und 9
- 0 = Algen und helfen nicht beim Füttern.
- Die Fisch-Ganzzahl repräsentiert die Größe des Fisches (1-9).
- Sie können nur Fisch essen, der nicht größer als Sie selbst ist.
- Sie können den Fisch in beliebiger Reihenfolge essen, um Ihre Größe zu maximieren.
- Sie können jeden Fisch nur einmal essen.
- Je größer der Fisch, den Sie essen, desto schneller wachsen Sie. Ein Fisch der Größe 2 entspricht zwei Fischen der Größe 1, ein Fisch der Größe 3 entspricht drei Fischen der Größe 1 und so weiter.
- Ihre Größe wird jedes Mal um eins erhöht, wenn Sie die unten angegebenen Beträge erreichen.
Gibt eine Ganzzahl der maximalen Größe zurück, die Sie haben könnten
Beispiele
"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
Der kürzeste Code (in Bytes), der in einer beliebigen Sprache, in der Zahlen gewinnen, verwendet werden kann.
5,6
oder6,6
von Marks letztem Beispiel entfernen und zu Größe 13 gelangen; Entfernen Sie5,5
stattdessen und man kann nur Größe fünf erreichen.Antworten:
JavaScript (ES6), 44 Byte
Nimmt die Eingabe als Array von Ganzzahlen.
Probieren Sie es online!
Wie?
Die Schwelle zum Erreichen der Größe ist gegeben durch: s + 1Ts s + 1
Wir verfolgen unsere aktuelle Größe in und was wir bisher in gegessen haben (wir beginnen mit , dies ist also tatsächlich um ).t t = 1 1s t t = 1 1
Für jeden Fisch im Schwarm wird angenommen, dass er vom kleinsten zum größten sortiert ist:x
quelle
Python 2 , 60 Bytes
Probieren Sie es online!
quelle
Wolfram Language (Mathematica) ,
4039 BytesProbieren Sie es online!
Erläuterung
Symbolisch speichern
floor(s)
inf
. Beginnen Sie mits=1
(Größe).Iteriere durch jedes Element in der Eingabe ...
Wenn das Element nicht größer als ist
s
, erhöhen Sie ess
um<element> / (4 * floor(s))
. DieOr (||)
Kurzschlüsse sonst.Rückkehr
floor(s)
.quelle
Gelee , 17 Bytes
Probieren Sie es online!
Eine interessante Methode, die durch eine Art Schleife oder Rekursion geschlagen werden könnte.
Wie?
quelle
Haskell , 46 Bytes
Probieren Sie es online!
quelle
Lua , 214 Bytes
Probieren Sie es online!
Nicht einmal die kürzeste hier, aber es hat Spaß gemacht, es herauszufinden: D
quelle