From 41b10c4d8a9dfad42776eae6fc67341d21ce11ef Mon Sep 17 00:00:00 2001 From: Steve Bosman Date: Sat, 29 Jan 2022 11:41:24 +0000 Subject: [PATCH] 96 Word: Name the variables --- 96_Word/javascript/word.js | 105 ++++++++++++++++++++----------------- 1 file changed, 56 insertions(+), 49 deletions(-) diff --git a/96_Word/javascript/word.js b/96_Word/javascript/word.js index 8e5d4551..0d0ebe33 100644 --- a/96_Word/javascript/word.js +++ b/96_Word/javascript/word.js @@ -43,11 +43,10 @@ const words = ["DINKY", "SMOKE", "WATER", "GLASS", "TRAIN", "MIGHT", "FIRST", "CANDY", "CHAMP", "WOULD", "CLUMP", "DOPEY"]; -const s = []; -const a = []; -const l = []; -const d = []; -const p = []; +const secretWordDetails = []; +const knownLettersDetails = []; +const guessDetails = []; +const lettersInCommonDetails = []; // Main control section async function main() @@ -65,82 +64,90 @@ async function main() print("\n"); print("\n"); print("YOU ARE STARTING A NEW GAME...\n"); - let n = words.length; - let ss = words[Math.floor(Math.random() * n)]; - let g = 0; - s[0] = ss.length; - for (let i = 1; i <= ss.length; i++) - s[i] = ss.charCodeAt(i - 1); + + const n = words.length; + const secretWord = words[Math.floor(Math.random() * n)]; + + let guessCount = 0; + secretWordDetails[0] = secretWord.length; + for (let i = 1; i <= secretWord.length; i++) + secretWordDetails[i] = secretWord.charCodeAt(i - 1); for (let i = 1; i <= 5; i++) - a[i] = 45; + knownLettersDetails[i] = "-".charCodeAt(0); for (let j = 1; j <= 5; j++) - p[j] = 0; - let ls = undefined; + lettersInCommonDetails[j] = 0; + + let guess = undefined; while (1) { print("GUESS A FIVE LETTER WORD"); - ls = (await input()).toUpperCase(); - g++; - if (ss === ls) + guess = (await input()).toUpperCase(); + guessCount++; + if (secretWord === guess) break; for (let i = 1; i <= 7; i++) - p[i] = 0; - l[0] = ls.length; - for (let i = 1; i <= ls.length; i++) { - l[i] = ls.charCodeAt(i - 1); + lettersInCommonDetails[i] = 0; + + // store detail about the guess + guessDetails[0] = guess.length; + for (let i = 1; i <= guess.length; i++) { + guessDetails[i] = guess.charCodeAt(i - 1); } - if (l[1] === 63) { - print("THE SECRET WORD IS " + ss + "\n"); + + if (guessDetails[1] === 63) { + print("THE SECRET WORD IS " + secretWord + "\n"); print("\n"); break; } - if (l[0] !== 5) { + if (guessDetails[0] !== 5) { print("YOU MUST GUESS A 5 LETTER WORD. START AGAIN.\n"); print("\n"); - g--; + guessCount--; continue; } - let m = 0; - let q = 1; + let lettersInCommonCount = 0; + let nextCorrectLetterIndex = 1; for (let i = 1; i <= 5; i++) { for (let j = 1; j <= 5; j++) { - if (s[i] === l[j]) { - p[q] = l[j]; - q++; + if (secretWordDetails[i] === guessDetails[j]) { + lettersInCommonDetails[nextCorrectLetterIndex] = guessDetails[j]; + nextCorrectLetterIndex++; if (i === j) - a[j] = l[j]; - m++; + knownLettersDetails[j] = guessDetails[j]; + lettersInCommonCount++; } } } - a[0] = 5; - p[0] = m; - let as = ""; - for (let i = 1; i <= a[0]; i++) - as += String.fromCharCode(a[i]); - let ps = ""; - for (let i = 1; i <= p[0]; i++) - ps += String.fromCharCode(p[i]); - print("THERE WERE " + m + " MATCHES AND THE COMMON LETTERS WERE... " + ps + "\n"); - print("FROM THE EXACT LETTER MATCHES, YOU KNOW............ " + as + "\n"); - if (as === ss) { - ls = as; + knownLettersDetails[0] = 5; + lettersInCommonDetails[0] = lettersInCommonCount; + + let lettersInCommonText = ""; + for (let i = 1; i <= lettersInCommonDetails[0]; i++) + lettersInCommonText += String.fromCharCode(lettersInCommonDetails[i]); + print("THERE WERE " + lettersInCommonCount + " MATCHES AND THE COMMON LETTERS WERE... " + lettersInCommonText + "\n"); + + let knownLettersText = ""; + for (let i = 1; i <= knownLettersDetails[0]; i++) + knownLettersText += String.fromCharCode(knownLettersDetails[i]); + print("FROM THE EXACT LETTER MATCHES, YOU KNOW............ " + knownLettersText + "\n"); + if (knownLettersText === secretWord) { + guess = knownLettersText; break; } - if (m <= 1) { + if (lettersInCommonCount <= 1) { print("\n"); print("IF YOU GIVE UP, TYPE '?' FOR YOUR NEXT GUESS.\n"); print("\n"); } } - if (ss === ls) { - print("YOU HAVE GUESSED THE WORD. IT TOOK " + g + " GUESSES!\n"); + if (secretWord === guess) { + print("YOU HAVE GUESSED THE WORD. IT TOOK " + guessCount + " GUESSES!\n"); print("\n"); } else { continue; } print("WANT TO PLAY AGAIN"); - let qs = (await input()).toUpperCase(); - if (qs !== "YES") + const playAgainResponse = (await input()).toUpperCase(); + if (playAgainResponse !== "YES") break; } }