ノード一覧に戻る

直積組み合わせ

cartesian_product

リスト A とリスト B の全組み合わせを作ります

下書き
解説あり

入力ポート

名前説明
A
a
List<Any>
必須
1つ目の元リストです
B
b
List<Any>
必須
2つ目の元リストです

出力ポート

名前説明
組み合わせ
entries
List<Map>
全ての { a, b } 組み合わせです
要素数
count
Int
生成した組み合わせ数です

まず大事なこと

  • ListZip が「同じ番号どうし」なのに対して、CartesianProduct全組み合わせ です
  • 2 件 x 3 件なら 6 件になります

まずはこの例

次の 2 つのリストを入れます。

a = ["small", "large"]
b = ["red", "blue", "green"]

このとき entries はこうなります。

[
  { "index": 0, "a_index": 0, "b_index": 0, "a": "small", "b": "red" },
  { "index": 1, "a_index": 0, "b_index": 1, "a": "small", "b": "blue" },
  { "index": 2, "a_index": 0, "b_index": 2, "a": "small", "b": "green" },
  { "index": 3, "a_index": 1, "b_index": 0, "a": "large", "b": "red" },
  { "index": 4, "a_index": 1, "b_index": 1, "a": "large", "b": "blue" },
  { "index": 5, "a_index": 1, "b_index": 2, "a": "large", "b": "green" }
]
count = 6

後段からどう見えるか

ListMapListFilter にこの entries を入れると、

  • index
  • a_index
  • b_index
  • a
  • b

をそのまま式で使えます。

例:

a_index == 0
a + b

Variant 系との相性

abVariantRecord のリストを入れると、後段の BatchRenderab の中の snapshot を自動でまとめて使えます。
つまり、「強度候補 x seed 候補」のような多軸量産の前段として便利です。

どういう時に使うか

  • seed 候補と別パラメータ候補の全組み合わせを作りたい時
  • 2軸の候補空間を明示データとして作りたい時
  • variant 候補生成前の batch 候補テーブルを作りたい時

注意

  • a.len() * b.len() 件になるので、候補数が一気に増えます
  • PaletteList<Color> として扱います
ノード一覧に戻る
直積組み合わせ — PixPipeline ノード解説