Actualmente, los buses del Poli tienen una gran demanda en ciertos momentos del día (cerca de los horarios de inicio y fin de las clases) y se forman largas filas en los paraderos, creando muchas incomodidades para los usuarios del servicio. Por lo tanto, el Poli desea implementar un sistema de reservas de asientos para viajar en los buses, para ello, le ha pedido a usted implementar algunas de las funcionalidades del sistema en lenguaje Java. Para facilitar el desarrollo de la solución, se considerarán los siguientes parámetros: Las reservas corresponden únicamente a los viajes de un día. El sistema de reservas se abre a las 00:00 horas y se cierra a las 22:45 cada día. El usuario puede reservar para un viaje del mismo día, es imposible gestionar reservas en días distintos. Desde las 6:00 hasta las 22:45, exactamente cada quince minutos parte un bus. En total se hacen 68 recorridos cada día. Al primer bus se le asigna el turno cero, al segundo bus el turno uno, al tercer bus el turno dos y así sucesivamente hasta llegar el sexagésimo octavo bus que toma el turno número 67. Los buses que parten desde el City Campus y llegan al Campus Principal salen siempre a la hora en punto y media hora después de la hora en punto. Mientras que, los buses que parten desde el Campus Principal y llegan al City Campus salen siempre 15 minutos y 45 minutos después de la hora en punto. Por ejemplo, entre las 6:00 y las 7:45, los buses que parten del City Campus salen a las 6:00, 6:30, 7:00 y 7:30; y los buses que parten desde el Campus Principal salen a las 6:15, 6:45, 7:15 y 7:45. Cada bus tiene exactamente 50 asientos disponibles para los usuarios. Cada usuario debe ocupar un asiento. El sistema guardará las reservas en una matriz de números enteros de 68 filas y 50 columnas. Cada fila representa un bus que parte en un turno (desde el cero hasta el 67) y las 50 columnas representan las sillas del bus. En cada fila de la matriz, los asientos reservados por los usuarios están representados por números de cédula en cada celda y los asientos libres están representados por el número cero. Por ejemplo, si la fila fuese la que representa el turno 66 y contuviera los siguientes elementos:{1008620015,1008651994,1001320725,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, significaría que el bus de las 22:30 tiene únicamente tres asientos reservados y 47 asientos libres. Cuando alguien realiza una reserva en un bus, en la fila correspondiente de la matriz debe registrarse el número de cédula del usuario en la siguiente celda libre de fila correspondiente al bus. Los ceros (asientos libres) siempre deben estar al final del arreglo, es decir, no puede haber un cero seguido de un número de cédula. Por lo tanto, una nueva reserva se registrará en la posición del primer cero dentro del arreglo y una cancelación ocasionará que todos los números positivos se desplacen hacia el inicio del arreglo hasta que no haya ceros en medio de ellos. Dada la hora y los minutos de salida de un bus, devuelva el turno en el día que corresponde a ese bus. Recuerde que el primer bus sale en el turno cero y el último bus sale en el turno 67. Por ejemplo, si la hora es 14 y los minutos son 15, el método debería retornar el valor de 33. Como ayuda, se le proporciona el siguiente encabezado del método para que usted solamente tenga que implementarlo. No está permitido modificar el encabezado. static byte determinar_turno (byte hora, byte minutos) { } Dada una matriz de reservas, devuelva una copia idéntica de la matriz. Como ayuda, se le proporciona el siguiente encabezado del método para que usted solamente tenga que implementarlo. No está permitido modificar el encabezado. static int[][] copiar_reservas (int[][] reservas) { } Dada la hora y los minutos de salida de un bus y la matriz de reservas, devuelva un valor que indique cuántos cupos libres quedan en ese bus para realizar el viaje. Como ayuda, se le proporciona el siguiente encabezado del método para que usted solamente tenga que implementarlo. No está permitido modificar el encabezado. static byte contar_cupos_bus(byte hora, byte minutos, int[][] reservas) { } Dado un número de documento y la matriz de reservas, devuelva un arreglo que contenga los turnos de los buses en los que tiene reserva el usuario identificado con ese número. Si no tiene reservas en ningún bus, debe retornar un arreglo vacío. Como ayuda, se le proporciona el siguiente encabezado del método para que usted solamente tenga que implementarlo. No está permitido modificar el encabezado. static byte[] buscar_reservas(int documento, int[][] reservas) { } Dada la hora y los minutos de salida de un bus, la matriz de reservas y un arreglo que contiene los números de los documentos de las personas que quieren reservar su asiento en ese bus; devuelva una matriz de reservas actualizada con los cambios producto de dicha reservación. Si no hay suficientes asientos disponibles para un grupo del tamaño que quiere reservar, la matriz no sufrirá cambios. Como ayuda, se le proporciona el siguiente encabezado del método para que usted solamente tenga que implementarlo. No está permitido modificar el encabezado. static int[][] reservar_cupos(byte hora, byte minutos, int[][]reservas, int[] documentos){ }
#Libraries import pandas as pd import numpy as np #Series and DataFrames s = pd.Series([1, 3, 5, np.nan, 6, 8]) s dates = pd.date_range('20130101', periods = 6) dates df = pd.DataFrame(np.random.randn(6, 4), index = dates, columns = list('ABCD')) df df2 = pd.DataFrame({'A': 1., 'B': pd.Timestamp('20130102'), 'C': pd.Series(1, index = list(range(4)), dtype = 'float32'), 'D': np.array([3] * 4, dtype = 'int32'), 'E': pd.Categorical(["test", "train", "test", "train"]), 'F': 'foo'}) df2 df2.dtypes df.head() df.tail(3)