Skip to content

A simple program in Rust to guess a word from a dictionary containing all the words in the language.

License

Notifications You must be signed in to change notification settings

ArthurValada/guess

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Projeto: Word Guesser

Este projeto é uma ferramenta para adivinhação de palavras baseada em um arquivo de palavras fornecido. O programa utiliza uma abordagem iterativa para refinar as possibilidades até encontrar a palavra correta com base em dicas ou informações fornecidas. É útil para jogos de lógica, como Wordle e palavras cruzadas, ou para análises educacionais de jogos de palavras.

Funcionalidades

  • Carrega um arquivo de palavras para o programa.
  • Refina as palavras possíveis com base nas dicas dadas.
  • Encontra a palavra alvo com o mínimo de tentativas, utilizando técnicas de entropia para maximizar eficiência.

Pré-requisitos

Para rodar ou compilar este projeto, você precisará:

  • Rust: (Recomenda-se a versão 1.84.1 ou mais recente). Caso não tenha o Rust instalado, siga as instruções no site oficial do Rust.
  • Um arquivo de palavras em formato de texto contendo palavras separadas por linhas.

Dependências utilizadas no projeto (gerenciadas pelo Cargo.toml):

  • anyhow (para tratamento de erros).
  • itertools (utilitário geral para iteradores).
  • clap (parsing e gerenciamento de argumentos da linha de comando).
  • rayon (computação paralela eficiente).
  • statrs (funções estatísticas, para cálculos de entropia).
  • smartcore (biblioteca de machine learning).

Como Compilar

1. Clone o repositório

git clone <URL_DO_REPOSITORIO>
cd <NOME_DO_PROJETO>

2. Compile o projeto

Rode o comando básico do Cargo para compilar:

cargo build --release

O binário será gerado no diretório target/release.


Como Executar

  1. Antes de executar o programa, é necessário preparar:

    • Um arquivo de texto contendo as palavras possíveis (uma palavra por linha).
    • A palavra-alvo que será utilizada como teste para o programa.
  2. Execute o binário gerado com os argumentos apropriados:

cargo run -- <CAMINHO_DO_ARQUIVO_DE_PALAVRAS> <PALAVRA_ALVO>

Parâmetros de uso:

  • --file: Caminho para o arquivo que contém as palavras.
  • --target: Palavra alvo que será encontrada pelo programa.

Exemplo:

Se você tiver um arquivo chamado palavras.txt e deseja que o programa encontre a palavra rust, execute:

cargo run -- palavras.txt rust

O repositório possui um arquivo chamado db.txt contendo todas as palavras do português.


Fluxo do Programa

O programa funciona seguindo os seguintes passos:

  1. Lê o arquivo fornecido e extrai as palavras possíveis.
  2. Começa a adivinhar com base na palavra de maior entropia.
  3. Após cada tentativa, recebe dicas sobre o quão próxima está a palavra.
  4. Refina as escolhas até que:
    • Encontre a palavra com sucesso.
    • Ou esgote todas as opções possíveis.

Resultado:

  • O programa exibe o número de tentativas realizadas e a palavra encontrada.
  • Caso não seja possível encontrar a palavra, o programa informa que não foi bem-sucedido.

About

A simple program in Rust to guess a word from a dictionary containing all the words in the language.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages