in reply to Elegantly map fizz to buzz
this is because multiples of 3 and 5 coincides with oeis serie A001969 just until 17 which is a prime number (as many in the serie) so cannot be multiple of 3 nor 5 (but i learned about binary weight..).
pardon me, was late and i was searching some oneliner to write while waiting sleep coming upon me..
what follow is original post:
not so elegantly, but here my oneliner solution:
is the shortened version of:perl -e "print eval join '+',grep{((scalar @{[((sprintf '%b',$_)=~/1/g +)]}))%2==0} 0..$ARGV[0];" 10 33
perl -e "print eval join '+',grep{(0.5*(4*$_+1-(-1)**scalar @{[((sprin +tf '%b',$_)=~/1/g)]}))%2==0} 0..$ARGV[0];" 10 33
The solution is based based on the fact that 0, 3, 5, 6, 9, 10, 12,.. is also the oeis serie A001969.
Here my first attempt
use strict; use warnings; my $max = $ARGV[0]||10; my $total; my $num=0; while ( evil_numbers($num)<= $max) {$total += evil_numbers($num);$num+ ++} print "$max gives a total of $total\n\n"; sub evil_numbers{ # https://oeis.org/A001969 my $n = shift; # nasty binary weight: https://oeis.o +rg/A000120 return 0.5 * (4 * $n + 1 - (-1) **scalar @{[((sprintf '%b',$n)=~ +/1/g)]} ); }
L*
|
|---|