Cows and Bulls es un juego de descifrado de códigos con lápiz y papel que generalmente se juega entre 2 jugadores. En este, un jugador intenta adivinar un número de código secreto elegido por el segundo jugador. Las reglas son las siguientes:
- Un jugador creará un código secreto, generalmente un número de 4 dígitos. Este número no debe tener dígitos repetidos.
- Otro jugador adivina (número de 4 dígitos) para descifrar el número secreto. Al hacer una conjetura, se proporcionarán 2 pistas: vacas y toros.
- Los toros indican el número de dígitos correctos en la posición correcta y las vacas indican el número de dígitos correctos en la posición incorrecta. Por ejemplo, si el código secreto es 1234 y el número adivinado es 1246, entonces tenemos 2 TOROS (para las coincidencias exactas de los dígitos 1 y 2) y 1 VACA (para la coincidencia del dígito 4 en la posición incorrecta)
- El jugador sigue adivinando hasta que se descifra el código secreto. Gana el jugador que acierta en el mínimo número de intentos.
Explicación:
Veamos una ejecución de muestra para una mejor comprensión.
Secret Code: 3768 Guess: 1234 Response: 0 bulls, 1 cow Guess: 5678 Response: 1 bull, 2 cows Guess: 1678 Response: 1 bull, 2 cows Guess: 3678 Response: 2 bulls, 2 cows Guess: 3148 Response: 2 bulls, 0 cows Guess: 3768 You guessed right!
Acercarse:
Para crear este juego en Python, la computadora genera un código secreto y el usuario tendrá que adivinar el código. Divídelo en estos bloques:
- Genera un código secreto- Genera un número aleatorio de 4 dígitos y verifica que no tenga dígitos repetidos.
- Generar pista o respuesta: tome el número secreto de 4 dígitos generado y el número adivinado (entrada). Encuentra los dígitos comunes con coincidencias exactas (toros) y los dígitos comunes en la posición incorrecta (vacas). Repita con cada suposición hasta que tenga 4 toros (una coincidencia exacta) o se quede sin intentos.
Restricción: El código secreto y el código adivinado deben ser de 4 dígitos (entre 1000 y 9999) y no tener números repetidos.
Programa:
Python
# Import required module import random # Returns list of digits # of a number def getDigits(num): return [int(i) for i in str(num)] # Returns True if number has # no duplicate digits # otherwise False def noDuplicates(num): num_li = getDigits(num) if len(num_li) == len(set(num_li)): return True else: return False # Generates a 4 digit number # with no repeated digits def generateNum(): while True: num = random.randint(1000,9999) if noDuplicates(num): return num # Returns common digits with exact # matches (bulls) and the common # digits in wrong position (cows) def numOfBullsCows(num,guess): bull_cow = [0,0] num_li = getDigits(num) guess_li = getDigits(guess) for i,j in zip(num_li,guess_li): # common digit present if j in num_li: # common digit exact match if j == i: bull_cow[0] += 1 # common digit match but in wrong position else: bull_cow[1] += 1 return bull_cow # Secret Code num = generateNum() tries =int(input('Enter number of tries: ')) # Play game until correct guess # or till no tries left while tries > 0: guess = int(input("Enter your guess: ")) if not noDuplicates(guess): print("Number should not have repeated digits. Try again.") continue if guess < 1000 or guess > 9999: print("Enter 4 digit number only. Try again.") continue bull_cow = numOfBullsCows(num,guess) print(f"{bull_cow[0]} bulls, {bull_cow[1]} cows") tries -=1 if bull_cow[0] == 4: print("You guessed right!") break else: print(f"You ran out of tries. Number was {num}")
Producción:
Publicación traducida automáticamente
Artículo escrito por akshisaxena y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA