value の一部を使って sort する例

次に、sesame.keys 配列に sort をかけたい。 単なる sort method だけでは、key 部分での sort を行ってしまう。 よって、sort を value 配列の一部で行うように、指定する必要がある。

第 2 期の売上げについて
"まづやま酒店"
1
"さけでん商店"
2
"づるおが米商店"
3
"みがざスーパー"
4

と並べられたら、p 文を printf 文に変更する。 printf 文でより分りやすく表示させよう。(解答例)

print("第 2 期の売上げについて\n")
sesame.keys.sort{
  |second,lowest|
  sesame[second][1] <=>sesame[lowest][1]
}.each{
|retail|
    printf("%s\t%d\n", retail, sesame[retail][1])
}

構造は value 変数の並べ替えのときと同じであるが、配列なので、 成分を指定している。

# hash 配列.keys.sort{
#  |並び替え前の key 変数, 並び替え後の key 変数|
#   hash 配列[並び替え前の key 変数][要素番号] <=> hash 配列[並び替え後の key 変数][要素番号]
# }

本日の講義 / 基礎プログラミング II / 2007 年度

Madoka Nishimura <madoka@e.koeki-u.ac.jp>