VBSで便利なプログラムを作れスレ 2 (853レス)
上下前次1-新
抽出解除 レス栞
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
467(2): 2019/05/19(日)02:52 ID:OTlGjTy8(2/2)調 AAS
class Array
def sort_by
self.map {|i| [yield(i), i] }.
sort {|a, b| a[0] <=> b[0] }.
map {|i| i[1]}
end
end
Ruby のsort_by は、[ブロック評価結果, データ]の配列をmap で作ってから、
ソートして、オリジナルデータのみを抜き出して、mapで配列にする
これは、シュウォーツ変換と言って、比較回数を減らす
468(1): ピッコロ ◆YAZTByPXwc6o 2019/05/19(日)03:29 ID:iZGlVtrY(5/7)調 AAS
>>467
勉強になります!
もしよろしければそのソースコードどこで見れるのか教えて欲しいです
476: 467 2019/05/20(月)05:50 ID:poyp5Kqc(2/2)調 AAS
>>467
は「改訂2版 Ruby逆引きハンドブック」のEnumerable#sort, sort_by の所に書いてある。
Array とは少し違うけど
module Enumerable
def sort_by
map {|i| [yield(i), i] }.
sort.
map! {|i| i[1]}
end
end
C のソースコードは見つかるけど、Ruby のソースコードはどこにあるか、漏れにも分からない
GitHub - ruby/ruby: The Ruby Programming Language [mirror]
https://github.com/ruby/ruby
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.031s