On Tue, Sep 21, 2010 at 1:10 AM, F. Senault [email protected] wrote:
Here’s the code ; what can I do to improve this ?
as always, we start as simple as possible,… walking one element at a
time…
botp@bg-mis-u10:~/ruby
$ irb
a=[ ‘1’, ‘2’, ‘3’, ‘4’, ‘6’, ‘7’, ‘9’, ‘S1’, ‘S2’]
=> [“1”, “2”, “3”, “4”, “6”, “7”, “9”, “S1”, “S2”]
?> c=[ [prev=a[0]] ]
=> [[“1”]]
?> a[1…-1].each do |e|
?> if (prev.class == e.class) && (prev.succ == e)
c.last << eelse
?> c << [e]
end
?> prev=e
end
=> [“2”, “3”, “4”, “6”, “7”, “9”, “S1”, “S2”]
?> p c
[[“1”, “2”, “3”, “4”], [“6”, “7”], [“9”], [“S1”, “S2”]]
=> [[“1”, “2”, “3”, “4”], [“6”, “7”], [“9”], [“S1”, “S2”]]
?>
but _that algo is clamoring for inject/reduce (and robertk is
watching
… so,
?>
?> c =
?> a[1…-1].inject([[prev=a[0]]]) do |b,e|
?> if (prev.class == e.class) && (prev.succ == e)
b.last << eelse
?> b << [e]
end
prev=e
b
end
=> [[“1”, “2”, “3”, “4”], [“6”, “7”], [“9”], [“S1”, “S2”]]
?> p c
[[“1”, “2”, “3”, “4”], [“6”, “7”], [“9”], [“S1”, “S2”]]
=> [[“1”, “2”, “3”, “4”], [“6”, “7”], [“9”], [“S1”, “S2”]]
hth.
best regards -botp