tips007
データとツリー④
— Data Tree
Params ▸ Util ▸ Param Viewer
GH がデータを入れておく形の呼び名。
項目(Item)がリスト(List)にまとまり、リストが集まってツリー(Tree)になる。
何をつなぐか
- 中身を見たい出力から Param Viewer(つないだデータの構造だけを表示するコンポーネント)につなぐ。
ダブルクリックすると、テキストの表示と図の表示が入れ替わる(右クリックのDraw Treeでも同じ) - まとめたいデータは Merge の D1・D2 につなぐ。
入力は2つから始まり、D2をつなぐとD3が自動で増える(空のままなら結果は変わらない)
パスの読み方
{0} | 段が1つ。リストが1本しかないときの形。図のグレーの枠の、左端の2つのパネルの見出し |
|---|---|
{0;0} | 段が2つ。上の段が 0 で、下の段が 0。Graft(パスを1段増やすコンポーネント・tips006)を通した右のパネルの 10 |
{0;1} | 段が2つ。上の段は {0;0} と同じ 0 で、下の段だけ 1。同じパネルの 20 |
リスト1本ごとに付く番号がパス(Path)。; で段を区切って書き、左が上の段・右が下の段。どの段も 0 から数える。
同じパスどうしが組み合わされる
コンポーネントは、入ってきた2つのデータを同じパスの中身どうしで組み合わせる。
図の①は、パスをそろえた2つのツリーを Addition につないだもの。
{0;0} | A の 10 と B の 1 → 11 |
|---|---|
{0;1} | A の 20 と B の 2 → 22 |
{0;2} | A の 30 と B の 3 → 33 |
片方のリストが足りないときは、足りない側の最後のリストが繰り返し使われる。
図の②は B が2リストしかない形で、{0;2} は 30 と B の最後の 2 が足されて 32 になる。
Merge はパスごとに合流する
Merge(Sets ▸ Tree)は、D1 と D2 につないだデータを1つにまとめるコンポーネント。
まとめ方はパスが決める。
③同じパス — 3リストのまま、中身が2項目ずつ
| {0;0} | 10 | 1 |
|---|---|---|
| {0;1} | 20 | 2 |
| {0;2} | 30 | 3 |
④違うパス — 合流せず、4リストが並ぶ
| {0} | 1, 2, 3 |
|---|---|
| {0;0} | 10 |
| {0;1} | 20 |
| {0;2} | 30 |
同じパスに入ってきたものは、1本のリストにつながる。{0} と {0;0} は段の数が違うので別のパス。だから混ざらずに並ぶ。
Param Viewer で確かめる
Data with 3 branches(図の⑤) — ツリーに入っているリストが3本という意味{0;0}の右のN = 2— そのリストに項目が2つ入っている- 図の表示は、中心から線が分かれて先端に点が付く形。
点1つが1リストで、リストが増えれば点も増える
使いどころ
- 結果の数が思ったのと違うとき、つないだ両側のパスを見比べる。
段の数がそろっていなければ、そこが原因。 - ばらばらのリストを1つに集めるときは Merge。
混ぜたくないものは、先にパスを分けておく。 - パスの段を増やす・減らすのは Graft と Flatten(tips006)。
注意
Param Viewer に出るのはパスと項目の数だけ。
値そのものは出ないので、中身を読むときは Panel をつなぐ。
足りないリストを繰り返すのは、Addition のように2つを組み合わせるコンポーネントの振る舞い。
Merge は繰り返さないので、3リストと2リストをつなぐと {0;2} は 30 だけになる。
数の範囲を表す Domain は、用語ひとこと辞典②で扱う。