非専門的シンギュラリティー研究所

無限に動き続けるシステムを表す方法を AI なども使って考えていきます。

証明路開発支援システム(3)

クラスに分割したときの仕様です。これはまだ変更する可能性があります。

Env クラス

変数の現在の状態を表すクラスです。

public bool IsSelectable(string expstr)

ノードが選択可能であるかどうかを返します。expstr (この名前はわかりにくいので変更する予定)はノードのテキストの全体です。

public void SetNumber(string expstr)

変数に値を設定します。expstr (この名前はわかりにくいので変更する予定)はノードのテキストの全体です。

MazeState クラス

private bool inBranchMode (= false)

現在選択モードかどうかを表します。

public void MoveBackward()

前進モードのとき
  • 前の兄弟ノードがあるとき
    • 前の兄弟ノードに移動
    • 現在の表示とその上の道の表示を消す
  • 前の兄弟ノードがないとき
    • 何もしない
選択モードのとき
  • 上位のノードがあるとき
    • 上位のノードに移動
    • 現在の表示とその上の道の表示を消す
    • 前進モードに戻す
  • 上位のノードがないとき
    • 何もしない

public void MoveForeward()

前進モードのとき
  • 下位の選択可能なノードがあるとき
    • 下位の最初の選択可能なノードに移動
    • 現在の表示はそのまま
    • その下に道とテキストを表示
    • 前進モードに戻す
  • 下位の選択可能なノードがないとき
    • 何もしない
選択モードのとき
  • 選択ノード(下位のノードから選択するノード)のとき
    • 下位の選択可能なノードがあるとき
      • 下位の最初の選択可能なノードに移動
      • 現在の表示はそのまま
      • その下に道と選択候補テキストを表示
      • 選択モードにする
    • 下位の選択可能なノードがないとき
      • 何もしない
  • 選択ノード(下位のノードから選択するノード)ではないとき
    • 次の兄弟ノードがあるとき
      • 次の兄弟ノードに移動
      • 現在の表示はそのまま
      • その下に道とテキストを表示
    • 次の兄弟ノードがないとき
      • 何もしない

public void MoveLeft()

前進モードのとき
  • 何もしない
選択モードのとき
  • 前の選択可能な兄弟ノードがあるとき
    • 前の選択可能な兄弟ノードに移動
    • 現在の表示を消す
    • 選択候補テキストを表示
  • 最後の選択可能な兄弟ノードがあるとき
    • 最後の選択可能な兄弟ノードに移動
    • 現在の表示を消す
    • 選択候補テキストを表示
  • 前の選択可能な兄弟ノードも最後の選択可能な兄弟ノードもないとき
    • 何もしない

public void MoveRight()

前進モードのとき
  • 何もしない
選択モードのとき
  • 次の選択可能な兄弟ノードがあるとき
    • 次の選択可能な兄弟ノードに移動
    • 現在の表示を消す
    • 選択候補テキストを表示
  • 最初の選択可能な兄弟ノードがあるとき
    • 最初の選択可能な兄弟ノードに移動
    • 現在の表示を消す
    • 選択候補テキストを表示
  • 次の選択可能な兄弟ノードも最初の選択可能な兄弟ノードもないとき
    • 何もしない

class TreeData

public TreeData(string name)

コンストラクターです。ノードのテキストを設定します。name は名前が適切ではないので変更する予定です。

public void AddNode(TreeData node)

ノードを追加します。

public TreeData? GetNextSibling()

次の兄弟ノードを取得します。次の兄弟ノードがないときは null を返します。

public bool HasNextSibling()

次の兄弟ノードがあるかどうかを調べます。

public TreeData? GetPrevSibling()

前の兄弟ノードを取得します。前の兄弟ノードがないときは null を返します。

public bool HasPrevSibling()

前の兄弟ノードがあるかどうかを調べます。

public TreeData GetFirstChild()

下位の最初のノードを取得します。

public TreeData GetLastChild()

下位の最後のノードを取得します。

public bool HasChild()

下位のノードがあるかどうかを調べます。

public bool IsBranch()

「選択ノード」(下位のノードのどれかを選択するノード)かどうかを調べます。

public bool IsGoal()

ゴールかどうかを調べます。

public bool IsNumbered()

数値を設定するノードかどうかを調べます。

public bool IsSelectable(Env env)

選択可能な選択肢のノードかどうかを調べます。