Implemente a lógica do jogo da forca usando programação reativa funcional.
Forca é um jogo simples de adivinhar palavras.
Programação reativa funcional é uma forma de escrever programas interativos. Ela difere da perspectiva usual: em vez de dizer "quando o botão for pressionado, incremente o contador", você escreve "o valor do contador é a soma do número de vezes que o botão foi pressionado".
Implemente a lógica básica por trás do jogo da forca usando programação reativa funcional. Você vai precisar instalar uma biblioteca de FRP para isso, e isso será descrito nos arquivos específicos da linguagem/trilha do exercício.
Um dos principais aspectos da programação funcional é ter funções sem efeitos colaterais, sem precisar se perguntar quais objetos ocultos uma função alterou.
Com a programação reativa, em vez de um component procurar trabalho ativamente, esse trabalho é enviado para ele. Isso é parecido com callbacks, mas em um nível muito mais alto, com abstrações mais poderosas. Muitas vezes, a programação reativa é usada junto com a programação funcional.
No exercício, vamos usar o RxJava, uma biblioteca conhecida de programação reativa com uma API Java.
O contexto simulado deste exercício é uma aplicação que recebe duas entradas:
Essas duas entradas são implementadas com Observables, usando a classe io.reactivex.Observable.
Basicamente, você pode se inscrever em um Observable para "reagir" aos valores que são produzidos em algum lugar. Por exemplo, o motor de jogo envia novas palavras quando detecta que um novo jogo começou, ou eventos de teclado geram entradas de letras.
Mas muitos frameworks reativos oferecem abstrações poderosas, como map, que permite mudar a entrada recebida, ou combine, que permite combinar um ou mais Observables.
A classe Output é o resultado esperado do processamento do exercício, permitindo que um front-end
exiba o estado completo do jogo sem exigir dele nenhuma forma de armazenamento, o que a torna
funcional também.
Neste exercício, você precisa encontrar uma maneira de usar as duas entradas para gerar essa saída na forma de um Observable.
Crie sua conta no Exercism para aprender e dominar Java com 26 conceitos158 exercícios e mentoria humana de verdade, tudo de graça.