Casamento de Padrões - Pedra-Papel-Tesoura

O que é o Casamento de Padrões?
Casamento de Padrões é uma técnica utilizada na computação que recebe uma quantidade significativa de dados e tem por objetivo encontrar padrões existentes dentro deles. Encontrado esses padrões, cabe ao casamento interpretar os dados com base nos padrões, estabelecendo uma correspondência entre eles e os dados de entrada.

Como Funciona o Casamento de Padrões?
Dada uma entrada de diversos números, o algoritmo a analisa uma quantidade de X números já pré-definidas e observa quantas vezes esses números juntamente com seu próximo se repetem.

Exemplo:
Dada uma sequência: AAABBBCCCABCAAAB Queremos fazer uma análise com uma sequência de três números. Logo, os padrões encontrados são: AAA -> B

AAB -> B

ABB -> B

BBB -> C

BBC -> C

BCC -> C

CCC -> A

CCA -> B

CAB -> C

ABC -> A

BCA -> A

CAA -> A

Encontrado esses padrões, definimos qual deles tem a maior probabilidade de ocorrer. Nesse caso, trata-se do padrão AAA -> B, pois é o que repetiu mais vezes (duas vezes).

Curiosidades:
Existem várias formas de padrões, algumas delas são:

1. Padrão Constante:
"Trata-se de uma constante, onde o casamento só ocorre caso o padrão for idêntico ao valor."

2. Padrão Variável:
"Trata-se de um identificador de uma variável de valor e o casamento ocorre sempre."

3. Padrão Curinga:
"Também chamado de variável anônima, nesse caso o casamento sempre ocorre, mas a variável casa com qualquer valor sem dar nome a ele."

4. Padrão Tupla:
"O casamento nesse caso ocorre apenas se cada um dos padrões casar com o componente do valor."

Exemplo Aplicado em um Jogo
Foi aplicado durante as aulas de Agentes Inteligentes um Casamento de Padrões em um jogo Pedra-Papel-Tesoura.

O jogador escolhe um número referente à uma das três opções possíveis a serem jogadas, sendo: Após isso, é criada uma sequência que será armazenada dentro de uma String onde terá repetições em que cada valor é separado por um espaço. Exemplo: 1 1 2 3 3 1 1 2 2 3 1 1 2 3 1 3 3 1 1 2 Depois, é criada uma nova String que recebe a sequência que mais repetiu na String acima. Então, é chamado um método que "quebra" a primeira String e compara os seguimentos com a segunda String. Sempre que os valores forem iguais, o próximo valor da primeira String é analisado para saber qual das três opções o jogador escolheu e é adicionado +1 no contador referente a esta opção. Exemplo: Foi dado o seguimento 311 na segunda String. A primeira vez que ele aparece na primeira String, o próximo valor é 2. No contador de Papel é então, adicionado mais 1. É feita então uma média entre cada um dos três contadores para descobrir a porcentagem de cada uma das três opções a serem lançadas. Exemplo no caso da Pedra: contPedra/(contPedra + contPapel + contTesoura) A opção que obtiver a maior porcentagem é a vencedora.
 * 1) Pedra
 * 2) Papel
 * 3) Tesoura

Conteúdo no Debug.Log:


Link para Download do Package:

https://drive.google.com/open?id=1J84FKAazW3C7rWvlU0-3kSsE3jLaSV1r

Aluna: Larissa Maria Bitencourt Cavalieri - 558573