一度に説明しても簡単だが、要点を分けて1つずつ説明する
数珠玉表記の代表的な例
👇 以下のような表記があるとする
128.0.0.1
👇 .
を o
に変換する
128o0o0o1
これが 数珠玉表記 だ
もととなる符号化の考え方
以下のように対応する
演算優先順位 | 置換前 | 置換後 |
---|---|---|
1 | ; |
j |
2 | : |
i |
3 | ( |
q |
3 | ) |
p |
4 | , |
g |
5 | * |
x |
5 | / |
y |
6 | + |
t |
6 | - |
n |
7 | . |
o |
8 | |
u |
(演算順)
数珠玉表記では基本的に o
だけ使う。 このPythonパッケージでは o
をサポートする。
拡張で q
, p
, g
が必要になってくるケースがあるかもしれない
備考
- 大文字,小文字は区別しない(Ignore case)
数珠玉表記 の格納構造
タプルを使う
👇 以下のような数珠玉表記があるとする
-21o-1o0o1o21
👇 大文字に揃える
-21O-1O0O1O21
👇 O
でスプリットする
[-21, -1, 0, 1, 21]
👇 タプルに変換する
(-21, -1, 0, 1, 21)
複数のベクトルを 数珠玉表記 に変換する手順
👇 複数のベクトルがあるとする
[2 1] [4 3]
👇 各ベクトルの要素は .
区切りにする。間隔は詰める
[2.1] [4.3]
- これにより,数珠玉表記では小数を扱えない
👇 ベクトル間は ,
区切りにする。間隔は詰める
[2.1],[4.3]
👇 角かっこは、丸かっこへ置換する
(2.1),(4.3)
👇 ここで、.
より ,
は優先順位が高いことから、丸かっこは外せる。だから外す
2.1,4.3
👇 以下の置換ルールを適用する
-
,
はg
へ -
.
はo
へ
2o1g4o3
これが 数珠玉表記 だ
備考
- 整数とベクトルの結合でも同様
TODO 入れ子ベクトル
👇 入れ子のベクトルがあるとする
[ [ 1 2 ] 3 ]
👇 一番内側の角括弧に着目
[ [ 1 2 ] 3 ]
----------
👇 数字間のスペースを o
に置換して詰める
[ [ 1o2 ] 3 ]
---------
👇 その角括弧は一番外側ではない。
この場合、 [
, ]
は q
, p
に置換して詰める
[ q1o2p 3 ]
-----
👇 一番外側の角括弧に着目
[ q1o2p 3 ]
--------------
要素間で 数字が隣合うことはない
👇 要素間のスペースを詰める
[ q1o2p3 ]
------------
👇 一番外側の角括弧は消す。間隔は詰める
q1o2p3
------
これが入れ子の 数珠玉表記 だ
関連する記事
辞書順記数法
👇 組み合わせて使える
📖 辞書順記数法 Crieit版 - ブログ
📖 辞書順記数法 Qiita版 - 固い記事
数珠玉表記
📖 数珠玉表記 Crieit版 - ブログ
📖 数珠玉表記 Qiita版
- この記事
電脳向量表記
👇 辞書順記数法と 数珠玉記数法を組み合わせたもの
📖 電脳向量表記 Crieit版 ブログ - ブログ
📖 電脳向量表記 Crieit版 - 固い記事
Pythonコード
Example: 📖 beads-vector-notation