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

#!/usr/bin/perl

use strict;
use warnings;

use integer;
use v5.016;

my $B = 7;

my $power = $B;
my $old_tri_id = 'Triangle[None]';
my $old_tri_sum = 0;
while ($power < 1_000_000_000)
{
    my $next_power = $power * $B;
    my $p_1 = $power - 1;
    my $start = $p_1;
    my $end = $p_1 + $power;
    my $right_tri_sum = $start*($start+1)/2;
    my $right_tri_id = qq#\\|Triangle[$start .. $end]#;
    print qq#$right_tri_id = $start*($start+1)/2 Ys ==> $right_tri_sum\n\n#;

    my $tri_id = qq#Triangle[1 .. $next_power]#;
    my $tri_sum = $B*($B-1)/2*$right_tri_sum + $B*($B+1)/2*$old_tri_sum;
    print qq#$tri_id = (1+2+3+4+5+6) * $right_tri_id + (1+2+3+4+5+6+7) * $old_tri_id = $tri_sum\n\n#;

    $power = $next_power;
    $old_tri_id = $tri_id;
    $old_tri_sum = $tri_sum;
}
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.