Факториал в Befunge
Пример для версий
befungee 0.2.0
Программа состоит из двух циклов — первый вычисляет числа от 16 до 1, второй — собственно факториалы.
Прежде всего в стек заносится 16 (как 4*4) — максимальное число, факториал которого нужно вычислить. Затем следует первый цикл, выполняющийся по часовой стрелке. За одну итерацию в стек дописывается число, равное предыдущему, уменьшенному на 1. Когда это число становится нулем, цикл прерывается (_
во второй строке), и указатель инструкций направляется вправо.
Перед входом во второй цикл из стека удаляется верхний элемент (0) и добавляется 1 (текущее значение факториала). Затем следует второй цикл, выполняющийся против часовой стрелки. За одну итерацию происходит следующее:
-
\
— два верхних элемента (ранее вычисленный факториал и следующее число) стека меняются местами (число становится верхним элементом). Если в стеке всего один элемент, поверх него записывается 0. -
:_
— если следующее число — 0 (или стек пуст), цикл прерывается. -
.
— следующее число выводится на печать (копия остается в стеке). -
блок
,,,,"! = "
— помещает в стек символы строки и сразу же их выводит. Строка проходится справа налево, но и символы выводятся от самого верхнего к нижним, так что для программиста строка выглядит так же, как на печати. -
.:*
— вычисляется новый факториал и выводится на печать (копия остается в стеке). -
,*25
— вывод перевода строки.
44* >:1-:v v ,*25 .:* ,,,,"! = ".:_ @
^ _ $1 > \: ^
Комментарии
]]>blog comments powered by Disqus
]]>