Tantangan ini adalah yang pertama dari seri dua tantangan tentang Pengulangan. Yang kedua akan segera bangun.
Dalam bahasa yang disebut Pengulangan (sesuatu yang baru saja saya buat), ada string tak terbatas 12345678901234567890...
dengan 1234567890
pengulangan selamanya.
Sintaks berikut tersedia untuk nomor keluaran:
+-*/
: Ini menyisipkan operator ke dalam string angka berulang.- Contoh:
+
->1+2
=3
(+
Menyisipkan+
antara1
dan2
)+*
->1+2*3
=1+6
=7
(Sama seperti di atas, kecuali dua operator digunakan sekarang)/
->1/2
=0
(Pengulangan menggunakan pembagian integer)//
->1/2/3
=0/3
=0
(Pengulangan menggunakan "asosiasi kiri" dengan banyak pengurangan dan pembagian)
- Setiap operator dimasukkan sehingga memiliki satu digit di sebelah kirinya, kecuali ada
c
(lihat di bawah).
- Contoh:
c
: Digabungkan dengan digit berikutnya dalam string.- Contoh:
c+
->12+3
=15
(c
"Terus"1
dan menggabungkannya dengan digit berikutnya2
,, untuk membentuk12
)+c
->1+23
=24
ccc
->1234
- Contoh:
()
: Kurung untuk memproses angka.- Contoh:
(c+)*
->(12+3)*4
=15*4
=60
(Pengulangan menggunakan urutan operasi)(c+)/c
->(12+3)/45
=15/45
=0
(cc+c)/
->(123+45)/6
=168/6
=28
- Contoh:
s
: Lewati angka (menghapus nomor dari string yang tak terbatas).s+
->2+3
=5
(s
melompati1
)csc
->124
(c
Concats pertama1
dan2
,s
lompatan3
, dan finalc
concat12
ke4
)+s+
->7
(Yang pertama+
menambahkan1
dan2
membuat3
,s
melompat3
, dan final+
menambahkan3
untuk4
membuat7
)cs*(++)
->12*(4+5+6)
=12*15
=180
Dalam contoh di atas, hanya jumlah digit terbatas dalam string tak hingga yang digunakan. Jumlah digit yang digunakan setara dengan number of operators, concats and skips + 1
.
Tugas Anda adalah, ketika diberi string kode Pengulangan, hasilkan output.
Contoh input dan output adalah:
++ -> 6
- -> -1
(-)* -> -3
cscc -> 1245
(cc+c)/ -> 28
cc+c/ -> 130
cs*(++) -> 180
Ini kode golf, jadi kode terpendek dalam byte menang!
Spesifikasi:
- Anda dijamin hasilnya tidak akan pernah melampaui
2^31-1
. - Anda juga dijamin bahwa input hanya akan terdiri dari simbol
+-*/cs()
. - Program kosong akan menampilkan
1
.
s+
adalah 2+3
sebagai contoh pertama. Dan masih s
terus menggangguku. Saya bertanya-tanya bagaimana caranya +s()+
mengembang. Jika 1+(2)+4
kemudian (
datang sebelum 2
tetapi s
yang datang bahkan sebelum yang (
tampaknya masih melompat 3
, tidak 2
. Namun jika hasilnya adalah 1+(3)+4
maka efek dari s
tergantung pada apa yang datang setelah itu (bandingkan dengan +s+
)
sc
Apakah 23
dan s+
ini 1+3
? Apakah s
melewatkan 1
sekarang atau 2
? Semua contoh menggunakan operasi pertama pada operan 1
dan 2
... begitu juga sc
seharusnya 13
.
~
s? Jangan biarkan kami menggantung.