Bob Showalter <[EMAIL PROTECTED]> writes: > Here's what I came up with. I wonder if this can be made shorter: > > @list = (9,11,12,13,14,23,25,26,27,50); > > while ($f = shift @list) { > print $f; > last unless @list; > print(','), next unless $list[0] == ++$f; > print "-"; > shift @list while @list > 1 && $list[1] == ++$f; > }
The algorithm assumes a sorted list. I tried to remove that restriction by putting sort in the while loop, but can't because shift requires an ARRAY, not a LIST. Therefore the following won't work. while ($f = shift sort {$a<=>$b} @list) { # Wront!!! } I can two-line it. @list = sort {$a<=>$b} @list; while ($f = shift @list) { } Can it be one-lined? -- Michael R. Wolf All mammals learn by playing! [EMAIL PROTECTED] -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]