aboutsummaryrefslogtreecommitdiff
path: root/challenge-112/feng-chang/raku/ch-2.raku
blob: b674d7b51838474042411c261727c347db642298 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/bin/env raku

proto walk(UInt:D --> UInt:D) {*}   # restrict dispatch pattern

multi walk(0)  { 1 }
multi walk(1)  { 1 }
multi walk(2)  { 2 }

multi walk($n) {
    state @memo;                    # use memory to speed up counting
    @memo[$n] = walk($n-1) + walk($n-2) unless @memo[$n].defined;
    @memo[$n];
}

sub MAIN(UInt:D $n) { put walk($n) }