Gudo
Jump to navigation
Jump to search
Gudo is Turing-complete 2-dimensional language.
Commands
Gudo consists of two commands ( / and @ ) and 5 classes. Every movement adds 1 to class.
class 1: / reflect direction, set class to 0 @ reflect to other way, set class to 0 class 2: @ increment, class = 1 / return point, class = 0 class 3: / jump to topmost return point if cell is true, class = 0 ends program if no return point @ decrement, class = 2 class 4: / next cell, class = 3 @ previous cell, class = 3 class 5: / print cell, class = 3 @ input cell, class = 3
Brainfuck to Gudo
Brainfuck can easily be converted to Gudo. I made converter with Perl.
if (($#ARGV + 1) != 2) { print "Usage: perl bftogudo.pl input output\n"; exit; } my $bf; open(I, "<", $ARGV[0]); while () { $bf = "$bf$_"; } close(I); my $gudo = ; my $class = 1; my $dir = 0; while ($bf =~ /(.)/g) { if ($1 =~ /^\+$/) { $gudo = "$gudo @ "; } if ($1 =~ /^\-$/) { $gudo = "$gudo @ "; } if ($1 =~ /^\<$/) { $gudo = "$gudo @ "; } if ($1 =~ /^\>$/) { $gudo = "$gudo / "; } if ($1 =~ /^\[$/) { $gudo = "$gudo /"; } if ($1 =~ /^\]$/) { $gudo = "$gudo /"; } if ($1 =~ /^\.$/) { $gudo = "$gudo / "; } if ($1 =~ /^\,$/) { $gudo = "$gudo @ "; } } $gudo = "$gudo /"; print $gudo; open(TARGET, ">", $ARGV[1]); print TARGET $gudo; close(TARGET);