#!/usr/bin/perl
use lib '.';
print "Content-Type: text/html\n\n";
require "cgi-lib.pl";
ReadParse(*params);

$board = def_board();
print "Board at start:<br>\n";
#color_board($board);

$power = $params{power} || 6;
$nb = gen_pow_board(2**$power+1,$board,1);
print "Board fter gen_pow 1:<br>\n";
#color_board($nb);

#print_board($nb);
$nb = add_values($nb,1,$power);
print "Board after add_values:<br>\n";
#color_board($nb);

$nb = gen_pow_board(49,$nb);
print "Board after gen_pow 2<br>\n";
#color_board($nb);

$nb = normalize_board($nb);
#print_board($nb);
print "Final board<br>\n";
color_board($nb);

sub normalize_board {
    my($nb) = @_;
    my($x,$y);
    for($x=0;$x<scalar(@{$nb});$x++) {
	for($y=0;$y<scalar(@{$nb->[$x]});$y++) {
	    $nb->[$x][$y] = int($nb->[$x][$y]);
	    if($nb->[$x][$y] < 1) { $nb->[$x][$y] = 1; }
	    if($nb->[$x][$y] > 17) { $nb->[$x][$y] = 17; }
	}
    }
    return $nb;
}

sub color_board {
    my($nb) = @_;
    my($x,$y);
    print "<table cellspacing=0 cellpadding=0".(($params{dh}) ? " border=1" : "").">\n";
    for($x=0;$x<scalar(@{$nb});$x++) {
	print "<tr>\n";
	for($y=0;$y<scalar(@{$nb->[$x]});$y++) {
	    my($v) = $nb->[$x][$y];
	    if($v < 1) { $color = "#00AA00"; }
	    elsif($v > 17) { $color = "#FF0000"; }
	    else {
		$v = int(($v/17) * 255);
		$color = sprintf("%02X",$v);
		$color = "#$color$color$color";
	    }
	    if($params{dh}) {
		print "<td width=2\%".(($params{nc}) ? "" : "bgcolor=$color><font color=#AA00AA").">".(($params{nc}) ? $nb->[$x][$y] : printfix($nb->[$x][$y],4))."</font></td>\n";
	    } else {
		print "<td bgcolor=$color>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>\n";
	    }
	}
	print "</tr>\n";
    }
    print "</table>\n";
}

sub print_board {
    my($nb) = @_;
    my($x,$y);
    print "<table border=1>\n";
    for($x=0;$x<scalar(@{$nb});$x++) {
	print "<tr>\n";
	for($y=0;$y<scalar(@{$nb->[$x]});$y++) {
	    print "<td nowrap>$nb->[$x][$y]</td>\n";
	}
	print "</tr>\n";
    }
    print "</table>\n";
}

sub add_values {
    my($board,$power,$maxp) = @_;
    my($inc) = (2**$maxp) / 2**($power);
    my($x,$y,$v);
    my($maxv) = ($maxp-4)/$power;
    for($x=0;$x<(2**($power-1));$x++) {
	for($y=0;$y<(2**($power-1));$y++) {
	    $v = $board->[$x*$inc*2][$y*$inc*2];
	    $v += $board->[$x*$inc*2+$inc*2][$y*$inc*2];
	    $v += $board->[$x*$inc*2][$y*$inc*2+$inc*2];
	    $v += $board->[$x*$inc*2+$inc*2][$y*$inc*2+$inc*2];
	    if($params{rand}) {
		$v += (((int (rand 101))*2*$maxv)/100) - $maxv;
	    }
	    $board->[$x*$inc*2+$inc][$y*$inc*2+$inc] ||= ($v/4);
	}
    }
    for($x=0;$x<(2**($power-1));$x++) {
	for($y=0;$y<(2**($power-1));$y++) {
	    #top
	    $v = $board->[$x*$inc*2+$inc][$y*$inc*2+$inc];
	    $v += $board->[$x*$inc*2][$y*$inc*2];
	    $v += $board->[$x*$inc*2+2*$inc][$y*$inc*2];
	    if($y*$inc*2-$inc >= 0) {
		$v += $board->[$x*$inc*2+$inc][$y*$inc*2-$inc];
		$v = ($v/4);
	    } else {
		$v = ($v/3);
	    }
	    if($params{rand}) {
		$v += (((int (rand 101))*2*$maxv)/100) - $maxv;
	    }
	    #$v += (rand ($maxv*2)) - $maxv;
	    $board->[$x*$inc*2+$inc][$y*$inc*2] ||= $v;

	    #bottom
	    $v = $board->[$x*$inc*2+$inc][$y*$inc*2+$inc];
	    $v += $board->[$x*$inc*2][$y*$inc*2+2*$inc];
	    $v += $board->[$x*$inc*2+2*$inc][$y*$inc*2+2*$inc];
	    if($y*$inc*2+3*$inc <= 2**$maxp) {
		$v += $board->[$x*$inc*2+$inc][$y*$inc*2+3*$inc];
		$v = ($v/4);
	    } else {
		$v = ($v/3);
	    }
	    #$v += (rand ($maxv*2)) - $maxv;
	    if($params{rand}) {
		$v += (((int (rand 101))*2*$maxv)/100) - $maxv;
	    }
	    $board->[$x*$inc*2+$inc][$y*$inc*2+2*$inc] ||= $v;

	    #left
	    $v = $board->[$x*$inc*2+$inc][$y*$inc*2+$inc];
	    $v += $board->[$x*$inc*2][$y*$inc*2];
	    $v += $board->[$x*$inc*2][$y*$inc*2+2*$inc];
	    if($x*$inc*2-$inc >= 0) {
		$v += $board->[$x*$inc*2-$inc][$y*$inc*2+$inc];
		$v = ($v/4);
	    } else {
		$v = ($v/3);
	    }
	    #$v += (rand ($maxv*2)) - $maxv;
	    if($params{rand}) {
		$v += (((int (rand 101))*2*$maxv)/100) - $maxv;
	    }
	    $board->[$x*$inc*2][$y*$inc*2+$inc] ||= $v;
	    
	    #right
	    $v = $board->[$x*$inc*2+$inc][$y*$inc*2+$inc];
	    $v += $board->[$x*$inc*2+2*$inc][$y*$inc*2];
	    $v += $board->[$x*$inc*2+2*$inc][$y*$inc*2+2*$inc];
	    if($x*$inc*2+3*$inc <= 2**$maxp) {
		$v += $board->[$x*$inc*2+3*$inc][$y*$inc*2+$inc];
		$v = ($v/4);
	    } else {
		$v = ($v/3);
	    }
	    #$v += (rand ($maxv*2)) - $maxv;
	    if($params{rand}) {
		$v += (((int (rand 101))*2*$maxv)/100) - $maxv;
	    }
	    $board->[$x*$inc*2+2*$inc][$y*$inc*2+$inc] ||= $v;
	}
    }
    if($power<$maxp) {
	$board = add_values($board,$power+1,$maxp);
    }
    return $board;
}

sub gen_pow_board {
    my($max,$board,$flag) = @_;
    #my $max = 2**$power+1;
    my $bmax = scalar @{$board};
    my($x,$y,@pb,$xi,$xi2,$yi,$yi2,$xw1,$xw2,$yw1,$yw2);
    for($x=0;$x<$max;$x++) {
	$xi = ($x/($max-1)) * ($bmax-1);
	if($xi == int($xi)) {
	    $xi2 = $xi;
	    $xw1 = 1;
	    $xw2 = 0;
	} else {
	    $xw2 = $xi - (int $xi);
	    $xw1 = 1 - $xw2;
	    $xi = int $xi;
	    $xi2 = $xi+1;
	}
	for($y=0;$y<$max;$y++) {
	    $yi = ($y/($max-1)) * ($bmax-1);
	    if($yi == int($yi)) {
		$yi2 = $yi;
		$yw1 = 1;
		$yw2 = 0;
	    } else {
		$yw2 = $yi - (int $yi);
		$yw1 = 1 - $yw2;
		$yi = int $yi;
		$yi2 = $yi+1;
	    }
	    $pb[$x][$y] = 0;
	    #if($x == 0 || $y == 0 || $x == $max-1 || $y == $max-1 || !$flag || ($x!=1 && $y!=1 && $y!=$max-2 && $x!=$max-2)) {
	    if($board->[$xi][$yi] && $board->[$xi][$yi2] && $board->[$xi2][$yi] && $board->[$xi2][$yi2]) {
		$pb[$x][$y] += $board->[$xi][$yi]*$xw1*$yw1;
		$pb[$x][$y] += $board->[$xi][$yi2]*$xw1*$yw2;
		$pb[$x][$y] += $board->[$xi2][$yi]*$xw2*$yw1;
		$pb[$x][$y] += $board->[$xi2][$yi2]*$xw2*$yw2;
	    }
	}
    }
    return \@pb;
}

sub def_board {
    my(@board) = (
		  [17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,16,16,16,15,14,13,12,11,10,9,9,8,8,7,6,5,5,4,3,2,2,1,1,1,1],
		  [16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
		  [16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
		  [15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
		  [15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
		  [15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
		  [15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
		  [15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
		  [14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
		  [14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
		  [14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,8,8,8,8,8,0,0,0,0,0,0,0,0,0,0,1],
		  [13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,8,8,8,8,0,0,0,0,0,0,0,0,0,0,0,1],
		  [13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8,8,8,8,8,8,8,0,0,0,0,0,0,0,0,0,1],
		  [12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 8,8,8,8,8,8,8,8,0,0,0,0,0,0,0,0,1],
		  [12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 8,8,8,8,8,8,8,8,0,0,0,0,0,0,0,0,1],
		  [11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8,8,8,8,0,0,0,0,0,0,0,0,0,0,0,0,1],
		  [11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
		  [10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
		  [10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
		  [10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
		  [10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
		  [ 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
		  [ 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
		  [ 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
		  [ 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
		  [ 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
		  [ 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
		  [ 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
		  [ 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
		  [ 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 6, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
		  [ 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
		  [ 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6,6,6,6,0,0,0,0,0,0,0,0,0,0,0,0,1],
		  [ 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6,6,6,6,0,0,0,0,0,0,0,0,0,0,0,0,1],
		  [ 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6,6,6,6,0,0,0,0,0,0,0,0,0,0,0,0,1],
		  [ 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6,6,6,6,5,0,0,0,0,0,0,0,0,0,0,0,1],
		  [ 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6,6,6,6,5,5,0,0,0,0,0,0,0,0,0,0,1],
		  [ 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0,5,5,5,5,0,0,0,0,0,0,0,0,0,0,1],
		  [ 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0,0,5,5,5,0,0,0,0,0,0,0,0,0,0,1],
		  [ 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
		  [ 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
		  [ 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
		  [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
		  [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
		  [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
		  [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
		  [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
		  [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
		  [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
		  [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
		  );
    @board = ();
    my($x,$y);
    for($x=0;$x<100;$x++) {
	for($y=0;$y<100;$y++) {
	    $board[$x][$y] = 0;
	}
    }
    return \@board;
}

sub printfix {
    my($str,$len) = @_;
    $len ||= 5;
    return $str . ("&nbsp;" x ($len - (length $str)));
}
