Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Solución reto #19 Python #1361

Open
grisales54 opened this issue Sep 30, 2024 · 0 comments
Open

Solución reto #19 Python #1361

grisales54 opened this issue Sep 30, 2024 · 0 comments

Comments

@grisales54
Copy link

`matriz = [
["x", "o", "x"],
["x", "o", "o"],
["x", "x", "O"],
]

permitidos = ["x", "o", " "]

Función que me retorna la misma matriz pero con todos los caracteres en minúscula

def lower(matriz):

matriz_lower = []  # Matriz total toda en minúscula

for i in matriz:
    mini_matriz = []  # Filas de la matriz
    for j in i:

        letter = j.lower()
        mini_matriz.append(letter)
    matriz_lower.append(mini_matriz)
return matriz_lower

Esta función es necesario pasar la lista con sus caracteres en minúscula

def verificacion(lista, aceptados=permitidos):
# Inicializamos los dos jugadores en Falso para dar inicio
ganador_x = False
ganador_o = False

for i in lista:
    if i in aceptados:
        if lista == ["x", "x", "x"]:
            ganador_x = True
        if lista == ["o", "o", "o"]:
            ganador_o = True
return ganador_x, ganador_o

def verificar_caracteres_validos(matriz, permitidos=permitidos):
# Verifica que todos los caracteres de la matriz sean permitidos
for fila in matriz:
for elem in fila:
if elem not in permitidos:
return False
return True

def triki(matriz):
matrix = lower(matriz)

# Verificar si la matriz contiene caracteres no válidos
if not verificar_caracteres_validos(matrix):
    return print("Nulo: La matriz contiene caracteres no válidos")

# Ciclo para confirmar si hay ganadores en las filas
for i in matrix:

    ganador_fila_x, ganador_fila_o = verificacion(i)

    if ganador_fila_o or ganador_fila_x:
        break

columna = []

# Con este ciclo volvemos las filas columnas, para pasar a verificar
for i in range(len(matrix)):
    mini_matriz = []
    for j in range(len(matriz)):
        y = matrix[j][i]
        mini_matriz.append(y)
    columna.append(mini_matriz)

# Verificación si hay ganador con las columnas
for i in columna:

    ganador_col_x, ganador_col_o = verificacion(i)

    if ganador_col_o or ganador_col_x:
        break

diagonal = []

# Con este ciclo evaluamos la diagonal principal
for i in range(len(matrix)):

    y = matrix[i][i]
    diagonal.append(y)

ganador_diagonal_x, ganador_diagonal_o = verificacion(diagonal)

antidiagonal = []

# Con este ciclo evaluamos la diagonal principal
for i in range(len(matrix)):

    y = matrix[i][-i - 1]
    antidiagonal.append(y)

ganador_antidiagonal_x, ganador_antidiagonal_o = verificacion(antidiagonal)

ganador_x = (
    ganador_fila_x or ganador_col_x or ganador_diagonal_x or ganador_antidiagonal_x
)
ganador_o = (
    ganador_fila_o or ganador_col_o or ganador_diagonal_o or ganador_antidiagonal_o
)

if ganador_x:
    return print("Las X ganan")

if ganador_o:
    return print("Las O ganan")

if ganador_o and ganador_x:
    print("La matriz es incorrecta")

triki(matriz)
`

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant