📂 0
📂 1
📂 2
📂 3
📂 4
📂 5
📂 6
📂 7
📂 8
📂 9
📂 10
📂 11
📂 12
📂 13
...
「 👆 Windows のファイルエクスプローラーは 名前順にソートすると 数字は昇順に並ぶのか。
よっしゃ Visual Studio 2022 Preview で開けたろ」
📂 0
📂 1
📂 11
📂 12
📂 13
📂 14
📂 15
📂 16
📂 17
📂 18
📂 19
📂 2
📂 20
📂 21
📂 22
📂 23
📂 24
...
「 嫌なら Windows を捨てて Linux にしろだぜ」
📂 0A # 0 が無視されるとしても A が数字より上なのが分けがわからん
📂 0
📂 1
📂 -1 # ハイフンは負数とは判定されない
📂 2
📂 3
📂 4
📂 5
📂 6
📂 7
📂 08 # 0 は無視される。数字順と思えば納得
📂 8
📂 9
📂 10
📂 99
📂 100
📂 A
📂 0
📂 08
📂 0A
📂 1
📂 -1 # ハイフンは負数とは判定されない
📂 10
📂 100
📂 2
📂 3
📂 4
📂 5
📂 6
📂 7
📂 8
📂 9
📂 99
📂 A
「 辞書順の方が基本で、
むしろ Windows ファイルエクスプローラーの方が気を利かせて 数字の部分を並び替えてくれるのよ。
多分 電話番号とか 想定してんじゃないの?」
「 だれが 電話番号なんか想定してフォルダーを並び替えてほしいんだぜ!
前ゼロを無視したり、負数の符号に対応してないのに 正の整数だけソートしたり、ワケ分からん!」
「 わたしの手にかかれば 問題は 解決までの手順に変わるぜ」
📂 1
📂 2
📂 3
📂 4
📂 5
📂 6
📂 7
📂 8
📂 9
📂 A10
📂 A91
📂 A92
📂 A93
📂 A94
📂 A95
📂 A96
📂 A97
📂 A98
📂 A99
📂 AA100
📂 AA991
📂 AA992
📂 AA993
📂 AA994
📂 AA995
📂 AA996
📂 AA997
📂 AA998
📂 AA999
📂 AAA1000
👇 零,または正の整数があるとする
0 1 21 321 4321
- - -- --- ----
👇 桁数×2-1
の横幅があると考えてほしい
0 1 21 321 4321
- - --- ----- -------
👇 前A
で埋める
0 1 A21 AA321 AAA4321
- - --- ----- -------
これで正の数は辞書順に並ぶ
👇 例: Windows ファイルエクスプローラーのファイル名,フォルダー名向け
📂 ___900 # -100
📂 __01 # - 99
📂 __09 # - 91
📂 __10 # - 90
📂 __89 # - 11
📂 __90 # - 10
📂 _1 # - 9
📂 _2 # - 8
📂 _7 # - 3
📂 _8 # - 2
📂 _9 # - 1
📂 0 # Zero
👇 例: Visual Studio 2022 Preview のメソッド名の並び順向け
add___900() # -100
add__01() # - 99
add__90() # - 10
add_1() # - 9
add_8() # - 2
add_9() # - 1
add0() # Zero
「 👆 前_
を付けて ひっくり返った数を使えば 負数も昇順に並ぶぜ」
「 ひっくり返った数
というのは、その数を1桁増やした数の絶対値の最小の数だな」
👇 負の整数があるとする
-1 -21 -321 -4321
-- --- ---- -----
👇 負の符号を除去する
1 21 321 4321
- -- --- ----
👇 桁数×2
の横幅があると考えてほしい
1 21 321 4321
-- ---- ------ --------
👇 その数を1桁増やした数の最小の数
を求め、上に置く
10 100 1000 10000
1 21 321 4321
-- ---- ------ --------
👇 引き算をする
10 100 1000 10000
- 1 - 21 - 321 - 4321
-- ---- ------ --------
9 79 679 5679
👇 差の横幅を 前_
で埋める
-- ---- ------ --------
_9 __79 ___679 ____5679
これが負数の表記だ。辞書順で昇順に並ぶ
_
は使いたくなかった。 0
が辞書順なら 0
にしたかったが、 Windows ファイルエクスプローラーや、 Visual Studio 2022 Preview のメソッドの並び順は 0
を無視するという 分けの分からない挙動なので仕方なく使用📂 __87 # -13
📂 __88 # -12
📂 __89 # -11
📂 __90 # -10
📂 _1 # -9
📂 _2 # -8
📂 _3 # -7
📂 _4 # -6
📂 _5 # -5
📂 _6 # -4
📂 _7 # -3
📂 _8 # -2
📂 _9 # -1
📂 0
📂 1
📂 2
📂 3
📂 4
📂 5
📂 6
📂 7
📂 8
📂 9
📂 A10
📂 A11
📂 A12
📂 A13
「 こんな おかしな バッドノウハウ が流行る前に GUIのリストのソートアルゴリズムを ユーザーが指定できるようにしてほしいぜ」
📖 Qiita版 辞書順記数法 - 頭が固い説明
📖 数珠玉記数法 - 組み合わせて使える
📖 電脳記数法 - 辞書順記数法と 数珠玉記数法を組み合わせたもの
Example: 📖 dictionary-ordinal-number-notation
Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。
また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!
こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?
コメント