Добавьте два значения в brainfuck

В настоящее время я изучаю brainfuck как вызов для игры в гольф, и я хотел бы проверить код, чтобы убедиться, что я правильно понимаю вещи. Для начала вот мой фрагмент:

[
  The purpose of this program is to add two
  predetermined values together and print the result.

  For this program the values 15 and 20 have been
  chosen to add together which should give a
  result of 35 and print # at the end.
]

+++++           Iterate 5 times
[
    >+++        Add 3 to cell one
    >++++       Add 4 to cell two
    <<-         Subtract 1 from cell zero
]

Currently cell one is 15 and cell two is 20
The resulting output should be 35

>[              Move to cell one and iterate until cell one is zero
    >+          Add 1 to cell two
    <-          Subtract 1 from cell one
]
>.              Print cell two

Цель этого фрагмента — взять два заданных значения 15 и 20сложите их вместе (в результате 35) и вывести результат на консоль. Поскольку brainfuck работает со значениями ASCII, октоторп должен выводиться в консоль в конце:

#

Я уверен, что есть более короткие способы сделать это, но я ищу отзывы о том, насколько хорошо я задокументировал то, что он делает, форматирование/стиль разбивки и общий подход к проблеме.

1 ответ
1

Более короткие пути

Я уверен, что есть более короткие способы сделать это

Что делает тебя таким уверенным?

Нет более короткого способа сократить перемещение одной клетки в другую. Я сомневаюсь, что есть более короткие и эффективные способы установки чисел 15 и 20. См. https://esolangs.org/wiki/Brainfuck_constants как настроить любой конкретный номер в Brainfuck, но при одновременной настройке нескольких номеров гораздо быстрее и эффективнее не настраивать их по отдельности. Для получения дополнительной информации по этой теме см. один из моих предыдущих ответов на Brainfuck.


Документация

Я ищу отзывы о том, насколько хорошо я задокументировал то, что он делает, форматирование/стиль разбивки и общий подход к проблеме.

Я думаю, что это очень хорошо задокументировано. Мне нравится, что у вас есть раздел документации в начале, что очень распространено и очень безопасно, так как все значения равны нулю, код внутри (у вас было две инструкции печати внутри) никогда не запустится.

Для тех, кто привык читать брехню (верите или нет, но мы существуем), нет необходимости писать подробности об итерации и о том, сколько вы прибавляете и вычитаете в каждой ячейке.

Обычно я делю свои программы на брейнфак на три части: установка, логика, вывод.

Единственная документация, необходимая в начале, это что-то вроде «Установите значения 0 15 20 на ленте».


Документация того, что вы делаете, также очень хорошо документирована, но [>+<-] Шаблон очень распространен в Brainfuck, поэтому было бы достаточно задокументировать «Переместить значение в ячейке 2 в ячейку 1». Совершенно очевидно, что вы перемещаете значения (опять же, для тех из нас, кто привык читать мозговуху), но какие значения перемещаются, это интересная часть здесь для тех, кто читает документацию.

Подход к проблеме

У вас очень четкий и очень основательный подход к проблеме.

Следующие шаги…

Добавить жестко запрограммированные значения довольно просто. Как насчет того, чтобы позволить пользователю вводить числа и складывать их вместе? Это заставит вас конвертировать между фактическими значениями и символами ASCII.

Смотрите также мои мозговые вопросы

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *