Está en la página 1de 5

Introducción a la Computación

ING1310 2/2006
Tarea 1
Profesores: Vanny Smith y Ricardo Zilleruelo.
Auxiliares: Francisco Claude y Daniel Pérez

Fecha de entrega: 14/09/06

Primera parte: El Ahorcado.


Para esta pregunta usted deberá hacer un programa que juegue al juego del “Ahorcado” con
el usuario. En el juego del ahorcado hay dos jugadores y se juega de la siguiente forma:

- El primer jugador (en este caso el programa) escoge una palabra y le dice al segundo
jugador (el usuario) que debe adivinar una palabra de n letras. Por ejemplo si la palabra
es camaron, al segundo jugador se le muestra:

_ _ _ _ _ _ _

- El segundo jugador tiene 2·n oportunidades para adivinar la palabra. Por cada oportu-
nidad se le pregunta al segundo jugador si desea adivinar la palabra o si desea adivinar
una letra. Independiente de la opción que elija, el jugador pierde una oportunidad.

- Si el segundo jugador desea adivinar la palabra, se le pregunta por la palabra, si adivina


gana el juego. Si no adivina y todavı́a le quedan oportunidades se le vuelve a preguntar
si desea adivinar una palabra o una letra.

- Si el segundo jugador desea adivinar una letra, se le pregunta por la letra, si esta se
encuentra en la palabra se le muestra en que posiciones de la palabra está la letra. Por
ejemplo, si el segundo jugador dice a, se le muestra:

_ a _ a _ _ _

1
Si al jugador todavı́a le quedan oportunidades se le vuelve a preguntar si desea adivinar
una palabra o una letra.

El juego termina cuando cualquiera de las siguientes condiciones se cumple:

1. El jugador agota todas las oportunidades.

2. El jugador adivina la palabra.

3. El jugador adivina todas las letras de la palabra.


Por ejemplo, supongamos que al jugador le quedan tres oportunidades y ya tiene:

_ a m a r o n

Si el jugador decide adivinar una letra y escoge la letra c se acaba el juego pues
completa la palabra.

Escriba un programa llamado Ahorcado que represente al primer jugador. Las especifica-
ciones para este programa son:

1. La palabra que se usará para el juego la proveerá el método obtienePalabra() de la


clase Util (esta clase esta en el Sitio Web del curso). Este método retorna una palabra
al azar.

2. Si el jugador gana se le debe decir que ganó y mostrar una figura adecuada, por ejemplo
puede ser una carita feliz hecha con algún carácter. Para la impresión de la figura debe
implementar un método llamado ImprimeGanador() que lo único que hace es imprimir
en pantalla la figura que usted elija. Por lo tanto el encabezado del método debe ser:

public static void ImprimeGanador()

3. Si al jugador se le acaban las oportunidades le debe decir que perdió y debe mostrar
una figura adecuada, por ejemplo puede ser la tı́pica figura del ahorcado hecha con
caracteres. Para la impresión de la figura debe implementar un método llamado
ImprimePerdedor() que lo único que hace es imprimir en pantalla la figura que usted
elija. Por lo tanto el encabezado del método debe ser:

public static void ImprimePerdedor()

4. Cada vez que el jugador trata de adivinar una palabra o una letra se le deben decir
cuantas oportunidades le quedan.

5. Para adivinar una palabra el jugador debe ingresar 1 y para adivinar una letra 2.

Aquı́ hay un ejemplo de cómo su programa debe funcionar (no incluye la figura):

2
Debe adivinar una palabra de 9 letras
_ _ _ _ _ _ _ _ _
Usted tiene 18 oportunidades
Desea adivinar la palabra (1) o adivinar una letra(2)?
2
Ingrese una letra
a
Dada la letra que ingreso le podemos dar las siguientes pistas
_ _ _ _ _ _ _ _ _
Le quedan 17 oportunidades
Desea adivinar la palabra (1) o adivinar una letra(2)?
2
Ingrese una letra
e
Dada la letra que ingreso le podemos dar las siguientes pistas
_ _ _ _ _ _ _ e _
Le quedan 16 oportunidades
Desea adivinar la palabra (1) o adivinar una letra(2)?
2
Ingrese una letra
i
Dada la letra que ingreso le podemos dar las siguientes pistas
_ _ _ _ i _ _ e _
Le quedan 15 oportunidades
Desea adivinar la palabra (1) o adivinar una letra(2)?
2
Ingrese una letra
o
Dada la letra que ingreso le podemos dar las siguientes pistas
_ _ _ _ i o _ e _
Le quedan 14 oportunidades
Desea adivinar la palabra (1) o adivinar una letra(2)?
2
Ingrese una letra
u
Dada la letra que ingreso le podemos dar las siguientes pistas
_ u _ _ i o _ e _
Le quedan 13 oportunidades
Desea adivinar la palabra (1) o adivinar una letra(2)?
2
Ingrese una letra
c
Dada la letra que ingreso le podemos dar las siguientes pistas
_ u _ c i o _ e _
Le quedan 12 oportunidades

3
Desea adivinar la palabra (1) o adivinar una letra(2)?
2
Ingrese una letra
s
Dada la letra que ingreso le podemos dar las siguientes pistas
_ u _ c i o _ e s
Le quedan 11 oportunidades
Desea adivinar la palabra (1) o adivinar una letra(2)?
2
Ingrese una letra
n
Dada la letra que ingreso le podemos dar las siguientes pistas
_ u n c i o n e s
Le quedan 10 oportunidades
Desea adivinar la palabra (1) o adivinar una letra(2)?
1
Cual cree usted que es la palabra?
funciones
GANO!!!!!

Segunda parte: Similitud de vectores.


1. En esta parte se pide que escriba la clase SimilitudVectores, que tiene como objetivo
proveer un conjunto de funciones para determinar la similitud entre vectores.
Dentro de la clase SimilitudVectores usted debe implementar los siguientes métodos:

static public double producto punto(double[] v1, double[] v2):


Este método debe calcular el producto punto entre los vectores v1 y v2.
n
X
< v1, v2 >= xi · y i
i=1

Donde xi es la componente i-ésima del vector v1 e yi es la componente i-ésima del


vector v2.
static public double norma(double[] v):
Este método debe calcular la norma del vector v.

kvk = < v, v >
static public double coseno(double[] v1, double[] v2):
Este método debe calcular el coseno entre los vectores v1 y v2.
< v1, v2 >
coseno(v1, v2) =
kv1k · kv2k

4
Note que los métodos se pueden escribir usando los anteriores. Se pide que aproveche
eso para ahorrar trabajo y hacer un programa más legible.

2. Escriba un programa llamado Tarea1b que genere un conjunto de vectores con valores
aleatorios entre (-1,1). Luego su programa debe imprimir la similitud entre todos los
pares posibles de vectores. Como medida de similitud debe usar la función coseno
definda en la clase de la parte anterior.
Su programa deberá preguntar por el numero de vectores a crear y su dimensión.

Ejemplo de como su programa debe funcionar:

(huemul:~/Desktop/Tarea1) rzilleru% java Tarea1b


numero de vectores? 4
dimension? 100
Sim(v0,v1): 0.10160542092528488
Sim(v0,v2): -0.07162425946623514
Sim(v0,v3): -0.0120584226031247
Sim(v1,v2): -0.03781158026074955
Sim(v1,v3): -0.0977656133598262
Sim(v2,v3): 0.014507254236147038
(huemul:~/Desktop/Tarea1) rzilleru%

Nota. Su programa como mı́nimo debe compilar y respetar los nombres de clases y métodos
definidos en el enunciado. Recuerde que es case sensetive. De no ser ası́ su tarea tendrá nota
1.0.

También podría gustarte