my $back = AA::Background->new('bg');
+my $title = AA::Label->new('title');
+$title->MultiSet(
+ 'text' => 'Goldbergův algoritmus',
+ 'size' => 60,
+ 'x' => 1024/2,
+ 'y' => 80,
+);
+
my @v;
for (my $i=0; $i<5; $i++) {
my $v = AA::NetV->new("v$i");
$v[$i]->Set('h', $v[$i]->Get('h') + 1);
}
-my $scenario = [
- sub { flow(0, 5); },
- sub { up(1); },
- sub { flow(1, 5); },
- sub { up(2); },
- sub { flow(2, 5); },
- sub { up(3); },
- sub { flow(3, 5); },
-];
+sub hint($) {
+ my ($h) = @_;
+ for (my $i=0; $i<@v; $i++) {
+ $v[$i]->Set('hint', $i == $h);
+ }
+}
+
+my $scenario;
-if (1) {
+if (!@ARGV || $ARGV[0] eq "1") {
+ $scenario = [
+ sub { flow(0, 5); hint(1); },
+ sub { up(1); },
+ sub { flow(1, 5); hint(2); },
+ sub { up(2); },
+ sub { flow(2, 5); hint(3); },
+ sub { up(3); },
+ sub { flow(3, 5); hint(-1); },
+ ];
+} elsif ($ARGV[0] eq "2") {
+ $title->Set('text', "Goldberg v úzkých");
for (my $i=0; $i<@v-1; $i++) {
$e[$i]->Set('c', 5-$i);
}
$scenario = [
- sub { flow(0, 5); },
+ sub { flow(0, 5); hint(1); },
sub { up(1); },
- sub { flow(1, 4); },
+ sub { flow(1, 4); hint(2); },
sub { up(2); },
- sub { flow(2, 3); },
+ sub { flow(2, 3); hint(3); },
sub { up(3); },
sub { flow(3, 2); },
sub { up(3); },
- sub { flow(2, -1); },
+ sub { flow(2, -1); hint(2); },
sub { up(2); },
- sub { flow(1, -1); },
+ sub { flow(1, -1); hint(1); },
sub { up(1); },
sub { up(1); },
sub { flow(1, 1); },
sub { up(1); },
sub { up(1); },
sub { up(1); },
- sub { flow(0, -1); },
+ sub { flow(0, -1); hint(2); },
sub { up(2); },
- sub { flow(2, 1); },
+ sub { flow(2, 1); hint(3); },
sub { up(3); },
sub { up(3); },
- sub { flow(2, -1); },
+ sub { flow(2, -1); hint(2); },
sub { up(2); },
sub { up(2); },
- sub { flow(2, 1); },
+ sub { flow(2, 1); hint(3); },
sub { up(3); },
sub { up(3); },
- sub { flow(2, -1); },
+ sub { flow(2, -1); hint(2); },
sub { up(2); },
sub { up(2); },
sub { flow(2, 1); },
- sub { flow(1, -1); },
- sub { flow(0, -1); },
+ sub { flow(1, -1); hint(1); },
+ sub { flow(0, -1); hint(3); },
+ sub { up(3); },
+ sub { up(3); },
+ sub { flow(2, -1); hint(2); },
+ sub { flow(1, -1); hint(1); },
+ sub { flow(0, -1); hint(-1); },
+ ];
+} elsif ($ARGV[0] eq "3") {
+ $title->Set('text', "Goldberg s nejvyšším vrcholem");
+ for (my $i=0; $i<@v-1; $i++) {
+ $e[$i]->Set('c', 5-$i);
+ }
+ $scenario = [
+ sub { flow(0, 5); hint(1); },
+ sub { up(1); },
+ sub { flow(1, 4); },
+ sub { up(1); },
+ sub { up(1); },
+ sub { up(1); },
+ sub { up(1); },
+ sub { up(1); },
+ sub { flow(0, -1); hint(2); },
+ sub { up(2); },
+ sub { flow(2, 3); },
+ sub { up(2); },
+ sub { up(2); },
+ sub { up(2); },
+ sub { up(2); },
+ sub { up(2); },
+ sub { up(2); },
+ sub { flow(1, -1); hint(1); },
+ sub { flow(0, -1); hint(3); },
+ sub { up(3); },
+ sub { flow(3, 2); },
+ sub { up(3); },
+ sub { up(3); },
sub { up(3); },
sub { up(3); },
- sub { flow(2, -1); },
- sub { flow(1, -1); },
- sub { flow(0, -1); },
+ sub { up(3); },
+ sub { up(3); },
+ sub { up(3); },
+ sub { flow(2, -1); hint(2); },
+ sub { flow(1, -1); hint(1); },
+ sub { flow(0, -1); hint(-1); },
];
+} else {
+ die "What do you want?\n";
}
$ui->RunScenario($scenario, 1);
-
-exit 0;
-