aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2022-01-25 12:05:03 +0000
committerGitHub <noreply@github.com>2022-01-25 12:05:03 +0000
commit8bf304e89e5728895c7087913ca0f9a083abd91b (patch)
treee88d20fd9fbfd7d956c632906cbb0c8f9da17fc7
parentc75e2894588cc7d2e52cb0159e556ee1f3abf7c7 (diff)
parent5510a3b1a1e2f17fe73d0882fc24dd3e87234e46 (diff)
downloadperlweeklychallenge-club-8bf304e89e5728895c7087913ca0f9a083abd91b.tar.gz
perlweeklychallenge-club-8bf304e89e5728895c7087913ca0f9a083abd91b.tar.bz2
perlweeklychallenge-club-8bf304e89e5728895c7087913ca0f9a083abd91b.zip
Merge pull request #5566 from ccntrq/challenge-148
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;
+}