まず大事なこと
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
後段からどう見えるか
ListMap や ListFilter にこの entries を入れると、
indexa_indexb_indexab
をそのまま式で使えます。
例:
a_index == 0
a + b
Variant 系との相性
a と b に VariantRecord のリストを入れると、後段の BatchRender は a と b の中の snapshot を自動でまとめて使えます。
つまり、「強度候補 x seed 候補」のような多軸量産の前段として便利です。
どういう時に使うか
- seed 候補と別パラメータ候補の全組み合わせを作りたい時
- 2軸の候補空間を明示データとして作りたい時
- variant 候補生成前の batch 候補テーブルを作りたい時
注意
a.len() * b.len()件になるので、候補数が一気に増えますPaletteはList<Color>として扱います