エントリーの編集
エントリーの編集は全ユーザーに共通の機能です。
必ずガイドラインを一読の上ご利用ください。
辞書順で何番目か(Ruby) - Camera Obscura
記事へのコメント0件
- 注目コメント
- 新着コメント
このエントリーにコメントしてみましょう。
注目コメント算出アルゴリズムの一部にLINEヤフー株式会社の「建設的コメント順位付けモデルAPI」を使用しています
- バナー広告なし
- ミュート機能あり
- ダークモード搭載
関連記事
辞書順で何番目か(Ruby) - Camera Obscura
辞書順(lexicographical order)に並べて何番目か、あるはn番目のものは何か。 要素に重複がないとして... 辞書順(lexicographical order)に並べて何番目か、あるはn番目のものは何か。 要素に重複がないとして考える。数列 (1, 2, .... , n) の並べ替えとして解こう。 数列 (a1, .. , an) は辞書順で何番目か。 def number_in_lex_order(ary) n = ary.size return 1 if n <= 1 idx = ary.sort.bsearch_index { _1 >= ary[0] } (1..n - 1).inject(:*) * idx + number_in_lex_order(ary[1..-1]) end number_in_lex_order([2, 1, 5, 3, 4]) #=>29 ここでは、数列の左端の数字が、数列を昇順にソートした中で何番目に来るかがわからなければならない。それを i (=idx