Pokemon GO Evolution Kostenrechner

11

Sind Sie es leid, sich immer wieder zu fragen, wie viele Pokémon Sie noch fangen müssen, um diese hochrangigen Entwicklungen zu erzielen? Wundere dich nicht mehr! Jetzt schreiben Sie ein komplettes Programm oder eine Funktion, um es für Sie zu berechnen!

Die Herausforderung:

Als Eingabe erhält Ihr Programm eine Liste der Kosten für Süßigkeiten, um ein Pokémon zur nächsten Stufe zu entwickeln. (Diese Liste kann durch ein beliebiges Trennzeichen Ihrer Wahl oder als Funktionsargumente getrennt werden.) Ihr Programm gibt dann die Anzahl der Pokémon zurück oder druckt sie aus, die gefangen werden müssen, einschließlich derjenigen, die entwickelt werden, um sich durch alle angegebenen Stufen zu entwickeln.

Wie berechnet man das? So sieht es aus:
1. Addiere alle Süßigkeiten-Kosten: 12 + 50 = 62
2. Subtrahiere 3 Süßigkeiten von der Gesamtsumme, wobei dies von dem einen Pokémon ist, das du für die Entwicklung behältst: 62 - 3 = 59
3. Teile diese Zahl durch 4 (3 für das Fangen, 1 für das Geben an die Professor), wobei Sie immer ceil()das Ergebnis nehmen: ceil(59/4) = 15
4. Addieren Sie schließlich 1 zu dieser Summe, um die Gesamtzahl der Pokémon zu erhalten, die Sie fangen müssen, 16!

Beispiel Input -> Output:

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

Gewinnen:

Die App hat bereits den größten Teil des Speicherplatzes auf Ihrem Telefon belegt, daher muss Ihr Programm so kurz wie möglich sein. Das komplette Programm oder die Funktion mit der kleinsten Byteanzahl wird in zwei Wochen akzeptiert! (mit etwaigen Bindungen, die durch den frühesten eingereichten Eintrag geklärt werden!)

Nikolai97
quelle
3
Wie wird die Ausgabe berechnet?
Undichte Nonne
8
Verwenden Sie in Zukunft die Sandbox , um Probleme bei Ihren Herausforderungen zu lösen und vor dem Posten Feedback zu erhalten.
El'endia Starman
7
Wenn Sie eine etwas weniger unsinnige Begründung für die Länge des kurzen Codes wünschen, können Sie mit "Da die App Ihren Akku fast leer gemacht hat, möchten Sie, dass Ihr Code so kurz wie möglich ist, damit Sie ihn eingeben können, bevor der Akku leer ist."
Mego
2
Sollte die Formel nicht sein floor(Sum(L)/4)+1? Die aktuelle Formel funktioniert nicht für durch 4 teilbare Summen. Zum Beispiel [400]würde sie 100 zurückgeben, wenn sie in Wirklichkeit 101 sein muss, damit sich die zusätzliche entwickelt.
Emigna
6
Ich hoffe, jemand postet eine Antwort in Go
Kodos Johnson

Antworten:

9

05AB1E , 4 Bytes

O4÷>

Erläuterung

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

Probieren Sie es online aus

Emigna
quelle
÷ ist 2 Bytes ...
user23127
3
@ user23127: 05AB1E verwendet die CP-1252-Codierung.
Emigna
9

Gelee, 5 4 Bytes

S:4‘

Probieren Sie es online aus!

Sähm, Ganzzahl dividieren :durch 4und inkrementieren .

PurkkaKoodari
quelle
8
; -; Ich bin 4 Sekunden zu spät
Acrolith
Es funktioniert nicht, wenn die Summe durch 4 teilbar ist.
Milch
Gibt eine falsche Antwort für [4].
Orlp
Korrekturen. Anscheinend hat sich die Spezifikation geändert, als ich geschlafen habe.
PurkkaKoodari
5

Brain-Flak 112 Bytes

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

Probieren Sie es online aus!

Erläuterung

Es summiert den Stapel, subtrahiert eins, dividiert durch vier und addiert eins.

Post Rock Garf Hunter
quelle
Wie führe ich das aus, wenn ich es online versuche? Für jedes Eingabeschema, das ich ausprobiert habe, wird nur 1 für mich ausgegeben.
Orlp
1
Gibt eine falsche Antwort für [4].
Orlp
@orlp behoben. Ich habe den falschen Code eingegeben, um ihn online zu testen.
Post Rock Garf Hunter
3

C # REPL, 15 Bytes

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

Casts zu Func<IEnumerable<int>, int>.

Milch
quelle
3

Eigentlich 4 Bytes

Σ¼≈u

Probieren Sie es online aus!

Erläuterung:

Σ¼≈u
Σ     sum
 ¼    divide by 4
  ≈   floor
   u  add 1
Mego
quelle
1
Sind diese Unicode-Zeichen nicht jeweils 2 Bytes?
user23127
1
@ user23127 Wenn dies in UTF-8 codiert wurde, ja. Verwenden Sie CP437 tatsächlich (und seinen Vorgänger Seriously).
Mego
3

Brachylog , 5 Bytes

+:4/+

Probieren Sie es online aus!

Erläuterung

Eine sehr originelle Antwort…

+        Sum
 :4/     Integer division by 4
    +    Increment
Fatalisieren
quelle
2

Python 2, 21 Bytes

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

Ideone es!

Formel: ((sum(a)-1)//4)+1wo //ist floor-div.

Undichte Nonne
quelle
Gibt eine falsche Antwort für [4].
Orlp
2

BASH (sed + bc) 19

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

Eingabe ist eine +separate Liste auf stdin
ZB:
echo '(19+35+5+200)'| sed 's~)~+4)/4~'|bc

Riley
quelle
1

Haskell, 17 Bytes

(+1).(`div`4).sum
Diogenes Mota
quelle
1

CJam, 7 Bytes

{:+4/)}

Probieren Sie es hier aus!

Definiert einen unbenannten Block, der die Eingabe auf dem Stapel erwartet und das Ergebnis dort belässt.
:+summiert die Liste, 4/teilt das Ergebnis durch 4 und )erhöht das.

Denker
quelle
1

Netzhaut , 18 17 Bytes

Die Byteanzahl setzt die ISO 8859-1-Codierung voraus.

$
¶4
.+|¶
$*
1111

Der Eingang ist durch Zeilenvorschub getrennt.

Probieren Sie es online aus!

Martin Ender
quelle
@orlp yay für Regeländerungen. Fest.
Martin Ender
1

R, 22 Bytes

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

JavaScript, 29 Bytes

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

SILOS 100 99 103 Zeichen + 22 für die Probeneingabe

Code mit Prüfkabelbaum.

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

Eingabe als eine Reihe von Set-Befehlen zum Ändern der Spots des Heaps ab Spot 512.
Probieren Sie es online aus!

Rohan Jhunjhunwala
quelle
Nur weil Pokemon Go nicht mehr als 8 Evolutionsstufen hat (maximal 3), heißt das nicht, dass Sie keine großen Testfälle bearbeiten müssen.
Mego
@Mego die Spezifikation verweist eindeutig auf pokemon go, und daher können wir davon ausgehen, dass alle Eingaben gültige Eingaben sind. Ich hätte eine viel bessere Version gepostet, die in der Tat Newline-getrennte Eingaben verarbeitet, die mit einem Sentinel von Null abgeschlossen wurden, aber der TIO ist derzeit borked
Rohan Jhunjhunwala
@ Mego lass mich mit dem OP klären. Wenn dies ungültig ist, kann ich es ändern, um für noch größere Testfälle zu funktionieren
Rohan Jhunjhunwala
Dies ist eigentlich eine Standardlücke - Sie gehen von Regeln aus, die in der Herausforderung nicht vorhanden sind.
Mego
@Mego für drei Bytes modifiziert, sollte es jetzt bis zu 1000 Entwicklungen funktionieren.
Rohan Jhunjhunwala
0

Python 2, 40 Bytes

import math
lambda s:math.ceil(sum(s)/4)
Akrolith
quelle
Dies funktioniert nicht, da sum(s)es sich um eine Ganzzahl handelt und /in Python 2 eine Ganzzahldivision vorliegt, wenn beide Argumente Ganzzahlen sind.
Undichte Nonne
@LeakyNun was meinst du? es funktioniert für mich
Acrolith
Gibt eine falsche Antwort für [4].
Orlp