Стільникові автомати справді захоплюючі. Ті, про які зазвичай говорять, - це двійкові, тобто ті, що можуть бути представлені числом. Однак, на мою думку, це було зроблено до смерті. Термінальні ЦА цікавіші, але ми маємо враховувати всі ASCII! Що це може бути весело!
Замість того, щоб визначити набір правил для кожного символу, я буду використовувати просте правило, про яке я поговорю найближчим часом. Щоб вирішити наступне покоління, ми дивимось на три "верхніх" комірки, подібно до стільникових автоматів. Подивіться приклад:
QWERTY
X Y Z
"Вершина" Y- WERце клітини вправо, вгорі, вгорі і вгорі і вліво. Y буде результатом функції, яку я збираюся визначити, що є функцією на трьох рядках. «Вершина» Xє QW, або заповнення простору в неіснуючої / відсутню клітці .
Тепер, для веселої функції! Я називаю цю послідовність послідовністю XOROR з причини. Нехай це Aбуде верхній лівий шаркод клітини, Bбути вищенаведеним charcode коду та Cбути угорі правого верхнього коду комірки. Потім, отримана комірка є символом, чиїм кодом є (A XOR B) OR C, тобто (A^B)|C. (Якщо отримане значення перевищує 126, тоді воно встановлюється (CHARCODE % 127) + 32. Нічого не робиться, якщо значення менше 32.) Ось приклад насіння Hello, World!:
S: Hello, World!
0: mmmo/c_ z}~)e
m = ( )^(H)|(e) = (32^72)|101 = 104|101 = 109 (m)
m = (H)^(e)|(l) = (72^101)|108 = 45|108 = 109 (m)
etc.
1: mmo/c_< +wl
2: mo/c_<c< + |;
3: o/c_<c ?+ g
4: oc_<c c??4+gg
5: 0_<c c 4+ o
6: _<c ccc4??ooo
7: c ccc4 ?o o
8: ccccc4w? pooo
9: cccc4w h o
A: ccc4wc hh ooo
B: cc4wc4kh ooo
C: c4wc4 #ooo o
D: wwc4w4#ooo oo
E: wc4wwc oo oo
F: w4wwc4oo oo o
G: wwwc4 oo oo
H: wwc4w4 oo oo
I: w4wwc4oooo oo
J: wwwc4 oo oo
K: wwc4w4oo oo o
L: wc4wwo oo oo
M: w4wwo8ooo oo
N: wwwo8 o oo o
O: wwo8w8oooo oo
І ми можемо продовжити деякий час далі. Ця модифікація рядка називається послідовністю XOROR.
Завдання: Ви повинні написати програму або функцію, яка виконує одне з наступних завдань:
- Задавши рядок
sі числоn >= 0, виведітьnth рядок у послідовності XOROR з насіннямs, приn = 0цьому це буде першим перетворенням рядка. - Дано рядок
s, вивести (для програм) або генерувати (для функцій / генераторів) нескінченний потік послідовності XOROR із насіннямs. Ви можете зупинити, якщо послідовність повторюється, але це не обов'язково.
s завжди буде складатися лише з символів для друку ASCII, від простору до тильди та вкладок (немає нових рядків.)
Це кодовий гольф , тому виграє найкоротша програма в байтах.
127%127+32==32.
n=0не є початковий рядок?
(d^!)|(space). Що стосується вашого другого питання, ви виконуєте (CHAR%127)+32 після виконання XOROR.


