Primera Evaluación de Temas Selectos de Sistemas
Jueves 12 de mayo de 2005 (13:00 a 15:55)
Instrucciones: Deberán
resolver dos problemas, por lo que me deberán entregar dos
códigos fuente, uno para cada problema. Cada problema se
evaluará con 10 casos de prueba y cada uno de ellos vale 1
punto. Pongan un comentario en su código indicando los dos
integrantes del equipo. La lectura se hará desde la entrada
estándar y la escritura hacia la salida estándar. En sus
pruebas, usen la redirección de entrada y salida.
Problema 1.6.2: Buscaminas (bminas.c, bminas.cpp ó
bminas.java)
¿Has jugado alguna vez al Buscaminas? Este es un jueguito que
viene con un cierto sistema operativo cuyo nombre no puedo recordar. El
objetivo del juego es el de encontrar dónde están
localizadas todas las minas en un campo de M por N.
El juego muestra un número en un cuadro que te dice
cuántas minas hay adyacentes a ese cuadro. Cada cuadro tiene a
lo mucho ocho cuadros adyacentes. El campo de 4 por 4 de la izquierda
contiene dos minas, representadas por el caracter "*". Si representamos el mismo
campo usando las pistas descritas arriba, terminamos con el campo de la
derecha:
*...
*100
.... 2210
.*.. 1*10
.... 1110
Entrada: La entrada
consistirá de un número arbitrario de campos. La primera
línea de cada campo contendrá dos enteros N y M (0 <
N,M <= 100) que significan el número de renglones y de
columnas del campo, respectivamente. Cada una de las siguientes N
líneas contiene exactamente M caracteres, representando el
campo. Los cuadros seguros se denotan con un "." y los cuadros con minas con
un "*", ambos sin las
comillas. La primera línea de un campo donde N = M = 0
representa el fin de la entrada y no debe ser procesada.
Salida: Para cada campo,
imprime el mensaje Field #X:
en una línea sóla, donde X significa el número de
campo comenzando desde el 1. Las siguientes N líneas deben
contener el campo con los caracteres "." reemplazados por el
número de minas adyacentes a ese cuadro. Debe haber una
línea en blanco entre las salidas de cada campo.
Ejemplos: Entrada
y salida. Para usar este ejemplo, escriban bminas < bminas.ent > bminas.txt
y comparen bminas.txt con
bminas.sal
Problema 2.8.3: Huelgas (huelga.c, huelga.cpp ó huelga.java)
Los partidos políticos en Bangladesh muestran su poderío
convocando a huelgas regulares, las cuales causan enorme daño
económico. Para nuestros propósitos, cada partido
político se puede caracterizar por un entero positivo H llamado
su parámetro de huelga que denota el número promedio de
días entre dos huelgas convocadas por ese partido
político.
Considere tres partidos políticos. Suponga que H1 =
3, H2 = 4 y H3 = 8, donde HI es el
parámetro de huelga del partido político I. Podemos
simular el comportamiento de estos tres partidos por N = 14
días. Siempre comenzaremos la simulación en domingo. No
hay huelgas ni viernes ni sábados.
|
1
|
2
|
3
|
4
|
5
|
6
|
7
|
8
|
9
|
10
|
11
|
12
|
13
|
14
|
Días
|
Do
|
Lu
|
Ma
|
Mi
|
Ju
|
Vi
|
Sa
|
Do
|
Lu
|
Ma
|
Mi
|
Ju
|
Vi
|
Sa
|
Partido 1
|
|
|
X
|
|
|
X
|
|
|
X
|
|
|
X
|
|
|
Partido 2
|
|
|
|
X
|
|
|
|
X
|
|
|
|
X
|
|
|
Partido 3
|
|
|
|
|
|
|
|
X
|
|
|
|
|
|
|
Huelgas
|
|
|
1
|
2
|
|
|
|
3
|
4
|
|
|
5
|
|
|
Habrá exactamente 5 huelgas (en los días 3, 4, 8, 9 y 12)
durante los 14 días. No hay huelga el día 6 porque cae en
viernes. Por lo tanto perdemos cinco días de trabajo en dos
semanas.
Dados los parámetros de huelga de varios partidos
políticos y el valor de N, determine el número de
días de trabajo perdidos en esos N días.
Entrada: La primera
línea de la entrada consiste de un entero T dando el
número de casos de prueba que siguen. La primera línea de
cada caso de prueba contiene un entero N (7 <= N <= 3650) dando
el número de días sobre los que debe correr la
simulación. La siguiente línea contiene otro entero P (1
<= P <= 100) representando el número de partidos
políticos. La I-ésima de las siguientes P líneas
contiene un entero positivo HI (que nunca será un
múltiplo de 7) que es el parámetro de huelga del partido
I (1 <= I <= P).
Salida: Para cada caso de
prueba, escriba el número de días de trabajo perdidos en
una línea aparte.
Ejemplos: Entrada
y salida. Para usar este ejemplo, escriban huelga < huelga.ent > huelga.txt
y comparen huelga.txt con
huelga.sal