From 1c40638f33d2ef5ce68fc54e6395b6534e4eee81 Mon Sep 17 00:00:00 2001 From: Flavio Poletti Date: Thu, 14 Apr 2022 07:50:47 +0200 Subject: Add polettix's solution to challenge-160 --- challenge-160/polettix/blog.txt | 1 + challenge-160/polettix/blog1.txt | 1 + challenge-160/polettix/perl/ch-1.pl | 22 ++++++++++++++++++++++ challenge-160/polettix/perl/ch-2.pl | 16 ++++++++++++++++ challenge-160/polettix/raku/ch-1.raku | 17 +++++++++++++++++ challenge-160/polettix/raku/ch-2.raku | 11 +++++++++++ 6 files changed, 68 insertions(+) create mode 100644 challenge-160/polettix/blog.txt create mode 100644 challenge-160/polettix/blog1.txt create mode 100644 challenge-160/polettix/perl/ch-1.pl create mode 100644 challenge-160/polettix/perl/ch-2.pl create mode 100644 challenge-160/polettix/raku/ch-1.raku create mode 100644 challenge-160/polettix/raku/ch-2.raku 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 = ; + 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; +} -- cgit