Begin forwarded message:

> From: Yoan Blanc <yoan / dosimple.ch>
> Date: January 18, 2008 4:03:05 PM CST
> To: submission / rubyquiz.com
> Subject: Please Forward: Ruby Quiz Submission
>
> Yoan Blanc wrote:
>> thanks.
>>
> A new one, more in phase with the "be cute to the processor" so less
> brute force ;-)
>
> Cheers,
>
> Yoan
> #!/usr/bin/ruby
> # author: Yoan Blanc <yoan at dosimple.ch>
> # revision: 20080118
>
> # Quiz153: http://www.rubyquiz.com/quiz153.html
> #
> # a script that finds the longest repeated substring
> # in a given text.
>
> text = STDIN.read
>
> match = ""
>
> ## sweet way
> 0.upto(text.length-1) do |i|
> 	# find a repeatition
> 	j = text[(i+1)..text.length-1].index(text[i..i])
> 	until j.nil?
> 		# found offset is too far away from the first occurence
> 		break if (j-i) > (text.length-j-1)
> 		
> 		# real position
> 		j += 1
> 		
> 		# test if there is a match (longer than the previous one)
> 		if (j-i) > match.length and text[i..j-1] == text[j..j+(j-i)-1]
> 				match = text[i..j-1]
> 		end
> 		
> 		# any letters remaining?
> 		k = text[j+1..text.length-1].index(text[j..j])
> 		# if yes, j is this new letter.
> 		j = k.nil? ? k : j+k
> 	end
> end
>
> puts match