我正在使用jsPsych为教授设置认知实验,其中刺激是大约200个具有4种不同间距类型的形式T∧F∨T的逻辑陈述。我需要找到一种方法来生成三个真值,两个逻辑运算符和四个间距类型的每个组合,以正确的顺序编写,无需手动输入所有内容(希望如此)。
具体内容如下:
间距类型(其中 - 代表空格):
1)T∧T∨T即没有空格,2)T∧ - T∨T,3)T∧T - ∨T ,4)T∧ - T - ∨T
算:
1)∧∧,2)∨∨,3)∧∨,4)∨∧
真值:
T和F的所有3种组合(有8种)。 Ex : TTT , TTF , FTF , FFF 等
所以我需要经历这三件事的所有组合,将它们组合成字符串(用html编写),并生成包含所有字符串的列表或数组(大约有200个)。我对cs相当陌生,所以任何帮助都会受到这个问题的青睐,对我来说这只是太多动人的事了!
note 感谢评论者指出我没有包含我尝试的内容。
我使用3-5个嵌套for循环尝试了一段时间。我最初设置一个大小为7的数组(因为这是字符串中可能的最长长度)并使用for循环来填充数组的空格。我几乎完全没有使用这条路线。这似乎很有希望,也许我可以让它工作,但它也非常不优雅和长,我现在想知道是否有更直接的方式来做到这一点。同样,我不知道这可能是我不知道的资源。
谢谢!
答案 0 :(得分:1)
要快速使用js-combinatorics。
Combinatorics.cartesianProduct(
[' ', '-- ', ' --', '-- --'],
['^^', 'vv', '^v', 'v^'],
[ true, false ],
[ true, false ],
[ true, false ]
).toArray()
答案 1 :(得分:0)
感谢前面给出的js-combinatorics答案。事实证明,您发布的代码确实无法正常工作(因为每个数组对应于该位置)。但它帮助我弄明白了。
Combinatorics.cartesianProduct(
['T', 'F'],
['∧', '∨'],
['T', 'F'],
['∧', '∨'],
['T', 'F']
).toArray();
然后在使用简单循环生成该列表之后,需要添加每种间距类型的空格。
答案 2 :(得分:0)
对于这种情况,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},
]
*/
您可以根据您的问题调整此问题,但是您需要对输出进行一些争论,以使其符合您要查找的确切格式。