Eban numbers: Difference between revisions
Content added Content deleted
Thundergnat (talk | contribs) (→{{header|Perl 6}}: Tidy up a bit, demo multi character "bans") |
Thundergnat (talk | contribs) m (→{{header|Perl 6}}: I twiddle because I can...) |
||
Line 150: | Line 150: | ||
sub nban ($seq, $n = 'e') { ($seq).map: { next if .&cardinal.contains(any($n.comb)); $_ } } |
sub nban ($seq, $n = 'e') { ($seq).map: { next if .&cardinal.contains(any($n.comb)); $_ } } |
||
sub filter ($n) { |
sub filter ($n, $upto) { |
||
my @ban = flat ((1 .. 99),).map: *.&nban($n); |
my @ban = flat ((1 .. 99),).map: *.&nban($n); |
||
my @orders = (2 .. |
my @orders = (2 .. $upto).map({ 10**$_ X* 1..9 }).map: *.&nban($n); |
||
for @orders -> @order { |
for @orders -> @order { |
||
next unless +@order; |
next unless +@order; |
||
Line 167: | Line 167: | ||
for 'e', 't', 'subur' -> $n { |
for 'e', 't', 'subur' -> $n { |
||
my |
my $upto = 10; # 1e10 |
||
my @bans = filter($n, $upto); |
|||
# DISPLAY |
# DISPLAY |
||
Line 176: | Line 177: | ||
"{$n}-ban numbers between 1,000 & 4,000: {+@j}\n{@j.gist}\n"; |
"{$n}-ban numbers between 1,000 & 4,000: {+@j}\n{@j.gist}\n"; |
||
for (1 .. |
for (1 .. $upto).map: { 10**$_ } -> $e { |
||
my $f = @bans.first( * > $e, :k ); |
my $f = @bans.first( * > $e, :k ); |
||
printf "Up to %14s: %d\n",comma($e), $f ?? +@bans[^$f] !! +@bans; |
printf "Up to %14s: %d\n",comma($e), $f ?? +@bans[^$f] !! +@bans; |