diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2019-08-07 23:09:16 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-08-07 23:09:16 +0100 |
| commit | 3e72c2184dad22f8db604ee5b4582550a538e41e (patch) | |
| tree | 81580b20fc45549a306e60cab3dbbc52f900c5cc | |
| parent | aa5304205f361fce38f5c04d254e78c81aaefa91 (diff) | |
| parent | 746e3bbb14728b954c2ad4985883bae360de7245 (diff) | |
| download | perlweeklychallenge-club-3e72c2184dad22f8db604ee5b4582550a538e41e.tar.gz perlweeklychallenge-club-3e72c2184dad22f8db604ee5b4582550a538e41e.tar.bz2 perlweeklychallenge-club-3e72c2184dad22f8db604ee5b4582550a538e41e.zip | |
Merge pull request #483 from Scimon/master
Challenge 20 all done.
| -rw-r--r-- | challenge-020/simon-proctor/perl6/ch-1.p6 | 14 | ||||
| -rw-r--r-- | challenge-020/simon-proctor/perl6/ch-2.p6 | 37 |
2 files changed, 51 insertions, 0 deletions
diff --git a/challenge-020/simon-proctor/perl6/ch-1.p6 b/challenge-020/simon-proctor/perl6/ch-1.p6 new file mode 100644 index 0000000000..b3cc956bd6 --- /dev/null +++ b/challenge-020/simon-proctor/perl6/ch-1.p6 @@ -0,0 +1,14 @@ +#!/usr/bin/env perl6 + +use v6; + +multi sub MAIN ( Bool :h(:$help) where so * ) { + say $*USAGE; +} + +#| Takes a string and outputs it broken into sets of the same character +multi sub MAIN ( Str $input is copy ) { + while my $m = $input ~~ s!^$<match>=((.)$0*)!! { + $m<match>.Str.say; + } +}
\ No newline at end of file diff --git a/challenge-020/simon-proctor/perl6/ch-2.p6 b/challenge-020/simon-proctor/perl6/ch-2.p6 new file mode 100644 index 0000000000..614abab055 --- /dev/null +++ b/challenge-020/simon-proctor/perl6/ch-2.p6 @@ -0,0 +1,37 @@ +#!/usr/bin/env perl6 + +use v6; + + +multi sub MAIN ( Bool :h(:$help) where so * ) { + say $*USAGE; +} + +#|Given a starting number (default 0) find the first two Amicable numbers following it. +multi sub MAIN ( Int $start = 0 ) { + my $current = $start; + my $pair; + loop { + $current++; + $pair = first-pair( $current ); + last if $pair; + } + say "$pair, $current"; + +} + +sub first-pair( Int $number ) { + my $num-total = [+] divisors( $number ); + (1..^$number).first( + { + my $sum = [+] divisors( $_ ); + ($sum == $number && $num-total == $_) + } + ); +} + +sub divisors( Int $number ) is pure { + state @divs; + my $mid = $number div 2; + @divs[$number] //= (1..$mid).grep( $number %% * ).list; +}
\ No newline at end of file |
