From 9fa804b4d1e2c8e27323ef3ea7e7acea0040d690 Mon Sep 17 00:00:00 2001 From: arnesom Date: Sat, 29 May 2021 17:29:16 +0200 Subject: Arne Sommer --- challenge-114/arne-sommer/blog.txt | 1 + challenge-114/arne-sommer/misc/tree1.svg | 119 --------------------- challenge-114/arne-sommer/misc/tree2.svg | 109 ------------------- challenge-114/arne-sommer/misc/tree3.svg | 119 --------------------- challenge-114/arne-sommer/perl/ch-1.pl | 25 +++++ challenge-114/arne-sommer/perl/ch-2.pl | 34 ++++++ .../arne-sommer/perl/higher-integer-set-bits-perl | 34 ++++++ .../arne-sommer/perl/next-palindrome-number-perl | 25 +++++ challenge-114/arne-sommer/raku/ch-1.raku | 14 +++ challenge-114/arne-sommer/raku/ch-2.raku | 22 ++++ .../arne-sommer/raku/higher-integer-set-bits | 22 ++++ .../arne-sommer/raku/next-palindrome-number | 14 +++ 12 files changed, 191 insertions(+), 347 deletions(-) create mode 100644 challenge-114/arne-sommer/blog.txt delete mode 100644 challenge-114/arne-sommer/misc/tree1.svg delete mode 100644 challenge-114/arne-sommer/misc/tree2.svg delete mode 100644 challenge-114/arne-sommer/misc/tree3.svg create mode 100755 challenge-114/arne-sommer/perl/ch-1.pl create mode 100755 challenge-114/arne-sommer/perl/ch-2.pl create mode 100755 challenge-114/arne-sommer/perl/higher-integer-set-bits-perl create mode 100755 challenge-114/arne-sommer/perl/next-palindrome-number-perl create mode 100755 challenge-114/arne-sommer/raku/ch-1.raku create mode 100755 challenge-114/arne-sommer/raku/ch-2.raku create mode 100755 challenge-114/arne-sommer/raku/higher-integer-set-bits create mode 100755 challenge-114/arne-sommer/raku/next-palindrome-number diff --git a/challenge-114/arne-sommer/blog.txt b/challenge-114/arne-sommer/blog.txt new file mode 100644 index 0000000000..af28f1536f --- /dev/null +++ b/challenge-114/arne-sommer/blog.txt @@ -0,0 +1 @@ +https://raku-musings.com/palindromic-set.html diff --git a/challenge-114/arne-sommer/misc/tree1.svg b/challenge-114/arne-sommer/misc/tree1.svg deleted file mode 100644 index f0099653c7..0000000000 --- a/challenge-114/arne-sommer/misc/tree1.svg +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - -foogrph - - - -node27 - - - -27 - - - - - -node26 - - - -26 - - - - - -node27:left->node26:center - - - - - -node25 - - - -25 - - - - - -node27:right->node25:center - - - - - -node24 - - - -24 - - - - - -node26:left->node24:center - - - - - -node21 - - - -21 - - - - - -node24:right->node21:center - - - - - -node23 - - - -23 - - - - - -node25:left->node23:center - - - - - -node22 - - - -22 - - - - - -node25:right->node22:center - - - - - diff --git a/challenge-114/arne-sommer/misc/tree2.svg b/challenge-114/arne-sommer/misc/tree2.svg deleted file mode 100644 index a52f38f373..0000000000 --- a/challenge-114/arne-sommer/misc/tree2.svg +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - -foogrph - - - -node21 - - - -21 - - - - - -node20 - - - -20 - - - - - -node21:left->node20:center - - - - - -node19 - - - -19 - - - - - -node21:right->node19:center - - - - - -node18 - - - -18 - - - - - -node20:left->node18:center - - - - - -node18:right->node21:center - - - - - -node17 - - - -17 - - - - - -node19:left->node17:center - - - - - -node16 - - - -16 - - - - - -node19:right->node16:center - - - - - diff --git a/challenge-114/arne-sommer/misc/tree3.svg b/challenge-114/arne-sommer/misc/tree3.svg deleted file mode 100644 index 008b0f8d4e..0000000000 --- a/challenge-114/arne-sommer/misc/tree3.svg +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - -foogrph - - - -node94557370778344 - - - -21 - - - - - -node94557370778232 - - - -20 - - - - - -node94557370778344:left->node94557370778232:center - - - - - -node94557370778288 - - - -19 - - - - - -node94557370778344:right->node94557370778288:center - - - - - -node94557370778064 - - - -18 - - - - - -node94557370778232:left->node94557370778064:center - - - - - -node94557370778008 - - - -21 - - - - - -node94557370778064:right->node94557370778008:center - - - - - -node94557370778120 - - - -17 - - - - - -node94557370778288:left->node94557370778120:center - - - - - -node94557370778176 - - - -16 - - - - - -node94557370778288:right->node94557370778176:center - - - - - diff --git a/challenge-114/arne-sommer/perl/ch-1.pl b/challenge-114/arne-sommer/perl/ch-1.pl new file mode 100755 index 0000000000..6ccfbb6a95 --- /dev/null +++ b/challenge-114/arne-sommer/perl/ch-1.pl @@ -0,0 +1,25 @@ +#! /usr/bin/env perl + +use strict; +use warnings; +use feature 'say'; +use Getopt::Long; + +my $verbose = 0; + +GetOptions("verbose" => \$verbose); + +my $N = $ARGV[0] // die "Specify a positive integer"; + +die "Not a positive integer" unless $N =~ /^[1-9]\d*$/; + +while ($N++) +{ + say ": Candidate $N" if $verbose; + + if ($N eq reverse($N)) + { + say $N; + exit; + } +} diff --git a/challenge-114/arne-sommer/perl/ch-2.pl b/challenge-114/arne-sommer/perl/ch-2.pl new file mode 100755 index 0000000000..7acfb04260 --- /dev/null +++ b/challenge-114/arne-sommer/perl/ch-2.pl @@ -0,0 +1,34 @@ +#! /usr/bin/env perl + +use strict; +use warnings; +use feature 'say'; +use List::Util qw/sum/; +use Getopt::Long; + +my $verbose = 0; + +GetOptions("verbose" => \$verbose); + +my $N = $ARGV[0] // die "Specify a positive integer"; + +die "Not a positive integer" unless $N =~ /^[1-9]\d*$/; + +my $ones = sum(split(//, sprintf('%b', $N))); + +if ($verbose) +{ + say ": Initial value: $N (binary: ", sprintf('%b', $N) , ")"; + say ": - Number of one bits: $ones"; +} + +while ($N += 1) +{ + say ": Candidate $N (binary: ", sprintf('%b', $N), ")" if $verbose; + + if (sum(split(//, sprintf('%b', $N))) == $ones) + { + say $N; + exit; + } +} diff --git a/challenge-114/arne-sommer/perl/higher-integer-set-bits-perl b/challenge-114/arne-sommer/perl/higher-integer-set-bits-perl new file mode 100755 index 0000000000..7acfb04260 --- /dev/null +++ b/challenge-114/arne-sommer/perl/higher-integer-set-bits-perl @@ -0,0 +1,34 @@ +#! /usr/bin/env perl + +use strict; +use warnings; +use feature 'say'; +use List::Util qw/sum/; +use Getopt::Long; + +my $verbose = 0; + +GetOptions("verbose" => \$verbose); + +my $N = $ARGV[0] // die "Specify a positive integer"; + +die "Not a positive integer" unless $N =~ /^[1-9]\d*$/; + +my $ones = sum(split(//, sprintf('%b', $N))); + +if ($verbose) +{ + say ": Initial value: $N (binary: ", sprintf('%b', $N) , ")"; + say ": - Number of one bits: $ones"; +} + +while ($N += 1) +{ + say ": Candidate $N (binary: ", sprintf('%b', $N), ")" if $verbose; + + if (sum(split(//, sprintf('%b', $N))) == $ones) + { + say $N; + exit; + } +} diff --git a/challenge-114/arne-sommer/perl/next-palindrome-number-perl b/challenge-114/arne-sommer/perl/next-palindrome-number-perl new file mode 100755 index 0000000000..6ccfbb6a95 --- /dev/null +++ b/challenge-114/arne-sommer/perl/next-palindrome-number-perl @@ -0,0 +1,25 @@ +#! /usr/bin/env perl + +use strict; +use warnings; +use feature 'say'; +use Getopt::Long; + +my $verbose = 0; + +GetOptions("verbose" => \$verbose); + +my $N = $ARGV[0] // die "Specify a positive integer"; + +die "Not a positive integer" unless $N =~ /^[1-9]\d*$/; + +while ($N++) +{ + say ": Candidate $N" if $verbose; + + if ($N eq reverse($N)) + { + say $N; + exit; + } +} diff --git a/challenge-114/arne-sommer/raku/ch-1.raku b/challenge-114/arne-sommer/raku/ch-1.raku new file mode 100755 index 0000000000..1d1da44353 --- /dev/null +++ b/challenge-114/arne-sommer/raku/ch-1.raku @@ -0,0 +1,14 @@ +#! /usr/bin/env raku + +unit sub MAIN (Int $N where $N > 0, :v($verbose)); + +for $N + 1 .. Inf -> $candidate +{ + say ": Candidate $candidate" if $verbose; + + if $candidate eq $candidate.flip + { + say $candidate; + exit; + } +} diff --git a/challenge-114/arne-sommer/raku/ch-2.raku b/challenge-114/arne-sommer/raku/ch-2.raku new file mode 100755 index 0000000000..893a91ad5a --- /dev/null +++ b/challenge-114/arne-sommer/raku/ch-2.raku @@ -0,0 +1,22 @@ +#! /usr/bin/env raku + +unit sub MAIN (Int $N where $N > 0, :v($verbose)); + +my $ones = $N.fmt('%b').comb.sum; + +if $verbose +{ + say ": Initial value: $N (binary: { $N.fmt('%b') })"; + say ": - Number of one bits: $ones"; +} + +for $N + 1 .. Inf -> $candidate +{ + say ": Candidate $candidate (binary: { $candidate.fmt('%b') })" if $verbose; + + if $candidate.fmt('%b').comb.sum == $ones + { + say $candidate; + exit; + } +} diff --git a/challenge-114/arne-sommer/raku/higher-integer-set-bits b/challenge-114/arne-sommer/raku/higher-integer-set-bits new file mode 100755 index 0000000000..893a91ad5a --- /dev/null +++ b/challenge-114/arne-sommer/raku/higher-integer-set-bits @@ -0,0 +1,22 @@ +#! /usr/bin/env raku + +unit sub MAIN (Int $N where $N > 0, :v($verbose)); + +my $ones = $N.fmt('%b').comb.sum; + +if $verbose +{ + say ": Initial value: $N (binary: { $N.fmt('%b') })"; + say ": - Number of one bits: $ones"; +} + +for $N + 1 .. Inf -> $candidate +{ + say ": Candidate $candidate (binary: { $candidate.fmt('%b') })" if $verbose; + + if $candidate.fmt('%b').comb.sum == $ones + { + say $candidate; + exit; + } +} diff --git a/challenge-114/arne-sommer/raku/next-palindrome-number b/challenge-114/arne-sommer/raku/next-palindrome-number new file mode 100755 index 0000000000..1d1da44353 --- /dev/null +++ b/challenge-114/arne-sommer/raku/next-palindrome-number @@ -0,0 +1,14 @@ +#! /usr/bin/env raku + +unit sub MAIN (Int $N where $N > 0, :v($verbose)); + +for $N + 1 .. Inf -> $candidate +{ + say ": Candidate $candidate" if $verbose; + + if $candidate eq $candidate.flip + { + say $candidate; + exit; + } +} -- cgit