Wednesday, July 29, 2009 10:14 AM
Maurits
Bad Perl: Josephus problem
Another programming contest asks to solve the Josephus problem.
Bad Perl solution (83 characters... so close...)
>perl -e"@_=(1..$ARGV[0]);++$c%$ARGV[1]?$i++:splice@_,$i%=@_,1while$#_;print@_" 40 3
28
EDIT: got it down to 80.
>perl -e"@_=(1..shift);++$c%$ARGV[0]?$i++:splice@_,$i%=@_,1while$#_;print@_" 40 3
28
EDIT2: 78 dropping the parentheses.
>perl -e"@_=1..shift;++$c%$ARGV[0]?$i++:splice@_,$i%=@_,1while$#_;print@_" 40 3
28
EDIT3: 66, shamelessly cannibalizing others' ideas from the contest (though I refuse to use "say")
>perl -e"$k=pop;@_=1..pop;@_=grep{++$i%$k}@_ while$#_;print@_" 40 3
28