How to resolve the algorithm Execute Brain step by step in the Seed7 programming language
Published on 12 May 2024 09:40 PM
How to resolve the algorithm Execute Brain step by step in the Seed7 programming language
Table of Contents
Problem Statement
RCBF is a set of Brainf*** compilers and interpreters written for Rosetta Code in a variety of languages. Below are links to each of the versions of RCBF. An implementation need only properly implement the following instructions: Any cell size is allowed, EOF (End-O-File) support is optional, as is whether you have bounded or unbounded memory.
Let's start with the solution:
Step by Step solution about How to resolve the algorithm Execute Brain step by step in the Seed7 programming language
Source code in the brainfuc programming language
$ include "seed7_05.s7i";
const proc: brainF (in string: source, inout file: input, inout file: output) is func
local
var array char: memory is 100000 times '\0;';
var integer: dataPointer is 50000;
var integer: instructionPointer is 1;
var integer: nestingLevel is 0;
begin
while instructionPointer <= length(source) do
case source[instructionPointer] of
when {'>'}: incr(dataPointer);
when {'<'}: decr(dataPointer);
when {'+'}: incr(memory[dataPointer]);
when {'-'}: decr(memory[dataPointer]);
when {'.'}: write(output, memory[dataPointer]);
when {','}: memory[dataPointer] := getc(input);
when {'['}: # Forward if zero at dataPointer
if memory[dataPointer] = '\0;' then
nestingLevel := 1;
repeat
incr(instructionPointer);
case source[instructionPointer] of
when {'['}: incr(nestingLevel);
when {']'}: decr(nestingLevel);
end case;
until nestingLevel = 0;
end if;
when {']'}: # Backward if non-zero at dataPointer
if memory[dataPointer] <> '\0;' then
nestingLevel := 1;
repeat
decr(instructionPointer);
case source[instructionPointer] of
when {'['}: decr(nestingLevel);
when {']'}: incr(nestingLevel);
end case;
until nestingLevel = 0;
end if;
end case;
incr(instructionPointer);
end while;
end func;
const proc: brainF (in string: source) is func
begin
brainF(source, IN, OUT);
end func;
const proc: main is func
begin
brainF("++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.");
end func;
You may also check:How to resolve the algorithm Amicable pairs step by step in the CLU programming language
You may also check:How to resolve the algorithm Substring step by step in the Maple programming language
You may also check:How to resolve the algorithm Infinity step by step in the RLaB programming language
You may also check:How to resolve the algorithm Heronian triangles step by step in the R programming language
You may also check:How to resolve the algorithm Least common multiple step by step in the AppleScript programming language