summaryrefslogtreecommitdiff
path: root/perl/p6.pl
blob: b93da352dcbde62a577fdbcadd3945932736230e (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#!/usr/bin/env perl

use strict;
use warnings;

use List::Util qw(reduce);

my ($sum_of_squares, $sum);

# Functional
sub iter {
    my ($sum_of_squares, $sum) = @{+shift};
    my $n = shift;
    $sum_of_squares += $n**2;
    $sum += $n;
    return [$sum_of_squares, $sum];
}

($sum_of_squares, $sum) = @{+reduce { iter($a, $b) } [0, 0], (1..100)};
print $sum_of_squares - ($sum**2), "\n";

# Imperative
$sum_of_squares = 0;
$sum = 0;

for my $n (1..100) {
    $sum_of_squares += $n**2;
    $sum += $n;
}
print $sum_of_squares - ($sum**2), "\n";