diff options
| author | Kian-Meng, Ang <kianmeng@cpan.org> | 2019-09-01 21:00:05 +0800 |
|---|---|---|
| committer | Kian-Meng, Ang <kianmeng@cpan.org> | 2019-09-01 21:00:05 +0800 |
| commit | 27a42b2c0c633a11815ea027b69bd8b63a6296e6 (patch) | |
| tree | 37e6973e0661f7d2b783b6de6fc4188c94f209f6 | |
| parent | 9de628273bbacc92999bac1131f72924798e322d (diff) | |
| download | perlweeklychallenge-club-27a42b2c0c633a11815ea027b69bd8b63a6296e6.tar.gz perlweeklychallenge-club-27a42b2c0c633a11815ea027b69bd8b63a6296e6.tar.bz2 perlweeklychallenge-club-27a42b2c0c633a11815ea027b69bd8b63a6296e6.zip | |
Add task 1 & 2 for challenge 023
| -rw-r--r-- | challenge-023/kian-meng-ang/perl5/ch-1.pl | 47 | ||||
| -rw-r--r-- | challenge-023/kian-meng-ang/perl5/ch-2.pl | 36 |
2 files changed, 83 insertions, 0 deletions
diff --git a/challenge-023/kian-meng-ang/perl5/ch-1.pl b/challenge-023/kian-meng-ang/perl5/ch-1.pl new file mode 100644 index 0000000000..06b7e92295 --- /dev/null +++ b/challenge-023/kian-meng-ang/perl5/ch-1.pl @@ -0,0 +1,47 @@ +#!/usr/bin/env perl +# vi:et:sw=4 ts=4 ft=perl + +use strict; +use warnings; +use utf8; +use feature qw(say); +use constant USAGE => qq|USAGE: perl $0 <order> <n1,n2,...,nN>|; +use Carp; + +my $order = $ARGV[0] || croak USAGE; +my @seq = split /,/, $ARGV[1] || croak USAGE; +scalar @seq > $order || croak q|ERROR: Total sequence of number must larger than order|; + +my @trace; +foreach my $o (1 .. $order) { + my @nseq; + foreach my $s (1 .. scalar @seq - 1) { + push @nseq, $seq[$s] - $seq[$s - 1]; + } + push @trace, \@nseq; + @seq = @nseq; +} + +foreach (0 .. scalar @trace - 1) { + say sprintf q|order:%s seq:%s|, $_ + 1, join q|,|, @{$trace[$_]}; +} + +1; + +__END__ + +$ perl ch-1.pl +USAGE: perl ch-1.pl <order> <n1,n2,...,nN> at ch-1.pl line 10 + +$ perl ch-1.pl 1 +USAGE: perl ch-1.pl <order> <n1,n2,...,nN> at ch-1.pl line 11. + +$ perl ch-1.pl 1 5 +ERROR: Total sequence of number must larger than order at ch-1.pl line 12. + +$ perl ch-1.pl 5 5,9,2,8,1,6 +order:1 seq:4,-7,6,-7,5 +order:2 seq:-11,13,-13,12 +order:3 seq:24,-26,25 +order:4 seq:-50,51 +order:5 seq:101 diff --git a/challenge-023/kian-meng-ang/perl5/ch-2.pl b/challenge-023/kian-meng-ang/perl5/ch-2.pl new file mode 100644 index 0000000000..f3e61b8716 --- /dev/null +++ b/challenge-023/kian-meng-ang/perl5/ch-2.pl @@ -0,0 +1,36 @@ +#!/usr/bin/env perl +# vi:et:sw=4 ts=4 ft=perl + +use strict; +use warnings; +use utf8; +use feature qw(say signatures); +no warnings 'experimental::signatures'; + +use Carp; +use ntheory qw(primes); + +MAIN: { + my $number = $ARGV[0] || croak 'ERROR: missing number'; + say sprintf q|Number: %s have prime factors: %s|, + $number, join q|,|, prime_factors($number); +} + +sub prime_factors($number) { + my $primes = primes(2, $number); + my @factors; + foreach my $prime (@{$primes}) { + while ($number % $prime == 0) { + $number = $number / $prime; + push @factors, $prime; + next if $number == 1; + } + } + return @factors; +} + +1; + +__END__ +$ perl ch-2.pl 228 +Number: 228 have prime factors: 2,2,3,19 |
