tag:crieit.net,2005:https://crieit.net/tags/%E9%9B%BB%E8%84%B3%E8%A8%98%E6%95%B0%E6%B3%95/feed 「電脳記数法」の記事 - Crieit Crieitでタグ「電脳記数法」に投稿された最近の記事 2022-08-04T00:24:28+09:00 https://crieit.net/tags/%E9%9B%BB%E8%84%B3%E8%A8%98%E6%95%B0%E6%B3%95/feed tag:crieit.net,2005:PublicArticle/18246 2022-07-17T23:49:07+09:00 2022-08-04T00:24:28+09:00 https://crieit.net/posts/Cyber-Number-Notation 電脳向量表記 (Cyber Vector Notation) <p>👇 「電脳向量表記」を発案したので Qiita に書こうとしたら「投稿頻度が高すぎます」とかいう わたしの投稿頻度とウマの合わない注意が出てきて 新規記事を投稿できなくなったので Crieit に書く</p> <p><a href="https://crieit.now.sh/upload_images/e50f1f2ca0695f87455d620d10b3df9362e6abafb7461.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/e50f1f2ca0695f87455d620d10b3df9362e6abafb7461.png?mw=700" alt="202208__Others__01_0038_qiita.png" /></a></p> <p>一度に説明するのは難しいので、要点を分けて1つずつ説明する</p> <h1 id="O_9o0 序文"><a href="#O_9o0+%E5%BA%8F%E6%96%87">O_9o0 序文</a></h1> <p>BASICの行番号で <code>1</code>, <code>2</code>, <code>3</code> と振り番すると、あとで <code>2</code> と <code>3</code> の間に1行はさみたいときに<br /> 挟めなくて困るから、行番号は <code>10</code>, <code>20</code>, <code>30</code> と振りなさい、と教えられる。<br /> あとで <code>20</code> と <code>30</code> の間に <code>25</code> を挟めるから なるほど! と思ったが、<br /> じゃあ <code>25</code> と <code>26</code> の間に挟みたいときはどうするのか! という長年の疑問から<br /> 後からいくらでも挟めるような振り番が欲しかったので 仕様を発案した。<br /> 数値型ではなく <strong>文字列型の辞書順</strong> を利用する</p> <h1 id="O1o0 格納構造"><a href="#O1o0+%E6%A0%BC%E7%B4%8D%E6%A7%8B%E9%80%A0">O1o0 格納構造</a></h1> <h2 id="O1o1o0 もととなる数"><a href="#O1o1o0+%E3%82%82%E3%81%A8%E3%81%A8%E3%81%AA%E3%82%8B%E6%95%B0">O1o1o0 もととなる数</a></h2> <pre><code class="plain">[1 2 3 4] </code></pre> <p>👆 もととなる数は、要素を整数とするベクトルを想定している</p> <h2 id="O1o2o0 電脳向量"><a href="#O1o2o0+%E9%9B%BB%E8%84%B3%E5%90%91%E9%87%8F">O1o2o0 電脳向量</a></h2> <pre><code class="plain">[1 2 3 4 0] </code></pre> <p>👆 要素を整数とするベクトルで、右端の要素が 0 のものを <strong>電脳向量</strong> (Cyber Vector) と呼ぶことにする</p> <h2 id="O1o3o0 右端に 0 の要素を追加する操作"><a href="#O1o3o0+%E5%8F%B3%E7%AB%AF%E3%81%AB+0+%E3%81%AE%E8%A6%81%E7%B4%A0%E3%82%92%E8%BF%BD%E5%8A%A0%E3%81%99%E3%82%8B%E6%93%8D%E4%BD%9C">O1o3o0 右端に 0 の要素を追加する操作</a></h2> <pre><code class="plain">[1 2 3 4] │ │ trail_zero ↓ [1 2 3 4 0] </code></pre> <p>👆 右端の要素が 0 でない場合、 1列増やして 0 を入れる。<br /> これを <strong>trail_zeroルール</strong> と呼ぶことにする。 <code>With trailing zero</code> の略</p> <pre><code class="plain">[1 2 3 4 0] │ │ trail_zero ↓ [1 2 3 4 0 0] </code></pre> <p>👆 この操作をもう一度行うと、さらに 1列増やして 0 を入れる</p> <h1 id="O2o0 電脳向量の表記の手順"><a href="#O2o0+%E9%9B%BB%E8%84%B3%E5%90%91%E9%87%8F%E3%81%AE%E8%A1%A8%E8%A8%98%E3%81%AE%E6%89%8B%E9%A0%86">O2o0 電脳向量の表記の手順</a></h1> <h2 id="O2o1o0 Ignore case"><a href="#O2o1o0+Ignore+case">O2o1o0 Ignore case</a></h2> <ul> <li>大文字と小文字は区別しない</li> </ul> <h2 id="O2o2o0 零,または1桁の正の整数を要素にするベクトルの例"><a href="#O2o2o0+%E9%9B%B6%EF%BC%8C%E3%81%BE%E3%81%9F%E3%81%AF1%E6%A1%81%E3%81%AE%E6%AD%A3%E3%81%AE%E6%95%B4%E6%95%B0%E3%82%92%E8%A6%81%E7%B4%A0%E3%81%AB%E3%81%99%E3%82%8B%E3%83%99%E3%82%AF%E3%83%88%E3%83%AB%E3%81%AE%E4%BE%8B">O2o2o0 零,または1桁の正の整数を要素にするベクトルの例</a></h2> <p>👇 以下のようなベクトルがあるとする</p> <pre><code class="plain">[1 2 3 4 0] </code></pre> <p>👇 角括弧を外す</p> <pre><code class="plain">1 2 3 4 0 </code></pre> <p>👇 区切りとして <code>o</code> を使う。間隔は空けずに詰める</p> <pre><code class="plain">1o2o3o4o0 </code></pre> <p>👇 左端に <code>O</code> を付ける。間隔は空けずに詰める</p> <pre><code class="plain">O1o2o3o4o0 </code></pre> <p>これが <strong>電脳向量表記</strong> の代表的なケースだ</p> <h2 id="O2o3o0 2桁以上の正の整数を要素にするベクトルの例"><a href="#O2o3o0+2%E6%A1%81%E4%BB%A5%E4%B8%8A%E3%81%AE%E6%AD%A3%E3%81%AE%E6%95%B4%E6%95%B0%E3%82%92%E8%A6%81%E7%B4%A0%E3%81%AB%E3%81%99%E3%82%8B%E3%83%99%E3%82%AF%E3%83%88%E3%83%AB%E3%81%AE%E4%BE%8B">O2o3o0 2桁以上の正の整数を要素にするベクトルの例</a></h2> <p>👇 以下のようなベクトルがあるとする</p> <pre><code class="plain">[21 321 4321 0] </code></pre> <p>👇 角括弧を外す</p> <pre><code class="plain">21 321 4321 0 </code></pre> <p>👇 区切りとして <code>o</code> を使う。間隔は空けずに詰める</p> <pre><code class="plain">21o321o4321o0 </code></pre> <p>👇 <code>桁数×2-1</code> の横幅があると考える</p> <pre><code class="plain"> 21o 321o 4321o0 - -- --- </code></pre> <p>👇 <code>前A</code> を詰める</p> <pre><code class="plain">A21oAA321oAAA4321o0 - -- --- </code></pre> <p>👇 左端に <code>O</code> を付ける。間隔は空けずに詰める</p> <pre><code class="plain">OA21oAA321oAAA4321o0 </code></pre> <p>これも <strong>電脳向量表記</strong> だ</p> <h2 id="O2o4o0 負の整数を要素にするベクトルの例"><a href="#O2o4o0+%E8%B2%A0%E3%81%AE%E6%95%B4%E6%95%B0%E3%82%92%E8%A6%81%E7%B4%A0%E3%81%AB%E3%81%99%E3%82%8B%E3%83%99%E3%82%AF%E3%83%88%E3%83%AB%E3%81%AE%E4%BE%8B">O2o4o0 負の整数を要素にするベクトルの例</a></h2> <p>👇 以下のようなベクトルがあるとする</p> <pre><code class="plain">[-1 -21 -321 -4321 0] </code></pre> <p>👇 角括弧を外す</p> <pre><code class="plain">-1 -21 -321 -4321 0 </code></pre> <p>👇 区切りとして <code>o</code> を使う。間隔は空けずに詰める</p> <pre><code class="plain">-1o-21o-321o-4321o0 </code></pre> <p>👇 負数の符号 <code>-</code> を外すとともに、 <code>残った桁数×2</code> の横幅があると考えて、 <code>前_</code> を詰める</p> <pre><code class="plain">_1o__21o___321o____4321o0 </code></pre> <p>👇 負数だったその残った数より1桁多い数の中で最小の数を 上に添える</p> <pre><code class="plain">10 100 1000 10000 _1o__21o___321o____4321o0 </code></pre> <p>👇 引く</p> <pre><code class="plain">10 100 1000 10000 _1o__21o___321o____4321o0 -- --- ---- ----- _9o__79o___679o____5679o0 </code></pre> <p>👇 その差の左端に <code>O</code> を付ける。間隔は空けずに詰める</p> <pre><code class="plain">O_9o__79o___679o____5679o0 </code></pre> <p>これも <strong>電脳向量表記</strong> だ</p> <h1 id="O2o5o0 電脳向量表記の結合"><a href="#O2o5o0+%E9%9B%BB%E8%84%B3%E5%90%91%E9%87%8F%E8%A1%A8%E8%A8%98%E3%81%AE%E7%B5%90%E5%90%88">O2o5o0 電脳向量表記の結合</a></h1> <p>👇 以下の2つのベクトルを1つにまとめたいとき</p> <pre><code class="plaintext">[1 0] [2 0] </code></pre> <p>👇 まず それぞれを電脳向量表記にする</p> <pre><code class="plaintext">O1o0 O2o0 </code></pre> <p>👇 <code>g</code> でつなぐ。間隔は詰める。 <code>g</code> の右隣の <code>O</code> は除去する</p> <pre><code class="plaintext">O1o0g2o0 </code></pre> <h1 id="O3o0 テクニック"><a href="#O3o0+%E3%83%86%E3%82%AF%E3%83%8B%E3%83%83%E3%82%AF">O3o0 テクニック</a></h1> <h1 id="O3o1o0 兄弟の追加"><a href="#O3o1o0+%E5%85%84%E5%BC%9F%E3%81%AE%E8%BF%BD%E5%8A%A0">O3o1o0 兄弟の追加</a></h1> <p>「数がすぐ足りなり要素の数を増やす」ことが頻発することがある。<br /> この増加速度を遅くすることが実用のために推奨となる</p> <p>👇 <code>[2 0]</code> と <code>[3 0]</code> の間に数を挿入するときのテクニック</p> <pre><code class="plaintext"> [2 0] [3 0] </code></pre> <p>👇 (例) <code>[3 0]</code> の方に <code>[0 -9]</code> 増やす</p> <pre><code class="plaintext"> [2 0] 👉 [3 -9 0] [3 0] </code></pre> <p>👇 <code>[3 -1 0]</code> と <code>[3 0]</code> の間に数を挿入するときの推奨のテクニック</p> <pre><code class="plaintext"> [3 -1 0] [3 0] </code></pre> <p>👇 (例) <code>[3 0]</code> の方に <code>[0 0 -99]</code> 増やす</p> <pre><code class="plaintext"> [3 -1 0] 👉 [3 0 -99 0] [3 0] </code></pre> <p>👇 <code>[3 0 -99 0]</code> と <code>[3 0]</code> の間に数を挿入するときの推奨のテクニック</p> <pre><code class="plaintext"> [3 0 -99 0] [3 0] </code></pre> <p>👇 (例) <code>[3 0]</code> の方に <code>[0 0 0 -999]</code> 増やす</p> <pre><code class="plaintext"> [3 0 -99 0] 👉 [3 0 0 -999 0] [3 0] </code></pre> <p>以降、同様に1桁ずつ増えていく</p> <h1 id="OAA100o0 関連する記事"><a href="#OAA100o0+%E9%96%A2%E9%80%A3%E3%81%99%E3%82%8B%E8%A8%98%E4%BA%8B">OAA100o0 関連する記事</a></h1> <h2 id="OAA100o1o0 Pythonコード"><a href="#OAA100o1o0+Python%E3%82%B3%E3%83%BC%E3%83%89">OAA100o1o0 Pythonコード</a></h2> <p>Example: 📖 <a target="_blank" rel="nofollow noopener" href="https://github.com/muzudho/cyber-vector-notation">cyber-vector-notation</a></p> <h2 id="OAA100o2o0 辞書順記数法"><a href="#OAA100o2o0+%E8%BE%9E%E6%9B%B8%E9%A0%86%E8%A8%98%E6%95%B0%E6%B3%95">OAA100o2o0 辞書順記数法</a></h2> <p>📖 <a href="https://crieit.net/posts/Dictionary-Ordinal-Number-Notation">辞書順記数法 Crieit版</a> - ブログ<br /> 📖 <a target="_blank" rel="nofollow noopener" href="https://qiita.com/muzudho1/items/95852145eceddecd1503">辞書順記数法 Qiita版</a> - 固い記事</p> <h2 id="OAA100o3o0 数珠玉表記"><a href="#OAA100o3o0+%E6%95%B0%E7%8F%A0%E7%8E%89%E8%A1%A8%E8%A8%98">OAA100o3o0 数珠玉表記</a></h2> <p>📖 <a href="https://crieit.net/posts/Beads-Nested-Number-Notation">数珠玉表記 Crieit版</a> - ブログ<br /> 📖 <a target="_blank" rel="nofollow noopener" href="https://qiita.com/muzudho1/items/7aafcf17fc4bb8fe551b">数珠玉表記</a> - 固い記事</p> <h2 id="OAA100o4o0 電脳向量表記"><a href="#OAA100o4o0+%E9%9B%BB%E8%84%B3%E5%90%91%E9%87%8F%E8%A1%A8%E8%A8%98">OAA100o4o0 電脳向量表記</a></h2> <p>👇 辞書順記数法と 数珠玉記数法を組み合わせたもの</p> <p>📖 <a href="https://crieit.net/posts/Cyber-Number">電脳向量表記 Crieit版 ブログ</a> - ブログ<br /> 📖 <code>電脳向量表記 Crieit版 固い記事</code> - この記事</p> <p>おわり</p> むずでょ