diff options
| author | KjetilS <kjetilskotheim@gmail.com> | 2024-09-03 11:12:40 +0200 |
|---|---|---|
| committer | KjetilS <kjetilskotheim@gmail.com> | 2024-09-03 11:12:40 +0200 |
| commit | 2c6ed8e949ab95f7197b4dfff897ace355a3413b (patch) | |
| tree | ae201690f9736c82aa8312f2ee9c5b22d81ba663 | |
| parent | a92117f754a875572d11900c871014386b7ade27 (diff) | |
| download | perlweeklychallenge-club-2c6ed8e949ab95f7197b4dfff897ace355a3413b.tar.gz perlweeklychallenge-club-2c6ed8e949ab95f7197b4dfff897ace355a3413b.tar.bz2 perlweeklychallenge-club-2c6ed8e949ab95f7197b4dfff897ace355a3413b.zip | |
https://theweeklychallenge.org/blog/perl-weekly-challenge-285/
| -rw-r--r-- | challenge-285/kjetillll/perl/ch-1.pl | 9 | ||||
| -rw-r--r-- | challenge-285/kjetillll/perl/ch-2.pl | 14 |
2 files changed, 23 insertions, 0 deletions
diff --git a/challenge-285/kjetillll/perl/ch-1.pl b/challenge-285/kjetillll/perl/ch-1.pl new file mode 100644 index 0000000000..5562883c79 --- /dev/null +++ b/challenge-285/kjetillll/perl/ch-1.pl @@ -0,0 +1,9 @@ +use strict; use warnings; use Test::More tests => 2; + +sub dest { + my %further = map { $$_[0] => 1 } @_; + grep !$further{$_}, map $$_[1], @_; +} + +is_deeply [ dest( ["B","C"], ["D","B"], ["C","A"] ) ] => [ 'A' ]; +is_deeply [ dest( ["A","Z"] ) ] => [ 'Z' ]; diff --git a/challenge-285/kjetillll/perl/ch-2.pl b/challenge-285/kjetillll/perl/ch-2.pl new file mode 100644 index 0000000000..9748e77f92 --- /dev/null +++ b/challenge-285/kjetillll/perl/ch-2.pl @@ -0,0 +1,14 @@ +use strict; use warnings; no warnings 'recursion'; use List::Util 'min'; use Test::More tests => 3; + +sub ways { + my( $amount, @coins ) = @_; + $amount==0 ? \@coins : map ways($amount-$_, @coins, $_), grep $_ <= &min, 1,5,10,25,50 +} +sub waystring {join('',map{{qw(1 P 5 N 10 D 25 Q 50 H)}->{$_}}@_)=~s,(.)\1*,length($&)."$1 ",reg=~s,\b1(\D),$1,gr} + +print '9 --> '.waystring(@$_)."\n" for ways(9); +print '15 --> '.waystring(@$_)."\n" for ways(15); + +is scalar ways(9) => 2; +is scalar ways(15) => 6; +is scalar ways(100) => 292; |
