CamelCase в Befunge
Программа реализует посимвольную обработку введенной строки. Код снаружи цикла 152p
записывает в ячейку программы (5,2) значение 1, соответствующее логическому true
— начало строки считается пробелом.
Основная часть программы — цикл. В одной итерации цикла считывается (~
) и обрабатывается один символ. Выход из цикла осуществляется, если ASCII-код введенного символа равен 10 (: 25*- #v_ @
), в противном случае указатель инструкций отправляется во вторую строку (команда v
). Если символ — буква нижнего регистра, он переводится в верхний — для единообразия последующей обработки (часть программы до первого квадратного блока и сам блок). Затем аналогичным способом проверяется, является ли символ буквой верхнего регистра. Если нет (переход в первую строку), в ячейку (5,2) снова записывается 1, символ удаляется из стека, и цикл заканчивается. Если да (переход в третью строку), выполняется еще одна проверка — на значение ячейки (5,2), в зависимости от которого символ остается собой или переводится в нижний регистр. Наконец, символ выводится, и цикл заканчивается.
152p > ~ : 25*- #v_ @ >48*-v >152p $ v
> :: "`"` \"{"\` * | > :: "@"` \"["\` * ! | > v
> ^ >52g | >052p,v
>48*+^
^ <
( )
|
was last character a space? (5,2)
Комментарии
]]>blog comments powered by Disqus
]]>