raw_input = ["Buzz", "Fizz"]
input = raw_input[0, 7]
puts "For Input '#{raw_input.join(', ')}'"
matchMe = ["Fizz", "Buzz", "Fizz", "Fizz", "Buzz", "Fizz", "FizzBuzz","Fizz", "Buzz", "Fizz", "Fizz", "Buzz", "Fizz", "FizzBuzz"]
def real_index(index)
real_indices = [3,5,6,9,10,12,15,18,20,21,24,25,27,30]
multiplier = index/real_indices.size
real_indices[index%14] + multiplier*27 #total loop is 27
end
def sub_weight(start, length)
distances = [0,2,1,3,1,2,3,3,2,1,3,1,2,3]
distances[start+1 ,length-1].inject(0){|sum,val| sum+val}
end
solution_start_index = (0..7).find_all{|i| input == matchMe[i, input.size]}.sort_by{|i| sub_weight(i, input.size)}[0]
puts solution_start_index == nil ? "No Solution" : "Solution: (#{real_index(solution_start_index)}, #{real_index(solution_start_index - 1 + raw_input.size)})"