31 lines
1.2 KiB
Python
31 lines
1.2 KiB
Python
"""
|
||
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’).
|
||
|
||
Complete a função score(guess, secret) para devolver a pontuação de uma tentativa. Por exemplo, score('1234', '4271') deve devolver (1, 2).
|
||
"""
|
||
|
||
|
||
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)
|
||
|