Зауважте: я готовий дати нагороду за будь-яку відповідь, який мені здається цікавим.
Вашим завданням є розробити комп'ютер із набору інструкцій Тюрінга (OISC):
OISC - це абстрактна машина, яка використовує лише одну інструкцію - позбавляючи необхідності коду машинної мови. Завдяки розумному вибору єдиної інструкції та надаючи нескінченних ресурсів, OISC може бути універсальним комп'ютером так само, як і традиційні комп'ютери, що мають кілька інструкцій.
Ось кілька прикладів одиночних команд, які створюють OISC-повний Тьюрінг.
Правила:
Ви повинні надати тлумачення або доказ цього
Ви повинні надати перекладача для вашої мови. Цей перекладач повинен обмежуватися лише пам'яттю / часом (наприклад, не повинен мати обмежень, накладених користувачем). Якщо ви не надаєте перекладача для вашої мови (з будь-якої причини, крім лінощів), ви повинні довести, що це можливо написати. Перекладач повинен бути можливим .
Ви повинні довести його Тюрінг-повноту
Ви повинні надати офіційний доказ того, що ваша мова є повною для Тюрінга. Простий спосіб зробити це - довести, що він може інтерпретувати або мати таку саму поведінку, як інша мова Тюрінга. Найбільш основною мовою для інтерпретації буде Brainf ** k .
Наприклад, нормальна мова, яка має всі ті ж команди, що і Brainf ** k (і той самий брак обмежень, накладених користувачем), є Turing-завершеною, оскільки все, що може бути реалізовано в Brainf ** k, може бути реалізовано мовою .
Ось список дуже простих у здійсненні мов, повних для Тюрінга.
Додаткові вимоги OISC
Цей OISC повинен мати лише одну інструкцію - він не може мати декілька інструкцій з однією з них, що робить його Тюрінг-завершеним.
Ваш OISC може використовувати будь-який синтаксис, який вам подобається. Вам слід визначити у своїй відповіді, що таке інструкція, що таке дані, а що - неоперативні (наприклад, пробіли). Будь креативним!
Аргументи не просто повинні бути цілими числами. Наприклад, /// є прекрасним прикладом OISC, повного Тьюрінга.
Як і якщо вхід і вихід приймаються і даються, залежить від вас. Більшість OISC реалізують введення-виведення через конкретні місця пам'яті, але можуть бути й інші способи, і вам рекомендується знайти його.
Дійсна відповідь повинна містити деякий приклад коду у вашому OISC, або додаючи його у допис, або посилаючись на просту проблему, вирішену мовою.
Голосування
Виборці, будь ласка, пам’ятайте, що не підтримуйте нудні подання. Приклади:
- Lenguage -еквіваленти
- Впровадження існуючого OISC (відповідачі, будь ласка, створіть свій власний!)
- "OISC", в якому перший аргумент вказує команду для виклику ( приклад )
Однак вам слід подати цікаві, креативні матеріали, такі як:
- OISC на основі математичного рівняння
- ЦІРС-повний ZISC на базі нейронної мережі
- OISC, в якому вихідний введення / вивід відбувається іншими способами, ніж певні місця пам'яті
Перемога
Як і у популярності-конкурсі , відповідь з найбільшою кількістю голосів виграє! Удачі!