gpt4 book ai didi

c# - 从问题中生成不同路径的矩阵?,排列?,组合?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:15:58 25 4
gpt4 key购买 nike

我需要一些正确方向的帮助才能开始我的项目。让我举一个小例子来解释这种情况:

例如,我有 3 个问题,可以用真或假来回答。我想大致了解所有可能的答案组合。
例如:

Question 1          Question 2          Question 3  
True True True
True False True
False True False

等等...
有没有人知道我如何最好在 C# 中编写一个工具来生成像上面这样的矩阵以及所有可能的结果?

非常感谢你们的任何反馈或想法!
问候蒂姆

最佳答案

完全从头开始重写。假设您有 N 个问题(演示中有 3 个):

  string[][] questionsAndAnswers = new string[][] { 
// Two times Two is Four?
new string[] { "true", "false"},
// What is the capital of Russia?
new string[] { "Berlin", "Moscow", "London"},
// Sqrt(3 * 3 + 4 * 4) = ?
new string[] { "1", "2", "3", "5"},
};

第一个可以回答为 true/false,第二个 - 三个城市之一等。然后你可以用一个简单的例程枚举所有可能的答案:

private static IEnumerable<string> Generator(string[][] answers) {
int[] indexes = new int[answers.Length];

while (true) {
yield return string.Join("\t", answers
.Select((answer, idx) => answer[indexes[idx]]));

for (int i = 0; i < indexes.Length; ++i) {
if (indexes[i] < answers[i].Length - 1) {
indexes[i] += 1;

break;
}
else {
if (i == indexes.Length - 1)
yield break;

indexes[i] = 0;
}
}
}
}

例如:

  string caption = string.Join("\t", Enumerable
.Range(1, questionsAndAnswers.Length)
.Select(i => $"Question {i}"));

// Or loop - foreach - instead of Join
string body = string.Join(Environment.NewLine, Generator(questionsAndAnswers));

string report = string.Join(Environment.NewLine, caption, body);

Console.WriteLine(report);

结果:

Question 1  Question 2  Question 3
true Berlin 1
false Berlin 1
true Moscow 1
false Moscow 1
true London 1
false London 1
true Berlin 2
false Berlin 2
true Moscow 2
false Moscow 2
true London 2
false London 2
true Berlin 3
false Berlin 3
true Moscow 3
false Moscow 3
true London 3
false London 3
true Berlin 5
false Berlin 5
true Moscow 5 // <- The right answer
false Moscow 5
true London 5
false London 5

关于c# - 从问题中生成不同路径的矩阵?,排列?,组合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46465127/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com