diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2021-11-28 20:43:39 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-11-28 20:43:39 +0000 |
| commit | c0abc10b7ce19ee465eea904f139bc0a96bf586a (patch) | |
| tree | f2e202a469508c2b7a0411f30bc7eebbbe1a07b8 | |
| parent | d4bac3210ac8f55a72fe620f1e302805f0a4edbe (diff) | |
| parent | 76bff3d0d972c3b261c3a3fa7e4346c12bfe10aa (diff) | |
| download | perlweeklychallenge-club-c0abc10b7ce19ee465eea904f139bc0a96bf586a.tar.gz perlweeklychallenge-club-c0abc10b7ce19ee465eea904f139bc0a96bf586a.tar.bz2 perlweeklychallenge-club-c0abc10b7ce19ee465eea904f139bc0a96bf586a.zip | |
Merge pull request #5294 from arnesom/branch-for-challenge-140
Arne Sommer
| -rw-r--r-- | challenge-140/arne-sommer/blog.txt | 1 | ||||
| -rwxr-xr-x | challenge-140/arne-sommer/raku/add-binary-unloaded | 36 | ||||
| -rwxr-xr-x | challenge-140/arne-sommer/raku/ch-1.raku | 36 | ||||
| -rwxr-xr-x | challenge-140/arne-sommer/raku/ch-2.raku | 21 | ||||
| -rwxr-xr-x | challenge-140/arne-sommer/raku/multab | 21 | ||||
| -rwxr-xr-x | challenge-140/arne-sommer/raku/multab2 | 21 |
6 files changed, 136 insertions, 0 deletions
diff --git a/challenge-140/arne-sommer/blog.txt b/challenge-140/arne-sommer/blog.txt new file mode 100644 index 0000000000..e8489e1d5c --- /dev/null +++ b/challenge-140/arne-sommer/blog.txt @@ -0,0 +1 @@ +https://raku-musings.com/add-table.html diff --git a/challenge-140/arne-sommer/raku/add-binary-unloaded b/challenge-140/arne-sommer/raku/add-binary-unloaded new file mode 100755 index 0000000000..80c951d373 --- /dev/null +++ b/challenge-140/arne-sommer/raku/add-binary-unloaded @@ -0,0 +1,36 @@ +#! /usr/bin/env raku + +subset DCB of Int where $_ ~~ /^1<[01]>*$/; + +unit sub MAIN (DCB $a, DCB $b, :v(:$verbose)); + +my $length = max($a.chars, $b.chars); + +say ": Max lenght: $length" if $verbose; + +my @a = $a.comb.reverse; +my @b = $b.comb.reverse; + +my $carry = 0; + +my @result; + +for ^$length -> $index +{ + my $aa = @a.shift // 0; + my $bb = @b.shift // 0; + my $sum = $carry + $aa + $bb; + + say ": a:$aa b:$bb c:$carry -> $sum" if $verbose; + + if $sum == 3 { $sum = 1; $carry = 1; } + elsif $sum == 2 { $sum = 0; $carry = 1; } + elsif $sum == 1 { $carry = 0; } + elsif $sum == 0 { $carry = 0; } + + @result.push: $sum; +} + +@result.push: $carry if $carry; + +say @result.join.flip; diff --git a/challenge-140/arne-sommer/raku/ch-1.raku b/challenge-140/arne-sommer/raku/ch-1.raku new file mode 100755 index 0000000000..80c951d373 --- /dev/null +++ b/challenge-140/arne-sommer/raku/ch-1.raku @@ -0,0 +1,36 @@ +#! /usr/bin/env raku + +subset DCB of Int where $_ ~~ /^1<[01]>*$/; + +unit sub MAIN (DCB $a, DCB $b, :v(:$verbose)); + +my $length = max($a.chars, $b.chars); + +say ": Max lenght: $length" if $verbose; + +my @a = $a.comb.reverse; +my @b = $b.comb.reverse; + +my $carry = 0; + +my @result; + +for ^$length -> $index +{ + my $aa = @a.shift // 0; + my $bb = @b.shift // 0; + my $sum = $carry + $aa + $bb; + + say ": a:$aa b:$bb c:$carry -> $sum" if $verbose; + + if $sum == 3 { $sum = 1; $carry = 1; } + elsif $sum == 2 { $sum = 0; $carry = 1; } + elsif $sum == 1 { $carry = 0; } + elsif $sum == 0 { $carry = 0; } + + @result.push: $sum; +} + +@result.push: $carry if $carry; + +say @result.join.flip; diff --git a/challenge-140/arne-sommer/raku/ch-2.raku b/challenge-140/arne-sommer/raku/ch-2.raku new file mode 100755 index 0000000000..504f994347 --- /dev/null +++ b/challenge-140/arne-sommer/raku/ch-2.raku @@ -0,0 +1,21 @@ +#! /usr/bin/env raku + +subset PosInt of Int where $_ > 0; + +unit sub MAIN (PosInt $i, PosInt $j, PosInt $k where 1 <= $k <= $i * $j, :v(:$verbose)); + +my @result; + +for 1 .. $i -> $ii +{ + for 1 .. $j -> $jj + { + @result.push: $ii * $jj; + } +} + +my @sorted = @result.sort; + +say ": Sorted: @sorted[]" if $verbose; + +say @sorted[$k -1]; diff --git a/challenge-140/arne-sommer/raku/multab b/challenge-140/arne-sommer/raku/multab new file mode 100755 index 0000000000..0a6ba7b724 --- /dev/null +++ b/challenge-140/arne-sommer/raku/multab @@ -0,0 +1,21 @@ +#! /usr/bin/env raku + +subset PosInt of Int where $_ > 0; + +unit sub MAIN (PosInt $i, PosInt $j, PosInt $k, :v(:$verbose)); + +my @result; + +for 1 .. $i -> $ii +{ + for 1 .. $j -> $jj + { + @result.push: $ii * $jj; + } +} + +my @sorted = @result.sort; + +say ": Sorted: @sorted[]" if $verbose; + +say @sorted[$k -1] // ""; diff --git a/challenge-140/arne-sommer/raku/multab2 b/challenge-140/arne-sommer/raku/multab2 new file mode 100755 index 0000000000..504f994347 --- /dev/null +++ b/challenge-140/arne-sommer/raku/multab2 @@ -0,0 +1,21 @@ +#! /usr/bin/env raku + +subset PosInt of Int where $_ > 0; + +unit sub MAIN (PosInt $i, PosInt $j, PosInt $k where 1 <= $k <= $i * $j, :v(:$verbose)); + +my @result; + +for 1 .. $i -> $ii +{ + for 1 .. $j -> $jj + { + @result.push: $ii * $jj; + } +} + +my @sorted = @result.sort; + +say ": Sorted: @sorted[]" if $verbose; + +say @sorted[$k -1]; |
