summaryrefslogtreecommitdiff
path: root/main.py
blob: e763159af0418a6a07f036f70f2e03358ce3b309 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
from random import choice
import sys

ALLOWED_GUESSES = 6

ext = lambda s: "\033[0;32m" + s + "\033[0m"
ptl = lambda s: "\033[0;33m" + s + "\033[0m"
wrg = lambda s: "\033[2m" + s + "\033[0m"


def check_guess(guess, answer):
    res = []
    for i, letter in enumerate(guess):
        if answer[i] == guess[i]:
            res += ext(letter)
        elif letter in answer:
            res += ptl(letter)
        else:
            res += wrg(letter)
    return "".join(res)


def game(chosen_word, allowed_guesses):
    alry_gsd = []
    acm_res = []

    while True:
        while True:
            guess = input("? ")
            guess = guess.upper().strip()
            if guess in alry_gsd:
                print("%s has already been guessed." % guess)
            elif guess not in allowed_guesses:
                print("%s is not in the dictionary." % guess)
            else:
                break
        alry_gsd.append(guess)
        res = check_guess(guess, chosen_word)
        acm_res.append(res)

        print(*acm_res, sep="\n")
        if guess == chosen_word:
            print("Congrats!  %s is the correct word." % guess)
            break
        elif len(alry_gsd) == ALLOWED_GUESSES:
            print("You ran out of attempts.  The correct word is %s." % chosen_word)
            break


if __name__ == "__main__":
    if len(sys.argv) != 3:
        print(
            "You must and must only give two arguments, that is, the filename of the solution list, followed by that of the allowed guesses list."
        )
        sys.exit(1)
    try:
        allowed_solutions = [
            w.strip().upper() for w in open(sys.argv[1], "r").readlines()
        ]
        allowed_guesses = set(
            [w.strip().upper() for w in open(sys.argv[2], "r").readlines()]
        )
        allowed_guesses = allowed_guesses | set(allowed_solutions)
    except FileNotFoundError:
        print("%s does not exist, so I can't open the word list!" % sys.argv[1])
        sys.exit(2)
    chosen_word = choice(allowed_solutions)
    game(chosen_word, allowed_guesses)