Source

project-euler / project-euler / 148 / 148.pl

Shlomi Fish ace11bd 








































#!/usr/bin/perl

use strict;
use warnings;

my $prev_row_count = 1;
my $prev_row = '';
my $next_row = '';

my $result_count = 0;
# while ($row_count++ <= 1_000_000_000)
vec($prev_row, 0, 4) = 1;
$result_count++;
while ($prev_row_count < 1_000_000_000)
{
    if ($prev_row_count % 1_000 == 0)
    {
        print "Reached $prev_row_count\n";
    }
    vec($next_row, 0, 4) = 1;
    for my $i (1 .. $prev_row_count-1)
    {
        if (
        vec($next_row, $i, 4) =
            ((vec($prev_row, $i-1, 4) + vec($prev_row, $i, 4)) % 7)
        )
        {
            $result_count++;
        }
    }
    vec($next_row, $prev_row_count, 4) = 1;
    # For the two 1s on the sides of the row.
    $result_count += 2;
}
continue
{
    $prev_row = $next_row;
    $next_row = '';
    $prev_row_count++;
}

print "Result count = $result_count\n";
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.