diff options
| -rw-r--r-- | challenge-160/arne-sommer/blog.txt | 1 | ||||
| -rwxr-xr-x | challenge-160/arne-sommer/perl/ch-1.raku | 36 | ||||
| -rwxr-xr-x | challenge-160/arne-sommer/perl/ch-2.raku | 34 | ||||
| -rwxr-xr-x | challenge-160/arne-sommer/perl/equilibrium-index-perl | 34 | ||||
| -rwxr-xr-x | challenge-160/arne-sommer/perl/four-is-magic-perl | 36 | ||||
| -rwxr-xr-x | challenge-160/arne-sommer/raku/ch-1.raku | 30 | ||||
| -rwxr-xr-x | challenge-160/arne-sommer/raku/ch-2.raku | 22 | ||||
| -rwxr-xr-x | challenge-160/arne-sommer/raku/equilibrium-index | 22 | ||||
| -rwxr-xr-x | challenge-160/arne-sommer/raku/four-is-magic | 30 |
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 |
