Algorithm 在测验中生成所有可能答案组合的算法

Algorithm 在测验中生成所有可能答案组合的算法,algorithm,logic,combinations,Algorithm,Logic,Combinations,我有一个人格测验,共有8个问题,每个问题有4个选项 用户最终必须选择8个答案(每个问题1个答案),并根据所选答案将分数分配给个性 现在我必须找到所有可能的答案组合,即4(选项)^8(问题)=65536个可能的组合 如果矩阵格式是这样的 q11 q12 q13 q14 q21 q22 q23 q24 q31 q32 q33 q34 .... q81 q82 q83 q84 我需要一个算法来选择所有可能的答案组合,并找出每个组合的个性得分 帮帮我。谢谢。您可以尝试以下内容(python): an

我有一个人格测验,共有8个问题,每个问题有4个选项

用户最终必须选择8个答案(每个问题1个答案),并根据所选答案将分数分配给个性

现在我必须找到所有可能的答案组合,即4(选项)^8(问题)=65536个可能的组合

如果矩阵格式是这样的

q11 q12 q13 q14 
q21 q22 q23 q24
q31 q32 q33 q34
....
q81 q82 q83 q84
我需要一个算法来选择所有可能的答案组合,并找出每个组合的个性得分


帮帮我。谢谢。

您可以尝试以下内容(python):

ans1=1
ans2=3
ans3=1
ans4=2
ans5=4
ans6=1
ans7=2
ans8=3
得分=ans1+ans2+ans3+ans4+ans5+ans6+ans7+ans8
如果分数<12:
打印(“您是个性类型1”)
如果分数>=12且分数<24:
打印(“你是个性类型2”)
...
这是此类测试获得结果的常见方式

编辑 此代码将为您提供所有可能的结果(8个问题的1-4个答案)。但是,运行它需要一段时间,您必须使用足够的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)
导入itertools
def排列(列表):
长度=长度(列表)

如果长度我不明白存储此组合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);
   }
}
int列=3;
int行=7;
字符串矩阵[7][4];
对于(int i=0;i
  • 由于您没有提到该语言,我使用了我选择的语言,即PHP
  • 这段代码为您提供了所有必需的组合
  • 现在,您只需为每个选项赋值,并计算每个组合的最终分数。如何实现这一点是一个练习,我将其留给您(因为您尚未展示您的努力)。如果您在这方面也有困难,请告诉我

组合在哪里?问题是总共有16种人格,其中每个得分值等于一种人格类型。例如:如果总分为10,则人格可能是“外交官”。因此,我必须对所有答案的组合打分,并确保这16种个性至少达到一次。添加了代码以获得组合,但我不确定这是否是解决问题的正确方法…@HareiniSreethi我认为文章的第一部分将帮助你。在所有情况下,分数都将从8到32,因此你有32-8=24和24/16=1.5。从8到9.5人有个性A,从9.6到11.1人有个性B等等…我需要一个算法,可以找到所有65536个可能的答案组合的分数。用户必须选择8个选项(每个问题一个)。我在上面添加了一条评论,描述了我希望算法在@Prima AlessandroWelcome to StackOverflow中执行的操作。请阅读并遵循帮助文档中的发布指南,正如您创建此帐户时建议的那样,并在此处应用。先研究,然后发布您的问题;此问题在线上有许多解决方案。
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);
   }
}
<?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