+++ /dev/null
-#! /usr/bin/perl
-#
-# Reference implementation for dynamic array testing.
-
-@a = ();
-while (<>) {
- chomp();
- # print "$_\n";
- @F = split();
- if ($F[0] eq "push") {
- push(@a, $F[1]);
- } elsif ($F[0] eq "unshift") {
- unshift(@a, $F[1]);
- } elsif ($F[0] eq "pop") {
- if (@a == 0) {
- print "*UFLOW*\n";
- } else {
- my $n = int(pop(@a));
- print "$n\n";
- }
- } elsif ($F[0] eq "shift") {
- if (@a == 0) {
- print "*UFLOW*\n";
- } else {
- my $n = int(shift(@a));
- print "$n\n";
- }
- } elsif ($F[0] eq "insert") {
- shift(@F);
- unshift(@a, @F);
- } elsif ($F[0] eq "append") {
- shift(@F);
- push(@a, @F);
- } elsif ($F[0] eq "delete") {
- if ($F[1] > @a) {
- # @a = ();
- print "*UFLOW*\n";
- } else {
- splice(@a, 0, $F[1]);
- }
- } elsif ($F[0] eq "reduce") {
- if ($F[1] > @a) {
- # @a = ();
- print "*UFLOW*\n";
- } else {
- $#a -= $F[1];
- }
- } elsif ($F[0] eq "set") {
- if ($F[1] > @a) {
- for (my $i = @a; $i < $F[1]; $i++) { $a[$i] = -1; }
- }
- $a[$F[1]] = int($F[2]);
- } elsif ($F[0] eq "get") {
- if ($F[1] >= @a) {
- print "*RANGE*\n";
- } else {
- print int($a[$F[1]]), "\n";
- }
- } elsif ($F[0] eq "first") {
- print int($a[0]), "\n";
- } elsif ($F[0] eq "last") {
- print int($a[$#a]), "\n";
- } elsif ($F[0] eq "show") {
- if (@a) {
- print join(" ", map int, @a), "\n";
- } else {
- print "*EMPTY*\n";
- }
- } else {
- print "*BAD*\n";
- }
-}