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
.
code-golf
math
code-golf
string
number
arithmetic
code-golf
ascii-art
kolmogorov-complexity
code-golf
number-theory
code-golf
math
code-golf
stack-exchange-api
code-golf
ascii-art
code-golf
string
code-golf
number
integer
code-golf
number
arithmetic
code-golf
puzzle-solver
code-challenge
quine
palindrome
polyglot
clismique
sumber
sumber
~
s? Jangan biarkan kami menggantung.s+
adalah2+3
sebagai contoh pertama. Dan masihs
terus menggangguku. Saya bertanya-tanya bagaimana caranya+s()+
mengembang. Jika1+(2)+4
kemudian(
datang sebelum2
tetapis
yang datang bahkan sebelum yang(
tampaknya masih melompat3
, tidak2
. Namun jika hasilnya adalah1+(3)+4
maka efek daris
tergantung pada apa yang datang setelah itu (bandingkan dengan+s+
)sc
Apakah23
dans+
ini1+3
? Apakahs
melewatkan1
sekarang atau2
? Semua contoh menggunakan operasi pertama pada operan1
dan2
... begitu jugasc
seharusnya13
.Jawaban:
JavaScript (ES6), 110 byte
Sangat sederhana, tetapi divisi integer menambah 25 byte. Untuk beberapa alasan, regex di JS tidak dapat mencocokkan awal string dan karakter pertama, sehingga menambahkan beberapa byte juga.
Bagaimana itu bekerja
)
) yang tidak segera sebelum a(
.c
, digit +s
di awal (1s2
->2
), dan masing-masings
+ digit (3s4
->3
).1/2
->(1/2|0)
).sumber
ss+
kembali6
, ketika itu dimaksudkan untuk kembali7
(Keduanyas
lewati1
dan2
, jadi+
tambah3
dan4
)./^|,|$/g
hanya akan cocok sekali di awal karena kedua pertandingan akan memiliki indeks yang sama.$
tidak memiliki masalah yang sama karena kecocokan memiliki indeks yang lebih besar daripada kecocokan lainnya yang mungkin.Batch, 332 byte
Perilaku
s
membuat ini sangat canggung. (Mungkincs
harus mengevaluasi ke13
dan-s
ke-2
?) Variabel:s
string input (dihapus secara eksplisit karena set / p tidak mengubah variabel jika Anda tidak memasukkan apa pun)e
ekspresi parsial dalam aritmatika integer normal (yang dapat kita berikanset/a
sebagai bentukeval
)d
digit berikutnya dari deretan digit tanpa batasr
sisi kanan operator terbaru. Kami tidak dapat menyatukan ini segera karena(
harus diutamakan, tetapi kami harus menyimpannya sehinggas
tidak akan menambahnya. Untungnya itu akhirnya membuat penanganannya)
sedikit lebih mudah.c
karakter saat ini.sumber