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!)


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:




5

Brain-Flak 112 Bytes

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

Probieren Sie es online aus!

Erläuterung

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


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>.


3

Eigentlich 4 Bytes

Σ¼≈u

Probieren Sie es online aus!

Erläuterung:

Σ¼≈u
Σ     sum
 ¼    divide by 4
  ≈   floor
   u  add 1

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



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





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.




1

JavaScript, 29 Bytes

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

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!


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)

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.