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

Nikolai97
sumber
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:

9

05AB1E , 4 byte

O4÷>

Penjelasan

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

Cobalah online

Emigna
sumber
÷ adalah 2 byte ...
user23127
3
@ user23127: 05AB1E menggunakan pengodean CP-1252.
Emigna
9

Jelly, 5 4 byte

S:4‘

Cobalah online!

Sum, membagi bilangan bulat :oleh 4dan kenaikan .

PurkkaKoodari
sumber
8
; -; Saya terlambat 4 detik
acrolith
Tidak berfungsi ketika jumlah dibagi 4.
susu
Memberikan jawaban yang salah untuk [4].
orlp
Perbaikan. Rupanya spek berubah ketika saya sedang tidur.
PurkkaKoodari
5

Brain-Flak 112 byte

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

Cobalah secara Online!

Penjelasan

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

Ad Hoc Garf Hunter
sumber
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>.

susu
sumber
3

Sebenarnya, 4 byte

Σ¼≈u

Cobalah online!

Penjelasan:

Σ¼≈u
Σ     sum
 ¼    divide by 4
  ≈   floor
   u  add 1
Mego
sumber
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
3

Brachylog , 5 byte

+:4/+

Cobalah online!

Penjelasan

Jawaban yang sangat orisinal ...

+        Sum
 :4/     Integer division by 4
    +    Increment
Fatalisasi
sumber
2

Python 2, 21 byte

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

Ide itu!

Formula: ((sum(a)-1)//4)+1mana //adalah floor-div.

Biarawati Bocor
sumber
Memberikan jawaban yang salah untuk [4].
orlp
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

Riley
sumber
1

Haskell, 17 byte

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

Pyke, 4 byte

seeh

Coba di sini!

((sum(input)/2)/2)+1
Biru
sumber
1

Pyth, 5 byte

h/sQ4

Coba di sini!

Jumlahkan input dengan sQ, bagi dengan 4 dengan /4dan akhirnya bertambah h.

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

Denker
sumber
1

Retina , 18 17 bytes

Hitungan byte mengasumsikan penyandian ISO 8859-1.

$
¶4
.+|¶
$*
1111

Input dipisahkan oleh umpan baris.

Cobalah online!

Martin Ender
sumber
@atau yay untuk perubahan aturan. tetap.
Martin Ender
1

R, 22 byte

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

JavaScript, 29 Bytes

x=>x.reduce((a,b)=>a+b)/4+1|0
Huntro
sumber
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!

Rohan Jhunjhunwala
sumber
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)
akrolit
sumber
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