Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

jean_br

desdobramento de numeros

Recommended Posts

Salve salve....

 

primeiramente CORRIJINDO O TÍTULO DO TÓPICO:

 

É DESDOBRAMENTO e não desmembramento (só pra mim mesmo :wacko: :wacko: )

 

seguinte: tenho os seguintes número: 1 - 2 - 3 - 4

 

gostaria de desdobrá-los conforme tabela abaixo, sem que os n. se repitam:

 

123 124 132 134 142 143

213 214 231 234 241 243

312 314 321 324 341 342

412 413 421 423 431 432

 

porém gostaria tm de fazer esse desdobramento com 5 unidades 1 - 2 - 3 - 4 - 5

 

 

algué poderia me dar uma luz de como começar?

 

um abraço e desde já obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

function sequencias($s = array()) {		 $na = array();		 foreach($s as $chave => $valor) {				 for ($num=0;$num<count($s);$num++) {					  if (array_search($valor,$s)!=$num) $na[] = $valor.$s[$num];				 }		 }		 $ua = array();		 foreach($na as $chave => $valor) {				 for($num=0;$num<count($s);$num++) {					 if (substr_count($valor,$s[$num])==0) $ua[] = $valor.$s[$num];				 }		 }		 return $ua;}
Usa-se:

 

$a = sequencias(array(1,2,3,4));var_dump($a);

Pode colocar quantos números quiser:

 

$a = sequencias(array(1,2,3,4,5,6,7,8,9));var_dump($a);

Vai sempre gerar sequencias de 3 números sem repetição.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aí Alisson.. valeu carinha.. era isso mesmo....só utilizer o print_r no lugar do var_dump para listar um resultado mais "limpo"só não sei como pôr os resultados em linha como na tabela que um mostrei....será que tem como?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Putz....com sequencia de 3 n. não vai dar... terá que ser sequencia de 4 n. sem petição....fiz algumas tentativas aqui e não consegui, até porque meu conhecimento é meio limitadocomo faço pra acrescentar mais uma unidade deixando com 4 n.?desculpa aí transtorno.......

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só mudar a função:

 

function sequencias($s = array()) {		 $na = array();		 foreach($s as $chave => $valor) {				 for ($num=0;$num<count($s);$num++) {					  if (array_search($valor,$s)!=$num) $na[] = $valor.$s[$num];				 }		 }		 $ua = array();		 foreach($na as $chave => $valor) {				 for($num=0;$num<count($s);$num++) {					 if (substr_count($valor,$s[$num])==0) $ua[] = $valor.$s[$num];				 }		 }		 $ma = array();		 foreach($ua as $chave => $valor) {				 for ($num=0;$num<count($s);$num++) {					  if (substr_count($valor,$s[$num])==0) $ma[] = $valor.$s[$num];				 }		 }		 return $ma;}

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha q legal, ficou bem mais bunitinho, vou até postar no laboratório:

 

function sequencias($s = array(),$tam) {		 if ($tam>count($s)) return FALSE;		 $a[0] = $s;		 for ($nq=1;$nq<$tam;$nq++) {			  $a[$nq] = array();			  foreach($a[$nq-1] as $chave => $valor) {					  for ($num=0;$num<count($s);$num++) {						   if (substr_count($valor,$s[$num])==0) $a[$nq][] = $valor.$s[$num];					  }			  }		  }		 return end($a);}

Daí é só colocar no 2° argumento da função a quantidade de números que você quer, tipo:

 

$a = sequencias(array(1,2,3,4,5),4);

http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.