📏

要素番号と境目番号、閉区間と半開区間

2024/04/02に公開

初めに

  • 0-basedな番号を使用します。
    • 一番最初を0番目と呼ぶ
  • 配列の基本的な操作を前提とします。
    • 単一要素の取得と、範囲での取得がわかればOKです。
  • 半開区間、閉区間という単語を前提とします。
    • 半開区間は[0, 3)のように表記し0以上3未満の範囲を示します。
    • 閉区間は[0, 3]のように表記し0以上3以下の範囲を示します。
  • 要素番号と境目番号という単語は厳密に正しいかわかりませんが、呼び名が欲しいのでそう呼びます。

説明する内容

要素番号と境目番号はごっちゃになるとバグらせやすいなと感じています。
今どちらの種類の番号を使っているのかを意識することで、バグらせにくくなります。
そのための、2種類の番号の関係性を説明します。

2種類の番号(index)

説明のために配列の例を挙げます。
以後この配列をAと呼びます。

A = [12, 43, 23, 101, 5]
  • 要素番号
    • 要素に前から番号を振ります。
      • Aの0番目は12
      • Aの1番目は43
    • Aにおいて、0~4が有効な要素番号です。
  • 境目番号
    • 要素と要素の境目に対して番号を振ります。
    • 例えばAに対して、境目番号で1から3の範囲を考えると[42, 23]となります。
    • Aにおいて0~5が有効な境目番号です。

2種類の番号の違い

A = [12, 43, 23, 101, 5]
  • 番号を振っているもの
    • 名前にある通り、何に番号を振っているのかが違います。
  • 番号の取れる範囲
    • Aに対して有効な要素番号は0~4です(5にすると指し示すべき要素がない状態になってしまう)
    • Aに対して有効な境目番号は0~5です(0が左端、5が右端を指します)

半開区間、閉区間との関係

(番号が整数であるので)

  • 要素番号の半開区間が
  • 境目番号の閉区間
    となります。
A = [12, 43, 23, 101, 5]
  • 要素番号でAの[2, 4)を取得すると [23, 101]
  • 境目番号でAの[2, 4]を取得すると [23, 101] となり同じになる。
    具体的な番号を変えても同じように言い換えが可能です。

範囲について考えるときに、2つの表現を行き来できると良い。

まとめ

  • 要素番号の半開区間が、境目番号の閉区間 である。
  • いま 何番号何区間 を使っているかを意識すると良い。

おわりに

何か書くべきことが足りていない気がするので、説明が不十分だと感じるところがあれば教えてください。

Discussion