Calculateur de coût Pokemon GO Evolution

11

Fatigué de toujours vous demander combien de Pokémon de plus vous devez attraper pour obtenir ces évolutions de haut niveau? Je ne me demande plus! Vous allez maintenant écrire un programme ou une fonction complète pour le calculer pour vous!

Le défi:

En entrée, votre programme recevra une liste des coûts en bonbons pour faire évoluer un Pokémon au niveau suivant. (Cette liste peut être séparée par n'importe quel délimiteur de votre choix ou comme arguments de fonction). Votre programme retournera ou imprimera ensuite le nombre de Pokémon à attraper, y compris celui qui sera évolué, pour évoluer à travers tous les niveaux donnés.

Comment calculez-vous cela? Comme ceci:
1. Additionnez tous les coûts des bonbons: 12 + 50 = 62
2. Soustrayez 3 bonbons du total, celui-ci étant du Pokémon que vous gardez pour évoluer: 62 - 3 = 59
3. Divisez ce nombre par 4 (3 pour attraper, 1 pour le donner à la Professeur), en prenant toujours ceil()le résultat: ceil(59/4) = 15
4. Enfin, ajoutez 1 à ce total pour obtenir le nombre total de Pokémon que vous devez attraper, 16!

Exemple Input -> Output:

[4] -> 2
[50] -> 13
[12, 50] -> 16
[25, 100] -> 32
[19, 35, 5, 200] -> 65

Gagnant:

L'application a déjà occupé la majeure partie de l'espace sur votre téléphone, votre programme doit donc être aussi court que possible. Le programme ou la fonction complète avec le plus petit nombre d'octets sera accepté dans deux semaines! (tous les liens étant réglés par la première soumission soumise!)

Nikolai97
la source
3
Comment la sortie est-elle calculée?
Leaky Nun
8
À l'avenir, veuillez utiliser le bac à sable pour résoudre vos problèmes et obtenir des commentaires sur eux avant de publier.
El'endia Starman
7
Si vous voulez une justification légèrement moins absurde pour la longueur de code courte, vous pouvez aller avec "parce que l'application a presque tué votre batterie, vous voulez que votre code soit aussi court que possible, afin que vous puissiez le saisir avant que votre batterie ne meure."
Mego
2
La formule ne devrait-elle pas être floor(Sum(L)/4)+1? La formule actuelle ne fonctionne pas pour les sommes divisibles par 4. Par exemple, [400]elle renverrait 100, alors qu'en réalité, elle doit être de 101 pour que l'extra évolue.
Emigna
6
J'espère que quelqu'un publiera une réponse dans Go
Kodos Johnson

Réponses:

9

05AB1E , 4 octets

O4÷>

Explication

O    # sum
 4÷  # integer division by 4
   > # increment

Essayez-le en ligne

Emigna
la source
÷ est de 2 octets ...
user23127
3
@ user23127: 05AB1E utilise l'encodage CP-1252.
Emigna
9

Gelée, 5 4 octets

S:4‘

Essayez-le en ligne!

Seuh, entier divisé :par 4et incrémenter .

PurkkaKoodari
la source
8
; -; J'ai 4 secondes de retard
acrolith
Cela ne fonctionne pas lorsque la somme est divisible par 4.
lait
Donne une mauvaise réponse pour [4].
orlp
Correctifs. Apparemment, les spécifications ont changé quand je dormais.
PurkkaKoodari
5

Brain-Flak 112 octets

([]<([()])>){{}({}{})([][()])}{}{({}[()])<>(({}[()()()]<({}())>)){{}(<({}()()()()<({}[()])>)>)}{}<>}{}<>{}({}())

Essayez-le en ligne!

Explication

Il additionne la pile, soustrait un, divise par quatre et en ajoute un.

Ad Hoc Garf Hunter
la source
Comment puis-je exécuter cela sur l'essayer en ligne? Il ne sort que 1 pour moi pour tout schéma d'entrée que j'ai essayé.
orlp
1
Donne une mauvaise réponse pour [4].
orlp
@orlp Fixed. J'ai mis le mauvais code pour l'essayer en ligne.
Ad Hoc Garf Hunter
3

C # REPL, 15 octets

n=>n.Sum()/4+1;

S'exécute vers Func<IEnumerable<int>, int>.

Lait
la source
3

En fait, 4 octets

Σ¼≈u

Essayez-le en ligne!

Explication:

Σ¼≈u
Σ     sum
 ¼    divide by 4
  ≈   floor
   u  add 1
Mego
la source
1
Ces caractères Unicode ne sont-ils pas 2 octets chacun?
user23127
1
@ user23127 Si cela a été encodé en UTF-8, oui. En fait (et son prédécesseur Sérieusement) utilisez CP437.
Mego
3

Brachylog , 5 octets

+:4/+

Essayez-le en ligne!

Explication

Une réponse très originale…

+        Sum
 :4/     Integer division by 4
    +    Increment
Fatalize
la source
2

Python 2, 21 octets

lambda a:~-sum(a)/4+1

Ideone it!

Formule: ((sum(a)-1)//4)+1//est floor-div.

Leaky Nun
la source
Donne une mauvaise réponse pour [4].
orlp
2

BASH (sed + bc) 19

sed 's~)~+4)/4~'|bc

L'entrée est une +liste distincte sur stdin
Par exemple:
echo '(19+35+5+200)'| sed 's~)~+4)/4~'|bc

Riley
la source
1

Haskell, 17 octets

(+1).(`div`4).sum
Diogenes Mota
la source
1

Pyke, 4 octets

seeh

Essayez-le ici!

((sum(input)/2)/2)+1
Bleu
la source
1

Pyth, 5 octets

h/sQ4

Essayez-le ici!

Additionnez l'entrée avec sQ, divisez par 4 avec /4et enfin augmentez h.

Denker
la source
1

CJam, 7 octets

{:+4/)}

Essayez-le ici!

Définit un bloc sans nom qui attend l'entrée sur la pile et y laisse le résultat.
:+additionne la liste, 4/divise le résultat par 4 et l' )incrémente.

Denker
la source
1

Rétine , 18 17 octets

Le nombre d'octets suppose un codage ISO 8859-1.

$
¶4
.+|¶
$*
1111

L'entrée est séparée par des sauts de ligne.

Essayez-le en ligne!

Martin Ender
la source
@orlp yay pour les changements de règles. fixé.
Martin Ender
1

R, 22 octets

floor(sum(scan())/4+1)
Frédéric
la source
1

JavaScript, 29 octets

x=>x.reduce((a,b)=>a+b)/4+1|0
Huntro
la source
1

SILOS 100 99 103 caractères + 22 pour l'entrée d'échantillon

Code avec harnais de test.

set 512 52
set 513 10
GOSUB e
GOTO f
funce
a = 0
i = 511
lblE
i + 1
b = get i
a + b
if b E
a / 4
a + 1
return
lblf
printInt a

entrée comme une série de commandes set pour modifier les taches du tas à partir de la tache 512.
Essayez-le en ligne!

Rohan Jhunjhunwala
la source
Tout simplement parce que Pokemon Go n'a pas plus de 8 niveaux d'évolution (il atteint en fait au maximum 3), cela ne signifie pas que vous n'êtes pas obligé de gérer des cas de test larget.
Mego
@Mego la spécification fait clairement référence à pokemon go, et donc nous pouvons supposer que toutes les entrées seront des entrées valides. J'aurais posté une bien meilleure version qui gère effectivement les entrées séparées par la nouvelle ligne terminées par une sentinelle zéro, mais le TIO est actuellement borked
Rohan Jhunjhunwala
@Mego permettez-moi de clarifier avec le PO. Si ce n'est pas valide, je peux le modifier pour qu'il fonctionne pour des cas de test encore plus grands
Rohan Jhunjhunwala
Il s'agit en fait d'une faille standard - vous supposez que les règles ne sont pas présentes dans le défi.
Mego
@Mego modifié pour un coût de trois octets, il devrait maintenant fonctionner jusqu'à des milliers d'évolutions.
Rohan Jhunjhunwala
0

Python 2, 40 octets

import math
lambda s:math.ceil(sum(s)/4)
acrolithe
la source
Cela ne fonctionne pas car sum(s)est un entier et /en Python 2 serait une division entière lorsque les deux arguments sont des entiers.
Leaky Nun
@LeakyNun que voulez-vous dire? ça marche pour moi
acrolith
Donne une mauvaise réponse pour [4].
orlp