-
Notifications
You must be signed in to change notification settings - Fork 0
/
bagels.py
83 lines (67 loc) · 2.29 KB
/
bagels.py
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
"""Bagels is a deduction game in which the
player tries to guess a random three-digit
number (with no repeating digits) generated by the computer.
After each guess, the computer gives the player three types of clues:
Bagels: None of the three digits guessed is in the secret number.
Pico: One of the digits is in the secret number, but the guess has the
digit in the wrong place.
Fermi: The guess has a correct digit in the correct place."""
import re
import random
def generate_secret_number() -> int:
"""generates and returns a secret 3 digit number"""
digits = list(range(10))
random.shuffle(digits)
number = ""
if digits[0] == 0:
for i in range(1, 4):
number += str(digits[i])
else:
for i in range(3):
number += str(digits[i])
return int(number)
def get_guess() -> int:
"""returns a 3 digit number guessed by user"""
guess = ""
while re.match("^[0-9]{3}$", guess) is None:
print("What is the number? (3 digits)")
guess = input()
return int(guess)
def generate_clue(guess: int, number: int) -> str:
"""returns clues for the user after comparing
their guess to the secret number"""
guess_str = str(guess)
number_str = str(number)
clue = ""
for index in range(len(guess_str)):
if guess_str[index] == number_str[index]:
clue += "Fermi "
elif guess_str[index] in number_str:
clue += "Pico "
if clue == "":
return "Bagels"
return clue
if __name__ == "__main__":
print("I am thinking of a 3-digit number. Try to guess what it is.")
print("The clues are:")
print(
"""\
Bagels: None of the digits is correct
Pico: One digit is correct but in the wrong position
Fermi: One digit is correct and in the right position
"""
)
secret_number = generate_secret_number()
guesses = 10
while guesses > 0:
print(f"You have {guesses} guesses.")
user_guess = get_guess()
guesses -= 1
if user_guess == secret_number:
print("CORRECT.")
break
else:
print(generate_clue(user_guess, secret_number))
else:
print("SORRY. You ran out of guesses.")
print(f"I was thinking of {secret_number}")