Ahorcado

Ahorcado

Difícil

Instrucciones

Implementa la lógica del juego del ahorcado usando programación reactiva funcional.

El ahorcado es un juego sencillo de adivinar palabras.

La programación reactiva funcional es una forma de escribir programas interactivos. Se diferencia de la perspectiva habitual en que, en lugar de decir «cuando se presiona el botón, incrementa el contador», escribes «el valor del contador es la suma del número de veces que se presiona el botón».

Implementa la lógica básica detrás del ahorcado usando programación reactiva funcional. Para esto vas a necesitar instalar una biblioteca de FRP; esto se describe en los archivos específicos del lenguaje o del track del ejercicio.

Sugerencias

Uno de los aspectos principales de la programación funcional es tener funciones sin efectos secundarios y no tener que preguntarte qué objetos ocultos ha modificado una función.

Con la programación reactiva, en lugar de que un componente busque trabajo activamente, ese trabajo se le envía al componente. Esto es similar a los callbacks, pero a un nivel mucho más alto, con abstracciones más potentes. Muy a menudo, la programación reactiva se usa junto con la programación funcional.

En el ejercicio vamos a usar RxJava, una biblioteca muy conocida de programación reactiva con una API de Java.

El contexto simulado de este ejercicio es una aplicación que recibe dos argumentos:

  • las palabras nuevas por adivinar, que provienen de algún motor de juego,
  • las letras que elige el jugador.

Esos dos argumentos se implementan con Observables, usando la clase io.reactivex.Observable. Básicamente, puedes suscribirte a un Observable para «reaccionar» a los valores que se producen en algún lugar. Por ejemplo, el motor de juego envía palabras nuevas cuando detecta que empezó una partida nueva, o los eventos del teclado generan las letras como argumentos. Pero muchos frameworks reactivos ofrecen abstracciones potentes, como map, que te permite cambiar el argumento recibido, o combine, que te permite combinar uno o más Observables.

La clase Output es el resultado esperado del procesamiento del ejercicio, y le permite a un front-end mostrar el estado completo del juego sin que este necesite ninguna forma de almacenamiento, lo que además lo hace funcional. En este ejercicio tienes que encontrar la manera de usar los dos argumentos para generar esta salida en forma de Observable.

Editar en GitHub El enlace se abre en una ventana o una pestaña nuevas
Java Exercism

¿Todo listo para empezar Ahorcado?

Regístrate en Exercism para aprender y dominar Java con 26 conceptos158 ejercicios y mentoría humana real, todo gratis.