diff --git a/src/main.nim b/src/main.nim index 951385d..bba4825 100644 --- a/src/main.nim +++ b/src/main.nim @@ -3,6 +3,7 @@ import terminal import strutils import osproc import base64 +import tables const WORDBANK = ["SHELL", "VIRUS", "TOKEN", "SPOOF", "PROXY", "CHMOD", "PORTS", "BYTES", "LOGIN"] const BACKDOOR = "aW1zb2V2aWw=" @@ -14,22 +15,48 @@ proc printBoard(board: Board, answer: string): void = var answerChars = cast[seq[char]](answer) for row in 0..5: + var counts = initTable[char, int]() + for c in answerChars: + counts[c] = counts.getOrDefault(c, 0) + 1 + stdout.write("\n---------------------\n") + var colors: array[5, string] # "green", "yellow", "red" + for letter in 0..4: - if board[row][letter] == '\0': + let guess = board[row][letter] + if guess == '\0': + colors[letter] = "empty" + elif guess == answerChars[letter]: + colors[letter] = "green" + counts[guess] -= 1 + else: + colors[letter] = "unknown" + + for letter in 0..4: + if colors[letter] == "unknown": + let guess = board[row][letter] + if counts.getOrDefault(guess, 0) > 0: + colors[letter] = "yellow" + counts[guess] -= 1 + else: + colors[letter] = "red" + + for letter in 0..4: + let guess = board[row][letter] + if guess == '\0': stdout.write("| ") else: stdout.write("| ") - - if board[row][letter] == answerChars[letter]: - stdout.styledWrite(fgGreen, styleBright, $board[row][letter], " ") + case colors[letter] + of "green": + stdout.styledWrite(fgGreen, styleBright, $guess, " ") + of "yellow": + stdout.styledWrite(fgYellow, styleBright, $guess, " ") + of "red": + stdout.styledWrite(fgRed, styleBright, $guess, " ") else: - if board[row][letter] != answerChars[letter] and answerChars.contains(board[row][letter]): - stdout.styledWrite(fgYellow, styleBright, $board[row][letter], " ") - else: - if board[row][letter] != answerChars[letter]: - stdout.styledWrite(fgRed, styleBright, $board[row][letter], " ") + discard stdout.write("|")