s3Eva_IIT2007_T2 Verificar matriz Sudoku

Ejercicio: 3Eva_IIT2007_T2 Verificar matriz Sudoku

Propuesta de solución en Python:

En el enunciado puede obtener una matriz para usar en el programa ejemplo.

Simplifique el problema, por ejemplo inicie con el algoritmo para verificar los números sea únicos en un vector, el resultado lo convierte una función únicos(vector). La función únicos() la usa para cada fila, luego para cada columna y finalmente para cada recuadro de 3×3.

Al finalizar, convierta la parte del programa ejemplo en una función verificasudoku(matriz).

# 3ra Evaluación II Término 2007
# Tema 2. verifica matriz sudoku
# Propuesta: edelros@espol.edu.ec
# Tarea por completar: tercera regla recuadros

import numpy as np
# verificar unicos en vector, intervalo [1,9]
def unicos(vector):
    m = len(vector)
    contadores = np.zeros(9+1, dtype = int)

    i = 0
    while not(i>=m):
        numero = vector[i]
        contadores[numero] = contadores[numero] +1
        i = i+1

    # revisa que el contador sea siempre 1
    cumple = 1
    numero = 1
    while not(numero>9 or cumple==0):
        if (contadores[numero] != 1):
            cumple = 0
        numero = numero+1
    return(cumple)

# PROGRAMA -------------------------
# INGRESO
matriz=np.array([[1, 3, 5, 4, 6, 2, 9, 8, 7],
                 [7, 6, 2, 1, 9, 8, 5, 4, 3],
                 [8, 9, 4, 5, 3, 7, 6, 2, 1],
                 [9, 7, 8, 6, 1, 3, 2, 5, 4],
                 [4, 1, 6, 9, 2, 5, 3, 7, 8],
                 [2, 5, 3, 7, 8, 4, 1, 6, 9],
                 [5, 2, 7, 3, 4, 1, 8, 9, 6],
                 [3, 8, 9, 2, 7, 6, 4, 1, 5],
                 [6, 4, 1, 8, 5, 9, 7, 3, 2]])

# PROCEDIMIENTO
essudoku = 1

# verifica por filas
fila = 0
while not(fila>=9 or essudoku==0):

    # Selecciona vector
    vector = matriz[fila,:]

    verifica = unicos(vector)
    if (verifica==0):
        essudoku = 0
    fila = fila+1

# Verifica por columnas
columna = 0
while not(columna>=9 or essudoku==0):

    # Selecciona vector
    vector = matriz[:,columna]

    verifica = unicos(vector)
    if (verifica==0):
        essudoku = 0
    columna = columna+1

# Verifica en cada submatriz de 3x3
fila = 0
columna = 0
submatriz = matriz[fila:fila+3,columna:columna+3]
# convertir submatriz a vector
# aplicar funcion unicos, para verificar essudoku

# SALIDA
print('¿es la matriz sudoku? [0,1]: ')
print(essudoku)

s3Eva_IIT2013_T4 Gestionar asientos en cine

Ejercicio: 3Eva_IIT2013_T4 Gestionar asientos en cine

Propuesta de solución en Python:

# 3ra Evaluación II Término 2013
# Tema 4. Asientos de cine, menu
import numpy

# Genera la sala
n = int(input('numero filas: '))
m = int(input('numero columnas:'))
asiento = numpy.zeros(shape=(n,m), dtype=int)

opcion = '0'
while not(opcion=='5'):
    print(' 1. Vender Boletos')
    print(' 2._Mostrar_asientos')
    print(' 3. Contar vendidos')
    print(' 4. Buscar libre')
    print(' 5. Salir ')

    opcion = input('cual opcion: ')

    if (opcion=='1'):
        print('Vender Boletos')
        fila = int(input('fila:'))
        columna = int(input('columna:'))
        if (asiento[fila,columna]==0):
            asiento[fila,columna] = 1
        else:
            print('asiento ocupado')

        
    if (opcion=='2'):
        print('Mostrar_asientos')
        print(asiento)
        
    if (opcion=='3'):
        print('Contar vendidos')
        contar = 0
        for fila in range(0,n,1):
            for columna in range(0,m,1):
                contar = contar+asiento[fila,columna]
        print(contar)
        
    if (opcion=='4'):
        print('Buscar libre')
    if (opcion=='5'):
        print('Salir')

s3Eva_IIT2008_T4 Derivar pacientes del Hospital IESS

Ejercicio: 3Eva_IIT2008_T4 Derivar pacientes del Hospital IESS

Propuesta de solución en Python, también se adjunta versión en matlab.pdf

# 3ra Evaluación II Término 2008
# Tema 4. Derivar pacientes del Hospital IESS

paciente = []
hospital = []
opcion  = -1
while not(opcion =='5'):
    print(' 1. Ingreso de Paciente')
    print(' 2. Registro de Hospitales')
    print(' 3. Hospital asignado a Paciente')
    print(' 4. Lista de Total pacientes a otro Hospital')
    print(' 5. Salir')

    opcion= input('cual opcion: ')

    if (opcion == '1'):
        print(' ----- 1. Ingreso de Paciente')
        ced = input('cedula : ')
        nom = input('nombre: ')
        tra = input('tratamiento: ')
        asg = int(input('asigna: '))

        paciente.append({'cedula':ced,
                         'nombre': nom,
                         'tratamiento': tra,
                         'asigna': asg})

    if (opcion =='2'):
        print(' ----- 2. Registro de Hospitales')
        nom = input('nombre hospital: ')
        tra = input('Tratamiento: ')

        hospital.append({'nombre': nom,
                         'tratamiento':tra})

    if (opcion =='3')
        print(' -----  3. Hospital asignado a Paciente')
        ced = input('cedula : ')
        n = len(paciente)
        i = 0
        encontre = -1
        while not(i>n or encontre>=0)
            if (ced == paciente[i]['cedula']):
                encontre = i
            i = i+1
        if (encontre>=0):
            cual = paciente[encontre]['asigna']
            print('fue transferida a: ', hospital[cual]['nombre'])
        else:
            print('el paciente no se ha ingresado...')

    if (opcion=='4'):
        print(' ----- 4. Lista de Total pacientes a otro Hospital')
        cual = int(input('cual hospital [numero] : '))
        while not(cual>=0  and cual<=len(hospital)):
            cual = int(input('cual hospital [numero] : '))
        n = len(paciente)
        i = 0
        while not(i>=n):
            if (cual == paciente[i]['asigna']):
                print(paciente[i]['nombre'])
            i= i+1

    if (opcion == '5'):
        print('gracias por venir al IESS..')
        print('usuario@espol.edu.ec')

s3Eva_IT2006_T4 Juego planta bombas (buscaminas)

Ejercicio3Eva_IT2006_T4 Juego planta bombas (buscaminas)

Nota: contiene tareas por realizar, revisar comentarios en las instrucciones

Instrucciones en Python

# 3Eva_IT2006_T4 Juego planta bombas (buscaminas)
# 3ra Evaluación I Término 2006
# Tema 4. plantabombas (ref: buscaminas)
# propuesta: edelros@espol.edu.ec
import numpy as np
import random as rnd

def plantabombas(m,n):
    campo = np.zeros(shape=(n,n),dtype=int)
    
    bomba = 1
    while not(bomba>m):
        fila = int(rnd.random()*n)+0
        columna = int(rnd.random()*n)+0
        
        if (campo[fila,columna] == 0):
            campo[fila,columna] = 1
            bomba = bomba + 1
            
    return(campo)

# PROGRAMA --------------

# INGRESO
n = int(input('tamaño de tablero[n,n]: '))
m = int(input('cantidad de minas:'))

# TAREA: validar que la cantidad de minas
# sea menor que casillas en tablero

f = int(input('coordenada fila:'))
while not(f>0 and f<(n-1)):
    f = int(input('coordenada fila:'))

c = int(input('coordenada columna:'))
while not(c>0 and c<(n-1)):
    c = int(input('coordenada columna:'))

# PROCEDIMIENTO
# Crear tablero con bombas
territorio = plantabombas(m,n)

# solamente si no hay bomba al aterrizar reporta
if (territorio[f,c] == 0):
    vertical = territorio[f-1,c]+territorio[f+1,c]
    horizontal = territorio[f,c-1]+territorio[f,c+1]
    # TAREA: Completar las casillas en diagonal
    reporta = vertical + horizontal
else:
    reporta = -1

# SALIDA
print('reporte de llegada: ',reporta)
print('territorio: ')
print(territorio)


Ejemplo, aún falta desarrolar la parte de tarea:

tamaño de tablero[n,n]: 8
cantidad de minas:40
coordenada fila:3
coordenada columna:3
reporte de llegada:  4
territorio: 
[[1 1 0 1 1 1 1 1]
 [1 0 1 0 0 1 1 1]
 [0 1 1 1 1 1 1 0]
 [1 1 1 0 1 1 0 1]
 [0 1 0 1 1 1 0 0]
 [1 0 0 0 1 0 0 0]
 [1 0 1 0 0 1 1 1]
 [1 1 0 1 1 0 0 1]]
>>>

3Eva_IIT2010_T2 Ubicar número dentro de una matriz

Ejercicio: 3Eva_IIT2010_T2 Ubicar número dentro de una matriz

Propuesta de solución en Python

Tarea: integrar con tema 3

# 3ra Evaluación II Término 2010
# Propuesta: edelros@espol.edu.ec
# Tarea: integrar con tema 3

import numpy
import random

# Tema 2. ubica un numero k en la matriz de nxn
def ubica(matriz,n,k):
    donde = numpy.zeros(2, dtype=int)
    encontre = 0
    fila = 0
    while not(fila>=n or encontre==1):
        columna = 0
        while not(columna>=n or encontre==1):
            if (matriz[fila,columna]==k):
                encontre = 1
                donde[0] = fila
                donde[1] = columna
            columna = columna+1
        fila = fila+1
    return(donde)