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 True
untuk string seimbang sempurna, dan False
sebaliknya
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 BF
perintah 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:1
1x 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*bb
a 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