GameJS
unknown
javascript
4 years ago
1.4 kB
4
Indexable
const availableElements = ["apple", "pear", "plum", "cherry"]; const openToWin = 3; function shuffle(arr) { let j, x, i; for (i = arr.length - 1; i > 0; i--) { j = Math.floor(Math.random() * (i + 1)); x = arr[i]; arr[i] = arr[j]; arr[j] = x; } return arr; } function generateSequence(winItem, finishRound) { if (finishRound > availableElements.length * (openToWin - 1) + 1 || finishRound < openToWin) { console.log("error: finishRound"); } console.log("Available items: ", availableElements); console.log("Win item: " + winItem); console.log("Finish round: " + finishRound); let elementsWithoutWinItems = availableElements.filter(x => x !== winItem); let sequence = []; for (let i = 0; i < openToWin - 1; i++) { sequence = sequence.concat(elementsWithoutWinItems); } sequence = shuffle(sequence); let firstPart = sequence.slice(0, finishRound - 3); let lastPart = sequence.slice(firstPart.length, sequence.length + 1); firstPart.push(winItem, winItem); firstPart = shuffle(firstPart); firstPart.push(winItem); lastPart = shuffle(lastPart.concat(elementsWithoutWinItems)); return firstPart.concat(lastPart) } // TEST let result = generateSequence("plum", 7); console.log("\nRESULTS:"); for (let i = 0; i < result.length; i++) { console.log(i + 1, result[i]) }
Editor is loading...