Kalkulator Biaya Evolusi Pokemon GO


11

Bosan dengan selalu bertanya-tanya berapa banyak lagi Pokémon yang perlu Anda tangkap untuk mendapatkan evolusi tingkat tinggi itu? Bertanya-tanya lagi! Sekarang Anda akan menulis program atau fungsi lengkap untuk menghitungnya untuk Anda!

Tantangan:

Sebagai masukan, program Anda akan menerima daftar biaya dalam permen untuk membuat Pokémon naik ke tingkat berikutnya. (Daftar ini dapat dipisahkan oleh pembatas pilihan Anda, atau sebagai argumen fungsi). Program Anda kemudian akan mengembalikan atau mencetak jumlah Pokemon yang harus ditangkap, termasuk yang akan berevolusi, untuk berevolusi melalui semua tingkatan yang diberikan.

Bagaimana Anda menghitung ini? Seperti itu:
1. Tambahkan semua biaya permen: 12 + 50 = 62
2. Kurangi 3 permen dari total, ini berasal dari satu Pokémon yang Anda simpan untuk berevolusi: 62 - 3 = 59
3. Bagi angka ini dengan 4 (3 untuk menangkap, 1 untuk memberikannya kepada Profesor), selalu ambil ceil()hasilnya: ceil(59/4) = 15
4. Akhirnya, tambahkan 1 ke total ini untuk mendapatkan jumlah total Pokemon yang harus kamu tangkap, 16!

Contoh Input -> Output:

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

Kemenangan:

Aplikasi ini telah menghabiskan sebagian besar ruang di ponsel Anda, jadi program Anda harus sesingkat mungkin. Program atau fungsi lengkap dengan jumlah byte terkecil akan diterima dalam dua minggu! (dengan ikatan apa pun diselesaikan oleh entri yang paling awal dikirimkan!)


3
Bagaimana output dihitung?
Leaky Nun

8
Di masa depan, silakan gunakan Kotak Pasir untuk mengatasi kekusutan dalam tantangan Anda dan untuk mendapatkan umpan balik sebelum memposting.
El'endia Starman

7
Jika Anda ingin alasan yang sedikit tidak masuk akal untuk panjang kode pendek, Anda bisa menggunakan "karena aplikasi hampir membunuh baterai Anda, Anda ingin kode Anda sesingkat mungkin, sehingga Anda dapat mengetiknya sebelum baterai Anda mati."
Mego

2
Bukankah seharusnya formula itu floor(Sum(L)/4)+1? Rumus saat ini tidak berfungsi untuk jumlah yang habis dibagi 4. Misalnya [400]akan mengembalikan 100, padahal kenyataannya harus 101 untuk tambahan untuk berkembang.
Emigna

6
Saya harap seseorang mengirim jawaban di Go
Kodos Johnson

Jawaban:




5

Brain-Flak 112 byte

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

Cobalah secara Online!

Penjelasan

Ini menjumlahkan tumpukan, mengurangi satu, membaginya dengan empat, dan menambahkan satu.


Bagaimana saya menjalankan ini di coba online? Ini hanya menghasilkan 1 untuk saya untuk setiap skema input yang saya coba.
orlp

1
Memberikan jawaban yang salah untuk [4].
orlp

@ orlp Diperbaiki. Saya memasukkan kode yang salah dalam mencobanya online.
Ad Hoc Garf Hunter

3

C # REPL, 15 byte

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

Diputar ke Func<IEnumerable<int>, int>.


3

Sebenarnya, 4 byte

Σ¼≈u

Cobalah online!

Penjelasan:

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

1
Bukankah ini karakter unicode masing-masing 2 byte?
user23127

1
@ user23127 Jika ini disandikan dalam UTF-8, ya. Sebenarnya (dan pendahulunya Serius) menggunakan CP437.
Mego



2

BASH (sed + bc) 19

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

Input adalah +daftar yang terpisah pada stdin
Eg:
echo '(19+35+5+200)'| sed 's~)~+4)/4~'|bc





1

CJam, 7 byte

{:+4/)}

Coba di sini!

Menentukan blok tanpa nama yang mengharapkan input pada stack dan meninggalkan hasilnya di sana.
:+menjumlahkan daftar, 4/membagi hasilnya dengan 4 dan )menambahkannya.




1

JavaScript, 29 Bytes

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

1

SILOS 100 99 103 karakter + 22 untuk input sampel

Kode dengan harness pengujian.

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

masukan sebagai serangkaian perintah yang ditetapkan untuk memodifikasi tempat tumpukan mulai dari tempat 512.
Cobalah Online!


Hanya karena Pokemon Go tidak memiliki lebih dari 8 tingkatan evolusi (ini sebenarnya maksimal pada 3), tidak berarti Anda tidak diharuskan untuk menangani banyak kasus pengujian.
Mego

@Mego spec dengan jelas merujuk pokemon pergi, dan dengan demikian kita dapat mengasumsikan bahwa semua input akan menjadi input yang valid. Saya akan memposting versi yang jauh lebih baik yang memang menangani input terpisahkan baris baru yang diakhiri dengan nol sentinel, tetapi TIO saat ini dibakar
Rohan Jhunjhunwala

@Mego, izinkan saya mengklarifikasi dengan OP. Jika ini tidak valid, saya dapat memodifikasinya agar berfungsi untuk case test yang lebih besar
Rohan Jhunjhunwala

Ini sebenarnya merupakan celah standar - Anda mengasumsikan aturan tidak ada dalam tantangan.
Mego

@Mego dimodifikasi dengan biaya tiga byte, sekarang harus bekerja hingga 1000-an evolusi.
Rohan Jhunjhunwala

0

Python 2, 40 byte

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

Ini tidak berfungsi karena sum(s)merupakan bilangan bulat dan /dalam Python 2 akan menjadi pembagian bilangan bulat ketika kedua argumen adalah bilangan bulat.
Leaky Nun

@ LeakyNun apa maksudmu? itu bekerja untuk saya
acrolith

Memberikan jawaban yang salah untuk [4].
orlp
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.