0
Help us understand the problem. What are the problem?

posted at

updated at

数珠玉表記

一度に説明しても簡単だが、要点を分けて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

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
0
Help us understand the problem. What are the problem?