Javascript 以混合顺序生成多个组合的字符串列表
我正在用jsPsych为一位教授做一个认知实验,其中的刺激是大约200个逻辑陈述,形式为T∧ F∨ T具有4种不同的间距类型。我需要找到一种方法来生成三个真值、两个逻辑运算符和四个空格类型的每一个组合,以正确的顺序编写,而不必手动输入(希望如此) 具体内容如下: 间距类型(其中--表示空间): 1) T∧T∨T即没有空间,2)T∧--T∨T,3)T∧T--∨T,4)T∧--T--∨T 操作员: 1) ∧ ∧,2)∨ ∨,3)∧ ∨,4)∨ ∧强> 真值: T和F的所有3个组合(共有8个)。例如:TTT、TTF、FTF、FFF等 因此,我需要检查这三种东西的所有组合,将它们组合成字符串(用html编写),并生成一个包含所有字符串的列表或数组(大约有200个)。我是cs的新手,所以对于这个问题的任何帮助都是非常感谢的,对我来说,移动的部分太多了 请注意,感谢一位评论者指出我没有包括我尝试过的东西 我已经尝试使用3-5嵌套for循环了一段时间。我最初设置了一个大小为7的数组(因为这是字符串的最长长度),并使用for循环填充数组的空格。我使用这条路线几乎完全不成功。这看起来很有希望,也许我可以让它工作,但它也很不雅观,很长,我现在想知道是否有一个更直接的方法来做到这一点。再说一次,由于我是新手,可能有一些资源我不知道 谢谢 为了快点,我会用Javascript 以混合顺序生成多个组合的字符串列表,javascript,html,combinations,permutation,jspsych,Javascript,Html,Combinations,Permutation,Jspsych,我正在用jsPsych为一位教授做一个认知实验,其中的刺激是大约200个逻辑陈述,形式为T∧ F∨ T具有4种不同的间距类型。我需要找到一种方法来生成三个真值、两个逻辑运算符和四个空格类型的每一个组合,以正确的顺序编写,而不必手动输入(希望如此) 具体内容如下: 间距类型(其中--表示空间): 1) T∧T∨T即没有空间,2)T∧--T∨T,3)T∧T--∨T,4)T∧--T--∨T 操作员: 1) ∧ ∧,2)∨ ∨,3)∧ ∨,4)∨ ∧ 真值: T和F的所有3个组合(共有8个)。例如:TT
感谢前面的答案,让我看到了js组合数学。结果表明,您发布的代码并不完全有效(因为每个数组都对应于位置)。但这帮我弄明白了
Combinatorics.cartesianProduct(
['T', 'F'],
['∧', '∨'],
['T', 'F'],
['∧', '∨'],
['T', 'F']
).toArray();
然后,在使用简单循环生成该列表之后,需要添加每种间距类型的空格。jsPsych在这种情况下使用了
文档中的示例如下:
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},
]
*/
您可以根据自己的问题来调整它,不过随后需要对输出进行一些争论,以便将其转换为所需的确切格式。Hi Nic3500。这实际上是我关于stackoverflow的第一个问题。事实上,我已经尝试这么做了一段时间了,我不知道我应该包括所有我尝试过的东西,比如使用数组的复杂的五元组嵌套循环等等。所以你的评论对我今后提出问题很有帮助。谢谢
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},
]
*/