Dificuldade com algoritimo

3 respostas
B

O negocio é o seguinte…

Nao sei se voces jah conhecem, porem existe um desafio antigo para algoritimos, vou explicar…

Preciso montar um codigo para analisar uma numeracao e me retornar o proximo valor…

Exemplo:

comecando pelo numero 1, ele deve me retornar 11, porque??
ele verifica a numeracao 1 e me retorna que na “numeracao” existe a sequencia de 1 vez o numero 1… assim fica 11…
o seguinte seria baseado no resultado atual 11…
que daria 21, sendo a numeracao composta por 2 vezes o numero 1…
nova numeracao 21, que retornaria o seguinte como 1 vez o numero 2 e 1 vez o numero 1 = 1211…

resultado final ficaria assim…

1
11
21
1211
111221
312211
13112221
[telefone removido]

e assim por diante…

tenho esse codigo pronto em PHP, mas como estou aprendendo Java agora, queria faze-lo em java… se alguem puder ajudar, fico grato…

3 Respostas

Marky.Vasconcelos

Qual sua duvida?

Ninguém ira postar isso pronto.

D

se vc já tem a lógica pronta, é só dá uma olhada na estrutura de java…ai é rapidinho…
post o que vc já tentou fazer…
vlw

B
bem consegui o resultado que queria, porem queria saber de voces o que posso melhorar no codigo, afinal sou novato e tive que usar uns gatilhos para funcionar...
public class Teste {

	public static void main(String[] args) {

		String resultado = "1";
		
		Teste t = new Teste();
		for(int i = 0; i < 10;i++){
			resultado = t.Teste02(resultado);
			System.out.println("Linha "+(i+1)+": "+resultado);
		}
	}

	public String Teste02(String valor) {
		int n = 1;
		String parcial = "";
		for(int i = 0, ii = 1; i < valor.length(); i++, ii++){
			if(ii==valor.length()){
				parcial = parcial + Integer.toString(n) + valor.charAt(i);
				n = 1;
				return parcial; 
				}
			else if(valor.charAt(i) == valor.charAt(ii)){
				n++;
			}else{
				parcial = parcial + Integer.toString(n) + valor.charAt(i);
				n = 1;
			}
		}
		return parcial;
	}
}

Resultado:

Linha 1: 11
Linha 2: 21
Linha 3: 1211
Linha 4: 111221
Linha 5: 312211
Linha 6: 13112221
Linha 7: [telefone removido]
Linha 8: 31131211131221
Linha 9: 13211311123113112211
Linha 10: 11131221133112132113212221

um exemplo do que esta horrivel, porem foi a unica forma que achei
ateh agora para solucionar, foi o primeiro IF dentro do for, ele eh
usado apenas para garantir que nao de erro no IF seguinte, qnd ele
verifica se o proximo numero é igual, nesse IF ele identifica que esta
no ultimo numero da String e termina a funcao...

jah pensei em utilizar try/catch/finally, mas acredito que possa ter uma
solucao mais elegante...

aguardo voces...

Criado 29 de junho de 2010
Ultima resposta 29 de jun. de 2010
Respostas 3
Participantes 3