#!/usr/bin/perl # eg/circute/script/circute.pl - automatically generated from eg/circute/src/circute.alp by: # alpaca.pl v0.93 # http://catseye.webhop.net/projects/alpaca/ ###################################################### use Alpaca qw(true false guess adjacent_state adjacent_class load_playfield display_playfield process_playfield); sub SpaceStateRules { return 'Space' }; sub NANDStateRules { return 'NAND' }; sub WireStateRules { return 'Spark' if ($Playfield->[$x-1][$y] eq 'Spark' or $Playfield->[$x+1][$y] eq 'Spark' or $Playfield->[$x][$y-1] eq 'Spark' or $Playfield->[$x][$y+1] eq 'Spark' or ($Playfield->[$x][$y+1] eq 'NAND' and ($Playfield->[$x-1][$y+1] eq 'Wire' or $Playfield->[$x+1][$y+1] eq 'Wire')) or ($Playfield->[$x][$y-1] eq 'NAND' and ($Playfield->[$x-1][$y-1] eq 'Wire' or $Playfield->[$x+1][$y-1] eq 'Wire'))); return 'Wire' }; sub SparkStateRules { return 'Tail' if ($Playfield->[$x-1][$y] eq 'Tail' or $Playfield->[$x+1][$y] eq 'Tail' or $Playfield->[$x][$y-1] eq 'Tail' or $Playfield->[$x][$y+1] eq 'Tail' or ($Playfield->[$x][$y+1] eq 'NAND' and $Playfield->[$x-1][$y+1] eq 'Spark' and $Playfield->[$x+1][$y+1] eq 'Spark') or ($Playfield->[$x][$y-1] eq 'NAND' and $Playfield->[$x-1][$y-1] eq 'Spark' and $Playfield->[$x+1][$y-1] eq 'Spark')); return 'Spark' }; sub TailStateRules { return 'Wire' if (1); return 'Tail' }; $Appearance = { 'NAND' => 'N', 'Space' => ' ', 'Spark' => '#', 'Tail' => '-', 'Wire' => '=', }; $InputCodec = { 'N' => 'NAND', ' ' => 'Space', '#' => 'Spark', '-' => 'Tail', '=' => 'Wire', }; $StateRule = { 'NAND' => \&main::NANDStateRules, 'Space' => \&main::SpaceStateRules, 'Spark' => \&main::SparkStateRules, 'Tail' => \&main::TailStateRules, 'Wire' => \&main::WireStateRules, }; load_playfield($ARGV[0]); display_playfield(); while (!$done) { process_playfield(); display_playfield(); } exit(0); ### END ###