# project-euler/147/euler-147-analysis.txt

+The vertical/horizontal number of rectangles is trivial:

+If the rectangle dimensions are s[x],s[y] and the board dimensions are

+b[x], b[y] then there are ( b[x] - (s[x] - 1) ) * ( b[y] - (s[y] - 1) )

+squares there of that size.

+Now for the diagonal squares:

+my @mod = (map { my $y = $_; [map { ($y+$_)%7 } (0 .. 6)] } (0 .. 6));

# while ($row_count++ <= 1_000_000_000)

-vec($prev_row, 0, ~~4~~) = 1;

+vec($prev_row, 0, 8) = 1;

while ($prev_row_count < 1_000_000_000)

print "Reached $prev_row_count\n";

- vec($next_row, 0, ~~4~~) = 1;

+ vec($next_row, 0, 8) = 1;

for my $i (1 .. $prev_row_count-1)

- vec($next_row, $i, 4) =

- ((vec($prev_row, $i-1, 4) + vec($prev_row, $i, 4)) % 7)

+ vec($next_row, $i, 8) = $mod[vec($prev_row, $i-1, 8)][vec($prev_row, $i, 8)]

- vec($next_row, $prev_row_count, ~~4~~) = 1;

+ vec($next_row, $prev_row_count, 8) = 1;

# For the two 1s on the sides of the row.