浅川です。

Hideyuki Oya <h_oya / leto.eonet.ne.jp> wrote:
> data.sort!{|a,b|
>     a[0..len] <=> b[0..len]
> }
> (文字列(data[0],data[1],data[2],...)の先頭から指定した長さ(len)部分だ
> けを比較してソートしようと思っています。)

  data の中身とソートの目的がハッキリしていないので、間違っているかも
知れませんが… len 文字以降の文字列の並びが安定(元の並びと変わらない)
していないことが問題なのでしょうか? これは、リファレンスマニュアルにも
書かれていますが Enumerable#sort は安定ソートではないので、ちょっと工
夫が必要です。

  もし、僕の推測が当たっているならば…

data = %w(abd acc abc abb aab aaa)
len = 1

i = 0
data = data.sort_by{|a,b|
    [a[0..len], i += 1]
}

p data #=> ["aab", "aaa", "abd", "abc", "abb", "acc"]

これでよろしいのではないでしょうか。


----------
*namu*(Yuji Asakawa)
namu / venus.dti.ne.jp