diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2021-03-09 21:24:25 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-03-09 21:24:25 +0000 |
| commit | 2b892db40d452e98f7a98ad023bed312e2dcbe8b (patch) | |
| tree | ca90bc2435db9ae78ffc8b21b2a6ee515bc648e9 | |
| parent | 0490b0e1b8c06e53b0882364f2c70167c7703f95 (diff) | |
| parent | c9aec2da6bcb04b488183f09ca94bee488557aff (diff) | |
| download | perlweeklychallenge-club-2b892db40d452e98f7a98ad023bed312e2dcbe8b.tar.gz perlweeklychallenge-club-2b892db40d452e98f7a98ad023bed312e2dcbe8b.tar.bz2 perlweeklychallenge-club-2b892db40d452e98f7a98ad023bed312e2dcbe8b.zip | |
Merge pull request #3698 from seaker/master
challenge #103, FENG Chang's raku solutions
| -rwxr-xr-x | challenge-102/feng-chang/raku/ch-1.raku | 17 | ||||
| -rwxr-xr-x | challenge-102/feng-chang/raku/ch-2.raku | 15 | ||||
| -rwxr-xr-x | challenge-103/feng-chang/raku/ch-1.raku | 8 | ||||
| -rwxr-xr-x | challenge-103/feng-chang/raku/ch-2.raku | 26 | ||||
| -rw-r--r-- | challenge-103/feng-chang/raku/playlist.csv | 7 |
5 files changed, 73 insertions, 0 deletions
diff --git a/challenge-102/feng-chang/raku/ch-1.raku b/challenge-102/feng-chang/raku/ch-1.raku new file mode 100755 index 0000000000..463aa8f413 --- /dev/null +++ b/challenge-102/feng-chang/raku/ch-1.raku @@ -0,0 +1,17 @@ +#!/bin/env raku + +sub is-square(UInt:D \N --> Bool:D) { + my UInt $n = N.sqrt.UInt; + N == $n * $n; +} + +sub MAIN(UInt:D \N) { + my UInt $min = ('1' ~ '0' x N-1).UInt; + my UInt $max = ('9' x N).UInt; + for $min..$max -> $m { + my UInt $n = $m.flip.UInt; + next if $n > $m; + + put $m if is-square($m + $n) and is-square($m - $n); + } +} diff --git a/challenge-102/feng-chang/raku/ch-2.raku b/challenge-102/feng-chang/raku/ch-2.raku new file mode 100755 index 0000000000..394fede9ae --- /dev/null +++ b/challenge-102/feng-chang/raku/ch-2.raku @@ -0,0 +1,15 @@ +#!/bin/env raku + +sub MAIN(UInt:D \N) { + my Str:D $s = '#'; + my UInt:D $pos = N; + + while $s.chars < N { + $s = $pos ~ $s; + $pos = N - $s.chars; + + $s = '#' ~ $s if $s.chars < N; + } + + put $s; +} diff --git a/challenge-103/feng-chang/raku/ch-1.raku b/challenge-103/feng-chang/raku/ch-1.raku new file mode 100755 index 0000000000..e9a57ed7bb --- /dev/null +++ b/challenge-103/feng-chang/raku/ch-1.raku @@ -0,0 +1,8 @@ +#!/bin/env raku + +my @animals = <Rat Ox Tiger Rabbit Dragon Snake Horse Goat Monkey Rooster Dog Pig>; +my @elements = <Wood Fire Earth Metal Water>; + +sub MAIN(UInt:D \Year) { + put @elements[(Year + 4) % 5], ' ', @animals[(Year + 8) % 12]; +} diff --git a/challenge-103/feng-chang/raku/ch-2.raku b/challenge-103/feng-chang/raku/ch-2.raku new file mode 100755 index 0000000000..cec82cafc0 --- /dev/null +++ b/challenge-103/feng-chang/raku/ch-2.raku @@ -0,0 +1,26 @@ +#!/bin/env raku + +sub MAIN(UInt:D \Start, UInt:D \Current, Str:D \CSV where *.IO.e) { + my @music; + my UInt $cnt; + CSV.IO.linesĀ».split(',').map({ @music[$cnt++] = (title => .[1], length => .[0]).Hash; }); + + my $cycle = @musicĀ».<length>.sum / 1000; + my $pos = (Current - Start) % $cycle; + + $cnt = 0; + while $pos > @music[$cnt]<length> { + $pos -= @music[$cnt++]<length>; + } + + my UInt $hours = ($pos / 3600).UInt; + $pos -= $hours * 3600; + + my UInt $minutes = ($pos / 60).UInt; + $pos -= $minutes * 60; + + my UInt $seconds = $pos.UInt; + + put @music[$cnt]<title>; + put "{ $hours.fmt('%02d') }:{ $minutes.fmt('%02d') }:{ $seconds.fmt('%02d') }"; +} diff --git a/challenge-103/feng-chang/raku/playlist.csv b/challenge-103/feng-chang/raku/playlist.csv new file mode 100644 index 0000000000..9428b93004 --- /dev/null +++ b/challenge-103/feng-chang/raku/playlist.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)" |
