3Eva_IT2010_T3 Asignar de asientos en un avión

3ra Evaluación I Término 2010-2011, Septiembre 14, 2010 /ICM00794

Tema 3. (50 puntos) Una aerolínea requiere de un programa para administrar la ocupación de un vuelo por medio de las siguientes opciones en el menú mostrado.

  1. Compra de Boleto.- Registra datos de cada pasajero: cedula y nombre, siempre que exista disponibilidad de asientos. Puede usar la función ocupados() del tema anterior.
  2. Asignar asiento.- Se solicita la identificación del pasajero y la ubicación deseada por fila y columna, asignando la posición solo si está disponible. En el caso que la ubicación deseada este ocupada, se le asigna una libre usando función ubicalibre() del tema anterior. La ubicación final del pasajero se debe registrar también en la estructura de datos del pasajero.
  3. Mostrar ocupación de asientos.- permite revisar cuáles asientos se encuentran ocupados (1) o vacios (0).
  4. Lista de Pasajeros en el vuelo.- Muestra la información de pasajeros confirmados (con asiento asignado).
  5. Salir
Pasajero
Cedula Nombre Fila Columna
8765 Juan 3 4
6543 Pedro 0 0
2345 María 4 2
….

Sugerencia: Para el control de asientos, usar una matriz asientos(n,m) que indica: ocupados (1) o vacios (0). Al inicio se consulta el número de filas y columnas de asientos en el avión.

Rúbrica: Estructura de Datos (10 puntos). Menú estructurado (5 puntos).Opción 1(10 puntos). Opción 2 (10 puntos). Validación de asientos (5 puntos). Pasajeros confirmados (5 puntos). Uso de funciones (5 puntos).

3Eva_IIT2010_T3 Juego de rompecabezas

3ra Evaluación II Término 2010-2011, Febrero 15, 2011 /ICM00794

Tema 3. (30 puntos). Un rompecabezas numérico se compone de fichas marcadas del 1 al 8 y colocadas aleatoriamente en un tablero de 3×3. Para la solución, se debe ordenar las fichas, dejando vacía la esquina inferior derecha, siguiendo las siguientes reglas:

  • En cada turno, el programa debe permitir al usuario mover una ficha a la casilla vacía si esta se encuentra en la misma fila o columna.
  • El juego se repite hasta formar la solución, mostrando la cantidad de turnos utilizados.

Realice un programa que simule el juego de rompecabezas.

Rompecabezas: :

Solución: rompecabezas solucionado

>> resolver
¿Tamaño del tablero?: 3
 Turno: 1
8 2 6
5 4 0
1 7 3
¿Ficha a mover?:5
Turno: 2
8 2 6
0 4 5
1 7 3
¿Ficha a mover?:8
Turno: 3
0 2 6
8 4 5
1 7 3
¿Ficha a mover?:1
Turno: 4
1 2 6
8 4 5
0 7 3
¿Ficha a mover?: …

Nota:

  • Se recomienda utilizar una matriz solución para validar si se ha resuelto el rompecabezas.
  • Para generar el tablero del juego, puede hace uso de la función desordena(n) del tema anterior
  • Para validar si se puede mover una ficha, puede utilizar la función ubica(matriz,k) del tema anterior.

Rúbrica: Generación de rompecabezas y solución (5 puntos), control de turnos (5 puntos), validación de movimiento de ficha (10 puntos). Validación de solución del juego (10 puntos)

3Eva_IT2010_T2 Funciones ocupados y ubica libre en matriz

3ra Evaluación I Término 2010-2011, Septiembre 14, 2010 /ICM00794

Tema 2. (25 puntos) La matriz asientos(n,m) corresponde a la pre-asignación de asientos de una avión administrado por una aerolínea, que utiliza la nomenclatura de Ocupado(1) y vacio(0).

Asientos(i,j)
ventana pasillo pasillo ventana
1 2 3 m=4
Fila 1 0 0 0 0
2 0 0 0 0
3 0 0 0 1
4 0 1 0 0
19 0 0 0 0
n=20 0 0 0 0

Realice una función ocupados(matriz asientos) que reciba una matriz de asientos y entregue la cantidad de asientos ocupados.

Realice una función ubicalibre( matriz asientos) que entregue la ubicación del primer asiento desocupado en el caso de que existan.

Rúbrica: Definición de función (5 puntos). Procedimiento de función ocupados (8 puntos).Procedimiento de función ubicalibre (12 puntos)


matriz = [[1,1,1,1],
          [1,0,0,0],
          [0,1,0,1]]

ocupados:  7
primer libre encontrado:  [1, 1]
>>>

3Eva_IIT2010_T2 Ubicar número dentro de una matriz

3ra Evaluación II Término 2010-2011, Febrero 15, 2011 /ICM00794

Tema 2 (15 puntos). Escriba una función ubica(matriz,k) que dada una matriz de tamaño n, entregue la ubicación de fila y columna del número k.

Ejemplo siguiendo el resultado del tema 1:

>>> matriz = np.array([[8, 2, 6],
		       [5, 4, 0],
                       [1, 7, 3]])
>>> ubica(matriz,7)
array([2, 1])
>>> 
usando el ejemplo del tema anterior

Observación: Considere que las filas y columnas se numeran desde 0

Rúbrica: Definición de función (5 puntos), búsqueda de k (5 puntos). Algoritmo estructurado (5 puntos)

3Eva_IIT2010_T1 Matriz con aleatorios no repetidos (desordena)

3ra Evaluación II Término 2010-2011, Febrero 15, 2011 /ICM00794

Tema 1 (15 puntos). Realizar una función desordena(n), que entrega una matriz cuadrada de tamaño nxn llenada de forma aleatoria con números naturales no repetidos entre 0 y n2-1

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

Rúbrica: Definición y uso de función (5 puntos), aleatorios no repetidos (5 puntos). Algoritmo estructurado (5 puntos)

3Eva_IT2010_T1 Ecuación Verhulst

3ra Evaluación I Término 2010-2011, Septiembre 14, 2010 /ICM00794

Tema 1 (25 puntos) El crecimiento de población de varios países fue presentado por el matemático-biólogo Verhulst mediante un modelo matemático denominado ecuación logística.

P(t) = \frac{a P_0}{b P_0 + (a-b P_0)e^{-at}}

El valor de Po es la población inicial, y las variables a y b son factores de crecimiento característicos de ese país.

Realice una función logística(Po,a,b,t) que calcule el valor de P para el tiempo t.

Escriba un programa que solicite valores para Po, a, b, t y usando la función logística muestre en un arreglo los valores de crecimiento de la población en el periodo comprendido desde 1 hasta t en incrementos unitarios.

Finalmente el programa mostrará el valor de t para cuando la población supera el doble de su valor inicial.

Rúbrica: Definición de la función (5 puntos). Arreglo de crecimientos (10 puntos) y muestra el valor de t requerido (10 puntos).