Verificar passo válido em uma escada de palavras
De «cold» para «cord» é um passo válido porque só a terceira letra muda; o verificador conta cada diferença e mostra a posição, então fica fácil explicar por que um passo não vale. Grátis no seu navegador.
- Grátis
- Funciona no seu navegador
- Sem cadastro
- Seus dados não saem do seu aparelho
Executar grátis
Exemplo resolvido
- Palavra A
- cold
- Palavra B
- cord
- Diferenças
- 1
- Posições diferentes
- 3
Uma escada de palavras transforma uma palavra em outra por meio de pequenas mudanças, substituindo exatamente uma letra em cada etapa. Este verificador avalia uma jogada proposta: você informa duas palavras com o mesmo tamanho e recebe a indicação de que elas diferem ou não em uma única posição. A resposta também traz a quantidade e as posições, numeradas a partir de um, de todas as diferenças, facilitando a explicação de um resultado inválido. A comparação é determinística, diferencia maiúsculas de minúsculas e rejeita tamanhos diferentes como erro de entrada.
Informe as duas palavras exatamente como devem ser comparadas
Os dois valores devem ser strings não vazias com a mesma quantidade de caracteres. O verificador preserva a entrada exatamente como recebida: não remove espaços, não converte maiúsculas em minúsculas, não elimina pontuação, não aplica normalização Unicode e não consulta dicionários. Esse comportamento rigoroso é útil quando o jogo ou aplicativo já controla o vocabulário aceito.
Por exemplo, <code>cold</code> e <code>cord</code> têm o mesmo tamanho e diferem apenas na terceira posição, portanto formam uma etapa válida. Já <code>Cold</code> e <code>cold</code> também apresentam uma diferença, pois a comparação considera o uso de maiúsculas. Se o seu jogo não fizer essa distinção, normalize as duas entradas de modo consistente antes da chamada.
O mesmo tamanho é um requisito estrutural, não parte do resultado. Quando os tamanhos divergem, a solicitação retorna erro, pois as posições não podem ser alinhadas pela regra de substituição. Inserções e exclusões pertencem a problemas de distância de edição, não a esta verificação.
Entenda o resultado e os campos de diagnóstico
Essa numeração acompanha a maneira usual de contar letras: a posição 1 é o primeiro caractere. Palavras idênticas geram uma resposta normal com zero diferenças e <code>valid</code> false, pois uma etapa precisa alterar de fato uma letra. Duas ou mais substituições também produzem false e mostram todas as posições divergentes.
Somente valores malformados, campos ausentes, strings vazias ou tamanhos diferentes provocam erro de entrada. Essa separação permite distinguir uma jogada bem formada, porém ilegal, de uma solicitação impossível de avaliar.
Use a verificação em um fluxo completo de escada de palavras
Esta capacidade verifica o formato de uma jogada; de propósito, ela não decide se as entradas são palavras reconhecidas. Um jogo completo normalmente faz duas verificações independentes: primeiro confirma se a proposta pertence ao dicionário, idioma ou vocabulário do desafio; depois confirma aqui se a transição altera exatamente uma posição. Manter essas responsabilidades separadas evita suposições ocultas sobre nomes próprios, grafias regionais, caracteres acentuados, flexões ou termos especializados.
Em um jogo interativo, chame o verificador após o envio de uma jogada e use a posição retornada para destacar a letra alterada. Em uma ferramenta de autoria, execute-o para cada par adjacente de uma solução e localize elos quebrados. Em testes automatizados, valide o resultado e as posições para que uma cadeia com falha se explique.
A implementação pura não utiliza rede, aleatoriedade, relógio, armazenamento nem modelo externo.
Casos de uso
Validar a jogada de uma pessoa
Confirme se a próxima palavra proposta muda exatamente um caractere antes de adicioná-la à escada atual.
Auditar a solução de um desafio
Verifique cada par vizinho de uma cadeia preparada e identifique as posições exatas dos elos inválidos.
Testar software de jogos de palavras
Use contagens e posições determinísticas como asserções para validação, destaque e mensagens de erro.
Perguntas frequentes
O verificador confirma se as entradas são palavras reais?
Não. Ele verifica somente a regra de substituição em uma posição. Valide separadamente o vocabulário adequado ao seu jogo.
O que acontece quando as palavras têm tamanhos diferentes?
A solicitação retorna erro de entrada inválida. Etapas comuns substituem um caractere e não inserem nem removem caracteres.
Letras maiúsculas e minúsculas são consideradas iguais?
Não. A comparação diferencia maiúsculas, portanto elas contam como caracteres distintos. Normalize antes se as suas regras ignorarem essa diferença.
Palavras idênticas formam uma etapa válida?
Não. Palavras idênticas têm zero diferenças, enquanto uma etapa válida exige exatamente uma posição diferente.
Como as posições diferentes são numeradas?
A numeração começa em um: 1 representa o primeiro caractere, 2 representa o segundo e assim por diante.
Ferramentas relacionadas
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/game/word-ladder-step-check \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"word_a":"cold","word_b":"cord"}'const res = await fetch("https://api.kit.forhosting.com/game/word-ladder-step-check", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"word_a": "cold",
"word_b": "cord"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/game/word-ladder-step-check",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"word_a": "cold",
"word_b": "cord"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/game/word-ladder-step-check", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"word_a":"cold","word_b":"cord"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"word_a":"cold","word_b":"cord"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/game/word-ladder-step-check", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"word_a": "cold",
"word_b": "cord"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "game.word_ladder_step_check",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |
Notas técnicas
Informe as duas palavras exatamente como devem ser comparadas
Digite a palavra inicial em <code>word_a</code> e a próxima palavra proposta em <code>word_b</code>.
Entenda o resultado e os campos de diagnóstico
A resposta contém <code>valid</code>, <code>differences</code> e <code>differing_positions</code>. O booleano <code>valid</code> só é true quando a contagem de divergências é exatamente um. <code>differences</code> informa o total de posições com caracteres diferentes, enquanto <code>differing_positions</code> lista essas posições começando em um. O algoritmo percorre o par uma única vez, da esquerda para a direita, portanto a ordem é estável e chamadas repetidas com a mesma entrada sempre retornam os mesmos valores JSON.
Use a verificação em um fluxo completo de escada de palavras
Assim, ela pode rodar localmente no navegador, enquanto sistemas automatizados podem chamar a API por US$ 0,002 por solicitação e receber o mesmo resultado determinístico.
Perguntas técnicas
Quanto custa uma solicitação de API?
Cada solicitação de API custa US$ 0,002. A versão interativa roda localmente no navegador sem custo.