D,g,@~~,L2_|*;;*|_2L,@,g,D
D,ff,@^^,BG€gBF;;FBg€GB,@D1:?:
xx:?
aa:1
`bb
Bxx;;B
Waa*bb,`yy,$ff>xx,`aa,xx|yy,`bb,Byy,xx:yy
O;;O:,B,`,|,`,>$,`,*W`
Cobalah online!
Fakta menyenangkan: Ini adalah 272 byte jauh sebelum penjelasan dimulai, sekarang mengalahkan Java.
Output Trueuntuk string seimbang sempurna, dan Falsesebaliknya
Untuk kepuasan saya, ini mengalahkan versi palindromize yang membosankan sebanyak 2 byte, untuk mencegah hasil yang dicetak dua kali. Saya juga bertujuan untuk memiliki kode mati sesedikit mungkin, namun masih ada beberapa bagian berkomentar, dan kode keluar dengan kode kesalahan 1 , setelah mencetak nilai yang benar.
NB : Bug dengan BFperintah diperbaiki ketika jawaban ini sedang dikembangkan.
Bagaimana itu bekerja
f fgf ff fgSf f (S)S
Sa b b b a a b a c c[ [ a ] , [ b b b ] , [ a a ] , [ b ] , [ a ] , [ c c ] ]g, dan ganti sublist dengan hasil fungsi.
g2x[ a ][ b b ][ c c c ]
[ a ] ⇒ [ a , 1 ]
[ b b ] ⇒ [ b , b , 0 ]
[ c c c ] ⇒ [ c , c , c , 1 ]
xx > 2x - 2x*
g( s )sBF^D,ff,@^^,grr;;
f fgf f
- x xf f
- y yf f
- a a
- b by y
gx y a bg
€a b c{...}g{...}g gf fg
D,gg,@~~,L2_|*;;*|_2L,@D (NB: -2 bytes)
D,ff,@^^,BG€{gg}BF;;FB}gg{€GB,@D?: (NB: +6 bytes)
yang lebih panjang 4 byte.
x = 5x = 15
x+10 ; Explicit argument
+10 ; Implicit argument, as x is active
x`
f fgx xxx:?x xa aaa:11x xb b
`bb
Bxx
b bx xa a : = 1b b : = ¬¬ x x
Lalu kita masukkan loop while kita:
Waa*bb,`yy,$ff>xx,`aa,xx|yy,`bb,Byy,xx:yy
Loop sementara adalah konstruk di Add ++: ia beroperasi langsung pada kode, bukan variabel. Constructs mengambil serangkaian pernyataan kode, dipisahkan dengan ,mana mereka beroperasi. Sementara dan jika pernyataan juga mengambil kondisi langsung sebelum yang pertama ,yang terdiri dari pernyataan tunggal yang valid, seperti perintah infix dengan variabel. Satu hal yang perlu diperhatikan: variabel aktif tidak dapat dihilangkan dari kondisi.
aa*bba ab by yf f (x)
`yy,$ff>xx
a a
- 1) Nilai baru tidak sama dengan nilai lama (loop while unique)
- 2) Nilai baru bukan string kosong
Salah satu kelemahan terbesar Add ++ adalah kurangnya pernyataan majemuk, yang mengharuskan memiliki variabel loop kedua. Kami menetapkan dua variabel kami:
a a : = x x ≠ y y
b b : = ¬¬( y y )
Dengan kodenya
`aa,xx|yy,`bb,Byy
|B x xy yxx:yy
f fa ab b
a ax = ya ay yb ba a
Kami kemudian mencapai pernyataan akhir kami:
O
b b
- a a =1b b = F a l s eF a l s e
- a a = T r u eb b = F a l s eF a l s e
- a a = F a l s eb b = T r u eT r u e
b bb bT r u eF a l s e