Комментарии 23
Дело было вечером, делать было не х… руки в общем чесались.
Вы весьма спецевически проводите свободное время, но результат интересен.
Вы весьма спецевически проводите свободное время, но результат интересен.
Ну, на самом деле языки типа Transact-SQL и PL/SQL являются вполне себе полными по Тьюрингу, так что ничего удивительного. Хотя так или иначе, очень занятно. Спасибо за статью.
Отличная штука :)
Мой 75 летний преподаватель алгоритмов оценил бы это.
Интересно, это Вы так задумали, что все переменные у вас в глобальной области видимости?
1. Двигаться по ленте влево и вправо
2. Читать с ленты символ
3. Писать на ленту символ
4. Переходить в различные состояния
5. Можно грабить корованы (trollface картинка)
2. Читать с ленты символ
3. Писать на ленту символ
4. Переходить в различные состояния
5. Можно грабить корованы (trollface картинка)
Ксения, я в ахуе! Вот это моск %)
Думаю, будет лучше, если Вы заключите код в тег <source lang="mysql"></source>
Мне немного не понравилось то, что Вы модифицируете входную строку, добивая ее нулями. Возможно, было бы лучше проверять, не вышли ли мы за границы входной строки, и, если да, то в качестве текущего символа рассматривать какой-нибудь \0 (При этом не изменяя входных данных).
То есть что-то вроде такого
Мне немного не понравилось то, что Вы модифицируете входную строку, добивая ее нулями. Возможно, было бы лучше проверять, не вышли ли мы за границы входной строки, и, если да, то в качестве текущего символа рассматривать какой-нибудь \0 (При этом не изменяя входных данных).
То есть что-то вроде такого
IF @p < LENGTH(sinput) THEN
SELECT @inread:=SUBSTRING(sinput, @p, 1) FROM ribbon;
ELSE
@inread := 0;
END IF;
можно продлить ленту и в другую сторону, используя для этого вторую таблицу.
правда конструкцию «машины» придется усложнить.
но такая лента все равно получится не совсем бесконечной т.к. размр памяти/дисков ограничен.
правда конструкцию «машины» придется усложнить.
но такая лента все равно получится не совсем бесконечной т.к. размр памяти/дисков ограничен.
написать brainfuck на SQL — задача интересная. наоборот, однако, любопытнее.
вы бы реализовали циклы с инкриментами и декрементами и таймстамп комманду придумали — можно было бы сервера бенчмаркать тяжелыми брейнфак аппликушками.
вы бы реализовали циклы с инкриментами и декрементами и таймстамп комманду придумали — можно было бы сервера бенчмаркать тяжелыми брейнфак аппликушками.
Очень интересно. Спасибо. Не очень представляю, как это можно использовать в реальной жизни, однако сама по себе демонстрация наглядная :)
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Эмулятор машины Тьюринга на MySQL