Vous êtes un poisson dans un étang qui doit survivre en mangeant d'autres poissons. Vous ne pouvez manger que des poissons de la même taille ou plus petits que vous. Vous devez créer un programme qui prend un banc de poissons comme entrée triée. À partir de cela, vous devez déterminer le nombre de poissons que vous pouvez manger et, finalement, la taille de votre croissance.
Tableau des tailles
+--------------+--------------+--------------+--------------+
| | 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 |
+--------------+--------------+--------------+--------------+
Règles
- Votre taille commence à 1
- L'entrée du haut-fond contiendra des nombres entiers de poissons entre 0 et 9
- 0 = algues et ne vous aidera pas à vous nourrir.
- L'entier poisson représente la taille du poisson (1-9).
- Vous ne pouvez manger que du poisson de la même taille ou moins que vous.
- Vous pouvez manger le poisson dans l'ordre de votre choix pour maximiser votre taille.
- Vous ne pouvez manger chaque poisson qu'une seule fois.
- Plus vous mangez de gros poissons, plus vous grandissez vite. Un poisson de taille 2 équivaut à deux poissons de taille 1, un poisson de taille 3 équivaut à trois poissons de taille 1, etc.
- Votre taille augmente d'une unité chaque fois que vous atteignez les montants ci-dessous.
Renvoie un entier de la taille maximale que vous pourriez être
Exemples
"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
Le code le plus court (en comptant en octets) pour le faire dans n'importe quelle langue dans laquelle les nombres gagnent.
code-golf
programming-puzzle
Critiquer de façon cinglante
la source
la source
5,6
ou6,6
du dernier exemple de Mark et atteindre la taille 13; mais retirez-le à la5,5
place et on ne peut atteindre que la taille cinq.Réponses:
JavaScript (ES6), 44 octets
Prend l'entrée comme un tableau d'entiers.
Essayez-le en ligne!
Comment?
la source
Python 2 , 60 octets
Essayez-le en ligne!
la source
Wolfram Language (Mathematica) ,
4039 octetsEssayez-le en ligne!
Explication
Conserver
floor(s)
dansf
, symboliquement. Commencez pars=1
(taille).Itérer à travers chaque élément en entrée ...
Si l'élément n'est pas supérieur à
s
, incrémentezs
de<element> / (4 * floor(s))
. LesOr (||)
courts-circuits sinon.Retour
floor(s)
.la source
Gelée , 17 octets
Essayez-le en ligne!
Une méthode intéressante qui pourrait bien être battue par une sorte de boucle ou de récursivité.
Comment?
la source
Haskell , 46 octets
Essayez-le en ligne!
la source
Lua , 214 octets
Essayez-le en ligne!
Pas même le plus court ici, mais c'était amusant de le comprendre: D
la source