aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2022-04-14 14:59:54 +0100
committerGitHub <noreply@github.com>2022-04-14 14:59:54 +0100
commit5bf083a404c5ee500fed3ae5b151bc8946c4b11f (patch)
tree889eb618f0be554d32bfc7546a55ab7ddfacac0d
parentee046b7602563d5e75f659b8bacea59940dacc3a (diff)
parent1c40638f33d2ef5ce68fc54e6395b6534e4eee81 (diff)
downloadperlweeklychallenge-club-5bf083a404c5ee500fed3ae5b151bc8946c4b11f.tar.gz
perlweeklychallenge-club-5bf083a404c5ee500fed3ae5b151bc8946c4b11f.tar.bz2
perlweeklychallenge-club-5bf083a404c5ee500fed3ae5b151bc8946c4b11f.zip
Merge pull request #5934 from polettix/polettix/pwc160
Add polettix's solution to challenge-160
-rw-r--r--challenge-160/polettix/blog.txt1
-rw-r--r--challenge-160/polettix/blog1.txt1
-rw-r--r--challenge-160/polettix/perl/ch-1.pl22
-rw-r--r--challenge-160/polettix/perl/ch-2.pl16
-rw-r--r--challenge-160/polettix/raku/ch-1.raku17
-rw-r--r--challenge-160/polettix/raku/ch-2.raku11
6 files changed, 68 insertions, 0 deletions
diff --git a/challenge-160/polettix/blog.txt b/challenge-160/polettix/blog.txt
new file mode 100644
index 0000000000..e674a137d1
--- /dev/null
+++ b/challenge-160/polettix/blog.txt
@@ -0,0 +1 @@
+https://github.polettix.it/ETOOBUSY/2022/04/12/pwc160-four-is-magic/
diff --git a/challenge-160/polettix/blog1.txt b/challenge-160/polettix/blog1.txt
new file mode 100644
index 0000000000..9698daf7f4
--- /dev/null
+++ b/challenge-160/polettix/blog1.txt
@@ -0,0 +1 @@
+https://github.polettix.it/ETOOBUSY/2022/04/13/pwc160-equilibrium-index/
diff --git a/challenge-160/polettix/perl/ch-1.pl b/challenge-160/polettix/perl/ch-1.pl
new file mode 100644
index 0000000000..01407eee11
--- /dev/null
+++ b/challenge-160/polettix/perl/ch-1.pl
@@ -0,0 +1,22 @@
+#!/usr/bin/env perl
+use v5.24;
+use warnings;
+use experimental 'signatures';
+no warnings 'experimental::signatures';
+
+my $n = shift // 7;
+say four_is_magic($n);
+
+sub four_is_magic ($n) {
+ state $ints = [qw< zero one two three four five six seven eight nine >];
+ my $current = $ints->[$n];
+ my @seq;
+ while ($n != 4) {
+ $n = length $current;
+ (my $previous, $current) = ($current, $ints->[$n]);
+ push @seq, "$previous is $current";
+ }
+ push @seq, 'four is magic.';
+ $seq[0] = ucfirst $seq[0];
+ return join ', ', @seq;
+}
diff --git a/challenge-160/polettix/perl/ch-2.pl b/challenge-160/polettix/perl/ch-2.pl
new file mode 100644
index 0000000000..2fcb0b5ea7
--- /dev/null
+++ b/challenge-160/polettix/perl/ch-2.pl
@@ -0,0 +1,16 @@
+#!/usr/bin/env perl
+use v5.24;
+use warnings;
+use experimental 'signatures';
+no warnings 'experimental::signatures';
+
+my @n = @ARGV ? @ARGV : (1, 3, 5, 7, 9);
+say equilibrium_index(@n);
+
+sub equilibrium_index (@n) {
+ my $i_lo = 0;
+ my $i_hi = $#n;
+ my $diff = 0;
+ $diff += ($diff <= 0 ? $n[$i_lo++] : -$n[$i_hi--]) while $i_lo < $i_hi;
+ return @n && $diff == 0 ? $i_lo : -1;
+}
diff --git a/challenge-160/polettix/raku/ch-1.raku b/challenge-160/polettix/raku/ch-1.raku
new file mode 100644
index 0000000000..4423d6e12f
--- /dev/null
+++ b/challenge-160/polettix/raku/ch-1.raku
@@ -0,0 +1,17 @@
+#!/usr/bin/env raku
+use v6;
+sub MAIN (Int:D $n where 0 < * < 10 = 5) { put four-is-magic($n); }
+
+sub four-is-magic (Int:D $n is copy where 0 < * < 10) {
+ state @ints = <zero one two three four five six seven eight nine >;
+ my $current = @ints[$n];
+ my @seq = gather while $n != 4 {
+ $n = $current.chars;
+ my $next = @ints[$n];
+ take "$current is $next";
+ $current = $next;
+ };
+ @seq.push: 'four is magic.';
+ @seq[0] = @seq[0].tclc;
+ return @seq.join(', ');
+}
diff --git a/challenge-160/polettix/raku/ch-2.raku b/challenge-160/polettix/raku/ch-2.raku
new file mode 100644
index 0000000000..4bdc0c1c3d
--- /dev/null
+++ b/challenge-160/polettix/raku/ch-2.raku
@@ -0,0 +1,11 @@
+#!/usr/bin/env raku
+use v6;
+sub MAIN (*@args) { put equilibrium-index(@args) }
+
+sub equilibrium-index (@n) {
+ my $i_lo = 0;
+ my $i_hi = @n.end;
+ my $diff = 0;
+ $diff += ($diff <= 0 ?? @n[$i_lo++] !! -@n[$i_hi--]) while $i_lo < $i_hi;
+ return @n && $diff == 0 ?? $i_lo !! -1;
+}