From: Phrogz Date: 2007-12-11T12:20:22+09:00 Subject: Re: Word Loop (#149) On Dec 9, 1:38 pm, Ken Bloom wrote: > def loopword word > matchinfo= > word.match(/(.*?)(.)(.(?:..)+?)\2(.*)/i) > if matchinfo > _,before,letter,looplets,after=matchinfo.to_a > pad=" "*before.size > after.reverse.split(//).each{|l| puts pad+l} > looplets=looplets.split(//) > puts before+letter+looplets.shift > until looplets.empty? > puts pad+looplets.pop+looplets.shift > end > else > puts "No loop." > end > end Marvelously tight! However, it outputs this: loopword "chinchilla" #=> a #=> l #=> l #=> i #=> h #=> ch #=> ni when I would have expected this: loopword "chinchilla" #=> ch #=> ni #=> l #=> l #=> a