aboutsummaryrefslogtreecommitdiff
path: root/challenge-041/noud/perl6/ch-2.p6
blob: 55f8cd06ba6f28498ada474c6f5624dcc0e47531 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# Write a script to display first 20 Leonardo Numbers. Please checkout wiki
# page for more information.
#
# For example:
# L(0) = 1
# L(1) = 1
# L(2) = L(0) + L(1) + 1 = 3
# L(3) = L(1) + L(2) + 1 = 5
#
# and so on.

# Define a lazy fibonacci sequence.
constant @fib = 0, 1, * + * ... *;

# Leonardo numbers are related to Fibonacci numbers as
#   leonardo(n) = 2 * fib(n + 1) - 1
sub leonardo(Int $n) {
    2 * @fib[$n + 1] - 1;
}

say "First 20 Leonardo numbers:";
for ^20 -> $n {
    leonardo($n).say;
}