aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Pankoff <ccntrq@screenri.de>2022-01-25 12:56:54 +0100
committerAlexander Pankoff <ccntrq@screenri.de>2022-01-25 12:57:31 +0100
commit5510a3b1a1e2f17fe73d0882fc24dd3e87234e46 (patch)
tree32614da438fa5de9774b76ebb24df15e23d1fa84
parent9c9cb3dcb25537525090902ca4b8d10ae17e8960 (diff)
downloadperlweeklychallenge-club-5510a3b1a1e2f17fe73d0882fc24dd3e87234e46.tar.gz
perlweeklychallenge-club-5510a3b1a1e2f17fe73d0882fc24dd3e87234e46.tar.bz2
perlweeklychallenge-club-5510a3b1a1e2f17fe73d0882fc24dd3e87234e46.zip
Add solution for challenge 148 task 1
-rw-r--r--challenge-148/alexander-pankoff/perl/ch-1.pl40
1 files changed, 40 insertions, 0 deletions
diff --git a/challenge-148/alexander-pankoff/perl/ch-1.pl b/challenge-148/alexander-pankoff/perl/ch-1.pl
new file mode 100644
index 0000000000..824e05188c
--- /dev/null
+++ b/challenge-148/alexander-pankoff/perl/ch-1.pl
@@ -0,0 +1,40 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+use feature qw'say signatures';
+no warnings qw'experimental::signatures';
+
+run() unless caller();
+
+# Write a script to generate all Eban Numbers <= 100.
+#
+# An Eban number is a number that has no letter ā€˜e’ in it when the number is spelled in English (American or British).
+#
+# Example
+#
+# 2, 4, 6, 30, 32 are the first 5 Eban numbers.
+
+# one two three four five six seven eight nine ten eleven twelve thirteen
+# ten twenty thirty fourty fifty sixty seventy eighty ninety
+
+sub run() {
+ say join( ", ", eban_numbers() );
+}
+
+sub eban_numbers {
+ my @eban = grep { is_eban($_) } 1 .. 100;
+ return @eban;
+
+}
+
+# only works for numbers up between 1 and 100
+sub is_eban($n) {
+ if ( length $n == 1 ) {
+ return grep { $n == $_ } qw(0 2 4 6);
+ }
+ if ( length $n == 2 ) {
+ my ( $n1, $n2 ) = split( '', $n );
+ return ( grep { $n1 == $_ } qw{3 4 5 6} ) && is_eban($n2);
+ }
+ return 0;
+}