diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2019-08-10 19:56:48 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-08-10 19:56:48 +0100 |
| commit | 9e92478655615778358815b3a2eece847079fa04 (patch) | |
| tree | e28c1e95775c8913c69cd428c0cc4fcd12f23a82 /challenge-020 | |
| parent | dbe8c518c1c61b1528217f1392b2e4655f92fbeb (diff) | |
| parent | 7eba804578e469c8f111e52dcea3abe059f2d38e (diff) | |
| download | perlweeklychallenge-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/README | 13 | ||||
| -rwxr-xr-x | challenge-020/ruben-westerberg/perl5/ch-1.pl | 26 | ||||
| -rwxr-xr-x | challenge-020/ruben-westerberg/perl5/ch-2.pl | 20 | ||||
| -rwxr-xr-x | challenge-020/ruben-westerberg/perl6/ch-1.p6 | 20 | ||||
| -rwxr-xr-x | challenge-020/ruben-westerberg/perl6/ch-2.p6 | 12 |
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)"; |
