Obligatorio de programación con Junit Completar los siguientes ejercicios de programación cumpliendo con el siguiente reglamento. Sobre las entradas 1) Debe leerse el archivo de texto. 2) Cada archivo de entradas contendrá 1 o mas casos de prueba Sobre las salidas 1) Debe escribirse un archivo de texto 2) Las soluciones deben seguir el estándar propuesto en cada ejercicio Sobre la arquitectura de la solución 1) La solución debe estar codificada en una paquete independiente del que contenga el acceso a archivos 2) El paquete de la solución debe estar probado con junit. Sobre la corrección 1) Además de los casos de prueba proporcionados en cada ejercicio. Los docentes ejecutaran una biblioteca de prueba adicional 2) Para cada ejercicio de deberá entregar todo el código fuente y un jar ejecutable. 3) Los trabajos se recibirán al mail del docente, una semana luego de la finalización del taller. 4) Los rangos de nota responden a la siguiente tabla Nota Criterio 10 Todos los ejercicios resueltos con los siguientes criterios Utiliza TDD o Junit. Pasa todas las pruebas proporcionadas Pasa los casos de prueba de los docentes 7-9 Dos de tres ejercicios resueltos con los siguientes criterios; Utiliza TDD o Junit a conciencia con todos los casos de prueba proporcionados codificados Se codificaron casos de prueba adicionales Pasa todos los casos de prueba proporcionados y los casos de prueba de los docentes 5-7 Dos de tres ejercicios resueltos con los siguientes criterios; Utiliza Junit a conciencia con todos los casos de prueba proporcionados codificados Se codificaron casos de prueba adicionales Pasa todos los casos de prueba proporcionados y alguno de los casos de prueba de los docentes 2-4 Un ejercicio codificado o ejercicios codificados sin Junit. No pasa los todos los casos de prueba proporcionados. No pasa los casos de prueba de los docentes 1 No entrega
Ejercicio 1. Bingo! Una tarde de lluvia, mi hermana y yo inventamos un nuevo juego de Bingo! Sobre las mismas tarjetas con números. Tomamos las siguientes reglas. El niño cantor saca de la bolsa de una bolilla, lee el numero y la devuelve, luego saca otra y canta el numero de la diferencia de ambas bolillas en valor absoluto. Para complicarla un poquito, antes de comenzar se saca un poquito, antes de comenzar se saca de la bolsa un numero de bolillas al azar. Mi hermana argumenta que dado cualquier combinación de bolillas que saquemos, igual se puede jugar al bingo. Yo creo que no. Necesitamos saber si, ante cualquier retiro de bolillas es posible cantar todos los números del bingo. Entrada Cada caso de prueba es desrito en dos líneas. La primer contiene los enteros N y B que representan: N mayor entero escrito en el juego de bolillas del bingo (1 <= N < 100). B es el número de bolillas que quedaron en la bolsa (2 <= B <= N+1). La segunda línea contiene B enteros que indican las bolillas que quedaron en la bolsa. El último caso de prueba es seguido por una línea que contiene dos ceros ( 0 0 ). Para cada caso de prueba se espera una línea con un Y para indicar si es posible cantar todos los números o un N si no es posible. Entrada de Ejemplo 6 7 2 1 3 4 0 6 5 5 4 5 3 0 1 5 3 1 5 0 0 0 de Ejemplo Y Y N El software será probado con un archivo llamado Bingo.in que tendrá que ser leído desde el mismo directorio donde se encuentre el jar con la solución del ejercicio.
Ejercicio 2 Problemas circulares Un conjunto de puntos se llaman co-circulares si se encuentran en el perímetro de una circunferencia. La tarea consiste en, dado un conjunto de puntos, calcular el mayor subconjunto de puntos cocirculares. Entradas Cada caso de prueba es dado en múltiples líneas. La primer línea indica el número de puntos (N). Con 1< N < 100. Cada una de las siguientes N líneas contiene dos enteros X e Y que representan las coordenadas de los puntos (con limites -10 4 < X, Y < -10 4 ). El último caso de prueba es seguido por una línea que contiene un cero. Para cada caso de prueba la salida debe indicar el número de punto co-circulares. Ejemplo de entrada 7-10 0 0-10 10 0 0 10-20 0 0 20-2 4 4-10000 10000 10000 10000 10000-10000 -10000-9000 3-1 0 0 0 1 0 0 Ejemplo de salida 4 3 2 El software será probado con un archivo llamado circular.in que tendrá que ser leído desde el mismo directorio donde se encuentre el jar con la solución del ejercicio.
Ejercicio Necesidades Eléctricas Estas encargado de seleccionar la locación de una nueva fábrica para tu empresa. Como esta fábrica va a tener necesidades importantes de energía, la selección geográfica de la misma será priorizada por la cercanía de la futura fábrica a una central eléctrica. El mapa esta representado por una matriz de N por M. Alguna de las celdas contiene centrales eléctricas y no pueden albergar la fábrica. La fábrica tiene un tamaño inferior a la celda. La ubicación de la fabrica puede describirse por un conjunto de coordenadas X e Y, de forma que la primera celda del mapa se llame (1,1). Se define como distancia entre A y B siendo A (i, j) y B Ii1, j1) a la siguiente ecuación: D(a,b) = Max( i i1, j j1 ). Esta fórmula determina la prioridad eléctrica de la fábrica. Cuanto menor es el número, mayor es la prioridad eléctrica. El objetivo del trabajo es priorizar el mapa de acuerdo a la regla anterior con enteros consecutivos. Teniendo en cuenta: a. En orden ascendente de prioridad eléctrica. b. Si dos celdas tienen la misma prioridad eléctrica, prima el numero de filas c. Si dos celdas tienen la misma prioridad eléctrica y el mismo número de fila, prima el numero de columna. La siguiente tabla contiene el ejemplo de un mapa priorizado. Destacando las centrales eléctricas en fondo negro, y las prioridades eléctricas 1 y 2 en tonos de gris. 23 23 12 1 2 3 13 24 14 15 4 5 16 25 17 6 7 8 9 18 26 19 10 11 20 21 Como entrada recibirás un conjunto e consultas al que deberás responder con la prioridad que fue asignada a esa posición. Entrada Cada caso de prueba es dado en múltiples líneas. La primera línea contiene tres enteros N, M y P. En donde 1 < N, M < 10 9 y 2 < P < 20. N y M representan las dimensiones del mapa y P el número de centrales eléctricas.
Las siguientes P líneas tiene dos enteros que representan las coordenadas de las centrales eléctricas. La siguiente línea incluye un entero Q que representa el número de consultas a realizar ( 1 < Q < 50). Las siguientes Q líneas contienen enteros (q i ) con las posiciones de la lista priorizada. El último caso de prueba es seguido por una línea con tres ceros. Para cada caso de prueba se debe tener Q + 1 llenas de respuestas. Para cada línea i debe tener las coordenadas de la consulta q i La ultima línea del caso de prueba debe terminar con un -. Ejemplo de entrada 4 7 2 2 5 4 4 6 1 6 11 16 21 26 0 0 0 Ejemplo de salida 1 4 3 3 4 5 2 7 4 7 4 1 - El software será probado con un archivo llamado electric.in que tendrá que ser leído desde el mismo directorio donde se encuentre el jar con la solución del ejercicio.