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

Порт dos2unix к мозгу

Я попал в аргумент на SuperUser.com о бесполезных ответах и ​​обнаружил, что бросаю вызов другому плакату, чтобы ответить на вопрос в brainfuck. Он не взял меня на себя, но теперь мне любопытно.

Все, что нужно сделать программе, - это преобразование строк CRLF в LF (dos-style to unix). Любые bf-кодеры вокруг могут помочь?

4b9b3361

Ответ 1

Здесь вы идете:

,[[->+>+<<]>>>,[<-------------[+++++++++++++.>>>]<[>>----------[>+++++++++++++.-------------]<++++++++++>]<<<<[-]>>>[-<<<+>>>]]<[-]<[-]<]++++++++++.

Предполагает, что EOF указывается входным значением 0 (это значение по умолчанию для говядины, которое я использовал для тестирования, и является разумным выбором, я думаю, что он также может поддерживать EOF, оставляя символ неизменным, но я не " t тест). Также предполагается, что файл заканчивается LF (фактически, он заменяет последний символ LF). Правильно обрабатывает CR, если не является частью пары CRLF (т.е. Выводит одиночные CR).

Взял, может быть, час, чтобы писать и тестировать, и это включает в себя изучение Brainfuck с самого начала.

Ответ 2

Это немного короче, всего 41 символ.

,[[->+>+<<]>-------------[>.<[-]]>[-]<<,]

Он считывает значение в [0]. Он копирует значение чтения в [1] и [2] и вычитает 13 из [1]. Если a [1] отличен от нуля (это означает, что это не CR), он помещает [2] и очищает [1]. Затем он очищает [2] и снова читает [0] и повторяет.

Это имеет дополнительное преимущество: поскольку он оставляет сообщение [0] = 0 каждый раз, когда он читает - он должен поддерживать виртуальные машины BF, которые читают EOF как 0 или обрабатывают EOF как "без изменений", оба из которых являются общее.

Так как это не заменяет пары CRLF на LF, а скорее всего ограничивает CR, это не зависит от предположения, что файл заканчивается LF. Мое собственное тестирование с dos2unix (по крайней мере, Cygwin) не означает, что одиночные CR сохраняются.

Ответ 3

Слегка более короткий и простой CR-стриппер:

,[-------------[+++++++++++++.[-]],]