Sam_Kong
(Sam Kong)
1
Hi!
I'm trying to make a routine to make a Morris Number Sequence.
(http://www.ocf.berkeley.edu/~stoll/number_sequence.html)
I need to split a string in the following way, for example.
"111223133" => ["111", "22", "3", "1", "33"]
I can loop thru the string by each character, comparing with the
previous character.
But is there a quick and easy way?
Probably a regular expression?
Thanks.
Sam
Sam Kong wrote:
Hi!
I'm trying to make a routine to make a Morris Number Sequence.
(http://www.ocf.berkeley.edu/~stoll/number_sequence.html\)
I need to split a string in the following way, for example.
"111223133" => ["111", "22", "3", "1", "33"]
I can loop thru the string by each character, comparing with the
previous character.
But is there a quick and easy way?
Probably a regular expression?
This seems to work:
"111223133".scan(/1+|2+|3+|4+|5+|6+|7+|8+|9+|0+/)
=> ["111", "22", "3", "1", "33"]
···
--
-- Jim Weirich
--
Posted via http://www.ruby-forum.com/\.
Maybe something like:
s.scan(/(\d)(\1*)/).map! { |e| e.join }
# => ["111", "22", "3", "1", "33"]
or:
s.scan(/0+|1+|2+|3+|4+|5+|6+|7+|8+|9+/)
# => ["111", "22", "3", "1", "33"]
···
On Mon, 2006-03-13 at 16:58 +0900, Sam Kong wrote:
Hi!
I'm trying to make a routine to make a Morris Number Sequence.
(http://www.ocf.berkeley.edu/~stoll/number_sequence.html\)
I need to split a string in the following way, for example.
"111223133" => ["111", "22", "3", "1", "33"]
I can loop thru the string by each character, comparing with the
previous character.
But is there a quick and easy way?
Probably a regular expression?
--
Ross Bamford - rosco@roscopeco.REMOVE.co.uk
W_James
(W. James)
4
Sam Kong wrote:
Hi!
I'm trying to make a routine to make a Morris Number Sequence.
(http://www.ocf.berkeley.edu/~stoll/number_sequence.html\)
I need to split a string in the following way, for example.
"111223133" => ["111", "22", "3", "1", "33"]
I can loop thru the string by each character, comparing with the
previous character.
But is there a quick and easy way?
Probably a regular expression?
Thanks.
Sam
"111223133".scan(/(.)(\1*)/).map{|x|x.join}
[snip]
Maybe something like:
s.scan(/(\d)(\1*)/).map! { |e| e.join }
# => ["111", "22", "3", "1", "33"]
or:
s.scan(/0+|1+|2+|3+|4+|5+|6+|7+|8+|9+/)
# => ["111", "22", "3", "1", "33"]
Or:
s.scan(/((.)\2*)/).transpose[0]
Boy, are my fingers glad to save those keystrokes 
andrew
···
On Mon, 13 Mar 2006 17:23:56 +0900, Ross Bamford <rossrt@roscopeco.co.uk> wrote:
--
Andrew L. Johnson http://www.siaris.net/
They're not soaking, they're rusting!
-- my wife (on my dishwashing habits)