FRACTRAN — повна за Тюрінгом езотерична мова програмування, яку запропонував Джон Конвей.
Опис
Програма на FRACTRAN записується як упорядкований список додатних дробів разом з початковим початковим цілочисловим входом n. Програма запускається оновленням цілого числа n в такий спосіб:
- для першого дробу у списку, для якого добуток є цілим числом, замініть на
- повторюйте це правило доти, поки жоден дріб у списку не видасть цілого числа при множенні на , потім зупиніть.
Наприклад така програма генерує прості числа:
Починаючи з n = 2, ця програма генерує таку послідовність цілих чисел:
- 2, 15, 825, 725, 1925, 2275, 425, 390, 330, 290, 770, … послідовність A007542 з Онлайн енциклопедії послідовностей цілих чисел, OEIS
Після 2 ця послідовність містить такі степені 2:
- послідовність A034785 з Онлайн енциклопедії послідовностей цілих чисел, OEIS
які є простими степенями 2.
Розуміння програми FRACTRAN
Програма FRACTRAN може розглядатися як тип машини Мінського, де регістри зберігаються в простих показниках в аргументі n.
Використовувати нумерацію Геделя, додатне ціле число n може кодувати довільне число довільно великих додатних цілочислових змінних. Значення кожної змінної кодується як показник простого числа в простій факторизації цілого числа. Наприклад, ціле число
представляє стан регістра, в якому одна змінна (яку ми будемо називати ) містить значення 2, а дві інші змінні ( і ) містять значення 1. Всі інші змінні містять значення 0.
Програма FRACTRAN — це впорядкований список додатних дробів. Кожен дріб є інструкцією, яка перевіряє одну або кілька змінних, представлених основними факторами її знаменника. Наприклад:
перевіряє дві змінні і . Якщо і , то виконуються присвоєння , , , . Наприклад:
Оскільки програма FRACTRAN є просто списком дробів, ці інструкції перевірка-присвоєння є єдиними допустимими інструкціями в мові FRACTRAN. Крім того, застосовуються такі обмеження:
- Кожного разу, коли виконується інструкція, змінні, що перевіряються, також зменшуються.
- Одну і ту ж змінну не можна одночасно зменшити і збільшити в одній інструкції (в іншому випадку дріб, що представляє цю інструкцію, не буде нескоротним).
- Інструкція FRACTRAN нездатна безпосередньо перевірити, чи дорівнює змінна 0. Однак є непрямий спосіб це зробити, створивши інструкцію, яка поміщається після інших інструкцій, які перевіряють конкретну змінну.
Коментарі
- У Книзі чисел Джон Конвей і Річард Ґай дали трохи іншу послідовність:
- Нумерацію Геделя не можна безпосередньо застосувати для від'ємних цілих чисел, чисел з рухомою комою або текстових рядків, хоча можна домовитись щодо непрямого подання цих типів даних. Пропоновані розширення до FRACTRAN включають FRACTRAN++ [ 16 липня 2021 у Wayback Machine.] і Bag [ 16 липня 2021 у Wayback Machine.].
Примітки
Посилання
- «Prime Number Pathology: Fractran» [ 10 липня 2018 у Wayback Machine.]
- Weisstein, Eric W. FRACTRAN(англ.) на сайті Wolfram MathWorld.
- Prime Number Pathology [Архівовано 14 квітня 2013 у Archive.is]
- FRACTRAN [ 15 серпня 2021 у Wayback Machine.]
- Project Euler Problem 308 [ 9 липня 2021 у Wayback Machine.]
- «Building Fizzbuzz in Fractran from the Bottom Up» [ 26 квітня 2017 у Wayback Machine.]
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
FRACTRAN povna za Tyuringom ezoterichna mova programuvannya yaku zaproponuvav Dzhon Konvej OpisPrograma na FRACTRAN zapisuyetsya yak uporyadkovanij spisok dodatnih drobiv razom z pochatkovim pochatkovim cilochislovim vhodom n Programa zapuskayetsya onovlennyam cilogo chisla n v takij sposib dlya pershogo drobu f displaystyle f u spisku dlya yakogo dobutok n f displaystyle n cdot f ye cilim chislom zaminit n displaystyle n na n f displaystyle n cdot f povtoryujte ce pravilo doti poki zhoden drib u spisku ne vidast cilogo chisla pri mnozhenni na n displaystyle n potim zupinit Napriklad taka programa generuye prosti chisla 1791 7885 1951 2338 2933 7729 9523 7719 117 1113 1311 152 17 551 displaystyle left frac 17 91 frac 78 85 frac 19 51 frac 23 38 frac 29 33 frac 77 29 frac 95 23 frac 77 19 frac 1 17 frac 11 13 frac 13 11 frac 15 2 frac 1 7 frac 55 1 right Pochinayuchi z n 2 cya programa generuye taku poslidovnist cilih chisel 2 15 825 725 1925 2275 425 390 330 290 770 poslidovnist A007542 z Onlajn enciklopediyi poslidovnostej cilih chisel OEIS Pislya 2 cya poslidovnist mistit taki stepeni 2 22 4 23 8 25 32 27 128 211 2048 213 8192 217 131072 219 524288 displaystyle 2 2 4 2 3 8 2 5 32 2 7 128 2 11 2048 2 13 8192 2 17 131072 2 19 524288 dots poslidovnist A034785 z Onlajn enciklopediyi poslidovnostej cilih chisel OEIS yaki ye prostimi stepenyami 2 Rozuminnya programi FRACTRANPrograma FRACTRAN mozhe rozglyadatisya yak tip mashini Minskogo de registri zberigayutsya v prostih pokaznikah v argumenti n Vikoristovuvati numeraciyu Gedelya dodatne cile chislo n mozhe koduvati dovilne chislo dovilno velikih dodatnih cilochislovih zminnih Znachennya kozhnoyi zminnoyi koduyetsya yak pokaznik prostogo chisla v prostij faktorizaciyi cilogo chisla Napriklad cile chislo 60 22 31 51 displaystyle 60 2 2 times 3 1 times 5 1 predstavlyaye stan registra v yakomu odna zminna yaku mi budemo nazivati v2 displaystyle v 2 mistit znachennya 2 a dvi inshi zminni v3 displaystyle v 3 i v5 displaystyle v 5 mistyat znachennya 1 Vsi inshi zminni mistyat znachennya 0 Programa FRACTRAN ce vporyadkovanij spisok dodatnih drobiv Kozhen drib ye instrukciyeyu yaka pereviryaye odnu abo kilka zminnih predstavlenih osnovnimi faktorami yiyi znamennika Napriklad f1 2120 3 722 51 displaystyle f 1 frac 21 20 frac 3 times 7 2 2 times 5 1 pereviryaye dvi zminni v2 displaystyle v 2 i v5 displaystyle v 5 Yaksho v2 2 displaystyle v 2 geq 2 i v5 1 displaystyle v 5 geq 1 to vikonuyutsya prisvoyennya v2 v2 2 displaystyle v 2 v 2 2 v5 v5 1 displaystyle v 5 v 5 1 v3 v3 1 displaystyle v 3 v 3 1 v7 v7 1 displaystyle v 7 v 7 1 Napriklad 60 f1 22 31 51 3 722 51 32 71 displaystyle 60 cdot f 1 2 2 times 3 1 times 5 1 cdot frac 3 times 7 2 2 times 5 1 3 2 times 7 1 Oskilki programa FRACTRAN ye prosto spiskom drobiv ci instrukciyi perevirka prisvoyennya ye yedinimi dopustimimi instrukciyami v movi FRACTRAN Krim togo zastosovuyutsya taki obmezhennya Kozhnogo razu koli vikonuyetsya instrukciya zminni sho pereviryayutsya takozh zmenshuyutsya Odnu i tu zh zminnu ne mozhna odnochasno zmenshiti i zbilshiti v odnij instrukciyi v inshomu vipadku drib sho predstavlyaye cyu instrukciyu ne bude neskorotnim Instrukciya FRACTRAN nezdatna bezposeredno pereviriti chi dorivnyuye zminna 0 Odnak ye nepryamij sposib ce zrobiti stvorivshi instrukciyu yaka pomishayetsya pislya inshih instrukcij yaki pereviryayut konkretnu zminnu KomentariU Knizi chisel Dzhon Konvej i Richard Gaj dali trohi inshu poslidovnist 1791 7885 1951 2338 2933 7729 9523 7719 117 1113 1311 1514 152 551 displaystyle left frac 17 91 frac 78 85 frac 19 51 frac 23 38 frac 29 33 frac 77 29 frac 95 23 frac 77 19 frac 1 17 frac 11 13 frac 13 11 frac 15 14 frac 15 2 frac 55 1 right Numeraciyu Gedelya ne mozhna bezposeredno zastosuvati dlya vid yemnih cilih chisel chisel z ruhomoyu komoyu abo tekstovih ryadkiv hocha mozhna domovitis shodo nepryamogo podannya cih tipiv danih Proponovani rozshirennya do FRACTRAN vklyuchayut FRACTRAN 16 lipnya 2021 u Wayback Machine i Bag 16 lipnya 2021 u Wayback Machine PrimitkiPosilannya Prime Number Pathology Fractran 10 lipnya 2018 u Wayback Machine Weisstein Eric W FRACTRAN angl na sajti Wolfram MathWorld Prime Number Pathology Arhivovano 14 kvitnya 2013 u Archive is FRACTRAN 15 serpnya 2021 u Wayback Machine Project Euler Problem 308 9 lipnya 2021 u Wayback Machine Building Fizzbuzz in Fractran from the Bottom Up 26 kvitnya 2017 u Wayback Machine