http://www.perlmonks.org?node_id=1150222


in reply to Golf: Factorials


sub fact{ (map{$_[0]*=$_}1..$_[0]-1)[-1]||1 # 33 # only 30 char for numbers bigger than 1 # (map{$_[0]*=$_}1..$_[0]-1)[-1] }


L*
PS some solutions above fails with the number zero that must return 1

PPS in addition, negatives numbers must return undef or Error
perl -e "sub fact{$x=$_;$x<0?'E':(map{$x*=$_}1..$x-1)[-1]||1} print ma +p{fact($_),qq(\n)}@ARGV " 0 1 3 -1 1 1 6 E
There are no rules, there are no thumbs..
Reinvent the wheel, then learn The Wheel; may be one day you reinvent one of THE WHEELS.