Eban numbers: Difference between revisions
Content added Content deleted
Thundergnat (talk | contribs) m (→{{header|Perl 6}}: account for zero) |
Thundergnat (talk | contribs) m (→{{header|Perl 6}}: Better output formatting, trap some edge case errors.) |
||
Line 36: | Line 36: | ||
=={{header|Perl 6}}== |
=={{header|Perl 6}}== |
||
{{works with|Rakudo|2018.12}} |
{{works with|Rakudo|2018.12}} |
||
Modular approach, very little is hard coded. Change the order of magnitude limits to adjust the search/display ranges. Change the letter given to the nban sub to change which letter to disallow. |
Modular approach, very little is hard coded. Change the order of magnitude limits to adjust the search/display ranges. Change the letter given to the nban sub to change which letter to disallow. |
||
Demonstrate for e-ban and t-ban. |
Demonstrate for e-ban and t-ban. n-ban and i-ban are interesting too. |
||
<lang perl6>use Lingua::EN::Numbers::Cardinal; |
<lang perl6>use Lingua::EN::Numbers::Cardinal; |
||
Line 50: | Line 50: | ||
my @ban = flat ((1 .. 99),).map: *.&nban($n); |
my @ban = flat ((1 .. 99),).map: *.&nban($n); |
||
my @orders = |
my @orders = (2 .. 9).map({ 10**$_ X* 1..9 }).map: *.&nban($n); |
||
for @orders -> @order { |
for @orders -> @order { |
||
Line 63: | Line 63: | ||
@ban.unshift(0) if 0.&nban($n); |
@ban.unshift(0) if 0.&nban($n); |
||
say "\ |
say "\n============= {$n}-ban: ============="; |
||
my @k = @ban.grep: * <= 100; |
|||
say " |
say "{$n}-ban numbers up to 100: ", +@k; |
||
say |
say @k; |
||
⚫ | |||
my @j = @ban.grep: 1000 <= * <= 4000; |
|||
⚫ | |||
⚫ | |||
say ''; |
|||
for (1 .. 9).map: { 10**$_ } |
|||
⚫ | |||
⚫ | |||
for (4 .. 9).map: { 10**$_ } |
|||
-> $e { |
-> $e { |
||
my $f = @ban.first( * > |
my $f = @ban.first( * > $e, :k ); |
||
printf "Up to %13s: %d\n",comma($e), $f ?? +@ban[^$f] !! +@ban; |
|||
⚫ | |||
} |
} |
||
}</lang> |
}</lang> |
||
{{out}} |
{{out}} |
||
<pre> |
<pre>============= e-ban: ============= |
||
⚫ | |||
2 4 6 30 32 34 36 40 42 44 46 50 52 54 56 60 62 64 66 |
[2 4 6 30 32 34 36 40 42 44 46 50 52 54 56 60 62 64 66] |
||
⚫ | |||
⚫ | |||
⚫ | |||
2000 2002 2004 2006 2030 2032 2034 2036 2040 2042 2044 2046 2050 2052 2054 2056 2060 2062 2064 2066 4000 |
[2000 2002 2004 2006 2030 2032 2034 2036 2040 2042 2044 2046 2050 2052 2054 2056 2060 2062 2064 2066 4000] |
||
⚫ | |||
======================================== |
|||
Up to 10 |
Up to 10: 3 |
||
⚫ | |||
======================================== |
|||
Up to |
Up to 1,000: 19 |
||
⚫ | |||
======================================== |
|||
Up to |
Up to 100,000: 399 |
||
⚫ | |||
======================================== |
|||
Up to 10,000,000: 1599 |
Up to 10,000,000: 1599 |
||
⚫ | |||
======================================== |
|||
⚫ | |||
======================================== |
|||
Up to 1,000,000,000: 7999 |
Up to 1,000,000,000: 7999 |
||
======================================== |
|||
⚫ | |||
Displaying output for t-ban: |
|||
t-ban numbers up to 100: 9 |
|||
0 1 4 5 6 7 9 11 100 |
[0 1 4 5 6 7 9 11 100] |
||
⚫ | |||
======================================== |
|||
⚫ | |||
[] |
|||
Up to 10: 7 |
|||
⚫ | |||
Up to 100: 9 |
|||
======================================== |
|||
Up to |
Up to 1,000: 56 |
||
Up to 10,000: 56 |
|||
======================================== |
|||
Up to 100,000: 56 |
Up to 100,000: 56 |
||
Up to 1,000,000: 57 |
|||
======================================== |
|||
Up to |
Up to 10,000,000: 392 |
||
Up to 100,000,000: 393 |
|||
======================================== |
|||
Up to |
Up to 1,000,000,000: 2745</pre> |
||
======================================== |
|||
⚫ | |||
======================================== |
|||
⚫ | |||
========================================</pre> |
|||
=={{header|REXX}}== |
=={{header|REXX}}== |