diff options
| author | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2021-03-08 14:22:01 +0000 |
|---|---|---|
| committer | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2021-03-08 14:22:01 +0000 |
| commit | cc5995af658ed34e4dd2c9eefb070ff1e52506f6 (patch) | |
| tree | de8cbe06fe1dcad676d91f347de91d90384ab037 /challenge-103 | |
| parent | 835c7468cff51181a687fa06d34cea7c215bc9e7 (diff) | |
| download | perlweeklychallenge-club-cc5995af658ed34e4dd2c9eefb070ff1e52506f6.tar.gz perlweeklychallenge-club-cc5995af658ed34e4dd2c9eefb070ff1e52506f6.tar.bz2 perlweeklychallenge-club-cc5995af658ed34e4dd2c9eefb070ff1e52506f6.zip | |
- Added solutions by Luca Ferrari.
Diffstat (limited to 'challenge-103')
| -rw-r--r-- | challenge-103/luca-ferrari/blog-1.txt | 1 | ||||
| -rw-r--r-- | challenge-103/luca-ferrari/blog-2.txt | 1 | ||||
| -rw-r--r-- | challenge-103/luca-ferrari/raku/ch-1.p6 | 35 | ||||
| -rw-r--r-- | challenge-103/luca-ferrari/raku/ch-2.p6 | 29 | ||||
| -rw-r--r-- | challenge-103/luca-ferrari/raku/filelist.csv | 7 |
5 files changed, 73 insertions, 0 deletions
diff --git a/challenge-103/luca-ferrari/blog-1.txt b/challenge-103/luca-ferrari/blog-1.txt new file mode 100644 index 0000000000..bd1b918530 --- /dev/null +++ b/challenge-103/luca-ferrari/blog-1.txt @@ -0,0 +1 @@ +https://fluca1978.github.io/2021/03/08/PerlWeeklyChallenge103.html#task1 diff --git a/challenge-103/luca-ferrari/blog-2.txt b/challenge-103/luca-ferrari/blog-2.txt new file mode 100644 index 0000000000..80df7ccc0f --- /dev/null +++ b/challenge-103/luca-ferrari/blog-2.txt @@ -0,0 +1 @@ +https://fluca1978.github.io/2021/03/08/PerlWeeklyChallenge103.html#task2 diff --git a/challenge-103/luca-ferrari/raku/ch-1.p6 b/challenge-103/luca-ferrari/raku/ch-1.p6 new file mode 100644 index 0000000000..e4548522fc --- /dev/null +++ b/challenge-103/luca-ferrari/raku/ch-1.p6 @@ -0,0 +1,35 @@ +#!raku + + + +class ChineseCalendar { + has DateTime $!now; + has Str @!animals; + has Str @!elements; + + submethod BUILD( :$year = Nil ) { + @!animals = qw/ Rat Ox Tiger Rabbit Dragon Snake Horse Goat Monkey Rooster Dog Pig /; + @!elements = qw/ Wood Fire Earth Metal Water /; + $!now = $year ?? DateTime.new: year => $year !! DateTime.now; + } + + method element() { + return @!elements[ ( $!now.year - 4 ) % 10 / 2 ]; + } + + method animal() { + return @!animals[ ( $!now.year - 4 ) % 12 ]; + } +} + + +multi sub MAIN( Int $year where { $year > 1900 } ) { + my $cc = ChineseCalendar.new: year => $year; + + say "Year $year is %s %s".sprintf: + $cc.element, $cc.animal; +} + +multi sub MAIN() { + MAIN( DateTime.now.year ); +} diff --git a/challenge-103/luca-ferrari/raku/ch-2.p6 b/challenge-103/luca-ferrari/raku/ch-2.p6 new file mode 100644 index 0000000000..9ea6e731df --- /dev/null +++ b/challenge-103/luca-ferrari/raku/ch-2.p6 @@ -0,0 +1,29 @@ +#!raku + + +sub MAIN( Int $start-ms where { $start-ms > 0 }, + Int $now-ms where { $now-ms >= $start-ms }, + Str $filename ) { + + # lookup file name and tracks + my @tracks; + for $filename.IO.lines { + my ( $ms, $track ) = .split: ','; + @tracks.push: { time => $ms, + track => $track }; + } + + # try to reach the end of the time + my $diff = $now-ms - $start-ms; + my $last-track = 0; + while ( $diff > 0 ) { + $last-track = 0; + for @tracks.kv -> $index, $track { + $diff -= $track< time >; + last if ( $diff <= 0 ); + $last-track = $index; + } + } + + "Now playing { @tracks[ $last-track ]<track> } ".say; +} diff --git a/challenge-103/luca-ferrari/raku/filelist.csv b/challenge-103/luca-ferrari/raku/filelist.csv new file mode 100644 index 0000000000..9428b93004 --- /dev/null +++ b/challenge-103/luca-ferrari/raku/filelist.csv @@ -0,0 +1,7 @@ +1709363,"Les Miserables Episode 1: The Bishop (broadcast date: 1937-07-23)" +1723781,"Les Miserables Episode 2: Javert (broadcast date: 1937-07-30)" +1723781,"Les Miserables Episode 3: The Trial (broadcast date: 1937-08-06)" +1678356,"Les Miserables Episode 4: Cosette (broadcast date: 1937-08-13)" +1646043,"Les Miserables Episode 5: The Grave (broadcast date: 1937-08-20)" +1714640,"Les Miserables Episode 6: The Barricade (broadcast date: 1937-08-27)" +1714640,"Les Miserables Episode 7: Conclusion (broadcast date: 1937-09-03)" |
