from machine import Pin
import time

led = Pin("LED", Pin.OUT)
ledred = Pin(6, Pin.OUT)
ledgreen = Pin(7, Pin.OUT)
ledblue = Pin(8, Pin.OUT)

boton1 = Pin(18, Pin.IN, Pin.PULL_UP)
boton2 = Pin(19, Pin.IN, Pin.PULL_UP)
boton3 = Pin(20, Pin.IN, Pin.PULL_UP)
boton4 = Pin(21, Pin.IN, Pin.PULL_UP)

def llenado(matx):
    for i in range(3):
        for j in range(3):
            print("A[", i, ",", j, "]: ", end="")
            matx[i * 3 + j] = int(input())

def suma_escalar(matx, escalar):
    for i in range(3):
        for j in range(3):
            matx[i * 3 + j] += escalar

def transponer(matx):
    transpuesta = [0] * 9
    for i in range(3):
        for j in range(3):
            transpuesta[j * 3 + i] = matx[i * 3 + j]
    return transpuesta

def determinante(matx):
    det = (matx[0] * (matx[4] * matx[8] - matx[5] * matx[7]) -
            matx[1] * (matx[3] * matx[8] - matx[5] * matx[6]) +
            matx[2] * (matx[3] * matx[7] - matx[4] * matx[6]))
    return det

def despliegue(matx):
    for i in range(3):
        for j in range(3):
            dato = matx[i * 3 + j]
            print(dato, "  ", end="")
            if dato == 1:
                ledred.value(1)
                ledgreen.value(0)
                ledblue.value(0)
            elif dato == 2:
                ledred.value(0)
                ledgreen.value(1)
                ledblue.value(0)
            elif dato == 3:
                ledred.value(0)
                ledgreen.value(0)
                ledblue.value(1)
            time.sleep(2)
        print(" ")

mata = [0] * 9

if __name__ == '__main__':
    while True:
        # Llenado de matriz
        llenado(mata)

        # Sumar un escalar
        escalar_suma = int(input("Ingrese un número para sumar a cada elemento de la matriz: "))
        suma_escalar(mata, escalar_suma)
        print("Matriz después de sumar:", escalar_suma)
        despliegue(mata)

        # Calcular y mostrar la transpuesta
        transpuesta = transponer(mata)
        print("Transpuesta de la matriz:")
        despliegue(transpuesta)

        # Calcular y mostrar la determinante
        det = determinante(mata)
        print("Determinante de la matriz:", det)

        # Despliegue de la matriz final
        print("Matriz final después de las operaciones:")
        despliegue(mata)