Desafio vogais:

Dificil mesmo, só falta isso para eu completar meu código.

Para um algorítmo que mostre apenas uma possibilidade… vai gastar umas 5 páginas do fórum :smiley:

Nao tem como saber se é DESAFIO ou DESAFIA

PARA ou PERA

GUJIANOS… ou seja lá o que o cara quis dizer aqui… já sambou tudo

E ou A ou O

DESSA DISSO DESSE

Mas umas 10 possibilidades até q dá…

Meu algoritmo vai pelo menos mostrar todas possibilidades reais de acordo com um dicionario.

Mas ainda falta o dicionario vou montar um copiando textos. Vou ter que fazer um programa primeiro só para criar a lista de palavras =/

Ta ai uma parte do código.

Esse é o que descobre a palavra de acordo com uma Lista.

EDITADO: Código completo no post abaixo.

Main pra ver como funciona. Só falta uma lista de palavras de verdade e o algoritmo que testa todas as palavras.

Terminei meu algoritmo e com a lista de palavras que encontrei o resultado foi. Pelo menos são todas palavras reais.

desafia/desafie/desafio para/pare/pari/paro/pera/peru/pira/poro/pura/puro as/os gujianos tentam/tentem descobrir a/e/o significada/significado real dessa/desse/disse/disso frase/fresa/frese/freso/frisa/frise/friso

Agora o algoritmo.

package word;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class WordList {
	private List<String> list;

	public WordList(List<String> list) {
		this.list = list;
	}

	public WordList(File file) throws FileNotFoundException {
		list = new ArrayList<String>();
		Scanner sc = new Scanner(new FileReader(file));
		while (sc.hasNext())
			list.add(sc.nextLine());
	}

	public WordList filter(String param) {
		param = param.toLowerCase();
		filterByLength(param.length());
		for (int i = 0; i < param.length(); i++) {
			char c = param.charAt(i);
			if (c == '*')
				filterByCharMatch(i, 'a', 'e', 'i', 'o', 'u');
			else
				filterByCharMatch(i, c);
		}
		return this;
	}

	private void filterByLength(int lght) {
		List<String> newList = new ArrayList<String>();
		for (String s : list)
			if (s.length() == lght)
				newList.add(s);
		list.clear();
		list.addAll(newList);
	}

	private void filterByCharMatch(int idx, char... criterias) {
		List<String> newList = new ArrayList<String>();
		main: for (String s : list) {
			s = s.toLowerCase();
			char c = s.charAt(idx);
			for (char crit : criterias)
				if (c == crit) {
					newList.add(s);
					continue main;
				}
		}
		list.clear();
		list.addAll(newList);
	}

	public String toString() {
		if (list.size() == 0)
			return "()";
		StringBuilder builder = new StringBuilder();
		for (String s : list)
			builder.append(s).append("/");
		builder.delete(builder.length() - 1, builder.length());
		return builder.toString();
	}

	public List<String> getResult() {
		return list;
	}

	public WordList clone() {
		return new WordList(new ArrayList<String>(list));
	}
}
package word;

import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.List;

public class Sentence {
	private WordList baseList;
	private List<String> sentence;

	{
		File wordsFile = new File("C:/wordlist.txt");
		try {
			baseList = new WordList(wordsFile);
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}
	}

	public Sentence(String s) {
		sentence = new ArrayList<String>();
		String[] ss = s.split(" ");
		for (String str : ss)
			sentence.add(str);
	}

	public String resolve() {
		StringBuilder builder = new StringBuilder();
		for (String s : sentence)
			builder.append(baseList.clone().filter(s).toString()).append(" ");
		return builder.toString();
	}

	public static void main(String[] args) {
		Sentence sentence = new Sentence(
				"D*S*F** P*R* *S G*J**N*S T*NT*M D*SC*BR*R * S*GN*F*C*D* R**L D*SS* FR*S*");
		System.out.println(sentence.resolve());
	}
}

E o arquivo de wordlist está anexado.

É… impossivel um algoritmo adivinhar exatamente que frase é. Mas cheguei perto ^^

PS: Adicionei a palavra Gujianos no dicionario por que ela não existia.

HUAhuahuuha
legal mark!
Bem interessante…

[quote=Mark_Ameba]
E o arquivo de wordlist está anexado.[/quote]
kd? O_o

Agora que reparei é que o arquivo é maior que 512Kb

Baixem desse link:
http://www.gustavoroberto.blog.br/wp-content/uploads/2008/01/wordlist_pt_br.txt
Abram e em Salvar Como… coloque wordlist.txt e no C: (Fiquei com preguiça de fazer código multi-plataforma, mas é só alterar no código)

PS:
Coma frase
“DSFO PAR S GJNS TNTEM DSCBRR O SGNFC*DO RL DSSA FRSE”
O resultado foi:
“desafio para/pare/pari/paro as/os gujianos tentem descobrir o significado real dessa frase/frese/frise”

Legal maky! Vlw…
Vo ver se tá com a reforma ortográfica, e remover um tanto de palavras inuteis, do tipo “desnivelásseis
kkkkk
flws!