aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2021-11-28 20:43:39 +0000
committerGitHub <noreply@github.com>2021-11-28 20:43:39 +0000
commitc0abc10b7ce19ee465eea904f139bc0a96bf586a (patch)
treef2e202a469508c2b7a0411f30bc7eebbbe1a07b8
parentd4bac3210ac8f55a72fe620f1e302805f0a4edbe (diff)
parent76bff3d0d972c3b261c3a3fa7e4346c12bfe10aa (diff)
downloadperlweeklychallenge-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.txt1
-rwxr-xr-xchallenge-140/arne-sommer/raku/add-binary-unloaded36
-rwxr-xr-xchallenge-140/arne-sommer/raku/ch-1.raku36
-rwxr-xr-xchallenge-140/arne-sommer/raku/ch-2.raku21
-rwxr-xr-xchallenge-140/arne-sommer/raku/multab21
-rwxr-xr-xchallenge-140/arne-sommer/raku/multab221
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];