2023-01-21 17:56:24 +00:00
|
|
|
|
"""
|
2023-01-21 17:57:33 +00:00
|
|
|
|
No jogo Bulls-and-Cows, o jogador tenta descobir um código secreto composto por N símbolos de um alfabeto pequeno, por exemplo algarismos ou letras.
|
|
|
|
|
Em cada tentativa, o jogador introduz N símbolos e o computador dá uma pontuação que indica quantos símbolos estão certos na posição certa (os Bulls)
|
|
|
|
|
e quantos estão certos, mas na posição errada (as Cows).
|
|
|
|
|
Por exemplo, se o segredo for '4271', a tentativa '1234' tem uma pontuação de 1 Bull (o ‘2’) e 2 Cows (‘1’ e ‘4’).
|
2023-01-21 17:56:24 +00:00
|
|
|
|
|
|
|
|
|
Complete a função score(guess, secret) para devolver a pontuação de uma tentativa. Por exemplo, score('1234', '4271') deve devolver (1, 2).
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
|
2023-01-21 13:16:28 +00:00
|
|
|
|
def score(guess, secret):
|
|
|
|
|
assert len(guess) == len(secret)
|
|
|
|
|
|
|
|
|
|
bulls_index: list[int] = []
|
|
|
|
|
|
|
|
|
|
for i in range(len(guess)):
|
|
|
|
|
if guess[i] == secret[i]:
|
|
|
|
|
bulls_index.append(i)
|
|
|
|
|
|
|
|
|
|
new_g: list[str] = [guess[i] for i in range(len(guess)) if i not in bulls_index]
|
|
|
|
|
new_s: list[str] = [secret[i] for i in range(len(secret)) if i not in bulls_index]
|
|
|
|
|
|
|
|
|
|
cows_index: list[int] = []
|
|
|
|
|
for i in range(len(new_g)):
|
|
|
|
|
for j in range(len(new_s)):
|
|
|
|
|
if new_g[i] == new_s[j] and i not in cows_index:
|
|
|
|
|
cows_index.append(i)
|
|
|
|
|
|
|
|
|
|
return len(bulls_index), len(cows_index)
|
2023-01-21 17:56:24 +00:00
|
|
|
|
|