我有一个性格测验,其中有8个问题,每个问题有4个选项。
用户最终必须选择8个答案(每个问题1个答案),分数将根据所选答案分配给个性。
现在我必须找到所有可能的答案组合,即4(选项)^ 8(问题)= 65536个可能的组合。
如果矩阵格式是这样
q11 q12 q13 q14
q21 q22 q23 q24
q31 q32 q33 q34
....
q81 q82 q83 q84
我需要一种算法来选择所有可能的答案组合,并找出每种组合的人格分数。
帮帮我。谢谢。
答案 0 :(得分:0)
您可以尝试这样的操作(python):
ans1 = 1
ans2 = 3
ans3 = 1
ans4 = 2
ans5 = 4
ans6 = 1
ans7 = 2
ans8 = 3
score = ans1 +ans2 +ans3 +ans4 +ans5 +ans6 +ans7 +ans8
if score < 12:
print("You are personality type 1")
if score >= 12 and score < 24:
print("You are personality type 2")
...
这是这类测试获得结果的一种常见方式。
编辑 该代码将为您提供所有可能的结果(1-4个问题,共8个问题的答案)。但是,这需要花很多时间才能运行,并且您必须做足够的if语句才能使用它:
import itertools
def permute(LIST):
length=len(LIST)
if length <= 1:
yield LIST
else:
for n in range(0,length):
for end in permute( LIST[:n] + LIST[n+1:] ):
yield [ LIST[n] ] + end
for x in permute([1,1,2,2,3,3,4,4]):
print(x)
答案 1 :(得分:0)
我不知道对于您来说存储此组合q14 q13 q12 q11是否重要,这是创建示例序列的伪代码
int columns=3;
int rows=7;
string matrix[7][4];
for(int i=0; i<rows; i++){
for(int j=0; j<columns; j++){
matrix[i][j]="q"+(i+1)+(j+1);
}
}
答案 2 :(得分:0)
<?php
$all_option_combinations = getAllOptionCombinations(getAllOptionsData());
printAllCombinations($all_option_combinations);
function printAllCombinations($all_option_combinations){
foreach($all_option_combinations as $each_combination){
echo implode(" ",$each_combination).PHP_EOL;
}
}
function getAllOptionsData(){
$question_with_options = [];
for($i = 1;$i < 9; $i++){
$current_question_options = [];
$current_question_options[] = 'q'.$i.'1';
$current_question_options[] = 'q'.$i.'2';
$current_question_options[] = 'q'.$i.'3';
$current_question_options[] = 'q'.$i.'4';
$question_with_options[] = $current_question_options;
}
return $question_with_options;
}
function getAllOptionCombinations($options_data){
$current_combinations = array_map("returnAsArray",$options_data[0]);
$options_size = count($options_data);
for($i = 1;$i < $options_size; $i++){
$next_combinations = [];
$each_question_options_size = count($options_data[ $i ]);
$current_combinations_size = count($current_combinations);
for($j = 0; $j < $current_combinations_size; $j++){
for($k = 0; $k < $each_question_options_size; $k++){
$combination = $current_combinations[ $j ];
$combination[] = $options_data[ $i ][ $k ];
$next_combinations[] = $combination;
}
}
$current_combinations = $next_combinations;
}
return $current_combinations;
}
function returnAsArray($each_value){
return array($each_value);
}
输出:
q11 q21 q31 q41 q51 q61 q71 q81
q11 q21 q31 q41 q51 q61 q71 q82
q11 q21 q31 q41 q51 q61 q71 q83
q11 q21 q31 q41 q51 q61 q71 q84
q11 q21 q31 q41 q51 q61 q72 q81
q11 q21 q31 q41 q51 q61 q72 q82
q11 q21 q31 q41 q51 q61 q72 q83
q11 q21 q31 q41 q51 q61 q72 q84
q11 q21 q31 q41 q51 q61 q73 q81
q11 q21 q31 q41 q51 q61 q73 q82
q11 q21 q31 q41 q51 q61 q73 q83
q11 q21 q31 q41 q51 q61 q73 q84
q11 q21 q31 q41 q51 q61 q74 q81
q11 q21 q31 q41 q51 q61 q74 q82
q11 q21 q31 q41 q51 q61 q74 q83
q11 q21 q31 q41 q51 q61 q74 q84
q11 q21 q31 q41 q51 q62 q71 q81
q11 q21 q31 q41 q51 q62 q71 q82
q11 q21 q31 q41 q51 q62 q71 q83
q11 q21 q31 q41 q51 q62 q71 q84
....65516 more lines