Implementa la lógica del juego del ahorcado usando programación reactiva funcional.
El ahorcado es un juego sencillo de adivinación de 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 pulse el botón, incrementa el contador», escribes «el valor del contador es la suma del número de veces que se pulsa el botón».
Implementa la lógica básica del ahorcado usando programación reactiva funcional. Para ello tendrás que instalar una biblioteca de programación reactiva funcional; esto se describe en los archivos específicos del lenguaje o del track del ejercicio.
Uno de los aspectos principales de la programación funcional es disponer de funciones sin efectos secundarios, sin tener que preguntarse 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 empuja hacia el 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 este ejercicio vamos a usar RxJava, una conocida biblioteca de programación reactiva con una API de Java.
El contexto simulado de este ejercicio es una aplicación que recibe dos entradas:
Esas dos entradas 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 del juego empuja palabras nuevas cuando detecta que ha empezado una partida, o los eventos de teclado generan entradas de letras.
Pero muchos frameworks reactivos ofrecen abstracciones potentes, como map, que te permite cambiar la entrada recibida, o combine, que te permite combinar uno o varios Observables.
La clase Output es el resultado esperado del procesamiento del ejercicio, y permite que un front-end
muestre el estado completo de la partida sin exigirle ninguna forma de almacenamiento, lo que lo hace
funcional también.
En este ejercicio tienes que encontrar la forma de usar ambas entradas para generar esta salida en forma de Observable.
Regístrate en Exercism para aprender y dominar Java con 26 conceptos158 ejercicios y mentoría humana real, todo gratis.