Информация об изменениях

Сообщение Re[3]: Коллац на Фрактране от 11.07.2023 22:34

Изменено 11.07.2023 22:37 Кодт

Re[3]: Коллац на Фрактране
Здравствуйте, kov_serg, Вы писали:

_>Я видимо не так понимаю постановку задачи.


(не силён в луа, код поскипал без комментариев)

_>И чешим репу

_> 0)    27p2
_>     0    pp= 1 --skip-- (2p2-p7)
_>     1    pp= 2 --skip-- (p13+p5-p11-2p2)
_>     2    pp= 3 --skip-- (p11+p5-p13-2p2)
_>     3    pp= 4 --skip-- (p29-p11-p2)
_>     4    pp= 5 --skip-- (p29-p13-p2)
_>     5    pp= 6 --skip-- (p17-p11)
_>     6    pp= 7 --skip-- (p17-p13)
_>     7    pp= 8 --skip-- (p19+p2-p17-p5)
_>     8    pp= 9 --skip-- (p17+p2-p19-p5)
_>     9    pp=10 --skip-- (p23-p17)
_>    10    pp=11 --skip-- (p23-p19)
_>    11    pp=12 --skip-- (6p2+p31-p29-p5)
_>    12    pp=13 --skip-- (6p2+p29-p31-p5)
_>    13    pp=14 --skip-- (4p2+p23-p29)
_>    14    pp=15 --skip-- (4p2+p23-p31)
_>    15    pp=16 --skip-- (p3-p23)
_>    16    pp=17 (27p2)*(p7-2p2)=25p2+p7

вот, ура, 17-я дробь подошла. умножили — и надо снова бежать от начала списка
_>    17    pp=17 (25p2+p7)*(p7-2p2)=23p2+2p7
_>    18    pp=17 (23p2+2p7)*(p7-2p2)=21p2+3p7
_>    19    pp=17 (21p2+3p7)*(p7-2p2)=19p2+4p7
_>    20    pp=17 (19p2+4p7)*(p7-2p2)=17p2+5p7
_>    21    pp=17 (17p2+5p7)*(p7-2p2)=15p2+6p7
_>    22    pp=17 (15p2+6p7)*(p7-2p2)=13p2+7p7
_>    23    pp=17 (13p2+7p7)*(p7-2p2)=11p2+8p7
_>    24    pp=17 (11p2+8p7)*(p7-2p2)=9p2+9p7
_>    25    pp=17 (9p2+9p7)*(p7-2p2)=7p2+10p7
_>    26    pp=17 (7p2+10p7)*(p7-2p2)=5p2+11p7
_>    27    pp=17 (5p2+11p7)*(p7-2p2)=3p2+12p7
_>    28    pp=17 (3p2+12p7)*(p7-2p2)=p2+13p7

а вместо этого — мы тупо выполнили умножение до самого упора — применили максимальную степень этой дроби
и закономерно получили какую-то фигню.

Впрочем, даже для такой альтернативной фрактран-машины с политикой стоять-бежать и round robin есть контрмера!

Если мы договоримся, что у нас абсолютно все состояния (кроме финиша) имеют непустую метку.
Тогда стартовое число будет, скажем, 27p2+1p37 (37 — метка старта)
а стартовые инструкции — -2p2+p7-p37 и -p2-p37.

И паразитное зацикливание станет невозможным, потому что на первой итерации мы сбрасываем метку текущего состояния, а на второй — сбрасывать нечего, бежим дальше по кольцу.
Re[3]: Коллац на Фрактране
Здравствуйте, kov_serg, Вы писали:

_>Я видимо не так понимаю постановку задачи.


(не силён в луа, код поскипал без комментариев)

_>И чешим репу

_> 0)    27p2
_>     0    pp= 1 --skip-- (2p2-p7)
_>     1    pp= 2 --skip-- (p13+p5-p11-2p2)
_>     2    pp= 3 --skip-- (p11+p5-p13-2p2)
_>     3    pp= 4 --skip-- (p29-p11-p2)
_>     4    pp= 5 --skip-- (p29-p13-p2)
_>     5    pp= 6 --skip-- (p17-p11)
_>     6    pp= 7 --skip-- (p17-p13)
_>     7    pp= 8 --skip-- (p19+p2-p17-p5)
_>     8    pp= 9 --skip-- (p17+p2-p19-p5)
_>     9    pp=10 --skip-- (p23-p17)
_>    10    pp=11 --skip-- (p23-p19)
_>    11    pp=12 --skip-- (6p2+p31-p29-p5)
_>    12    pp=13 --skip-- (6p2+p29-p31-p5)
_>    13    pp=14 --skip-- (4p2+p23-p29)
_>    14    pp=15 --skip-- (4p2+p23-p31)
_>    15    pp=16 --skip-- (p3-p23)
_>    16    pp=17 (27p2)*(p7-2p2)=25p2+p7

вот, ура, 17-я дробь подошла. умножили — и надо снова бежать от начала списка
_>    17    pp=17 (25p2+p7)*(p7-2p2)=23p2+2p7
_>    18    pp=17 (23p2+2p7)*(p7-2p2)=21p2+3p7
_>    19    pp=17 (21p2+3p7)*(p7-2p2)=19p2+4p7
_>    20    pp=17 (19p2+4p7)*(p7-2p2)=17p2+5p7
_>    21    pp=17 (17p2+5p7)*(p7-2p2)=15p2+6p7
_>    22    pp=17 (15p2+6p7)*(p7-2p2)=13p2+7p7
_>    23    pp=17 (13p2+7p7)*(p7-2p2)=11p2+8p7
_>    24    pp=17 (11p2+8p7)*(p7-2p2)=9p2+9p7
_>    25    pp=17 (9p2+9p7)*(p7-2p2)=7p2+10p7
_>    26    pp=17 (7p2+10p7)*(p7-2p2)=5p2+11p7
_>    27    pp=17 (5p2+11p7)*(p7-2p2)=3p2+12p7
_>    28    pp=17 (3p2+12p7)*(p7-2p2)=p2+13p7

а вместо этого — мы тупо выполнили умножение до самого упора — применили максимальную степень этой дроби
и закономерно получили какую-то фигню.

Впрочем, даже для такой альтернативной фрактран-машины с политикой стоять-бежать и round robin есть контрмера!

Если мы договоримся, что у нас абсолютно все состояния (кроме финиша) имеют непустую метку.
Тогда стартовое число будет, скажем, 27p2+p37 (37 — метка старта)
а стартовые инструкции — -2p2+p7-p37 и -p2-p37.

И паразитное зацикливание станет невозможным, потому что на первой итерации мы сбрасываем метку текущего состояния, а на второй — сбрасывать нечего, бежим дальше по кольцу.