生成具有混合顺序的多个组合的字符串列表

Generating a list of strings of multiple combinations with intermingled order

我正在使用 jsPsych 为教授设置一个认知实验,其中刺激物是大约 200 个形式为 T ∧ F ∨ T 的逻辑语句,具有 4 种不同的间距类型.我需要找到一种方法来生成 three 真值、two 逻辑运算符和 four 的每种组合] 间距类型,以正确的顺序编写,无需手动输入(希望如此)。

具体如下:

间距类型(其中--代表space):

1) T∧T∨T即没有space, 2) T∧--T∨T, 3) T∧T--∨T, 4) T∧--T--∨T

运算符:

1) ∧ ∧ , 2) ∨ ∨ , 3) ∧ ∨ , 4) ∨∧

真值:

T 和 F 的所有 3 个组合(共有 8 个)。 Ex: T T T, T T F, F T F, F F F,等等

所以我需要遍历这三个东西的所有组合,将它们组合成字符串(写在html),并生成一个包含所有字符串的列表或数组(大约有200)。我是 cs 的新手,所以非常感谢任何帮助解决这个问题,这对我来说太多了!

注意感谢评论者指出我没有包含我尝试过的内容。

我已经使用 3-5 个嵌套的 for 循环尝试了一段时间。我最初设置了一个大小为 7 的数组(因为这是字符串的最长可能长度)并使用 for 循环填充数组的 spaces。使用这条路线我几乎完全没有成功。它看起来很有前途,也许我可以让它工作,但它也很不优雅而且很长,我现在想知道是否有更直接的方法来做到这一点。同样,由于我是新手,因此可能有我不知道的资源。

谢谢!

为了加快速度,我会使用 js-combinatorics

Combinatorics.cartesianProduct(
    ['     ', '--   ', '   --', '-- --'],
    ['^^', 'vv', '^v', 'v^'],
    [ true, false ],
    [ true, false ],
    [ true, false ]
).toArray()

感谢之前的回答让我看到 js-combinatorics。事实证明,您发布的代码无法正常工作(因为每个数组都对应于该位置)。但它帮助我弄明白了。

Combinatorics.cartesianProduct(
            ['T', 'F'],
            ['∧', '∨'],
            ['T', 'F'],
            ['∧', '∨'],
            ['T', 'F']
    ).toArray();

然后在使用简单循环生成该列表后,需要添加每种间距类型的空格。

jsPsych 有 a built in factorial method 用于这种情况。

文档中的示例:

var factors = {
    stimulus: ['a.jpg', 'b.jpg'],
    ms_delay: [100, 200]
}

var full_design = jsPsych.randomization.factorial(factors, 1);

/*
output:
full_design = [
    {stimulus: 'a.jpg', ms_delay: 200},
    {stimulus: 'b.jpg', ms_delay: 200},
    {stimulus: 'b.jpg', ms_delay: 100},
    {stimulus: 'a.jpg', ms_delay: 100},
]
*/

您可以根据您的问题调整它,但您随后需要对输出进行一些整理,以使其成为您正在寻找的确切格式。