diff options
| author | Adam Russell <ac.russell@live.com> | 2022-12-17 13:52:56 -0500 |
|---|---|---|
| committer | Adam Russell <ac.russell@live.com> | 2022-12-17 13:52:56 -0500 |
| commit | 98dabbb62913c2ffcc268e7d5fe91077a01b6fba (patch) | |
| tree | 7f7fa2ac308609c88c8b210745fedb5cdb40e79d | |
| parent | 354f57ebd708492f1c50b05c6df41b894b795492 (diff) | |
| download | perlweeklychallenge-club-98dabbb62913c2ffcc268e7d5fe91077a01b6fba.tar.gz perlweeklychallenge-club-98dabbb62913c2ffcc268e7d5fe91077a01b6fba.tar.bz2 perlweeklychallenge-club-98dabbb62913c2ffcc268e7d5fe91077a01b6fba.zip | |
initial commit
| -rw-r--r-- | challenge-195/adam-russell/perl/ch-1.pl | 18 | ||||
| -rw-r--r-- | challenge-195/adam-russell/perl/ch-2.pl | 28 |
2 files changed, 46 insertions, 0 deletions
diff --git a/challenge-195/adam-russell/perl/ch-1.pl b/challenge-195/adam-russell/perl/ch-1.pl new file mode 100644 index 0000000000..5f1502dbb0 --- /dev/null +++ b/challenge-195/adam-russell/perl/ch-1.pl @@ -0,0 +1,18 @@ +use v5.34; +## +# You are given a positive integer, $n > 0. +# Write a script to print the count of all special +# integers between 1 and $n. +## +use boolean; +sub is_special{ + my($x) = @_; + my %h; + my @digits = split(//, $x); + map{ $h{$_} = undef } @digits; + return keys %h == @digits; +} + +MAIN:{ + say q// . grep{ is_special($_) } 1 .. $ARGV[0]; +} diff --git a/challenge-195/adam-russell/perl/ch-2.pl b/challenge-195/adam-russell/perl/ch-2.pl new file mode 100644 index 0000000000..15a47ab5a5 --- /dev/null +++ b/challenge-195/adam-russell/perl/ch-2.pl @@ -0,0 +1,28 @@ +use v5.34; +## +# You are given a list of numbers, @list. +# Write a script to find most frequent even +# numbers in the list. In case you get more +# than one even numbers then return the smallest even integer. +# For all other case, return -1. +## +sub frequency{ + my @list = @_; + @list = grep { $_ % 2 == 0 } @list; + return -1 if @list == 0; + my %frequencies; + map { $frequencies{$_}++ } @list; + my @sorted = sort { $frequencies{$b} <=> $frequencies{$a} } @list; + return $sorted[0] if $frequencies{$sorted[0]} != $frequencies{$sorted[1]}; + return (sort { $a <=> $b } @sorted)[0]; +} + +MAIN:{ + my @list; + @list = (1, 1, 2, 6, 2); + say frequency(@list); + @list = (1, 3, 5, 7); + say frequency(@list); + @list = (6, 4, 4, 6, 1); + say frequency(@list); +} |
