aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdam Russell <ac.russell@live.com>2022-12-17 13:52:56 -0500
committerAdam Russell <ac.russell@live.com>2022-12-17 13:52:56 -0500
commit98dabbb62913c2ffcc268e7d5fe91077a01b6fba (patch)
tree7f7fa2ac308609c88c8b210745fedb5cdb40e79d
parent354f57ebd708492f1c50b05c6df41b894b795492 (diff)
downloadperlweeklychallenge-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.pl18
-rw-r--r--challenge-195/adam-russell/perl/ch-2.pl28
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);
+}