in reply to Converting pascal code to perl
Pipped to the post on the anon array solution, if you really want to retain the semantics of the hash:
#! perl -w use strict; sub roll { ( {2=>1, 3=>2, 4=>3, 5=>4, 6=>5, 7=>6, 8=>5, 9=>4, 10=>3, 11=>2, +12=>1}->{ shift() || 0 } ) / 36 or warn "Invalid roll\n" and 0; } print roll( $_),$/ for (2..12); __END__ C:\test>190287 0.0277777777777778 0.0555555555555556 0.0833333333333333 0.111111111111111 0.138888888888889 0.166666666666667 0.138888888888889 0.111111111111111 0.0833333333333333 0.0555555555555556 0.0277777777777778
|
|---|