Memasukkan:
Daftar / vektor yang tidak kosong di mana setiap elemen menyimpan nilai / karakter, yang menunjukkan apakah Anda akan menghitung naik atau turun . Saya akan menggunakan 1
dan -1
, tetapi Anda dapat memilih apa pun yang Anda suka. Anda hanya dapat menggunakan dua nilai, Anda tidak bisa menggunakan 1,2,3...
dan -1,-2,-3...
, masing-masing untuk naik dan turun.
Tantangan:
Anda akan menggunakan nomor dalam seri geometrik 1, 2, 4, 8, 16, 32 ... . Setiap kali Anda mulai menghitung naik atau turun, Anda akan menghitung secara bertahap dari 1 , lalu 2 , lalu 4 dan seterusnya. Jika Anda berubah dan mulai menghitung dengan cara lain maka Anda akan mengurangi 1 , lalu 2 , lalu 4 dan seterusnya. Hasilnya adalah angka yang Anda dapatkan pada akhirnya.
Contoh:
Pada contoh di bawah ini, baris pertama adalah input, baris kedua adalah angka yang Anda hitung naik / turun, baris ketiga adalah jumlah kumulatif, dan baris terakhir adalah output.
Contoh 1:
1 1 1 1 1 1 1 1 1 1
1 2 4 8 16 32 64 128 256 512
1 3 7 15 31 63 127 255 511 1023
1023
Contoh 2:
1 1 1 1 1 1 -1 -1 -1 -1 1 1 1
1 2 4 8 16 32 -1 -2 -4 -8 1 2 4
1 3 7 15 31 63 62 60 56 48 49 51 55
55
Seperti yang Anda lihat, yang pertama 1
atau -1
"me-reset" nilai yang kami hitung, dan urutan berurutan 1
atau -1
berarti menggandakan nilai.
Contoh 3:
-1 -1 1 1 -1 -1 -1
-1 -2 1 2 -1 -2 -4
-1 -3 -2 0 -1 -3 -7
-7
Beberapa test case tambahan untuk memperhitungkan beberapa case corner potensial.
Masukan ada di baris pertama. Outputnya adalah yang kedua.
1
1
-------
-1
-1
-------
-1 1 -1 1 -1 1 -1 1 -1 1 -1 1
0
Ini adalah kode-golf sehingga pengiriman terpendek dalam setiap bahasa menang.
®ì2Ãx
untukxì2
menyelamatkan dua byte.Cubix , 65 byte
Cobalah online!
Lihat saja
Sebagai penjelasan singkat tentang ini:
sumber
JavaScript (ES6), 38 byte
sumber
R , 32 byte
Cobalah online!
Ini adalah metode yang sama dengan beberapa orang lain di sini.
Dengan masukan dari
-1 -1 1 1 -1 -1 -1
2, 2, 3
dan nilai-1, 1, -1
3, 3, 7
-3, 3, -7
-7
sumber
Python 3 ,
5756 byte-1 byte terima kasih kepada @notjagan
Cobalah online!
sumber
s>()
butuh waktu satu detik. Itu sangat pintar.Jelly , 4 byte
Cobalah online!
sumber
C ++ 14, 58 byte
Mengambil input melalui
v
argumen (std::vector
, atau wadah yang dapat diubah), menghasilkans
argumen (dengan referensi). Setiap elemenv
harus berupa1
atau-1
.Contoh penggunaan dan uji kasus.
sumber
Brachylog , 13 byte
Cobalah online!
Penggunaan Brachylog
_
sebagai gantinya-
.Penjelasan:
sumber
Python,
7672 byteCobalah online!
sumber
Pyth , 12 byte
Cobalah online!
sumber
PHP, 51 byte
Jalankan dengan
-n
atau coba online .sumber
CJam (13 byte)
Test suite online . Ini adalah blok anonim (fungsi) yang mengambil array int pada stack dan meninggalkan int pada stack. Tes terakhir menunjukkan bahwa ia menangani array kosong dengan benar, memberikan 0.
Pendekatannya adalah pengkodean run-length langsung diikuti oleh decode run-length manual dari setiap konversi run dan base. Menggunakan built-in untuk run-length decode saya mendapatkan satu byte lebih banyak dengan
{e`1/:e~2fb1b}
atau{e`{ae~2b}%1b}
.sumber
05AB1E , 6 byte
Cobalah online!
sumber
γε¬sƶÄ<o*}OO
Haskell,
5453 byteCobalah online!
Rekursi sederhana yang menggandakan akumulator
k
atau menyetel ulang ke1
/-1
dan menambahkan nilai dari setiap langkah.sumber
Mathematica, 60 byte
sumber
Mathematica, 25 byte
sumber
Java, 91 byte
sumber
Pyth, 11 byte
Cobalah online
Bagaimana itu bekerja
sumber