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);