Download code

Jump to: navigation, search

Back to Look_and_say_sequence_(Ruby)

Download for Windows: single file, zip

Download for UNIX: single file, zip, tar.gz, tar.bz2

look_and_say_sequence.rb

 1 # The authors of this work have released all rights to it and placed it
 2 # in the public domain under the Creative Commons CC0 1.0 waiver
 3 # (http://creativecommons.org/publicdomain/zero/1.0/).
 4 # 
 5 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 6 # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 7 # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 8 # IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
 9 # CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
10 # TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
11 # SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
12 # 
13 # Retrieved from: http://en.literateprograms.org/Look_and_say_sequence_(Ruby)?oldid=11665
14 
15 require "generator"
16 
17 def look_and_say(seed, len)
18   Generator.new do |g|
19     last_value = seed.to_s
20     g.yield last_value
21     
22     2.upto(len) do
23       next_value = ""
24       while last_value.length > 0
25         match = /#{last_value[0,1]}+/.match(last_value)[0]
26         next_value << match.length.to_s + last_value[0,1]
27         last_value = last_value[match.length..last_value.length]       
28       end
29         
30       last_value = next_value
31       g.yield next_value
32     end 
33   end
34 end
35 
36 def test_look_and_say()
37   conway = look_and_say(3,10)
38   puts conway.to_a
39 end
40 


hijacker
hijacker
hijacker
hijacker