Ir para conteúdo

ifspinit

Members
  • Total de itens

    3
  • Registro em

  • Última visita

Reputação

0 Comum

Sobre ifspinit

  1. Não está, tentei fazer a junção de diferentes modos para substituir x e y também. Somente o que você me passou está funcional. Tentei passar o resultado da função x em uma função y, convertando pra string, separando em um array constando elemento por elemento. Não vai <?php function parsex($string) { $array = str_split($string); if (!in_array("X" , $array)) { return [$string]; } $ret = []; $key = array_search('X' , $array); for($i = 0 ; $i <= 9; $i++) { $array[$key] = $i; $ret = array_merge($ret , parsex(implode('' , $array))); } return $ret; } function parsey($array) { $array2 = str_split(implode("", ($array))); if (!in_array("Y" , $array2)) { return $array; } $ret = []; $key = array_search('Y' , $array2); for($i = 1 ; $i <= 2; $i++) { $array2[$key] = $i; $ret = array_merge($ret , parsey(implode('' , $array2))); } return implode("",$ret); } ?>
  2. Opa, muito obrigado. Deu uma luz. Mas estou tendo problemas para junção em analisar se tem Y e Z na mesma array. Faltando lógica e experiência para mim. haha
  3. Olá, sou iniciante em PHP. Estou com um problema na resolução de um exercício. Devo ler uma string que faça a substituição de determinados caracteres por números, criando um array com as combinações possíveis. As regras são de substituição são: X - Qualquer número de 0 a 9 Y - Pode ser 1 ou 2 Z - Qualquer número de 5 a 9 Por exemplo: Entrada : X123 Saída: 0123, 1123, 2123, 3123, 4123, 5123, 6123, 7123, 8123, 9123 Entrada: Y12 Saída: 112, 212 Entrada: Y12Z Saída: 1125, 2125, 1126, 2126, 1127, 2127, 1128, 2128, 1129, 2129 Entrada: XX Saída: 00, 10, 20, 30, 40, 50, 60, 70, 80, 90, 01, 11, 21, 31, 41, 51, 61, 71, 81, 91, 02, 12, 32, 42, 52, 62, 72, 82, 92, etc... Fiz o código monstrouso abaixo onde verifica se tem x, y e z; se tem x e y; se tem x e z; se tem y e z; se tem somente x; se tem somente y; se tem somente z. <php? $verif = strstr($str, "x"); $verif2 = strstr($str, "y"); $verif3 = strstr($str, "z"); if($verif and $verif2 and $verif3){ for ($k=1; $k<=2; $k++){ for ($j=5; $j<=9; $j++){ for ($i = 0; $i <= 9; $i++){ $teste = str_replace("x", "$i", $str); $teste2= str_replace("z", "$j", $teste); $teste3 = str_replace("y", "$k", $teste2); array_push($meuarray, $teste3); } } } $arrayfinal = implode(",", $meuarray); echo $arrayfinal; } else if($verif and $verif2){ for ($j=1; $j<=2; $j++){ for ($i = 0; $i <= 9; $i++){ $teste = str_replace("x", "$i", $str); $teste2 = str_replace("y", "$j", $teste); array_push($meuarray, $teste2); } } $arrayfinal = implode(",", $meuarray); echo $arrayfinal; } else if($verif and $verif3){ for ($j = 5; $j <= 9; $j++){ for ($i = 0; $i <= 9; $i++){ $teste = str_replace("x", "$i", $str); $teste2 = str_replace("z", "$j", $teste); array_push($meuarray, $teste2); } } $arrayfinal = implode(",", $meuarray); echo $arrayfinal; } else if($verif2 and $verif3){ for ($j = 1; $j <= 2; $j++){ for ($i = 5; $i <= 9; $i++){ $teste = str_replace("y", "$i", $str); $teste2 = str_replace("z", "$j", $teste); array_push($meuarray, $teste2); } } $arrayfinal = implode(",", $meuarray); echo $arrayfinal; } else if($verif){ for ($i = 0; $i <= 9; $i++){ $teste = str_replace("x", "$i", $str); array_push($meuarray, $teste); } $arrayfinal = implode(",", $meuarray); echo $arrayfinal; } else if($verif2){ for ($i = 1; $i <= 2; $i++){ $teste = str_replace("y", "$i", $str); array_push($meuarray, $teste); } $arrayfinal = implode(",", $meuarray); echo $arrayfinal; } else if($verif3){ for ($i = 5; $i <= 9; $i++){ $teste = str_replace("z", "$i", $str); array_push($meuarray, $teste); } $arrayfinal = implode(",", $meuarray); echo $arrayfinal; } ?> Funciona para quando tiver apenas um caso de cada. Mas se houver dois x, três x, etc, não funcionará. Alguém poderia me ajudar?
×

Informação importante

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