aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2022-04-16 20:35:59 +0100
committerGitHub <noreply@github.com>2022-04-16 20:35:59 +0100
commitea2d2a5547bca90817775032a405675d60e9155a (patch)
treee3976d2b703850163faa57919d04af1a28c519dd
parent76bf7437ed7bef160a6f4900a2828a502f45cc8e (diff)
parent03ed00eb64d7b2c173b41fe76415d22ea41d7f16 (diff)
downloadperlweeklychallenge-club-ea2d2a5547bca90817775032a405675d60e9155a.tar.gz
perlweeklychallenge-club-ea2d2a5547bca90817775032a405675d60e9155a.tar.bz2
perlweeklychallenge-club-ea2d2a5547bca90817775032a405675d60e9155a.zip
Merge pull request #5947 from arnesom/branch-for-challenge-160
Arne Sommer
-rw-r--r--challenge-160/arne-sommer/blog.txt1
-rwxr-xr-xchallenge-160/arne-sommer/perl/ch-1.raku36
-rwxr-xr-xchallenge-160/arne-sommer/perl/ch-2.raku34
-rwxr-xr-xchallenge-160/arne-sommer/perl/equilibrium-index-perl34
-rwxr-xr-xchallenge-160/arne-sommer/perl/four-is-magic-perl36
-rwxr-xr-xchallenge-160/arne-sommer/raku/ch-1.raku30
-rwxr-xr-xchallenge-160/arne-sommer/raku/ch-2.raku22
-rwxr-xr-xchallenge-160/arne-sommer/raku/equilibrium-index22
-rwxr-xr-xchallenge-160/arne-sommer/raku/four-is-magic30
9 files changed, 245 insertions, 0 deletions
diff --git a/challenge-160/arne-sommer/blog.txt b/challenge-160/arne-sommer/blog.txt
new file mode 100644
index 0000000000..8302cb1a16
--- /dev/null
+++ b/challenge-160/arne-sommer/blog.txt
@@ -0,0 +1 @@
+https://raku-musings.com/magic-equilibrium.html
diff --git a/challenge-160/arne-sommer/perl/ch-1.raku b/challenge-160/arne-sommer/perl/ch-1.raku
new file mode 100755
index 0000000000..558cb651a2
--- /dev/null
+++ b/challenge-160/arne-sommer/perl/ch-1.raku
@@ -0,0 +1,36 @@
+#! /usr/bin/env perl
+
+use strict;
+use warnings;
+use feature 'say';
+
+my $n = $ARGV[0] || "";
+
+die "Values 1..9 only" unless $n =~ /^[1-9]$/;
+
+my @names =
+(
+ "zero",
+ "one",
+ "two",
+ "three",
+ "four",
+ "five",
+ "six",
+ "seven",
+ "eight",
+ "nine"
+);
+
+my @result;
+
+do
+{
+ my $text = $names[$n];
+ my $length = length($text);
+
+ push(@result, "$text is $names[$length]");
+ $n = $length;
+} while $n != 4;
+
+say ucfirst(join(", ", @result)) . ", four is magic.";
diff --git a/challenge-160/arne-sommer/perl/ch-2.raku b/challenge-160/arne-sommer/perl/ch-2.raku
new file mode 100755
index 0000000000..64d91b2888
--- /dev/null
+++ b/challenge-160/arne-sommer/perl/ch-2.raku
@@ -0,0 +1,34 @@
+#! /usr/bin/env perl
+
+use strict;
+use warnings;
+use feature 'say';
+use List::Util 'sum';
+use Getopt::Long;
+use Perl6::Junction 'all';
+
+my $verbose = 0;
+
+GetOptions("verbose" => \$verbose);
+
+my @n = @ARGV;
+
+die "Positive integers only" unless @n && all(@n) == qr/^\d+$/;
+
+my $elems = @n;
+
+for my $equilibrium (1 .. $elems -2)
+{
+ my @first = @n[0 .. $equilibrium -1];
+ my @second = @n[$equilibrium +1 .. $elems -1];
+
+ say ": @first :: @second" if $verbose;
+
+ if (sum(@first) == sum(@second))
+ {
+ say $equilibrium;
+ exit;
+ }
+}
+
+say -1;
diff --git a/challenge-160/arne-sommer/perl/equilibrium-index-perl b/challenge-160/arne-sommer/perl/equilibrium-index-perl
new file mode 100755
index 0000000000..64d91b2888
--- /dev/null
+++ b/challenge-160/arne-sommer/perl/equilibrium-index-perl
@@ -0,0 +1,34 @@
+#! /usr/bin/env perl
+
+use strict;
+use warnings;
+use feature 'say';
+use List::Util 'sum';
+use Getopt::Long;
+use Perl6::Junction 'all';
+
+my $verbose = 0;
+
+GetOptions("verbose" => \$verbose);
+
+my @n = @ARGV;
+
+die "Positive integers only" unless @n && all(@n) == qr/^\d+$/;
+
+my $elems = @n;
+
+for my $equilibrium (1 .. $elems -2)
+{
+ my @first = @n[0 .. $equilibrium -1];
+ my @second = @n[$equilibrium +1 .. $elems -1];
+
+ say ": @first :: @second" if $verbose;
+
+ if (sum(@first) == sum(@second))
+ {
+ say $equilibrium;
+ exit;
+ }
+}
+
+say -1;
diff --git a/challenge-160/arne-sommer/perl/four-is-magic-perl b/challenge-160/arne-sommer/perl/four-is-magic-perl
new file mode 100755
index 0000000000..558cb651a2
--- /dev/null
+++ b/challenge-160/arne-sommer/perl/four-is-magic-perl
@@ -0,0 +1,36 @@
+#! /usr/bin/env perl
+
+use strict;
+use warnings;
+use feature 'say';
+
+my $n = $ARGV[0] || "";
+
+die "Values 1..9 only" unless $n =~ /^[1-9]$/;
+
+my @names =
+(
+ "zero",
+ "one",
+ "two",
+ "three",
+ "four",
+ "five",
+ "six",
+ "seven",
+ "eight",
+ "nine"
+);
+
+my @result;
+
+do
+{
+ my $text = $names[$n];
+ my $length = length($text);
+
+ push(@result, "$text is $names[$length]");
+ $n = $length;
+} while $n != 4;
+
+say ucfirst(join(", ", @result)) . ", four is magic.";
diff --git a/challenge-160/arne-sommer/raku/ch-1.raku b/challenge-160/arne-sommer/raku/ch-1.raku
new file mode 100755
index 0000000000..955aa14cf6
--- /dev/null
+++ b/challenge-160/arne-sommer/raku/ch-1.raku
@@ -0,0 +1,30 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (Int $n is copy where 0 < $n < 10);
+
+my @names =
+[
+ "zero",
+ "one",
+ "two",
+ "three",
+ "four",
+ "five",
+ "six",
+ "seven",
+ "eight",
+ "nine"
+];
+
+my @result;
+
+repeat
+{
+ my $text = @names[$n];
+ my $length = $text.chars;
+
+ @result.push: "$text is @names[$length]";
+ $n = $length;
+} while $n != 4;
+
+say tc(@result.join(", ")) ~ ", four is magic."; \ No newline at end of file
diff --git a/challenge-160/arne-sommer/raku/ch-2.raku b/challenge-160/arne-sommer/raku/ch-2.raku
new file mode 100755
index 0000000000..5e38c42636
--- /dev/null
+++ b/challenge-160/arne-sommer/raku/ch-2.raku
@@ -0,0 +1,22 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (*@n where @n.elems > 0 && all(@n) ~~ /^\d+$/, :v(:$verbose));
+
+my $elems = @n.elems;
+
+for 1 .. $elems - 2 -> $equilibrium
+{
+ my @first = @n[0 .. $equilibrium -1];
+ my @second = @n[$equilibrium +1 .. $elems -1];
+
+ say ": @first[] :: @second[]" if $verbose;
+
+ if @first.sum == @second.sum
+ {
+ say $equilibrium;
+ exit;
+ }
+}
+
+say -1;
+
diff --git a/challenge-160/arne-sommer/raku/equilibrium-index b/challenge-160/arne-sommer/raku/equilibrium-index
new file mode 100755
index 0000000000..5e38c42636
--- /dev/null
+++ b/challenge-160/arne-sommer/raku/equilibrium-index
@@ -0,0 +1,22 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (*@n where @n.elems > 0 && all(@n) ~~ /^\d+$/, :v(:$verbose));
+
+my $elems = @n.elems;
+
+for 1 .. $elems - 2 -> $equilibrium
+{
+ my @first = @n[0 .. $equilibrium -1];
+ my @second = @n[$equilibrium +1 .. $elems -1];
+
+ say ": @first[] :: @second[]" if $verbose;
+
+ if @first.sum == @second.sum
+ {
+ say $equilibrium;
+ exit;
+ }
+}
+
+say -1;
+
diff --git a/challenge-160/arne-sommer/raku/four-is-magic b/challenge-160/arne-sommer/raku/four-is-magic
new file mode 100755
index 0000000000..955aa14cf6
--- /dev/null
+++ b/challenge-160/arne-sommer/raku/four-is-magic
@@ -0,0 +1,30 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (Int $n is copy where 0 < $n < 10);
+
+my @names =
+[
+ "zero",
+ "one",
+ "two",
+ "three",
+ "four",
+ "five",
+ "six",
+ "seven",
+ "eight",
+ "nine"
+];
+
+my @result;
+
+repeat
+{
+ my $text = @names[$n];
+ my $length = $text.chars;
+
+ @result.push: "$text is @names[$length]";
+ $n = $length;
+} while $n != 4;
+
+say tc(@result.join(", ")) ~ ", four is magic."; \ No newline at end of file