diff options
| author | Alexander Pankoff <ccntrq@screenri.de> | 2022-01-25 12:56:54 +0100 |
|---|---|---|
| committer | Alexander Pankoff <ccntrq@screenri.de> | 2022-01-25 12:57:31 +0100 |
| commit | 5510a3b1a1e2f17fe73d0882fc24dd3e87234e46 (patch) | |
| tree | 32614da438fa5de9774b76ebb24df15e23d1fa84 | |
| parent | 9c9cb3dcb25537525090902ca4b8d10ae17e8960 (diff) | |
| download | perlweeklychallenge-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.pl | 40 |
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; +} |
