Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] permutacja znaków
Forum PHP.pl > Forum > Przedszkole
wojtekw
Czy ktoś wie jak wyrzucić na ekran wszystkie permutacje z liczb 1,2,3,4,5 ?
wolguy
  1. <?php
  2.  
  3. for( $i=1; $i<=5; $i++ )
  4. {
  5. for( $j=1; $j<=5; $j++ )
  6. {
  7. for( $k=1; $k<=5; $k++ )
  8. {
  9. for( $l=1; $l<=5; $l++ )
  10. {
  11. for( $m=1; $m<=5; $m++ )
  12. {
  13. if( $i <> $j and $i <> $k and $i <> $l and $i <> $m and
  14. $j <> $k and $j <> $l and $j <> $m and
  15. $k <> $l and $k <> $m and
  16. $l <> $m )
  17. {
  18. echo "$i $j $k $l $m<br />\n";
  19. }
  20. }
  21. }
  22. }
  23. }
  24. }
  25.  
  26. ?>
wojtekw
fajne smile.gif Ale raczej chodziło mi o przykład jakiejś rekurencyjnej funkcji bo to działa dla 5 cyfr a nie dopisałem ze ilość cyfr i ich wartość może być różna
Fixer
  1. <?php
  2. function anagramy($wyraz) {
  3.  for ($i=0;$i<strlen($wyraz);$i++) {
  4.    $znak=$wyraz[$i];
  5.    $ile=count($tmp);
  6.    if ($ile==0) $tmp[]=$znak;
  7.    else {
  8.      for($k=0;$k<$ile;$k++) {
  9.        $ciag=$tmp[$k];
  10.        for($j=0;$j<=strlen($ciag);$j++) {
  11.          $new[]= substr($ciag,0,$j).$znak.substr($ciag,$j);
  12.        }
  13.      }
  14.      $tmp=$new;
  15.      $new="";
  16.    }
  17.  }
  18.  return $tmp;
  19. }
  20.  
  21. $tmp = anagramy("123456");
  22. for ($i=0;$i<count($tmp);$i++) echo $tmp[$i]."<br>";
  23. ?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.