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`
Спробуйте в Інтернеті!
Веселий факт: Це було 272 байти задовго до того, як було розпочато пояснення, тепер він перемагає Java.
Виходи True
для ідеально збалансованих рядків та в False
іншому випадку
На моє велике задоволення, це обіграє нудну версію паліндромізації на 2 байти, щоб запобігти друкуванню результату двічі. Я також мав на меті мати якомога менше мертвого коду, але все ж є кілька коментованих розділів, і код виходить із кодом помилки 1 , після друку правильного значення.
NB : Помилка з BF
командами була виправлена під час розробки цієї відповіді.
Як це працює
f fгf ff fгSf f (S)S
Sa b b b a a b a c c[ [ a ] , [ b b b ] , [ a a ] , [ b ] , [ a ] , [ c c ] ]г, і замініть підлісти на результат функції.
г2х[ a ][ b b ][ c c c ]
[ a ] ⇒ [ a , 1 ]
[ b b ] ⇒ [ b , b , 0 ]
[ c c c ] ⇒ [ c , c , c , 1 ]
хx > 2х - 2х*
г( и )сBF
^
D,ff,@^^,
гrr;;
f fгf f
- х хf f
- y yf f
- a a
- b by y
гx y a bг
€
a b c{...}
г{...}
g gf fг
D,gg,@~~,L2_|*;;*|_2L,@D (NB: -2 bytes)
D,ff,@^^,BG€{gg}BF;;FB}gg{€GB,@D?: (NB: +6 bytes)
що на 4 байти довше.
х = 5х = 15
x+10 ; Explicit argument
+10 ; Implicit argument, as x is active
х`
f fгх хxx:?
х хa aaa:1
1х хb b
`bb
Bxx
b bх хa a : = 1b b : = ¬¬ x x
Потім вводимо наш цикл while:
Waa*bb,`yy,$ff>xx,`aa,xx|yy,`bb,Byy,xx:yy
Цикл while - це конструкція в Add ++: вона працює безпосередньо над кодом, а не змінними. Конструкти приймають серію кодових висловлювань, розділених з ,
якими вони працюють. Хоча і якщо оператори також приймають умову безпосередньо перед першою, ,
яка складається з одного дійсного оператора, такого як команда інфіксації зі змінними. Варто зазначити одне: активну змінну не можна опустити з умови.
aa*bb
a ab by yf f (x)
`yy,$ff>xx
a a
- 1) Нове значення не відповідає старому значенню (цикл, поки унікальний)
- 2) Нове значення не є порожнім рядком
Одним з найбільших недоліків Add ++ є відсутність складених операторів, що зумовлює необхідність наявності другої змінної циклу. Ми присвоюємо наші дві змінні:
a a : = x x ≠ y y
b b : = ¬¬( y y )
З кодом
`aa,xx|yy,`bb,Byy
|
B
х хy yxx:yy
f fa ab b
a aх = уa ay yb ba a
Тоді ми доходимо до остаточного твердження:
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 eТ р у е
b bb bТ р у еF a l s e