Foros del Web » Programando para Internet » PHP »

Programa de Combinaciones en PHP

Estas en el tema de Programa de Combinaciones en PHP en el foro de PHP en Foros del Web. No soy programador (necesito urgente esto en php) Digamos que tenemos una combinacion 14C3, donde 14 son las posibles veces que pueden estar los 3 ...
  #1 (permalink)  
Antiguo 24/09/2011, 07:37
 
Fecha de Ingreso: septiembre-2011
Ubicación: España
Mensajes: 2
Antigüedad: 12 años, 7 meses
Puntos: 0
Pregunta Programa de Combinaciones en PHP

No soy programador (necesito urgente esto en php)

Digamos que tenemos una combinacion 14C3, donde 14 son las posibles veces que pueden estar los 3 diferentes parametros "x", "y", "z". hasta ahora con mi poca experiencia en programación he podido hacer que se combinen de esta manera:

xyz
zyx
yxz
...

pero lo que necesito son las 364 veces en 14 espacios, ejemplo:

1. - xxxxxxxxxxxxzy
2 .- xxxxxxxxxxxzzy
...
364.- xxxzyxyzzyxyxz

no se deben repetir ninguna de las 364 lineas

Es urgente (para mi tesis) ayuden me por favor

Última edición por cecci; 24/09/2011 a las 07:48
  #2 (permalink)  
Antiguo 24/09/2011, 08:36
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Programa de Combinaciones en PHP

Cita:
No soy programador (necesito urgente esto en php)
¿Cuanto pagas?
Por lo que veo estas buscando a alguien que te haga el trabajo y asi no es que funciona el foro. Te podríamos ayudar en dudas que tengas en cuanto a la creación pero no te vamos a hacer el trabajo.
  #3 (permalink)  
Antiguo 24/09/2011, 11:36
 
Fecha de Ingreso: septiembre-2011
Ubicación: España
Mensajes: 2
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: Programa de Combinaciones en PHP

Cita:
Iniciado por Ronruby Ver Mensaje
¿Cuanto pagas?
Por lo que veo estas buscando a alguien que te haga el trabajo y asi no es que funciona el foro. Te podríamos ayudar en dudas que tengas en cuanto a la creación pero no te vamos a hacer el trabajo.
gracias por tu gran ayuda... no pido que lo solucionen sino que me den tips
a caso no leiste que lo he intentado?
  #4 (permalink)  
Antiguo 24/09/2011, 13:16
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Programa de Combinaciones en PHP

Cita:
Iniciado por cecci Ver Mensaje
gracias por tu gran ayuda... no pido que lo solucionen sino que me den tips
a caso no leiste que lo he intentado?
Empiezas diciendo que no eres programador, sino programas, ¿como has siquiera intentado?
Hay una diferencia entre ser nuevo en algo y NO saber nada en lo absoluto.
  #5 (permalink)  
Antiguo 24/09/2011, 13:17
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: Programa de Combinaciones en PHP

No sé a que te refieres con 364 veces...

con 10 dígitos se generan más de 59.000 combinaciones
con 11 dígitos más de 177.000 combinaciones
con 12 dígitos más de 531.000 combinaciones

ahora con 14 me imagino que pueden llegar a más de 1 millón , el código que encontré sólo me permite generar con 12 dígitos, espero que te sirva como un ejemplo, tampoco lo pienso optimizar. Pero en el manual de PHP en el área de arrays vi muchos ejemplos (buscando permutations combinations) salen varios resultados útiles.

Código PHP:
Ver original
  1. <?php
  2. function permutations($letters, $num) {
  3.     $last = str_repeat($letters{0}, $num);
  4.     $result = array();
  5.     while ($last != str_repeat(lastchar($letters), $num)) {
  6.         $result[] = $last;
  7.         $last = char_add($letters, $last, $num - 1);
  8.     }
  9.     $result[] = $last;
  10.     return $result;
  11. }
  12. function char_add($digits, $string, $char) {
  13.     if ($string{$char} != lastchar($digits)) {
  14.         $string{$char} = $digits{strpos($digits, $string{$char}) + 1};
  15.         return $string;
  16.     } else {
  17.         $string = changeall($string, $digits{0}, $char);
  18.         return char_add($digits, $string, $char - 1);
  19.     }
  20. }
  21. function lastchar($string) {
  22.     return $string{strlen($string) - 1};
  23. }
  24. function changeall($string, $char, $start = 0, $end = 0) {
  25.     if ($end == 0)
  26.         $end = strlen($string) - 1;
  27.     for ($i = $start; $i <= $end; $i++) {
  28.         $string{$i} = $char;
  29.     }
  30.     return $string;
  31. }
  32.  
  33. $arr = permutations("XYZ", 12);
  34. echo '<pre>';
  35. print_r($arr);
  36. echo '</pre>';

Fuente
En esta parte del manual hay algunas formas que te pueden dar ideas

Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #6 (permalink)  
Antiguo 25/09/2011, 10:42
Avatar de gachon  
Fecha de Ingreso: septiembre-2004
Ubicación: En Google
Mensajes: 462
Antigüedad: 19 años, 7 meses
Puntos: 3
Respuesta: Programa de Combinaciones en PHP

Hola yo me acabo de inventar esto, pero no hago comprobacion de que se repita te pongo el codigo, si no entiende algo me avisas, de todas formas si tengo tiempo lo mejorare.
Código PHP:
<?php
function cadenasAleatorias($numClave=364,$digitos=14,$cadena="xyz") {

$resultadoCadena="";
$NuevoresultadoCadena="";

if(
$numClave=="")$numClave=364;
if(
$digitos=="")$digitos=14;
if(
$cadena==""$cadena="xyz";

$lenght=strlen($cadena);
$digitosLenght=$digitos $lenght;

    for(
$j=1;$j<=$numClave;$j++){
        for(
$i=0;$i<=$digitosLenght;$i++){
                        
                    
$resultadoCadena=$resultadoCadena.$cadena;
                    
$resultadoCadena.=substr($cadenamt_rand(0,$lenght), 1);
                    
        }
        
$NuevoresultadoCadena=substr($resultadoCadenamt_rand(0,strlen($resultadoCadena)), 1);
        
$NuevoresultadoCadena=$NuevoresultadoCadena.$resultadoCadena;
        
$NuevoresultadoCadena=str_shuffle($NuevoresultadoCadena);
        
$NuevoresultadoCadenasubstr($NuevoresultadoCadena,0,14);
        
         echo 
$NuevoresultadoCadena."<br>";
         echo 
strlen($NuevoresultadoCadena)." digitos<br />";        
    }
    
       
       
    
}

cadenasAleatorias(364,14,"xyz");

?>
  #7 (permalink)  
Antiguo 27/09/2011, 12:26
 
Fecha de Ingreso: septiembre-2011
Mensajes: 2
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: Programa de Combinaciones en PHP

Primero que nada con 3 caracteres diferentes "x","y","z" puedes formar 27 combinaciones diferentes que son estas:

xxx,xxy,xxz,xyx,xyy,xyz,xzx,xzy,xzz,yxx,yxy,yxz,yy x,yyy,yyz,yzx,yzy,yzz,zxx,zxy,zxz,zyx,zyy,zyz,zzx, zzy,zzz

Ninguna se repite y son 27. con 14 dígitos de posibles 3 caracteres puedes hacer 4782969 (casi 5 millones) de combinaciones.

Podrias explicar por que solo 14 y 360, tienes alguna otra regla que no se repita un caracter mas de x veces o algo para que sean 14 y no 27? y que sean 260 y no 4782969?

Si me explicas mas el como se deben de generar las combinaciones te puedo ayudar con el programa.
  #8 (permalink)  
Antiguo 27/09/2011, 12:33
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: Programa de Combinaciones en PHP

Cita:
Iniciado por felipeomr Ver Mensaje
Primero que nada con 3 caracteres diferentes "x","y","z" puedes formar 27 combinaciones diferentes que son estas:

xxx,xxy,xxz,xyx,xyy,xyz,xzx,xzy,xzz,yxx,yxy,yxz,yy x,yyy,yyz,yzx,yzy,yzz,zxx,zxy,zxz,zyx,zyy,zyz,zzx, zzy,zzz

Ninguna se repite y son 27. con 14 dígitos de posibles 3 caracteres puedes hacer 4782969 (casi 5 millones) de combinaciones.

Podrias explicar por que solo 14 y 360, tienes alguna otra regla que no se repita un caracter mas de x veces o algo para que sean 14 y no 27? y que sean 260 y no 4782969?

Si me explicas mas el como se deben de generar las combinaciones te puedo ayudar con el programa.
Ahora entiendo porque el script que dejé alcanza el límite de memoria. 5 millones de combinaciones que locura. Gracias por el dato. Saludos felipeomr
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP

Etiquetas: programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:50.