Вот это поворот: комбинация команд find и mkdir из GNU оказалась тьюринг-полной
Новости Отредактировано
Как ни странно, даже самые простые команды вроде find и mkdir в bash-скриптах могут скрывать в себе неожиданные секреты
483 открытий11К показов
В мире программирования команды find и mkdir из пакета GNU давно используются для управления файловой системой.
Однако недавнее открытие показало, что сочетание этих команд может достичь тьюринг-полноты. Это означает, что они способны имитировать поведение любой другой вычислительной системы, включая выполнение сложных алгоритмов и программ.
Доказательство
Исследователи показали тьюринг-полноту комбинации команд find и mkdir с помощью реализации систем тегов (tag systems).
Система тегов — это триплет (m, A, P), где m — положительное целое число, A — конечный алфавит, включающий символ завершения H, и P — правило производства для каждого символа алфавита.
Конструкция цикла
Простейшая демонстрация заключается в создании бесконечного цикла:
Эта команда рекурсивно создает каталоги, попадая в бесконечный цикл. Для ограничения глубины создания каталогов можно использовать опцию -maxdepth:
Пример FizzBuzz
Используя опцию -regex команды find, можно фильтровать имена файлов и выполнять действия в зависимости от результата:
Этот код создает иерархию каталогов, где выводится FizzBuzz, если количество каталогов кратно 15, Buzz — если кратно 5, Fizz — если кратно 3, и количество каталогов в противном случае.
Реализация систем тегов
Системы тегов — это пример, показывающий, как можно реализовать тьюринг-полный механизм с помощью команд find и mkdir. В данном примере используется система тегов с m = 2 и алфавитом из четырех символов.
Этот код демонстрирует, как с помощью комбинации команд find и mkdir можно реализовать тьюринг-полную систему тегов.
483 открытий11К показов



