s3Eva_IIT2010_T1 Matriz con aleatorios no repetidos (desordena)

Ejercicio: 3Eva_IIT2010_T1 Matriz con aleatorios no repetidos (desordena)

Propuesta de solución en Python:

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 3Eva_IIT2010_T1 Matriz con aleatorios no repetidos (desordena)
# Propuesta: edelros@espol.edu.ec
# Tarea: integrar con tema 3

import numpy as np
import random as rnd

def desordena(n): 
    matriz = -1*np.ones(shape=(n,n), dtype=int)
    usados = []
    
    # entero aleatorio [0,n**2), no incluye n**2
    intervalo = n**2
    
    fila = 0
    while not(fila>=n):
        
        columna = 0
        while not(columna>=n):

            # numero no repetido
            numero = int(rnd.random()*intervalo)+0
            while numero in usados:
                numero = int(rnd.random()*intervalo)+0
            
            matriz[fila,columna] = numero
            usados.append(numero)
            
            columna = columna + 1
            
        fila = fila + 1
    return(matriz)

resultado del algoritmo:

>>> desordena(3)
array([[0, 7, 2],
       [6, 5, 8],
       [4, 1, 3]])
>>> desordena(3)
array([[7, 3, 6],
       [8, 1, 0],
       [5, 2, 4]])
>>> 

s3Eva_IIT2011_T2 Registrar gastos en viaje por automóvil

Ejercicio: 3Eva_IIT2011_T2 Registrar gastos en viaje por automóvil

Instrucciones en Python

# 3ra Evaluacion II Term 2011
# Tema 2. Recorridos Juan y Pedro
import random as rnd

# INGRESO
n = int(input('Ingrese cantidad de ciudades: '))
gasto = [0]
izquierda = [0]
derecha = [0]
for i in range(1,n+1,1):
    print("Ciudad: ", i)
    ungasto = int(input('Gastos en ciudad: '))
    ciudad_izq = int(input('Ciudad izquierda: '))
    ciudad_der = int(input('Ciudad  derecha: '))
    gasto.append(ungasto)
    izquierda.append(ciudad_izq)
    derecha.append(ciudad_der)

# PROCEDIMIENTO
# Viaje de Juan
dia    = 1
visita = 1
costojuan = 0
rutajuan  = []
while not(visita==0):
    rutajuan.append(visita)
    costojuan = costojuan + gasto[visita]
    direccion = int(rnd.random()*2)+1
    if direccion == 1:
        visita = izquierda[visita]
    else:
        visita = derecha[visita]
    dia = dia+1
diasjuan = dia-1


# Viaje de Pedro
dia    = 1
visita = 1
costopedro = 0
rutapedro  = []
while not(visita==0):
    rutapedro.append(visita)
    costopedro = costopedro + gasto[visita]
    direccion  = int(rnd.random()*2)+1
    if direccion == 1:
        visita = izquierda[visita]
    else:
        visita = derecha[visita]
    dia = dia+1
diaspedro = dia-1

# SALIDA
print('Recorrido de Juan: ', rutajuan)
print('Costo de Juan: ', costojuan)
print('Recorrido de Pedro: ', rutapedro)
print('Costo de Pedro: ', costopedro)

if diasjuan>diaspedro:
    print('Juan visitó más ciudades')
else:
    print('Pedro visitó más ciudades')

if costojuan<costopedro:
    print('Juan tuvo el viaje más barato')
else:
    print('Pedro tuvo el viaje más barato')

Resultado del algoritmo

RESTART: D:/CCPG1001Ejemplos/RutasJuanPedro.py 
Ingrese cantidad de ciudades: 7
Ciudad:  1
Gastos en ciudad: 200
Ciudad izquierda: 3
Ciudad  derecha: 2
Ciudad:  2
Gastos en ciudad: 150
Ciudad izquierda: 4
Ciudad  derecha: 5
Ciudad:  3
Gastos en ciudad: 70
Ciudad izquierda: 7
Ciudad  derecha: 4
Ciudad:  4
Gastos en ciudad: 140
Ciudad izquierda: 7
Ciudad  derecha: 6
Ciudad:  5
Gastos en ciudad: 90
Ciudad izquierda: 6
Ciudad  derecha: 0
Ciudad:  6
Gastos en ciudad: 300
Ciudad izquierda: 7
Ciudad  derecha: 0
Ciudad:  7
Gastos en ciudad: 50
Ciudad izquierda: 0
Ciudad  derecha: 0
Recorrido de Juan:  [1, 2, 4, 6]
Costo de Juan:  790
Recorrido de Pedro:  [1, 3, 7]
Costo de Pedro:  320
Juan visitó más ciudades
Pedro tuvo el viaje más barato
>>> 

s3Eva_IIT2010_T3 Rompecabezas, desordena y ubica

Ejercicio: 3Eva_IIT2010_T3 Rompecabezas, desordena y ubica

Propuesta de solución en Python:

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 3Eva_IIT2010_T3 Rompecabezas, desordena y ubica
# Propuesta: edelros@espol.edu.ec
# Tarea: identificar donde se podrá usar lazo "for"
# opcional, el tamaño de matriz nxm se puede obtener con
# numpy.shape(matriz) y se obtiene un arreglo con n y m

import numpy
import random

# Tema 1. funcion desordena(n)
# dado el tamaño de matriz cuadrada, pone numeros aleatorios
# No repetidos entre 0 y n*n-1
def desordena(n):
    matriz = numpy.zeros(shape=(n,n), dtype=int)
    numero = 1
    maximo = n*n-1
    while not(numero>maximo):
        fila = int(random.random()*n)+0
        columna = int(random.random()*n)+0
        if (matriz[fila,columna]==0):
            matriz[fila,columna]=numero
            numero = numero+1
    return(matriz)

# 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)

# funcion matrizigual, compara dos matrices A y B
# de igual tamano nxn
def matrizigual(A,B,n):
    resuelto = 1
    fila = 0
    while not(fila>=n or resuelto==0):
        columna = 0
        while not(columna>=n or resuelto==0):
            if (A[fila,columna]!=B[fila,columna]):
                resuelto = 0
            columna = columna+1
        fila = fila+1
    return(resuelto)

# funcion solucion del rompecabeza
# Usado para comparar con la solucion
def original(n):
    matriz = numpy.zeros(shape=(n,n), dtype=int)
    numero = 1
    fila = 0
    while not(fila>=n):
        columna = 0
        while not(columna>=n):
            matriz[fila, columna] = numero
            numero = numero+1
            columna = columna+1
        fila = fila+1
    matriz[n-1,n-1] = 0
    return(matriz)


# Tema 3. Juego del Rompecabeza
# Programa para jugar el Rompecabeza

tamano = int(input('¿Tamaño del tablero?: '))

resuelto = 0
turno = 1
solucion = original(tamano)
tablero = desordena(tamano)

while not(resuelto==1):
    print(turno)
    print(tablero)
    ficha = int(input('¿Ficha a mover?: '))
    dondeficha = ubica(tablero,tamano,ficha)
    dondecero = ubica(tablero,tamano,0)

    if (dondeficha[0]==dondecero[0] or dondeficha[1]==dondecero[1]):
        temporal = ficha
        tablero[dondeficha[0],dondeficha[1]] = 0
        tablero[dondecero[0],dondecero[1]] = temporal
    turno = turno+1
    if (matrizigual(tablero,solucion,tamano)==1):
        resuelto = 1
        print('Ganaste...! ')

s3Eva_IIT2012_T1 Alfabeto radiofónico

Ejercicio: 3Eva_IIT2012_T1 Alfabeto radiofónico

Para el ejercicio de alfabeto radiofónico en Python, se presenta una propuesta de ejercicio resuelto que parte del algoritmo de búsqueda en un vector.

radiofonico = [['A','Alfa'],   ['B','Bravo'], ['C','Charlie'],
               ['D','Delta'],  ['E','Echo'],  ['F','Foxtrot'],
               ['G','Golf'],   ['H','Hotel'], ['I','India'],
               ['J','Juliet'], ['K','Kilo'],  ['L','Lima'],
               ['M','Mike'],   ['N','November'],['O','Oscar'],
               ['P','Papa'],   ['Q','Quebec'],['R','Romeo'],
               ['S','Sierra'], ['T','Tango'], ['U','Uniform'],
               ['V','Victor'], ['W','Whiskey'],['X','X-ray'],
               ['Y','Yankee'], ['Z','Zulu']]

Instrucciones en  Python

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 3Eva_IIT2012_T1 Alfabeto radiofónico
# Tarea: En la segunda función considerar
# que se pueden dar palabras que no son radiofónica.
#        mejorar la función usando la tabla radiofónico.

def coderadio(palabra,radiofonico):

    # analizar secuencia
    palabra = palabra.upper()
    frase = '' 

    n = len(palabra)
    i = 0
    while not(i>=n):
        letra = palabra[i]
        
        # Buscar letra en radiofonico
        encontre = 0
        donde    = -1
        m = len(radiofonico)

        j = 0
        while not(j>=m or encontre==1):
            if (letra == radiofonico[j][0]):
                encontre = 1
                donde = j
                equivale = radiofonico[j][1]
            j = j + 1 # busca la siguiente fila

        # completa la frase
        if len(frase)==0:
            espacio = ''
        else:
            espacio = ' '
        frase = frase + espacio + equivale
        
        i = i + 1 # cambia letra de palabra

    return(frase)

def decoradio(frase,radiofonico):
    # Solo un ejemplo de otra forma,
    # Tarea, considerar que envian una palabra equivocada

    partes = frase.split(' ')
    n = len(partes)
    palabra = ''

    i = 0
    while not(i>=n):
        palabra = palabra + partes[i][0]
        i = i + 1
    return(palabra)

s3Eva_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

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 3Eva_IIT2010_T2 Ubicar número dentro de una matriz
# Propuesta: edelros@espol.edu.ec
# Tarea: integrar con tema 3

import numpy as np
import random as rnd

# Tema 2. ubica un numero k en la matriz de nxn
def ubica(matriz,k):
    tamano = np.shape(matriz)
    n = tamano[0]
    m = tamano[1]
    
    donde = np.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)

resultado del algoritmo

>>> matriz = np.array([[8, 2, 6],
		       [5, 4, 0],
                       [1, 7, 3]])
>>> ubica(matriz,7)
array([2, 1])
>>>