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 1dan -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 1atau -1"me-reset" nilai yang kami hitung, dan urutan berurutan 1atau -1berarti 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Ãxuntukxì2menyelamatkan dua byte.