Вопрос

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

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

Это было полезно?

Решение

Держи, ты идешь:

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

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

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

Другие советы

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

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

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

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

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

Немного короче и проще CR-съемник:

,[-------------[+++++++++++++.[-]],]
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top