Hi, let me demonstrate a few solutions of the tasks from the Perl Weekly Challenge from the past weeks.
Week 040, issue 1
Task: You are given two or more arrays. Write a script to display values of each list at a given index.
Here, I am using the same technique of looping over several arrays that I found out during the work on covid.observer:
my @a = < I L O V E Y O U >; my @b = < 2 4 0 3 2 0 1 9 >; my @c = < ! ? £ $ % ^ & * >; for @a Z @b Z @c -> ($a, $b, $c) { say "$a $b $c"; }
The program emits the following output:
$ raku ch-040-1.raku I 2 ! L 4 ? O 0 £ V 3 $ E 2 % Y 0 ^ O 1 & U 9 *
Week 041, issue 2
Task: Print the first 20 Leonardo numbers.
The definition of such sequences can be very easily expressed via multi-functions:
multi sub L(0) { 1 } multi sub L(1) { 1 } multi sub L($n) { L($n - 1) + L($n - 2) + 1 } say L($_) for ^20;
The program prints the first Leonardo numbers:
$ raku ch-041-2.raku 1 1 3 5 9 15 25 41 67 109 177 287 465 753 1219 1973 3193 5167 8361 13529
Week 042, issue 1
Task: Print the numbers from 0 to 50 in octal format.
There are a few ways of how to convert the number to the number with the given base in Raku, here is one of the simplest ones:
say "Decimal $_ = Octal {$_.base(8)}" for ^50;
The output stars with the following lines:
$ raku ch-042-1.raku Decimal 0 = Octal 0 Decimal 1 = Octal 1 Decimal 2 = Octal 2 Decimal 3 = Octal 3 Decimal 4 = Octal 4 Decimal 5 = Octal 5 Decimal 6 = Octal 6 Decimal 7 = Octal 7 Decimal 8 = Octal 10 Decimal 9 = Octal 11 Decimal 10 = Octal 12 . . .
You can find more solutions by browsing the Raku challenges category on my site. The solutions from today’s post are available on GitHub.