Подтвердить что ты не робот

Закончено ли пакетное обучение?

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

4b9b3361

Ответ 1

Я считаю, что это соответствует. Считается, что основные требования полноты Тьюринга сводятся к нескольким простым операциям, в том числе: способность сохранять состояние (переменные), способность к ветвлению (условные обозначения) и возможность итерации (циклов). Пакет имеет все это, поэтому, если только не существует неоткрытого требования к полноте Тьюринга, квалифицируется командный скриптинг.

Ответ 2

Я только что "проверенный" пакет завершен, создав интерпретатор мозгового укуса в партии (потому что brainfuck доказано, что Turing завершен):

https://github.com/YoYoYonnY/Brainfuck-In-Batch

Кстати, полный язык программирования turing означает его либо:

  • невозможно создать программу, которая может определить, будет ли другая программа (на том же языке) в конечном итоге остановится или будет работать навсегда (я не знаю, как это работает, и я не думаю, что кто-либо когда-либо использовал этот для доказательства полноты Тьюринга).
  • можно создать программу, которая может запускать все возможные программы на языке (переводчик: переводчик Brainfuck в Brainfuck (Есть лучшая версия, которую я, к сожалению, могу 't найти. Это ужасно медленно))
  • Возможно действовать или моделировать машину Тьюринга и, таким образом, содержать как минимум следующие аспекты:
    • Запись в память (т.е. изменение значения переменной на любое другое значение, только возможность изменить true на false и наоборот). В случае пакета: SET A=5)
    • "Бесконечная" память (т.е. мне нужно больше одного бита/байта, который вы можете написать тоже, желательно бесконечно много). Строки, массивы, таблицы, битовые поля или даже целые числа действительны, если мы можем писать в весь объект. Заметьте, что нужно читать и записывать в переменную по адресу: должны быть битовые сдвиги, если вы хотите, чтобы целые числа были действительными, и вы должны иметь возможность индексировать ваш массив, что-то вроде array[index];.)
    • Условные инструкции перехода (т.е. IF %A%==0 GOTO LABEL (переход к метке, если A равен нулю), while (var) {/*code*/} (переход назад к началу кода, в то время как var не равен нулю) или jmp0 exit; (переход на выход, если текущее значение на стек равен нулю))

Традиционная машина Тьюринга требует, чтобы у вас была лента, которая бесконечна с обеих сторон, но будет работать простой массив, строка, таблица (объект) или двоичное число (бит-поле). Например, в моем "Brainfuck in Batch" я использовал массив/табличный объект для хранения памяти (так как пакет позволяет вам изменять ключ значения, например: SET ARRAY[%KEY%]=%VALUE%)