Converter número com base variável

4 respostas
A

Não encontrei um modo de resolver isso, então posto para saber se alguém já se deparou com isso.
Quero converter para um número sequencial valores que vão se incrementando com forma igual a uma combinacao, exemplo:
tenho a matriz com os seguintes valores…
0-1-2-3-4
0-1-2-3-5
0-1-2-4-5
0-1-3-4-5
0-2-3-4-5
1-2-3-4-5
a qual deve retornar a posicao que ele se encontraria, que seria:
0-1-2-3-4=0
0-1-2-3-5=1
0-1-2-4-5=2
0-1-3-4-5=3
0-2-3-4-5=4
1-2-3-4-5=5
é claro que esse parece simples, mas meu objetivo é para um número bem maior de números. Isso na verdade é dar a posição de uma combinação, pensei em usar algo a partir da formula de combinacao, mas naum consegui.

alguem ja fez isso?

4 Respostas

W

Em java os Arrays são considerados objetos, então podemos usar atributos como o " length ", que contêm o número de elementos de um array. tente achar um atributo para isso ou criar um laço que incremente seu contador a cada linha criada…

A

é exatamente para evitar criar um array enorme que pensei em criar uma equacao que possa definir a posicao de uma dada combinacao, seria mais ou menos assim:

combinacao = FATORIAL(totalnumeros)/(FATORIAL(totalnumeros-qtde)*FATORIAL(qtde);
// essa acima eh a formula da combinacao

int[] posicaodacombinacao = new int[combinacao];

int[] valordacombinacao = new int[5] //5 é na verdade um valor qquer

int posicao;

//agora, digamos q seria para o exemplo q dei acima
//e eu quero encontrar a posicao da combinacao 0-1-3-4-5, entaum

posicao=FUNCAOqueDEFINEposicao(0,1,3,4,5);

posicaodacombinacao[posicao]=1;

M

Bem, eu tive essa ideia na hora, teste ai. Eu estou considerando que sua lista tenha um tamanho fixo, como apresentado aqui.

vc cria um laço que vai percorrendo a sequencia. tp:

Para i = 0 até 5
se o 1º elemento = i blz continua
senao vc pega o numero correspondente a i na sequencia

vamos supor a sequencia: 0, 1, 3, 4, 5.
Ex: o cursor i vai parar em 2. como 3 é diferente de 2, a posicao será 3

Eu nao testei isso, mas talvez te ajude. Flws

A

sim,
criar laço é a maneira mais fácil, mas o problema é que quero fazer isso muitas vezes, tornando o programa deveras lento, só pra ter uma ideia o tamanho é de um array 15, com 11 elementos em cada um variando de 0 a 25, por isso preciso de uma equacao ou funcao pronta

Criado 5 de fevereiro de 2005
Ultima resposta 5 de fev. de 2005
Respostas 4
Participantes 3