aboutsummaryrefslogtreecommitdiff
path: root/challenge-020
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2019-08-10 19:56:48 +0100
committerGitHub <noreply@github.com>2019-08-10 19:56:48 +0100
commit9e92478655615778358815b3a2eece847079fa04 (patch)
treee28c1e95775c8913c69cd428c0cc4fcd12f23a82 /challenge-020
parentdbe8c518c1c61b1528217f1392b2e4655f92fbeb (diff)
parent7eba804578e469c8f111e52dcea3abe059f2d38e (diff)
downloadperlweeklychallenge-club-9e92478655615778358815b3a2eece847079fa04.tar.gz
perlweeklychallenge-club-9e92478655615778358815b3a2eece847079fa04.tar.bz2
perlweeklychallenge-club-9e92478655615778358815b3a2eece847079fa04.zip
Merge pull request #489 from drclaw1394/master
ruben/drclaw solutions for W20 ch1 and ch2. p5 and p6
Diffstat (limited to 'challenge-020')
-rw-r--r--challenge-020/ruben-westerberg/README13
-rwxr-xr-xchallenge-020/ruben-westerberg/perl5/ch-1.pl26
-rwxr-xr-xchallenge-020/ruben-westerberg/perl5/ch-2.pl20
-rwxr-xr-xchallenge-020/ruben-westerberg/perl6/ch-1.p620
-rwxr-xr-xchallenge-020/ruben-westerberg/perl6/ch-2.p612
5 files changed, 81 insertions, 10 deletions
diff --git a/challenge-020/ruben-westerberg/README b/challenge-020/ruben-westerberg/README
index 21f3332128..ac61aa2e27 100644
--- a/challenge-020/ruben-westerberg/README
+++ b/challenge-020/ruben-westerberg/README
@@ -2,16 +2,9 @@ Solution by Ruben Westerberg
ch-1.pl and ch-1.p6
===
-Run the program to find months with 5 weekends
+Run the program with a single command line argument to splt the argument on dissimilar character boundaries.
+If no argument is provided a demo string is used.
ch-2.pl and ch-2.p6
===
-Example usage
- perl5 version:
- ./ch-2.pl -c 20 < input.txt
-
- perl6 version
- ./ch-2.p6 --col==20 < inputs.txt
-
-If -c or --col are not specifed a default width of 80 is used
-
+run the program to find the smallest Amicable numbers
diff --git a/challenge-020/ruben-westerberg/perl5/ch-1.pl b/challenge-020/ruben-westerberg/perl5/ch-1.pl
new file mode 100755
index 0000000000..cbac21a78c
--- /dev/null
+++ b/challenge-020/ruben-westerberg/perl5/ch-1.pl
@@ -0,0 +1,26 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+use v5.26;
+#
+my $input=$ARGV[0]//"aabcDDefffgh";
+my @a=split "", $input;
+my @b;
+for (0..@a-1) {
+ my $v=$a[$_];
+ state $prev=$v;
+ state @stack;
+ if( $v eq $prev) {
+ push @stack, $v;
+ }
+ else {
+ push @b, join "", @stack;
+ @stack=();
+ push @stack,$v;
+ }
+ $prev=$v;
+ push @b, join "", @stack if $_ == @a-1;
+};
+
+print join("|",@b),"\n";
+
diff --git a/challenge-020/ruben-westerberg/perl5/ch-2.pl b/challenge-020/ruben-westerberg/perl5/ch-2.pl
new file mode 100755
index 0000000000..145486e025
--- /dev/null
+++ b/challenge-020/ruben-westerberg/perl5/ch-2.pl
@@ -0,0 +1,20 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+use v5.26;
+use List::Util qw<sum>;
+
+my ($n1,$n2)=(1,0);
+while ( 1 ) {
+ $n2=proper(++$n1);
+ my $n1test=proper($n2);
+ next if $n2 == $n1;
+ last if $n1test == $n1;
+}
+
+sub proper {
+ my $n=shift;
+ sum 0, map { $n % $_ == 0 ? $_: () } 1..$n-1 ;
+};
+printf "Smallest Amicable Numbers: ($n1, $n2)\n";
+
diff --git a/challenge-020/ruben-westerberg/perl6/ch-1.p6 b/challenge-020/ruben-westerberg/perl6/ch-1.p6
new file mode 100755
index 0000000000..0290985780
--- /dev/null
+++ b/challenge-020/ruben-westerberg/perl6/ch-1.p6
@@ -0,0 +1,20 @@
+#!/usr/bin/env perl6
+
+my $input=@*ARGS[0]//"aabcDDefffgh";
+my @a=$input.comb;
+my @b;
+for @a {
+ state $prev=$_;
+ state @stack;
+ when $prev {
+ @stack.push: $_;
+ }
+ default {
+ @b.push: @stack.join: "";
+ @stack=();
+ @stack.push: $_;
+ }
+ NEXT { $prev=$_;};
+ LAST {@b.push: @stack.join: ""};
+}
+put @b.join: "|";
diff --git a/challenge-020/ruben-westerberg/perl6/ch-2.p6 b/challenge-020/ruben-westerberg/perl6/ch-2.p6
new file mode 100755
index 0000000000..4332068686
--- /dev/null
+++ b/challenge-020/ruben-westerberg/perl6/ch-2.p6
@@ -0,0 +1,12 @@
+#!/usr/bin/env perl6
+my ($n1,$n2);
+for 1..* {
+ $n2=proper(++$n1);
+ my $n1test=proper($n2);
+ next if $n2==$n1;
+ last if $n1test==$n1;
+}
+sub proper(\n) {
+ sum (1..n-1).grep({ n%%$_});
+}
+put "Smallest Amicable Numbers: ($n1, $n2)";