sub f { #23456789012345678901234567890123456789012345678901234567890123456789012345678901 my$x=my$i=pop;$x?([1..$x],map[(map$_+2*$x-1,reverse@$_),++$i],reverse f($x-1)):() } #### ## print "@$_\n" for f(5); 1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 13 12 11 10 9 #### +---------------+ | 1 2 3 ... n | | +-------+ n+1 | | | | . | | | *** | . | | | | . | | +-------+ 2n-1| +---------------+