Сотовые автоматы действительно очаровательны. Те, о которых обычно говорят, являются двоичными, то есть представляемыми числом. Тем не менее, те, на мой взгляд, были сделаны до смерти. Тройные CA более интересны, но мы должны рассмотреть все ASCII! Какое это может быть удовольствие!
Вместо того, чтобы выбирать набор правил для каждого символа, я буду использовать простое решающее правило, о котором я скоро расскажу. Чтобы принять решение о следующем поколении, мы смотрим на три «верхние» клетки, очень похожие на клеточные автоматы. Посмотрите на пример:
QWERTY
X Y Z
«Верх» Y
- WER
это ячейки сверху и справа, сверху и сверху и слева. Y будет результатом функции, которую я собираюсь определить, которая является функцией для трехсимвольных строк. «Вершина» X
есть QW
, или заполнение пространства в несуществующей / отсутствующую клетке .
Теперь для забавной функции! Я называю эту последовательность последовательностью XOROR по причине. Позвольте A
быть верхним левым символом ячейки, B
быть вышеуказанным кодексом ячейки, и 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
, выведитеn
задана th-ю последовательность в последовательности XOROR с помощью seeds
,n = 0
являющейся первым преобразованием строки. - Для
s
заданной строки выведите (для программ) или сгенерируйте (для функций / генераторов) бесконечный поток последовательности XOROR с начальным числомs
. Вы можете остановить, если последовательность повторяется, но это не обязательно.
s
всегда будет состоять только из печатных символов ASCII, от пробела до тильды и табуляции (без перевода строки).
Это код-гольф , поэтому выигрывает самая короткая программа в байтах.
o
делают это похоже на порыв зергов .
127%127+32==32
.
n=0
не оригинальная строка?
(d^!)|(space)
. Что касается второго вопроса, вы выполняете (CHAR%127)+32
после выполнения XOROR.