aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad Sajid Anwar <Mohammad.Anwar@yahoo.com>2023-07-09 19:43:58 +0100
committerGitHub <noreply@github.com>2023-07-09 19:43:58 +0100
commit8c581a79d846df4132d9c957febca476fbdee61c (patch)
treefa2fd65a13c28a2fefcca8d85a2bf3538d8704e2
parentf18d5665cfdc58357c482fe9257b8c8c738831c9 (diff)
parent3c38fdb2e978981d7695cfbdef6c3baadeddccc1 (diff)
downloadperlweeklychallenge-club-8c581a79d846df4132d9c957febca476fbdee61c.tar.gz
perlweeklychallenge-club-8c581a79d846df4132d9c957febca476fbdee61c.tar.bz2
perlweeklychallenge-club-8c581a79d846df4132d9c957febca476fbdee61c.zip
Merge pull request #8341 from arnesom/branch-for-challenge-224
Arne Sommer
-rw-r--r--challenge-224/arne-sommer/blog.txt1
-rwxr-xr-xchallenge-224/arne-sommer/raku/additive-digits25
-rwxr-xr-xchallenge-224/arne-sommer/raku/additive-number54
-rwxr-xr-xchallenge-224/arne-sommer/raku/ch-1.raku7
-rwxr-xr-xchallenge-224/arne-sommer/raku/ch-2.raku54
-rwxr-xr-xchallenge-224/arne-sommer/raku/special-notes7
6 files changed, 148 insertions, 0 deletions
diff --git a/challenge-224/arne-sommer/blog.txt b/challenge-224/arne-sommer/blog.txt
new file mode 100644
index 0000000000..36a4add302
--- /dev/null
+++ b/challenge-224/arne-sommer/blog.txt
@@ -0,0 +1 @@
+https://raku-musings.com/numbered-notes.html
diff --git a/challenge-224/arne-sommer/raku/additive-digits b/challenge-224/arne-sommer/raku/additive-digits
new file mode 100755
index 0000000000..d6248cc121
--- /dev/null
+++ b/challenge-224/arne-sommer/raku/additive-digits
@@ -0,0 +1,25 @@
+#! /usr/bin/env raku
+
+unit sub MAIN ($string where $string.chars > 2 && $string ~~ /^<[0..9]>*$/);
+
+say is-additive($string) ?? 'true' !! 'false';
+
+sub is-additive ($string where $string.chars > 2 && $string ~~ /^<[0..9]>*$/)
+{
+ my @digits = $string.comb;
+
+ my $first = @digits.shift;
+ my $second = @digits.shift;
+
+ while (@digits.elems)
+ {
+ my $third = @digits.shift;
+
+ return False unless $first + $second == $third;
+
+ $first = $second;
+ $second = $third;
+ }
+
+ return True;
+}
diff --git a/challenge-224/arne-sommer/raku/additive-number b/challenge-224/arne-sommer/raku/additive-number
new file mode 100755
index 0000000000..d1bb6e267d
--- /dev/null
+++ b/challenge-224/arne-sommer/raku/additive-number
@@ -0,0 +1,54 @@
+#! /usr/bin/env raku
+
+unit sub MAIN ($string where $string.chars > 2 && $string ~~ /^<[0..9]>*$/,
+ :v(:$verbose));
+
+my $bitmap-length = $string.chars -1;
+
+for 0 .. Inf -> $i
+{
+ my $binary = $i.base(2);
+
+ last if $binary.chars > $bitmap-length;
+
+ my $bitmap = $binary.fmt('%0' ~ $bitmap-length ~ 'd');
+ my $bitmap2 = $bitmap;
+
+ $bitmap ~~ tr/01/ |/;
+
+ my @bitmap = $bitmap.comb;
+ my $new = (roundrobin($string.comb, @bitmap)).flat.join;
+ $new ~~ s:g/\s//;
+
+ my @array = $new.split("|");
+
+ say ":: $string -> $bitmap2 -> '$bitmap' -> $new" if $verbose;
+
+ next unless @array.elems >= 3;
+
+ if is-additive(@array)
+ {
+ say 'true';
+ exit;
+ }
+}
+
+say 'false';
+
+sub is-additive (@array)
+{
+ my $first = @array.shift;
+ my $second = @array.shift;
+
+ while (@array.elems)
+ {
+ my $third = @array.shift;
+
+ return False unless $first + $second == $third;
+
+ $first = $second;
+ $second = $third;
+ }
+
+ return True;
+}
diff --git a/challenge-224/arne-sommer/raku/ch-1.raku b/challenge-224/arne-sommer/raku/ch-1.raku
new file mode 100755
index 0000000000..06f2881268
--- /dev/null
+++ b/challenge-224/arne-sommer/raku/ch-1.raku
@@ -0,0 +1,7 @@
+#! /usr/bin/env raku
+
+unit sub MAIN ($source, $target);
+
+say $target.comb.Bag (<=) $source.comb.Bag
+ ?? 'true'
+ !! 'false';
diff --git a/challenge-224/arne-sommer/raku/ch-2.raku b/challenge-224/arne-sommer/raku/ch-2.raku
new file mode 100755
index 0000000000..d1bb6e267d
--- /dev/null
+++ b/challenge-224/arne-sommer/raku/ch-2.raku
@@ -0,0 +1,54 @@
+#! /usr/bin/env raku
+
+unit sub MAIN ($string where $string.chars > 2 && $string ~~ /^<[0..9]>*$/,
+ :v(:$verbose));
+
+my $bitmap-length = $string.chars -1;
+
+for 0 .. Inf -> $i
+{
+ my $binary = $i.base(2);
+
+ last if $binary.chars > $bitmap-length;
+
+ my $bitmap = $binary.fmt('%0' ~ $bitmap-length ~ 'd');
+ my $bitmap2 = $bitmap;
+
+ $bitmap ~~ tr/01/ |/;
+
+ my @bitmap = $bitmap.comb;
+ my $new = (roundrobin($string.comb, @bitmap)).flat.join;
+ $new ~~ s:g/\s//;
+
+ my @array = $new.split("|");
+
+ say ":: $string -> $bitmap2 -> '$bitmap' -> $new" if $verbose;
+
+ next unless @array.elems >= 3;
+
+ if is-additive(@array)
+ {
+ say 'true';
+ exit;
+ }
+}
+
+say 'false';
+
+sub is-additive (@array)
+{
+ my $first = @array.shift;
+ my $second = @array.shift;
+
+ while (@array.elems)
+ {
+ my $third = @array.shift;
+
+ return False unless $first + $second == $third;
+
+ $first = $second;
+ $second = $third;
+ }
+
+ return True;
+}
diff --git a/challenge-224/arne-sommer/raku/special-notes b/challenge-224/arne-sommer/raku/special-notes
new file mode 100755
index 0000000000..06f2881268
--- /dev/null
+++ b/challenge-224/arne-sommer/raku/special-notes
@@ -0,0 +1,7 @@
+#! /usr/bin/env raku
+
+unit sub MAIN ($source, $target);
+
+say $target.comb.Bag (<=) $source.comb.Bag
+ ?? 'true'
+ !! 'false';