renumnum


Namerenumnum JSON
Version 0.2.2 PyPI version JSON
download
home_pageNone
SummaryNumbering notation for easy renumbering.
upload_time2024-10-23 07:45:20
maintainerNone
docs_urlNone
authorNone
requires_pythonNone
licenseMIT License Copyright (c) 2024 むずでょ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
keywords notation renumbering
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # renumnum

**IPアドレスのv4形式** (例えば 128.0.0.1)や、**セマンティック・バージョニング** (例えば 1.0.0)といったピリオド区切りの数字(ベクターのようなもの)が便利なことは知られているでしょう。  
このピリオド区切りの数字を **ASCIIコード順で番号が並ぶ** ように `OAA128o0o0o1o0` や `O1o0o0o0` といった文字列に符号化、またその逆の復号化を行うライブラリーが **renumnum** (**Renum**beringist **Num**ber)です  

# Python スクリプトの書き方

👇 説明に入る前に、まず、使ってみましょう  

```py
import renumnum as rn

# リナンバリンギスト番号(renumnum)の変数名は何でも構いませんがとりあえず oo としてみましょう
print("整数:1")
oo = rn.num(1)
print(str(oo))          # O1o0
print(oo.totuple())     # (1,)
print(oo.tolist())      # [1]

print("コンマ区切りの整数:128, 0, 0, 1")
oo = rn.num(128, 0, 0, 1)
print(str(oo))          # OAA128o0o0o1o0
print(oo.totuple())     # (128, 0, 0, 1)
print(oo.tolist())      # [128, 0, 0, 1]

print("コンマ区切りの整数:1, 0, 0")
oo = rn.num(1, 0, 0)
print(str(oo))          # O1o0o0o0
print(oo.totuple())     # (1, 0, 0)
print(oo.tolist())      # [1, 0, 0]

print("タプル:(1, 2)")
oo = rn.num((1, 2))
print(str(oo))          # O1o2o0
print(oo.totuple())     # (1, 2)
print(oo.tolist())      # [1, 2]

print("リスト:[1, 2]")
oo = rn.num([1, 2])
print(str(oo))          # O1o2o0
print(oo.totuple())     # (1, 2)
print(oo.tolist())      # [1, 2]

print("文字列:'1'")
oo = rn.num('1')
print(str(oo))          # O1o0
print(oo.totuple())     # (1,)
print(oo.tolist())      # [1]

#oo = rn.num('1, 2')   # error

# 末尾に o0 が付いていなくても、辞書順番号として有効です
print("辞書順番号(Dictionary order number):'_9'")
oo = rn.num('_9')
print(str(oo))          # O_9o0
print(oo.totuple())     # (-1,)
print(oo.tolist())      # [-1]

print("同:'A10'")
oo = rn.num('A10')
print(str(oo))          # OA10o0
print(oo.totuple())     # (10,)
print(oo.tolist())      # [10]

# 末尾に o0 が付いていなくても、数珠玉記数法として有効です
print("数珠玉記数法(Beads notation):'O0'")
oo = rn.num('O0')
print(str(oo))          # O0o0
print(oo.totuple())     # (0,)
print(oo.tolist())      # [0]

print("同:'O1'")
oo = rn.num('O1')
print(str(oo))          # O1o0
print(oo.totuple())     # (1,)
print(oo.tolist())      # [1]

# リナンバリンギスト番号
print("リナンバリンギスト番号(Renumberingist number):'O0o0'")
oo = rn.num('O0o0')
print(str(oo))          # O0o0
print(oo.totuple())     # (0,)
print(oo.tolist())      # [0]

print("同:'O1o0'")
oo = rn.num('O1o0')
print(str(oo))          # O1o0
print(oo.totuple())     # (1,)
print(oo.tolist())      # [1]

# 比較
print("O1o0 < O2o0")
oo1 = rn.num('O1o0')
oo2 = rn.num('O2o0')
print(oo1 < oo2)        # True

print("O1o0 < O1o0o0")
oo1 = rn.num('O1o0')
oo2 = rn.num('O1o0o0')
print(oo1 < oo2)        # True
```

👆 `O1o0` や、 `O1o2o0` といった文字列を作るのが **renumnum** ライブラリーだということが分かります。  
(renumnum==0.2.2 から) 比較演算子にも対応しました  

# O1o0 や、 O1o2o0 といった文字列の用途

次に、コンピューターを利用している場面で、スカラー数(ピリオドで区切っていない私たちがよく知っている 1 とか 2 といった数)を使っているときに**リナンバリングすると起こりやすい問題**を説明します。  
最後に、`O1o0` や、 `O1o2o0` といった文字列(名前は**リナンバリンギスト番号**、**renumnum**とでもしましょう)を説明します。  

# 例:私たちのよく知っている数字を使った出席番号

```plaintext
1 アリス
2 チャーリー
3 デーブ
4 エミリー
```

👆 この出席番号の1番目と2番目の間にボブを加えたいとき  

```plaintext
1 アリス       -->  1 アリス
               -->  2 ボブ
2 チャーリー   -->  3 チャーリー
3 デーブ       -->  4 デーブ
4 エミリー     -->  5 エミリー
```

👆 もともと2番以降の人たちを**リナンバリング**(=番号を昇順に振り直すこと)する手間が発生します  

リナンバリングしても、番号を振り直す手間が発生しないような便利な数字があったらいいな、というような過激な思想をもった人たちを**リナンバリンギスト**(Renumberingist)とでも呼ぶとしましょう。  
そんなリナンバリンギストのための数字が**リナンバリンギスト番号**(Renumberingist Number)、**renumnum**です  

# 例:リナンバリンギスト番号を使った出席番号

リナンバリンギスト番号を説明する前に、まずは使ってみましょう  

👇 以下が、リナンバリンギスト番号を使った出席番号です  

```plaintext
o1o0 アリス
o2o0 チャーリー
o3o0 デーブ
o4o0 エミリー
```

👆 この出席番号の1番目と2番目の間にボブを加えたいとき  

```plaintext
o1o0 アリス       -->  o1o0 アリス
                  -->  o1o5o0 ボブ
o2o0 チャーリー   -->  o2o0 チャーリー
o3o0 デーブ       -->  o3o0 デーブ
o4o0 エミリー     -->  o4o0 エミリー
```

👆 "1.5" の感覚で、既存の人の出席番号を変えず、ボブだけを順番の中に組み込めました  

👇 では次に、アリス(Alice)とボブ(Bob)の間にアン(Ann)が6人転入してきたケースも考えてみましょう  

```plaintext
o1o0 アリス       -->  o1o0 アリス
                  -->  o1o_9o0 アン
                  -->  o1o0o0 アン
                  -->  o1o1o0 アン
                  -->  o1o2o0 アン
                  -->  o1o3o0 アン
                  -->  o1o4o0 アン
o1o5o0 ボブ       -->  o1o5o0 ボブ
o2o0 チャーリー   -->  o2o0 チャーリー
o3o0 デーブ       -->  o3o0 デーブ
o4o0 エミリー     -->  o4o0 エミリー
```

👆 いくつかの挿入方法がありますが、アンを6人追加できました。 `_9` というのは、私たちがよく知っている数では -1 であることに注意してください。  
覚え方としては、 0 から 1 を引くと 9 になって1桁下がる、という感じです。  
-9 なら `_1`、 -10 なら `__9` になります  

また、 `o1o0 アリス` と `o1o0o0 アン` の出席番号をご覧ください。末尾に `o0` が常に付くというルールがあることにより、0番を後から追加したいが既存の 0番 と被ってしまう、という問題が回避されています  

👇 では、2人目のアンと3人目のアンの間に、またアンを挟んでみましょう

```plaintext
o1o0 アリス       -->  o1o0 アリス
o1o_9o0 アン      -->  o1o_9o0 アン
o1o0o0 アン       -->  o1o0o0 アン
                  -->  o1o0o5o0 アン
o1o1o0 アン       -->  o1o1o0 アン
o1o2o0 アン       -->  o1o2o0 アン
o1o3o0 アン       -->  o1o3o0 アン
o1o4o0 アン       -->  o1o4o0 アン
o1o5o0 ボブ       -->  o1o5o0 ボブ
o2o0 チャーリー   -->  o2o0 チャーリー
o3o0 デーブ       -->  o3o0 デーブ
o4o0 エミリー     -->  o4o0 エミリー
```

👆 問題なく挟めました。私たちがよく知っている数字でいうと "1.0.5" といったような感覚です  

👇 出席番号が2桁になったときは、以下のような手間が発生するので注意してください  

```plaintext
o1o0
o2o0
o3o0
oa10o0
```

👆 数字が1桁増えるたびに頭に `a` が付きます。 100 なら `oaa100o0` です。そう、桁数の多い数字は私たちが使い慣れている数字よりおよそ2倍の文字数になります。これは辞書順を従えさせるためのコストです  

```plaintext
o1o0
O1o0
O1O0
```

👆 lowercase、PascalCase、UPPERCASE のいずれでも構いません  

```plaintext
MAX_NUMBER_O1O0 = 99

class HelloWorldO1o0():
    def print_o1o0(self):
        pass
```

👆 リナンバリンギスト番号は、プログラム中でもなるべく記入できることを念頭に置いています  

# 解説

じゃあ出席番号に 1.0.5 や 1.5 を使えるようにすればいいだけではないのか? と思われるかもしれません  

```plaintext
1 アリス
1.0.5 アン
1.5 ボブ
2 チャーリー
```

👆 最近はソフトウェアも賢くなって、Visual Studio Code のエクスプローラーなどでは数字順に並んでくれます  

```plaintext
1.0.5 アン
1.5 ボブ
1 アリス
2 チャーリー
```

👆 そうでないケースでは、ASCII コード順に並んでしまうことがあります  

```plaintext
o1o0 アリス
o1o0o5o0 アン
o1o5o0 ボブ
o2o0 チャーリー
```

👆 リナンバリンギスト番号は、賢くなく ASCII コード順に並ぶソフトウェアでも順番通りに並んでくれます  

同様に、次の問題もリナンバリンギスト番号は解決してくれます  

```plaintext
10
1
2
3
```

👆 賢くないソフトウェアでは、 1 より前に 10 が並ぶケースはあるでしょう  

```plaintext
o1o0
o2o0
o3o0
oa10o0
```

👆 リナンバリンギスト番号は、賢くなく ASCII コード順に並ぶソフトウェアでも順番通りに並んでくれます  

負数では `_9` のようにアンダースコアを使いますが、コーディング規約などでアンダースコアを使ってはいけないケースもあるかもしれません。その際は、並び順が崩れてしまいますがアンダースコアの代わりに前ゼロを使って `09` で我慢しましょう  

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "renumnum",
    "maintainer": null,
    "docs_url": null,
    "requires_python": null,
    "maintainer_email": "\"Takahashi Satoshi (Handle Name:\u3080\u305a\u3067\u3087)\" <muzudho1@gmail.com>",
    "keywords": "notation, renumbering",
    "author": null,
    "author_email": "\"Takahashi Satoshi (Handle Name:\u3080\u305a\u3067\u3087)\" <muzudho1@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/fb/f0/04ffd028ba5bcc4df56674b092436a380892256fdcc335663a1fe4383221/renumnum-0.2.2.tar.gz",
    "platform": null,
    "description": "# renumnum\n\n**IP\u30a2\u30c9\u30ec\u30b9\u306ev4\u5f62\u5f0f** \uff08\u4f8b\u3048\u3070 128.0.0.1\uff09\u3084\u3001**\u30bb\u30de\u30f3\u30c6\u30a3\u30c3\u30af\u30fb\u30d0\u30fc\u30b8\u30e7\u30cb\u30f3\u30b0** \uff08\u4f8b\u3048\u3070 1.0.0\uff09\u3068\u3044\u3063\u305f\u30d4\u30ea\u30aa\u30c9\u533a\u5207\u308a\u306e\u6570\u5b57\uff08\u30d9\u30af\u30bf\u30fc\u306e\u3088\u3046\u306a\u3082\u306e\uff09\u304c\u4fbf\u5229\u306a\u3053\u3068\u306f\u77e5\u3089\u308c\u3066\u3044\u308b\u3067\u3057\u3087\u3046\u3002  \n\u3053\u306e\u30d4\u30ea\u30aa\u30c9\u533a\u5207\u308a\u306e\u6570\u5b57\u3092 **ASCII\u30b3\u30fc\u30c9\u9806\u3067\u756a\u53f7\u304c\u4e26\u3076** \u3088\u3046\u306b `OAA128o0o0o1o0` \u3084 `O1o0o0o0` \u3068\u3044\u3063\u305f\u6587\u5b57\u5217\u306b\u7b26\u53f7\u5316\u3001\u307e\u305f\u305d\u306e\u9006\u306e\u5fa9\u53f7\u5316\u3092\u884c\u3046\u30e9\u30a4\u30d6\u30e9\u30ea\u30fc\u304c **renumnum** \uff08**Renum**beringist **Num**ber\uff09\u3067\u3059  \n\n# Python \u30b9\u30af\u30ea\u30d7\u30c8\u306e\u66f8\u304d\u65b9\n\n\ud83d\udc47\u3000\u8aac\u660e\u306b\u5165\u308b\u524d\u306b\u3001\u307e\u305a\u3001\u4f7f\u3063\u3066\u307f\u307e\u3057\u3087\u3046  \n\n```py\nimport renumnum as rn\n\n# \u30ea\u30ca\u30f3\u30d0\u30ea\u30f3\u30ae\u30b9\u30c8\u756a\u53f7\uff08renumnum\uff09\u306e\u5909\u6570\u540d\u306f\u4f55\u3067\u3082\u69cb\u3044\u307e\u305b\u3093\u304c\u3068\u308a\u3042\u3048\u305a oo \u3068\u3057\u3066\u307f\u307e\u3057\u3087\u3046\nprint(\"\u6574\u6570\uff1a1\")\noo = rn.num(1)\nprint(str(oo))          # O1o0\nprint(oo.totuple())     # (1,)\nprint(oo.tolist())      # [1]\n\nprint(\"\u30b3\u30f3\u30de\u533a\u5207\u308a\u306e\u6574\u6570\uff1a128, 0, 0, 1\")\noo = rn.num(128, 0, 0, 1)\nprint(str(oo))          # OAA128o0o0o1o0\nprint(oo.totuple())     # (128, 0, 0, 1)\nprint(oo.tolist())      # [128, 0, 0, 1]\n\nprint(\"\u30b3\u30f3\u30de\u533a\u5207\u308a\u306e\u6574\u6570\uff1a1, 0, 0\")\noo = rn.num(1, 0, 0)\nprint(str(oo))          # O1o0o0o0\nprint(oo.totuple())     # (1, 0, 0)\nprint(oo.tolist())      # [1, 0, 0]\n\nprint(\"\u30bf\u30d7\u30eb\uff1a(1, 2)\")\noo = rn.num((1, 2))\nprint(str(oo))          # O1o2o0\nprint(oo.totuple())     # (1, 2)\nprint(oo.tolist())      # [1, 2]\n\nprint(\"\u30ea\u30b9\u30c8\uff1a[1, 2]\")\noo = rn.num([1, 2])\nprint(str(oo))          # O1o2o0\nprint(oo.totuple())     # (1, 2)\nprint(oo.tolist())      # [1, 2]\n\nprint(\"\u6587\u5b57\u5217\uff1a'1'\")\noo = rn.num('1')\nprint(str(oo))          # O1o0\nprint(oo.totuple())     # (1,)\nprint(oo.tolist())      # [1]\n\n#oo = rn.num('1, 2')   # error\n\n# \u672b\u5c3e\u306b o0 \u304c\u4ed8\u3044\u3066\u3044\u306a\u304f\u3066\u3082\u3001\u8f9e\u66f8\u9806\u756a\u53f7\u3068\u3057\u3066\u6709\u52b9\u3067\u3059\nprint(\"\u8f9e\u66f8\u9806\u756a\u53f7\uff08Dictionary order number\uff09\uff1a'_9'\")\noo = rn.num('_9')\nprint(str(oo))          # O_9o0\nprint(oo.totuple())     # (-1,)\nprint(oo.tolist())      # [-1]\n\nprint(\"\u540c\uff1a'A10'\")\noo = rn.num('A10')\nprint(str(oo))          # OA10o0\nprint(oo.totuple())     # (10,)\nprint(oo.tolist())      # [10]\n\n# \u672b\u5c3e\u306b o0 \u304c\u4ed8\u3044\u3066\u3044\u306a\u304f\u3066\u3082\u3001\u6570\u73e0\u7389\u8a18\u6570\u6cd5\u3068\u3057\u3066\u6709\u52b9\u3067\u3059\nprint(\"\u6570\u73e0\u7389\u8a18\u6570\u6cd5\uff08Beads notation\uff09\uff1a'O0'\")\noo = rn.num('O0')\nprint(str(oo))          # O0o0\nprint(oo.totuple())     # (0,)\nprint(oo.tolist())      # [0]\n\nprint(\"\u540c\uff1a'O1'\")\noo = rn.num('O1')\nprint(str(oo))          # O1o0\nprint(oo.totuple())     # (1,)\nprint(oo.tolist())      # [1]\n\n# \u30ea\u30ca\u30f3\u30d0\u30ea\u30f3\u30ae\u30b9\u30c8\u756a\u53f7\nprint(\"\u30ea\u30ca\u30f3\u30d0\u30ea\u30f3\u30ae\u30b9\u30c8\u756a\u53f7\uff08Renumberingist number\uff09\uff1a'O0o0'\")\noo = rn.num('O0o0')\nprint(str(oo))          # O0o0\nprint(oo.totuple())     # (0,)\nprint(oo.tolist())      # [0]\n\nprint(\"\u540c\uff1a'O1o0'\")\noo = rn.num('O1o0')\nprint(str(oo))          # O1o0\nprint(oo.totuple())     # (1,)\nprint(oo.tolist())      # [1]\n\n# \u6bd4\u8f03\nprint(\"O1o0 < O2o0\")\noo1 = rn.num('O1o0')\noo2 = rn.num('O2o0')\nprint(oo1 < oo2)        # True\n\nprint(\"O1o0 < O1o0o0\")\noo1 = rn.num('O1o0')\noo2 = rn.num('O1o0o0')\nprint(oo1 < oo2)        # True\n```\n\n\ud83d\udc46\u3000`O1o0` \u3084\u3001 `O1o2o0` \u3068\u3044\u3063\u305f\u6587\u5b57\u5217\u3092\u4f5c\u308b\u306e\u304c **renumnum** \u30e9\u30a4\u30d6\u30e9\u30ea\u30fc\u3060\u3068\u3044\u3046\u3053\u3068\u304c\u5206\u304b\u308a\u307e\u3059\u3002  \n(renumnum==0.2.2 \u304b\u3089) \u6bd4\u8f03\u6f14\u7b97\u5b50\u306b\u3082\u5bfe\u5fdc\u3057\u307e\u3057\u305f  \n\n# O1o0 \u3084\u3001 O1o2o0 \u3068\u3044\u3063\u305f\u6587\u5b57\u5217\u306e\u7528\u9014\n\n\u6b21\u306b\u3001\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u30fc\u3092\u5229\u7528\u3057\u3066\u3044\u308b\u5834\u9762\u3067\u3001\u30b9\u30ab\u30e9\u30fc\u6570\uff08\u30d4\u30ea\u30aa\u30c9\u3067\u533a\u5207\u3063\u3066\u3044\u306a\u3044\u79c1\u305f\u3061\u304c\u3088\u304f\u77e5\u3063\u3066\u3044\u308b 1 \u3068\u304b 2 \u3068\u3044\u3063\u305f\u6570\uff09\u3092\u4f7f\u3063\u3066\u3044\u308b\u3068\u304d\u306b**\u30ea\u30ca\u30f3\u30d0\u30ea\u30f3\u30b0\u3059\u308b\u3068\u8d77\u3053\u308a\u3084\u3059\u3044\u554f\u984c**\u3092\u8aac\u660e\u3057\u307e\u3059\u3002  \n\u6700\u5f8c\u306b\u3001`O1o0` \u3084\u3001 `O1o2o0` \u3068\u3044\u3063\u305f\u6587\u5b57\u5217\uff08\u540d\u524d\u306f**\u30ea\u30ca\u30f3\u30d0\u30ea\u30f3\u30ae\u30b9\u30c8\u756a\u53f7**\u3001**renumnum**\u3068\u3067\u3082\u3057\u307e\u3057\u3087\u3046\uff09\u3092\u8aac\u660e\u3057\u307e\u3059\u3002  \n\n# \u4f8b\uff1a\u79c1\u305f\u3061\u306e\u3088\u304f\u77e5\u3063\u3066\u3044\u308b\u6570\u5b57\u3092\u4f7f\u3063\u305f\u51fa\u5e2d\u756a\u53f7\n\n```plaintext\n1 \u30a2\u30ea\u30b9\n2 \u30c1\u30e3\u30fc\u30ea\u30fc\n3 \u30c7\u30fc\u30d6\n4 \u30a8\u30df\u30ea\u30fc\n```\n\n\ud83d\udc46\u3000\u3053\u306e\u51fa\u5e2d\u756a\u53f7\u306e\uff11\u756a\u76ee\u3068\uff12\u756a\u76ee\u306e\u9593\u306b\u30dc\u30d6\u3092\u52a0\u3048\u305f\u3044\u3068\u304d  \n\n```plaintext\n1 \u30a2\u30ea\u30b9       -->  1 \u30a2\u30ea\u30b9\n               -->  2 \u30dc\u30d6\n2 \u30c1\u30e3\u30fc\u30ea\u30fc   -->  3 \u30c1\u30e3\u30fc\u30ea\u30fc\n3 \u30c7\u30fc\u30d6       -->  4 \u30c7\u30fc\u30d6\n4 \u30a8\u30df\u30ea\u30fc     -->  5 \u30a8\u30df\u30ea\u30fc\n```\n\n\ud83d\udc46\u3000\u3082\u3068\u3082\u3068\uff12\u756a\u4ee5\u964d\u306e\u4eba\u305f\u3061\u3092**\u30ea\u30ca\u30f3\u30d0\u30ea\u30f3\u30b0**\uff08\uff1d\u756a\u53f7\u3092\u6607\u9806\u306b\u632f\u308a\u76f4\u3059\u3053\u3068\uff09\u3059\u308b\u624b\u9593\u304c\u767a\u751f\u3057\u307e\u3059  \n\n\u30ea\u30ca\u30f3\u30d0\u30ea\u30f3\u30b0\u3057\u3066\u3082\u3001\u756a\u53f7\u3092\u632f\u308a\u76f4\u3059\u624b\u9593\u304c\u767a\u751f\u3057\u306a\u3044\u3088\u3046\u306a\u4fbf\u5229\u306a\u6570\u5b57\u304c\u3042\u3063\u305f\u3089\u3044\u3044\u306a\u3001\u3068\u3044\u3046\u3088\u3046\u306a\u904e\u6fc0\u306a\u601d\u60f3\u3092\u3082\u3063\u305f\u4eba\u305f\u3061\u3092**\u30ea\u30ca\u30f3\u30d0\u30ea\u30f3\u30ae\u30b9\u30c8**\uff08Renumberingist\uff09\u3068\u3067\u3082\u547c\u3076\u3068\u3057\u307e\u3057\u3087\u3046\u3002  \n\u305d\u3093\u306a\u30ea\u30ca\u30f3\u30d0\u30ea\u30f3\u30ae\u30b9\u30c8\u306e\u305f\u3081\u306e\u6570\u5b57\u304c**\u30ea\u30ca\u30f3\u30d0\u30ea\u30f3\u30ae\u30b9\u30c8\u756a\u53f7**\uff08Renumberingist Number\uff09\u3001**renumnum**\u3067\u3059  \n\n# \u4f8b\uff1a\u30ea\u30ca\u30f3\u30d0\u30ea\u30f3\u30ae\u30b9\u30c8\u756a\u53f7\u3092\u4f7f\u3063\u305f\u51fa\u5e2d\u756a\u53f7\n\n\u30ea\u30ca\u30f3\u30d0\u30ea\u30f3\u30ae\u30b9\u30c8\u756a\u53f7\u3092\u8aac\u660e\u3059\u308b\u524d\u306b\u3001\u307e\u305a\u306f\u4f7f\u3063\u3066\u307f\u307e\u3057\u3087\u3046  \n\n\ud83d\udc47\u3000\u4ee5\u4e0b\u304c\u3001\u30ea\u30ca\u30f3\u30d0\u30ea\u30f3\u30ae\u30b9\u30c8\u756a\u53f7\u3092\u4f7f\u3063\u305f\u51fa\u5e2d\u756a\u53f7\u3067\u3059  \n\n```plaintext\no1o0 \u30a2\u30ea\u30b9\no2o0 \u30c1\u30e3\u30fc\u30ea\u30fc\no3o0 \u30c7\u30fc\u30d6\no4o0 \u30a8\u30df\u30ea\u30fc\n```\n\n\ud83d\udc46\u3000\u3053\u306e\u51fa\u5e2d\u756a\u53f7\u306e\uff11\u756a\u76ee\u3068\uff12\u756a\u76ee\u306e\u9593\u306b\u30dc\u30d6\u3092\u52a0\u3048\u305f\u3044\u3068\u304d  \n\n```plaintext\no1o0 \u30a2\u30ea\u30b9       -->  o1o0 \u30a2\u30ea\u30b9\n                  -->  o1o5o0 \u30dc\u30d6\no2o0 \u30c1\u30e3\u30fc\u30ea\u30fc   -->  o2o0 \u30c1\u30e3\u30fc\u30ea\u30fc\no3o0 \u30c7\u30fc\u30d6       -->  o3o0 \u30c7\u30fc\u30d6\no4o0 \u30a8\u30df\u30ea\u30fc     -->  o4o0 \u30a8\u30df\u30ea\u30fc\n```\n\n\ud83d\udc46\u3000\"1.5\" \u306e\u611f\u899a\u3067\u3001\u65e2\u5b58\u306e\u4eba\u306e\u51fa\u5e2d\u756a\u53f7\u3092\u5909\u3048\u305a\u3001\u30dc\u30d6\u3060\u3051\u3092\u9806\u756a\u306e\u4e2d\u306b\u7d44\u307f\u8fbc\u3081\u307e\u3057\u305f  \n\n\ud83d\udc47\u3000\u3067\u306f\u6b21\u306b\u3001\u30a2\u30ea\u30b9\uff08Alice\uff09\u3068\u30dc\u30d6\uff08Bob\uff09\u306e\u9593\u306b\u30a2\u30f3\uff08Ann\uff09\u304c\uff16\u4eba\u8ee2\u5165\u3057\u3066\u304d\u305f\u30b1\u30fc\u30b9\u3082\u8003\u3048\u3066\u307f\u307e\u3057\u3087\u3046  \n\n```plaintext\no1o0 \u30a2\u30ea\u30b9       -->  o1o0 \u30a2\u30ea\u30b9\n                  -->  o1o_9o0 \u30a2\u30f3\n                  -->  o1o0o0 \u30a2\u30f3\n                  -->  o1o1o0 \u30a2\u30f3\n                  -->  o1o2o0 \u30a2\u30f3\n                  -->  o1o3o0 \u30a2\u30f3\n                  -->  o1o4o0 \u30a2\u30f3\no1o5o0 \u30dc\u30d6       -->  o1o5o0 \u30dc\u30d6\no2o0 \u30c1\u30e3\u30fc\u30ea\u30fc   -->  o2o0 \u30c1\u30e3\u30fc\u30ea\u30fc\no3o0 \u30c7\u30fc\u30d6       -->  o3o0 \u30c7\u30fc\u30d6\no4o0 \u30a8\u30df\u30ea\u30fc     -->  o4o0 \u30a8\u30df\u30ea\u30fc\n```\n\n\ud83d\udc46\u3000\u3044\u304f\u3064\u304b\u306e\u633f\u5165\u65b9\u6cd5\u304c\u3042\u308a\u307e\u3059\u304c\u3001\u30a2\u30f3\u3092\uff16\u4eba\u8ffd\u52a0\u3067\u304d\u307e\u3057\u305f\u3002 `_9` \u3068\u3044\u3046\u306e\u306f\u3001\u79c1\u305f\u3061\u304c\u3088\u304f\u77e5\u3063\u3066\u3044\u308b\u6570\u3067\u306f -1 \u3067\u3042\u308b\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002  \n\u899a\u3048\u65b9\u3068\u3057\u3066\u306f\u3001 0 \u304b\u3089 1 \u3092\u5f15\u304f\u3068 9 \u306b\u306a\u3063\u3066\uff11\u6841\u4e0b\u304c\u308b\u3001\u3068\u3044\u3046\u611f\u3058\u3067\u3059\u3002  \n-9 \u306a\u3089 `_1`\u3001 -10 \u306a\u3089 `__9` \u306b\u306a\u308a\u307e\u3059  \n\n\u307e\u305f\u3001 `o1o0 \u30a2\u30ea\u30b9` \u3068 `o1o0o0 \u30a2\u30f3` \u306e\u51fa\u5e2d\u756a\u53f7\u3092\u3054\u89a7\u304f\u3060\u3055\u3044\u3002\u672b\u5c3e\u306b `o0` \u304c\u5e38\u306b\u4ed8\u304f\u3068\u3044\u3046\u30eb\u30fc\u30eb\u304c\u3042\u308b\u3053\u3068\u306b\u3088\u308a\u3001\uff10\u756a\u3092\u5f8c\u304b\u3089\u8ffd\u52a0\u3057\u305f\u3044\u304c\u65e2\u5b58\u306e 0\u756a \u3068\u88ab\u3063\u3066\u3057\u307e\u3046\u3001\u3068\u3044\u3046\u554f\u984c\u304c\u56de\u907f\u3055\u308c\u3066\u3044\u307e\u3059  \n\n\ud83d\udc47\u3000\u3067\u306f\u3001\uff12\u4eba\u76ee\u306e\u30a2\u30f3\u3068\uff13\u4eba\u76ee\u306e\u30a2\u30f3\u306e\u9593\u306b\u3001\u307e\u305f\u30a2\u30f3\u3092\u631f\u3093\u3067\u307f\u307e\u3057\u3087\u3046\n\n```plaintext\no1o0 \u30a2\u30ea\u30b9       -->  o1o0 \u30a2\u30ea\u30b9\no1o_9o0 \u30a2\u30f3      -->  o1o_9o0 \u30a2\u30f3\no1o0o0 \u30a2\u30f3       -->  o1o0o0 \u30a2\u30f3\n                  -->  o1o0o5o0 \u30a2\u30f3\no1o1o0 \u30a2\u30f3       -->  o1o1o0 \u30a2\u30f3\no1o2o0 \u30a2\u30f3       -->  o1o2o0 \u30a2\u30f3\no1o3o0 \u30a2\u30f3       -->  o1o3o0 \u30a2\u30f3\no1o4o0 \u30a2\u30f3       -->  o1o4o0 \u30a2\u30f3\no1o5o0 \u30dc\u30d6       -->  o1o5o0 \u30dc\u30d6\no2o0 \u30c1\u30e3\u30fc\u30ea\u30fc   -->  o2o0 \u30c1\u30e3\u30fc\u30ea\u30fc\no3o0 \u30c7\u30fc\u30d6       -->  o3o0 \u30c7\u30fc\u30d6\no4o0 \u30a8\u30df\u30ea\u30fc     -->  o4o0 \u30a8\u30df\u30ea\u30fc\n```\n\n\ud83d\udc46\u3000\u554f\u984c\u306a\u304f\u631f\u3081\u307e\u3057\u305f\u3002\u79c1\u305f\u3061\u304c\u3088\u304f\u77e5\u3063\u3066\u3044\u308b\u6570\u5b57\u3067\u3044\u3046\u3068 \"1.0.5\" \u3068\u3044\u3063\u305f\u3088\u3046\u306a\u611f\u899a\u3067\u3059  \n\n\ud83d\udc47\u3000\u51fa\u5e2d\u756a\u53f7\u304c\uff12\u6841\u306b\u306a\u3063\u305f\u3068\u304d\u306f\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u624b\u9593\u304c\u767a\u751f\u3059\u308b\u306e\u3067\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044  \n\n```plaintext\no1o0\no2o0\no3o0\noa10o0\n```\n\n\ud83d\udc46\u3000\u6570\u5b57\u304c\uff11\u6841\u5897\u3048\u308b\u305f\u3073\u306b\u982d\u306b `a` \u304c\u4ed8\u304d\u307e\u3059\u3002 100 \u306a\u3089 `oaa100o0` \u3067\u3059\u3002\u305d\u3046\u3001\u6841\u6570\u306e\u591a\u3044\u6570\u5b57\u306f\u79c1\u305f\u3061\u304c\u4f7f\u3044\u6163\u308c\u3066\u3044\u308b\u6570\u5b57\u3088\u308a\u304a\u3088\u305d\uff12\u500d\u306e\u6587\u5b57\u6570\u306b\u306a\u308a\u307e\u3059\u3002\u3053\u308c\u306f\u8f9e\u66f8\u9806\u3092\u5f93\u3048\u3055\u305b\u308b\u305f\u3081\u306e\u30b3\u30b9\u30c8\u3067\u3059  \n\n```plaintext\no1o0\nO1o0\nO1O0\n```\n\n\ud83d\udc46\u3000lowercase\u3001PascalCase\u3001UPPERCASE \u306e\u3044\u305a\u308c\u3067\u3082\u69cb\u3044\u307e\u305b\u3093  \n\n```plaintext\nMAX_NUMBER_O1O0 = 99\n\nclass HelloWorldO1o0():\n    def print_o1o0(self):\n        pass\n```\n\n\ud83d\udc46\u3000\u30ea\u30ca\u30f3\u30d0\u30ea\u30f3\u30ae\u30b9\u30c8\u756a\u53f7\u306f\u3001\u30d7\u30ed\u30b0\u30e9\u30e0\u4e2d\u3067\u3082\u306a\u308b\u3079\u304f\u8a18\u5165\u3067\u304d\u308b\u3053\u3068\u3092\u5ff5\u982d\u306b\u7f6e\u3044\u3066\u3044\u307e\u3059  \n\n# \u89e3\u8aac\n\n\u3058\u3083\u3042\u51fa\u5e2d\u756a\u53f7\u306b 1.0.5 \u3084 1.5 \u3092\u4f7f\u3048\u308b\u3088\u3046\u306b\u3059\u308c\u3070\u3044\u3044\u3060\u3051\u3067\u306f\u306a\u3044\u306e\u304b\uff1f\u3000\u3068\u601d\u308f\u308c\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093  \n\n```plaintext\n1 \u30a2\u30ea\u30b9\n1.0.5 \u30a2\u30f3\n1.5 \u30dc\u30d6\n2 \u30c1\u30e3\u30fc\u30ea\u30fc\n```\n\n\ud83d\udc46\u3000\u6700\u8fd1\u306f\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u3082\u8ce2\u304f\u306a\u3063\u3066\u3001Visual Studio Code \u306e\u30a8\u30af\u30b9\u30d7\u30ed\u30fc\u30e9\u30fc\u306a\u3069\u3067\u306f\u6570\u5b57\u9806\u306b\u4e26\u3093\u3067\u304f\u308c\u307e\u3059  \n\n```plaintext\n1.0.5 \u30a2\u30f3\n1.5 \u30dc\u30d6\n1 \u30a2\u30ea\u30b9\n2 \u30c1\u30e3\u30fc\u30ea\u30fc\n```\n\n\ud83d\udc46\u3000\u305d\u3046\u3067\u306a\u3044\u30b1\u30fc\u30b9\u3067\u306f\u3001ASCII \u30b3\u30fc\u30c9\u9806\u306b\u4e26\u3093\u3067\u3057\u307e\u3046\u3053\u3068\u304c\u3042\u308a\u307e\u3059  \n\n```plaintext\no1o0 \u30a2\u30ea\u30b9\no1o0o5o0 \u30a2\u30f3\no1o5o0 \u30dc\u30d6\no2o0 \u30c1\u30e3\u30fc\u30ea\u30fc\n```\n\n\ud83d\udc46\u3000\u30ea\u30ca\u30f3\u30d0\u30ea\u30f3\u30ae\u30b9\u30c8\u756a\u53f7\u306f\u3001\u8ce2\u304f\u306a\u304f ASCII \u30b3\u30fc\u30c9\u9806\u306b\u4e26\u3076\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u3067\u3082\u9806\u756a\u901a\u308a\u306b\u4e26\u3093\u3067\u304f\u308c\u307e\u3059  \n\n\u540c\u69d8\u306b\u3001\u6b21\u306e\u554f\u984c\u3082\u30ea\u30ca\u30f3\u30d0\u30ea\u30f3\u30ae\u30b9\u30c8\u756a\u53f7\u306f\u89e3\u6c7a\u3057\u3066\u304f\u308c\u307e\u3059  \n\n```plaintext\n10\n1\n2\n3\n```\n\n\ud83d\udc46\u3000\u8ce2\u304f\u306a\u3044\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u3067\u306f\u3001 1 \u3088\u308a\u524d\u306b 10 \u304c\u4e26\u3076\u30b1\u30fc\u30b9\u306f\u3042\u308b\u3067\u3057\u3087\u3046  \n\n```plaintext\no1o0\no2o0\no3o0\noa10o0\n```\n\n\ud83d\udc46\u3000\u30ea\u30ca\u30f3\u30d0\u30ea\u30f3\u30ae\u30b9\u30c8\u756a\u53f7\u306f\u3001\u8ce2\u304f\u306a\u304f ASCII \u30b3\u30fc\u30c9\u9806\u306b\u4e26\u3076\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u3067\u3082\u9806\u756a\u901a\u308a\u306b\u4e26\u3093\u3067\u304f\u308c\u307e\u3059  \n\n\u8ca0\u6570\u3067\u306f `_9` \u306e\u3088\u3046\u306b\u30a2\u30f3\u30c0\u30fc\u30b9\u30b3\u30a2\u3092\u4f7f\u3044\u307e\u3059\u304c\u3001\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u898f\u7d04\u306a\u3069\u3067\u30a2\u30f3\u30c0\u30fc\u30b9\u30b3\u30a2\u3092\u4f7f\u3063\u3066\u306f\u3044\u3051\u306a\u3044\u30b1\u30fc\u30b9\u3082\u3042\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002\u305d\u306e\u969b\u306f\u3001\u4e26\u3073\u9806\u304c\u5d29\u308c\u3066\u3057\u307e\u3044\u307e\u3059\u304c\u30a2\u30f3\u30c0\u30fc\u30b9\u30b3\u30a2\u306e\u4ee3\u308f\u308a\u306b\u524d\u30bc\u30ed\u3092\u4f7f\u3063\u3066 `09` \u3067\u6211\u6162\u3057\u307e\u3057\u3087\u3046  \n",
    "bugtrack_url": null,
    "license": "MIT License  Copyright (c) 2024 \u3080\u305a\u3067\u3087  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:  The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.",
    "summary": "Numbering notation for easy renumbering.",
    "version": "0.2.2",
    "project_urls": {
        "Repository": "https://github.com/muzudho/renumberingist-number.git"
    },
    "split_keywords": [
        "notation",
        " renumbering"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "cbdb0d868ffc5bc48417759bd3979f5341b9fcf3e0c93630f9c784e380f7f386",
                "md5": "cabb6935b32d9b60e904df48323db0e8",
                "sha256": "266cd99ea39b285c17e08e7afa4692fd696453864b8fd6a6915a422fa355b023"
            },
            "downloads": -1,
            "filename": "renumnum-0.2.2-py2.py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "cabb6935b32d9b60e904df48323db0e8",
            "packagetype": "bdist_wheel",
            "python_version": "py2.py3",
            "requires_python": null,
            "size": 11165,
            "upload_time": "2024-10-23T07:45:11",
            "upload_time_iso_8601": "2024-10-23T07:45:11.551078Z",
            "url": "https://files.pythonhosted.org/packages/cb/db/0d868ffc5bc48417759bd3979f5341b9fcf3e0c93630f9c784e380f7f386/renumnum-0.2.2-py2.py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "fbf004ffd028ba5bcc4df56674b092436a380892256fdcc335663a1fe4383221",
                "md5": "404e543f1a6e3026ed4b6f5a53230c99",
                "sha256": "a936b293dd94b34c93a5ab66a4709769064a1aa97176f9b574c94ee2c60eeaf8"
            },
            "downloads": -1,
            "filename": "renumnum-0.2.2.tar.gz",
            "has_sig": false,
            "md5_digest": "404e543f1a6e3026ed4b6f5a53230c99",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 11155,
            "upload_time": "2024-10-23T07:45:20",
            "upload_time_iso_8601": "2024-10-23T07:45:20.050201Z",
            "url": "https://files.pythonhosted.org/packages/fb/f0/04ffd028ba5bcc4df56674b092436a380892256fdcc335663a1fe4383221/renumnum-0.2.2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-10-23 07:45:20",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "muzudho",
    "github_project": "renumberingist-number",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "renumnum"
}
        
Elapsed time: 3.79384s