>>249
def niwatori(key_str, input_str)
  order_by_char = key_str.chars.inject([{}, 1]) {|(hash, n), x|
             [hash.merge(x => n), n + 1]
           }[0]
  input_str.chars.sort { |x, y|
    order_x = order_by_char[x]
    order_y = order_by_char[y]
    raise unless order_x && order_y

    order_x <=> order_y
  }.join
end

niwatori "にわとり", "りとわとににりとわにわとりわりに"
#=> "ににににわわわわととととりりりり"


def bakatori(key_str, input_str)
key_str * (input_str.length / key_str.length)
end


bakatori "にわとり", "りとわとににりとわにわとりわりに"
#=> "にわとりにわとりにわとりにわとり"


=begin
正しいソート(>>256)の niwatori、間違ったソート(>>249)の bakatori
あなたが欲しかったのは、どちらのソート?
=end