From: James Koppel Date: 2007-12-10T05:47:48+09:00 Subject: Re: [QUIZ] Word Loop (#149) #A loop is possible whenever there are two of the same lettter an even distance #greater than 2 from each other def first_loop(letters) 0.upto(letters.length-1) do |idx1| (idx1+4).step(letters.length-1,2) do |idx2| return [idx1,idx2] if letters[idx1].casecmp(letters[idx2])==0 end end nil end letters = ARGV.first.split(//) first,last = first_loop(letters) if first==nil puts "No loop" exit end letters[(last+1)..-1].reverse_each {|l| puts ' '*first + l} puts letters[0..(first+1)].join 1.upto((last-first-1)/2) do |n| puts ' '*first + letters[last-n] + letters[first+1+n] end ----- Original Message ---- From: Ruby Quiz To: ruby-talk ML Sent: Friday, December 7, 2007 2:45:02 PM Subject: [QUIZ] Word Loop (#149) The three rules of Ruby Quiz: 1. Please do not post any solutions or spoiler discussion for this quiz until 48 hours have passed from the time on this message. 2. Support Ruby Quiz by submitting ideas as often as you can: http://www.rubyquiz.com/ 3. Enjoy! Suggestion: A [QUIZ] in the subject of emails about the problem helps everyone on Ruby Talk follow the discussion. Please reply to the original quiz message, if you can. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Here's a fun little challenge from the Educational Computing Organization of Ontario. Given a single word as input try to find a repeated letter inside of it such that you can loop the text around and reuse that letter. For example: $ ruby word_loop.rb Mississippi i p p Mis ss si or: $ ruby word_loop.rb Markham Ma ar hk or: $ ruby word_loop.rb yummy yu mm If a loop cannot be made, your code can just print an error message: $ ruby word_loop.rb Dana No loop. ____________________________________________________________________________________ Be a better friend, newshound, and know-it-all with Yahoo! Mobile. Try it now. http://mobile.yahoo.com/;_ylt=Ahu06i62sR8HDtDypao8Wcj9tAcJ