Nombre Password [ Regístrate ]

Master Mind (OIE 3 - 1999)

 

El Master Mind es un juego de sobremesa en el que participan dos jugadores A y B con fichas de colores. Posiblemente ya lo conocéis; si no, es un buen momento para aprender cómo se juega.

A imagina una combinación "objetivo" de cinco fichas y B debe adivinarla; la posición que ocupa cada ficha en la combinación es relevante. El jugador B va proponiendo combinaciones candidatas (también de cinco fichas de colores), y el jugador A responde con el número de aciertos y de aproximaciones que contiene respecto al objetivo. Se produce acierto en cada posición de la combinación propuesta que contenga una ficha del mismo color que la que hay en la misma posición del objetivo. Se produce aproximación en las posiciones de la combinación propuesta que no sean aciertos, pero sí del mismo color que alguna otra posición del objetivo. En el siguiente ejemplo, la propuesta obtiene un acierto (el verde de la segunda posición) y dos aproximaciones (el amarillo y el marrón):

Posiciones
1
2
3
4
5
OBJETIVO
Amarillo
Verde
Marrón
Verde
Fucsia
PROPUESTA
Azul
Verde
Amarillo
Marrón
Marrón

Notemos que, cuando una ficha de la propuesta se asocia a una ficha del objetivo, ya no se puede asociar a ninguna otra. Por ello, el "Verde" de la propuesta sólo cuenta como acierto en la posición 2, y no como aproximación en la posición 4 del objetivo (tienen preferencia los aciertos sobre las aproximaciones). Igualmente, una ficha del objetivo sólo puede asociarse a una ficha de la propuesta. Por ello, de los dos "Marrón" de la propuesta, sólo se contabiliza una aproximación.

La secuencia de combinaciones que B ha formulado hasta un momento dado proporciona una pista para la siguiente propuesta del jugador B, de manera que, cuando B propone una jugada, puede comprobar previamente que sea coherente, es decir, que no se contradiga con los resultados de las jugadas anteriores. Una propuesta coherente a partir del ejemplo anterior (donde B supone que el acierto era el marrón de la posición 4 y las aproximaciones el amarillo y el verde) sería:

Posiciones
1
2
3
4
5
PROPUESTA
Amarillo
Rojo
Gris
Marrón
Verde

que sigue produciendo un acierto (amarillo) y dos aproximaciones (marrón y verde).

Se pide la construcción de un programa que, dado un objetivo y una secuencia de propuestas, indique el resultado de cada propuesta, y para cada una de ellas diga si es coherente con las anteriores. Representaremos los colores con números entre el 0 y el 9.

Entrada

Residente en el fichero de caracteres "MIND.DAT": una primera línea con la combinación objetivo, y una serie de líneas cada una de ellas correspondiente a una combinación propuesta. Cada línea consiste de cinco dígitos (caracteres entre '0' y '9') separados por un único blanco; no hay ningún otro tipo de caracteres ni al inicio ni al final de la línea.

Salida

A guardar en el fichero de caracteres "MIND.OUT": para cada combinación propuesta, existirá una línea en la salida que dirá: el número de aciertos, el de aproximaciones y si la combinación es coherente con las anteriores o no. Los dos primeros campos se representan mediante un dígito, y el tercero mediante un carácter 'C' (coherente) o 'N' (no coherente). Existirá un único blanco separando la información de cada línea; no hay ningún otro tipo de caracteres ni al inicio ni al final de la línea.

Ejemplo de entrada

1 4 4 5 7
2 3 4 5 6
2 4 4 5 8
9 8 4 5 8
1 3 4 4 7

Ejemplo de salida

2 0 C
3 0 N
2 0 C
3 1 N



© (2001-2008) ALGORITMIA.NET - Política de privacidad