Kalkulator kosztów ewolucji Pokemon GO


11

Masz dość nieustannego zastanawiania się, ile jeszcze Pokémonów musisz złapać, aby uzyskać ewolucje na wysokim poziomie? Nic dziwnego, że już nie! Teraz napiszesz kompletny program lub funkcję, aby go obliczyć!

Wyzwanie:

Jako dane wejściowe, twój program otrzyma listę kosztów w cukierkach, aby rozwinąć Pokémona do następnego poziomu. (Ta lista może być oddzielona dowolnym wybranym ogranicznikiem lub jako argumenty funkcji). Twój program zwróci lub wydrukuje liczbę Pokémonów, które należy złapać, w tym tę, która będzie ewoluować, aby ewoluować przez wszystkie podane poziomy.

Jak to obliczyć? W ten sposób:
1. Zsumuj wszystkie koszty cukierków: 12 + 50 = 62
2. Odejmij 3 cukierki od sumy, to jest od jednego Pokémona, którego ewoluujesz: 62 - 3 = 59
3. Podziel tę liczbę przez 4 (3 dla złapania, 1 dla przekazania Profesor), zawsze biorąc ceil()wynik: ceil(59/4) = 15
4. Na koniec dodaj 1 do tej sumy, aby uzyskać całkowitą liczbę Pokémonów, które musisz złapać, 16!

Przykład Input -> Output:

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

Zwycięski:

Aplikacja zajęła już większość miejsca w telefonie, więc Twój program musi być jak najkrótszy. Kompletny program lub funkcja o najmniejszej liczbie bajtów zostanie zaakceptowana za dwa tygodnie! (wszelkie powiązania są rozstrzygane przez najwcześniej przesłane zgłoszenie!)


3
Jak obliczana jest wydajność?
Leaky Nun

8
W przyszłości skorzystaj z piaskownicy, aby wypracować supełki w swoich wyzwaniach i uzyskać opinie na ich temat przed opublikowaniem.
El'endia Starman

7
Jeśli chcesz nieco mniej bezsensownych uzasadnień krótkiej długości kodu, możesz użyć „ponieważ aplikacja prawie wyczerpała baterię, chcesz, aby Twój kod był tak krótki, jak to możliwe, abyś mógł wpisać go przed wyczerpaniem baterii”.
Mego

2
Czy formuła nie powinna być floor(Sum(L)/4)+1? Obecna formuła nie działa dla sum podzielnych przez 4. Na przykład [400]zwróci 100, podczas gdy w rzeczywistości musi być 101, aby dodatkowa ewoluowała.
Emigna

6
Mam nadzieję, że ktoś opublikuje odpowiedź w Go
Kodos Johnson

Odpowiedzi:




5

Brain-Flak 112 bajtów

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

Wypróbuj online!

Wyjaśnienie

Sumuje stos, odejmuje jeden, dzieli przez cztery i dodaje jeden.


Jak uruchomić to, wypróbowując online? Wyprowadza dla mnie tylko 1 dla każdego schematu wprowadzania danych, który próbowałem.
orlp

1
Daje złą odpowiedź na pytanie [4].
orlp

@orlp Naprawiono. Podaję zły kod, aby wypróbować go online.
Ad Hoc Garf Hunter

3

C # REPL, 15 bajtów

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

Przesyłanie do Func<IEnumerable<int>, int>.


3

Właściwie 4 bajty

Σ¼≈u

Wypróbuj online!

Wyjaśnienie:

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

1
Czy te znaki Unicode nie są 2 bajtami?
user23127,

1
@ user23127 Jeśli byłyby zakodowane w UTF-8, tak. Właściwie (i jego poprzednik Poważnie) używaj CP437.
Mego



2

BASH (sed + bc) 19

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

Dane wejściowe to +osobna lista dla standardowego wejścia
np .:
echo '(19+35+5+200)'| sed 's~)~+4)/4~'|bc





1

CJam, 7 bajtów

{:+4/)}

Wypróbuj tutaj!

Definiuje nienazwany blok, który oczekuje danych wejściowych na stosie i pozostawia tam wynik.
:+sumuje listę, 4/dzieli wynik przez 4 i )zwiększa to.





1

SILOS 100 99 103 znaków + 22 do wprowadzania próbki

Kod z wiązką testową.

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

dane wejściowe jako seria zestawów poleceń do modyfikowania miejsc na stosie, zaczynając od miejsca 512.
Wypróbuj online!


To, że Pokemon Go nie ma więcej niż 8 poziomów ewolucji (w rzeczywistości osiąga maksimum 3), nie oznacza, że ​​nie musisz zajmować się dużymi przypadkami testowymi.
Mego

@Mego specyfikacja wyraźnie odwołuje się do pokemon go, a zatem możemy założyć, że wszystkie dane wejściowe będą prawidłowe. Opublikowałbym znacznie lepszą wersję, która rzeczywiście obsługuje separację nowego wiersza zakończoną zerowym wartownikiem, ale TIO jest obecnie zablokowane
Rohan Jhunjhunwala

@Mego pozwól mi wyjaśnić z PO. Jeśli jest to nieprawidłowe, mogę go zmodyfikować, aby działał dla jeszcze większych przypadków testowych
Rohan Jhunjhunwala

To w rzeczywistości standardowa luka - zakładasz , że reguły nie występują w wyzwaniu.
Mego

@Mego zmodyfikowane kosztem trzech bajtów, teraz powinno działać do 1000 ewolucji.
Rohan Jhunjhunwala

0

Python 2, 40 bajtów

import math
lambda s:math.ceil(sum(s)/4)

To nie działa, ponieważ sum(s)jest liczbą całkowitą, /aw Pythonie 2 będzie dzieleniem całkowitym, gdy oba argumenty są liczbami całkowitymi.
Leaky Nun

@LeakyNun co masz na myśli? to działa dla mnie
acrolith

Daje złą odpowiedź na pytanie [4].
orlp
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.