Etiqueta: funciones

funciones y procedimientos

  • 3Eva_IT2016_T2 sensar cultivos con dron

    3ra Evaluación I Término 2016-2017, Septiembre 13, 2016 /CCPG001

    Tema 2. (50 puntos) Una empresa agrícola ha decidido integrar un dron (avión no tripulado) para monitorear el crecimiento de los cultivos en una de sus plantaciones con dimensión rectangular de MxN .

    drone agricola

    Referencia: “Drones vuelan para ver el estado de los cultivos”. eluniverso.com. 7 de febrero, 2015.

    El dron usado puede de sensar el número de cultivos en una posicion=[i,j] usando una funcion sensarCultivos(posicion) que mueve el dron a la posición dada por una tupla y retorna un valor entero correspondiente al número de cultivos sensados.

    Suponga que ésta función ya existe, por lo tanto no necesita ser implementada en el examen.

    A partir de la información anterior, implemente las siguientes funciones:

    a) generarplantacion(dimension) que recibe una tupla dimension=[M,N] de la plantación y procede a sensar los cultivos utilizando la funcion sensarcultivos(posicion) para cada una de las posiciones. Se obtiene una matriz plantacion con los valores del número de cultivos en cada posicion=[fila,columna].

    b) analizarDensidad(plantacion, limite) que calcula una matriz con los grados de crecimiento de la plantación. La función recibe la matriz plantación del literal a y un límite que representa un parametro para determinar la densidad en una posicion. Una posición es considerada con crecimiento ‘BAJO‘ si tiene menos que el límite de cultivos, caso contrario se considera de crecimiento ‘ALTO‘. Al definir la función considere que el valor predeterminado del límite es 4. Ejemplo:

    plantacion=[[5,3,2],
                [1,4,8],
                [2,3,1]]
    
    >>analizaDensidad(plantacion)
    retorna:
    [['ALTO','BAJO','BAJO'],
     ['BAJO','ALTO','ALTO'],
     ['BAJO','BAJO','BAJO']]

    c) reporteCrecimento(plantacion,densidad) recibe las matrices de los literales a y b. Suponga que “surco” es equivalente a una fila de la matriz, y “parcela” es equivalente a una columna del surco. La función debe retornar una tupla de tres elementos con la siguiente información:

    • los promedios de los cultivos por surcos
    • las posiciones, relativas a cada surco, de las parcelas que tienen mayor número de cultivos en dicho surco.
    • los promedios de cultivos de las parcelas para los grados de crecimiento ‘ALTO’ Y ‘BAJO’.

    Por ejemplo, usando las matrices anteriores:

    >>> reporteCrecimiento(plantacion,densidad)
    retorna:
    ([3.33333333, 4.33333333, 2.0], [0, 2, 1], [5.66667, 2.0]

    Como referencia un ejemplo de un surco:

    surco[0] = [parcela0, parcela1, parcela2]
    

    Referencia: Archivo original 3Eva_IT2016.pdf

  • 3Eva_IT2016_T1 Costo de mensaje

    3ra Evaluación I Término 2016-2017, Septiembre 13, 2016 /CCPG001

    (Editado para tarea, se manteniene el objetivo de aprendizaje)

    Tema 1. mensaje de texto sms(40 puntos) Una empresa de telecomunicaciones determina el costo para enviar un mensaje como el acumulado de los valores de cada palabra diferenciadas por tamaño y tipo:

    • una palabra corta tiene máximo M caracteres,
    • una palabra larga tiene mas de M caracteres,
    • una palabra especial es un verbo en infinitivo, es decir, palabras terminadas en ‘ar‘, ‘er, ‘ir‘ , sin importar su tamaño.

    Implemente las siguientes funciones:

    a) cargarDatos(nombreArchivo) que recibe el nombre del archivo que en lineas separadas especifica: el tamaño M, el costo de las palabras cortaslargas e infinitivos. La función abrirá el archivo y retorna un diccionario de la forma:

    nombreArchivo='costos.txt'
    10
    0.2
    0.5
    0.3
    
    >>> cargarDatos('costos.txt')
    retorna:
    {'M':10, 'corta':0.2, 'larga':0.5, 'infinitivo':0.3}

    b) calcularCostos(datos, nombreArchivo) es una función que determina el costo total de un mensaje guardado en un archivo.
    La variable datos corresponde al diccionario de datos generado en el literal a) y un nombre de archivo con el texto de varias lineas correspondiente al mensaje guardado. Las palabras de cada línea se encuentran separadas por espacios y un punto ‘.’ al final del mensaje como único signo de puntuación presente. El punto ‘.’ no deberá ser considerado para determinar el costo de esa última palabra.

    c) cambiarMensaje(datos, nombreArchivo1, nombreArchivo2) es una función que baja el costo del mensaje al modificarlo mediante:

    • el recorte de las palabras largas a M-1 caracteres y  colocando ‘#‘ al final.
    • el reemplazo el punto final ‘.’ con la palabra especial ‘END’.

    La función recibe el diccionario de datos generado en el literal a) y dos nombres de archivos: nombreArchivo1 que contiene el mensaje y nombreArchivo2 que es el el archivo que se crea (guarda) con el mensaje modificado.

    Referencia: Archivo original 3Eva_IT2016.pdf

  • 1Eva_IT2015~T2 Dibujar espejo con cadenas de caracteres

    1ra Evaluación I Término 2015-2016. Julio, 2015 /FIEC

    Tema 2. (20 puntos) Se requiere implementar en Python la función dibujarEspejo() que recibe un número n y dibuja el siguiente patrón:

    dibujarEspejo(8) dibujarEspejo(6)

    Nota: Asuma que n es siempre un número par.

  • 1Eva_IT2015~T1 Persistencia aditiva de un número entero

    1ra Evaluación I Término 2015-2016. Julio, 2015 /FIEC

    Tema 1. (25 puntos) La persistencia aditiva de un número entero se calcula sumando sus dígitos y en caso que esta sumatoria tenga más de un dígito, se repetirá el proceso sobre esta, hasta alcanzar un único dígito.

    La cantidad de veces que se requiera realizar la sumatoria hasta obtener un único dígito se denomina persistencia aditiva.

    Por ejemplo:

    • El número 1234 tiene una persistencia aditiva de 2 (la primera suma de dígitos es 10, luego la segunda suma es 1).
    • El número 5978 tiene una persistencia aditiva de 3 (5978→29→11→2).
    • El número 9 tiene una persistencia aditiva de 0.

    Se requiere implementar en Python la función calcularPersistenciaAditiva(), la cual recibe como parámetro un número entero positivo denominado número y retorna su persistencia aditiva.

  • 2Eva_IIT2015~T3 matriz de campos petroleros

    2da Evaluación II Término 2015-2016, Febrero 2016 /FIEC

    Tema 3. (50 puntos) Se le ha pedido ayuda con el desarrollo de un sistema para el control de campos petroleros.

    Se le ha indicado que la información de los campos petroleros se encuentra en un archivo estructurado con los siguientes atributos: código, nombre, ubicación (fila,columna), y número de barriles producidos. A continuación se muestra un ejemplo:

    1|Campo Bolívar|0,2|97
    2|Campo Zamora|3,0|86
    3|Campo Tungurahua|4,3|101
    4|Campo Pastaza|2,1|78
    

    El atributo de ubicación sirve para realizar una representación de los campos en una matriz de n xm como si fuera el mapa de algún sitio. Por ejemplo:

    0 1 2 3 4
    0 1
    1
    2 4
    3 2
    4 3
    5

    Esta representación permitirá la generación de reportes acerca de los campos petroleros. Un reporte necesario es uno que permita saber cuantos campos petroleros hay en un área buscada y cuantos barriles en total se producen en esa área. Por ejemplo:

    Área del punto (0,1) al (4,3) ‐> hay 3 campos petroleros 
                                     y se producen 276 barriles

    Se le pide:

    1. Implementar una función cargarInformacion(nombreArchivo) que retorna un diccionario con la información de los campos petroleros.

    2. Implementar la función u bicarCamposPetroleros(diccionario, n, m) que recibe un diccionario y retorna una matriz de nxm de numpy con la ubicación de los campos petroleros. Asuma que n y m son dimensiones válidas para que la matriz contenga los campos petroleros descritos en el archivo.

    3. Implementar la función r eporteArea(matriz, diccionario, puntoInicio, puntoFin) que recibe una matriz de numpy, un diccionario, y dos tuplas (puntoInicio y puntoFin) que está compuesta por dos coordenadas de fila y columna; y retorna unatupla con el número de campos petroleros y números de barriles producidos en esa área.

    Ejemplo:

    reporteArea(matriz, diccionario, (0,1), (4,3)) 
            retorna 3, 276
    0 1 2 3 4
    0 1
    1
    2 4
    3 2
    4 3
    5
  • 2Eva_IIT2015~T1 Cifrado César como función

    2da Evaluación II Término 2015-2016, Febrero 2016 /FIEC

    Tema 1 (20 puntos) El cifrado César es una de las técnicas de codificación de textos por sustitución en el que una letra en el texto original es reemplazada por otra letra que se encuentra un número fijo de posiciones más adelante en el alfabeto.

    Por ejemplo, con un desplazamiento de 2 posiciones, la A sería sustituida por la C (situada 2 lugares a la derecha de la A), la B sería reemplazada por la D, etc. Se supone que el alfabeto es circular de modo que, a todos los efectos, a continuación de la Z comienzan de nuevo las letras A, B, C, etc.

    Se le solicita escribir la función recursiva cifrarCesar que recibe como parámetros una cadena de caracteres escritos en minúsculas, el desplazamiento y una lista con las letras del alfabeto y retorna una nueva cadena con el texto codificado. Debe tener en cuenta que sólo se codifican los caracteres correspondientes a las letras del alfabeto, el resto de caracteres (espacios en blanco, signos de puntuación, números, etc) permanecerán inalterados.

    Ejemplo:
    función resultado
    cifrarCesar(“hola mundo”,3,alfabeto) “krod pxqgr”
    cifrarCesar(“xyz”,2,alfabeto) “zab”
    cifrarCesar(“el yoyo, cuesta $5”,4,alfabeto) “ip cscs, gyiwxe $5”

    Referencia: 2Eva_IIT2012_T2 Cifrado César de FCNM

  • 3Eva_IIT2015~T3 Juego planta bombas

    3ra Evaluación II Término 2015-2016, Febrero 2016 /FIEC

    Tema 3. (40 puntos) Implemente las siguientes funciones:

    a. colocarMinas(campo, cantidad, orientacion) que recibe un arreglo tipo matriz llamado campo , cantidad y orientación.  Luego, genere cantidad de minas de longitud 3 con orientación horizontal o vertical (dada por el parámetro correspondiente) y las coloque en posiciones aleatorias en el campo. Las minas se representan con números consecutivos entre 1 y cantidad. Las minas no pueden salirse del tablero ni intersectarse con otras minas.

    El siguiente ejemplo representa un campo de 10x10, con 5 minas en orientación horizontal.

    campo
    4 4 4
    1 1 1
    .
    .
    .
    3 3 3
    .
    .
    5 5 5
    2 2 2

    b. avance(campo, puntoInicio, puntoFin) que recibe dos tuplas con coordenadas y retorna los puntos ganados (valor positivo) o perdidos (valor negativo) de acuerdo a las siguientes reglas:

    • Si el puntoFin en campo NO contiene una mina: todas las minas adyacentes a puntoInicio se destruyen y gana un punto por cada mina destruida.
    • Si el puntoFin en campo contiene una mina: la mina del puntoFin (solo esa) se destruye y el jugador pierde 3 puntos.

    En el siguiente ejemplo, el usuario decide moverse del punto A al punto B, las minas en negritas serán eliminadas

    campo
    4 4 4
    1 1 1
    . A
    . B
    .
    3 3 3
    .
    .
    5 5 5
    2 2 2

    Con estas funciones escriba un programa que realice las siguientes tareas:

    • Crear el campo de 10x10
    • Colocar 5 minas en el campo horizontalmente
    • Generar aleatoriamente una posición original válida para el usuario. Esta posición es válida si está vacía y dentro del campo.
    • Pedir al usuario las coordenadas destino (fila,columna) y actualizar los puntos de acuerdo a las reglas listadas anteriormente.
    • El juego termina cuando el usuario destruye todas las minas o ingresa (‐1,‐1) como coordenadas de destino.
    • Al final debe mostrar cuántas casillas con minas destruyó, cuántos puntos acumuló, cuántas casillas con partes de una mina quedan en el tablero y cuántos tipos de minas quedan en el tablero.

    Del ejemplo, el usuario destruyó 2 casillas con minas, hizo 2 puntos, existen 13 casillas con minas en el tablero y quedan 5 tipos de minas.


    Referencia: 3Eva_IT2006_T4 Juego planta bombas (buscaminas)

  • 3Eva_IIT2015~T2 Biciespol, archivo de préstamos.txt

    3ra Evaluación II Término 2015-2016, Febrero 2016 /FIEC

    Tema 2. (25 puntos) El departamento de Bienestar Estudiantil de la ESPOL ha implementado un nuevo servicio de rentas de bicicletas para los estudiantes que desean movilizarse internamente en el campus universitario.

    El departamento de Bienestar Estudiantil está interesado en conocer la acogida del servicio por parte de los estudiantes, para ello cuenta con un archivo de datos en texto plano, el cual tiene la información de todas las rentas de bicicletas que se han dado hasta el momento.

    El archivo tiene el siguiente formato:

    Matrícula|Nombre|# de bicicleta|Hora Inicio|Hora Fin|Multa

    A continuación se ofrece un ejemplo del contenido del archivo:

    200501010|JUAN PEREZ|10|15|16|2.0
    200502020|LUIS CASTRO|24|14|15|3.50
    200502020|LUIS CASTRO|30|11|12|0.0
    200501010|JUAN PEREZ|9|9|10|1.50
    200503030|JUAN PEREZ|27|8|9|4.00
    

    Implemente la función almacenarRentasEstudiantes(nombreArchivo, prefijoSalida, horaInicio, horaFinal), la cual recibe el nombre del archivo donde se encuentra la información de los alquileres y un rango de horas.

    Para el rango de horas especificadas, la función calcula las veces que cada estudiante ha prestado una bicicleta, la cantidad y monto total de multas y almacena los resultados de cada estudiante en archivos individuales a sociados con cada uno de ellos.

    Los archivos de salida tienen por nombre prefijoSalida_numeroMatricula.txt . Un ejemplo de la llamada a la función sería la siguiente:

    almacenarRentasEstudiantes(“rentas.txt”, “reporte”, 11, 16)
    reporte_200501010.txt
    1|1|2.0
    reporte_200502020.txt
    2|1|3.50
    

    Referencia: 2Eva_IIT2015_T4 biciespol, prestamos de bicicletas

  • 2Eva_IT2015~T3 Números en matriz de puntos

    2da Evaluación I Término 2015-2016, Septiembre 2015 /FIEC

    Tema 3. (40 puntos) Dado un archivo con una serie de caracteres y los desplazamientos necesarios para ubicar dichos caracteres en un tablero digital, se solicita cargar los caracteres y sus desplazamientos en memoria, y
    luego escribir los caracteres en un tablero de una cierta dimensión y en una posición determinada.

    Ejemplo de archivo de caracteres:

    1:(0,0),(1,0),(2,0)
    2:(0,0),(0,1),(0,2),(1,2),(2,2),(2,1),(2,0),(3,0),(4,0),(4,1),(4,2)

    El tablero es un arreglo de numpy de dimensiones nxm que inicialmente está en cero.

    Implementar las siguientes funciones:

    a) Una función cargarInfo(nombreArchivo) que retorna un diccionario con el caracter como clave y una lista de desplazamientos como valor.

    b) Una función colocarEnTablero(tablero, posF, posC, caracter) que coloca el caracter en el tablero a partir de la posición dada (posF para la fila inicial, posC para la columna inicial) y retorna un entero que indica lo siguiente:

    - Si el caracter se sobrepone a otro ya presente, se devuelve -1,
    - si el caracter sale del tablero, se devuelve -2,
    - si el caracter puede ser colocado retorna 1.

    El caracter está formado por una serie de posiciones que se cuentan a partir de la posición inicial. Por ejemplo, el caracter 2 al colocarse en la posF=1 y posC=2 quedaría como se observa en el siguiente gráfico:

    c) Escribir la función contarLibres(tablero) que retorne el número de posiciones libres en el tablero.

    Rúbrica: literal a (12 puntos), literal b (18 puntos), literal c (10 puntos)

  • 2Eva_IT2015~T2 Funciones con cadenas, sufijos y contador de letras.

    2da Evaluación I Término 2015-2016, Septiembre 2015 /FIEC

    Tema 2. (25 puntos) Desarrolle las siguientes funciones:

    a) procesarSufijos(palabra, sufijo). Esta función recibe una palabra y un sufijo. El sufijo se remueve y se añade la letra “r” al final. Ejemplo:

    procesarSufijos(“cocinamos”, “mos”) retorna cocinar
    procesarSufijos(“perderia”, “ria”) retorna perder

    b) contarCaracteres(listaPalabras, nombreArchivo). Esta función recibe una lista de palabras y crea un archivo con el nombre dado como parámetro. En el archivo se almacena la letra y cuántas veces esa letra aparece en las palabras analizadas. Ejemplo:

    contarCaracteres([“hola”, “mundo”, “espol”])

    Archivo generado:

    h,1
    o,3
    l,2
    a,1
    m,1
    u,1
    n,1
    d,1
    e,1
    s,1
    p,1

    Rúbrica: literal a (8 puntos), literal b (17puntos)


    Referencia: 3Eva_IIT2014_T3 Juego de palabras encadenadas , Alfabeto PMF