/usr/bin/perl -w
e strict;

 @lineup  = qw( 0 2 3 4 1 );
 $size    = scalar @lineup;
 @as      = qw( 1 2 3 4 );
 @squares = ();

r my $aidx ( 0..$#as ) {
for my $ridx ( 0..$#lineup ) {
  for my $cidx ( 0..$#lineup ) {
    my $row = $lineup[ $ridx ];
    my $col = $lineup[ $cidx ];
    my $a = $as[ $aidx ];
    my $v = ( $a * $row + $col ) % $size;
    $squares[ $aidx ]->[ $ridx ]->[ $cidx ]
      = $v + 1;
  }
}
}

r my $day ( 1..$size ) {
for my $group ( 1..$size ) {
  my @v = ();
  for my $sidx ( 0..$size-2 ) {
    push @v, $squares[ $sidx ]->
       [ $day - 1]->[ $group - 1 ];
  }

  my( $i, $b, $g1, $g2 ) = @v;
  $g2 = $g2 + $size;
  print "day$day group$group:",
   " i$i b$b g$g1 g$g2\n";
}
print "\n";
}