Вот это поворот: комбинация команд find и mkdir из GNU оказалась тьюринг-полной
Использование команд find и mkdir в bash-скриптах позволяет реализовать сложные алгоритмы и вычисления. Узнайте, как эти команды помогают достигать новых высот в программировании.
Новости TprogerВ мире программирования команды 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 можно реализовать тьюринг-полную систему тегов.