我正在尝试使用 TypeScript 编写测验。提出的问题应该随机挑选,我正在使用 Fisher-Yates Shuffle 来做到这一点——但它不会随机选择它们。
我究竟做错了什么?Fisher-Yates Shuffle 出现在问题之后。
interface Question {
questionText: string;
answers: [string, string, string, string],
correctAnswerIndex: number
}
const questions: Question[] = [
{
questionText: 'Wie viele Lichtminuten ist die Sonne weg?',
answers: ['1', '3', '6', '8'],
correctAnswerIndex: 3
}
]
const question = (Question: any) => {
for (let i = Question.length -1; i > 0; i--) {
const j = Math.floor(Math.random() * (i + 1));
const temp = Question[i];
Question[i] = Question[j];
Question[j] = temp;
}
return Question;
};
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.on("close", function () {
console.log("\nBYE BYE !!!");
process.exit(0);
});
const askQuestion = (question: string) => new Promise<string>(resolve => rl.question(question, resolve));
async function main() {
let correctAnswerCount=0;
for (const question of questions.slice(0, 5)) {
console.log(question.questionText);
let i = 0;
for (const answer of question.answers) {
console.log(String.fromCharCode(97 + i) + ') ' + answer);
i++;
}
const answer = await askQuestion("Richtige Antwort hier eingeben: ");
if (answer === String.fromCharCode(97 + question.correctAnswerIndex)) {
correctAnswerCount++;
console.log('Richtig ')
}
else {
console.log('Falsch ;(')
}
console.log("\n\n")
}
console.log('Score: '+ correctAnswerCount*1000000);
rl.close()
}
main();