File: euler.pl

package info (click to toggle)
libperlude-perl 0.61-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 360 kB
  • sloc: perl: 903; makefile: 2
file content (36 lines) | stat: -rw-r--r-- 556 bytes parent folder | download
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
31
32
33
34
35
36
#! /usr/bin/perl
use Eirotic;

sub sum ($xs) {
    my $sum = 0;
    now {state $sum=0; $sum+=$_ } $xs
}

say "euler 1: ",
    sum filter {
        not
        ( ($_ % 3)
        ||($_ % 5))
    } range 1, 1000;

sub fibo (@seed) {
    sub {
        push @seed, $seed[0] + $seed[1];
        shift @seed;
    }
} 

say "euler 2: ",
    sum filter { not ($_ % 2) }
    takeWhile { $_ < 4_000_000 }
    fibo 1, 1;

sub is_prime ($x=$_) {
    map { return 0 unless $x % $_ } 2..($x-1);
    1
}

say now {$_}
    filter {is_prime}
    range 1, 600_851_475_143;