| Uutiset | Koodikirjasto | Wiki | Keskustelut | FAQ | Info |
Permutaatio algoritmizer0hunt3r 27.09.05 00:50 Joku kaipaili tämmöstä jossakin ja tekasin semmoisen, algoritmi ja muu koodi on 100% omaa, joten virheitäkin on ;) Ja mun eka koodi tänne. Eli tosiaan tulostaa X! permutaatiot.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html lang="en"> <head> <title> Permutaatio ohjelma </title> </head> <body> <FORM ACTION="permutaatio.php" METHOD="GET"> Your string <INPUT TYPE="TEXT" NAME="Stringi" /> <INPUT TYPE="submit" VALUE="OK"/> </FORM> <?php /** Permutation algorithm with php * @author Toni Helminen * @version 1.1 * @since 1.0, September 28, 2005, 7:49 pm * @e-mail Toni_Helminen@hotmail.com */ $start = microtime(true); // Globaaliksi import_request_variables("g", "muuttuja"); $temp2=trim($muuttujaStringi); if(!empty($temp2)) { $kirjaimet = preg_split('//', $temp2, -1, PREG_SPLIT_NO_EMPTY); unset($temp2); echo "<p>Your letters: " . implode(" ", $kirjaimet) . "<br /><br />"; // Kertoma tähän $ya = 1; // uus array $numeroarray[0] = 1; foreach ($kirjaimet as $key => $value) { $numeroarray[$key]=$key; $ya *= ($key +1); echo $value; } for($t=2;$t<=$ya;$t++) { $yyy = suorita_jarjestys($numeroarray); jarjesta_loppu($yyy,$numeroarray); echo " "; foreach ($numeroarray as $key => $value) { echo $kirjaimet[$value]; } } // for($t // code $end = microtime(true); $gen_time = $end - $start; echo "<br /><br />Time for the page: "; print (number_format($gen_time,3))."s</p>"; }//if(!empty... else { echo "<p>Please enter a string</p>"; } function suorita_jarjestys(&$taulukko) { $vaihda_vasen=0; $vaihda_oikea=0; // Ulompi taulukko for ($v=0; $v<=count($taulukko)-2; $v++) { //Sisempi taulukko for ($o=$v+1; $o<=count($taulukko)-1; $o++) { // Jos sisempi taulukko isompi if($taulukko[$o]>$taulukko[$v]) { $vaihda_oikea=$o;$vaihda_vasen=$v; } }// for( o.... }// for( v.... $temp=$taulukko[$vaihda_oikea]; $taulukko[$vaihda_oikea] = $taulukko[$vaihda_vasen]; $taulukko[$vaihda_vasen]=$temp; return $vaihda_vasen+1; } // suorita_jarjestys(.... function jarjesta_loppu($mista, &$taulukko) { for ($ii=$mista; $ii<=count($taulukko)-1; $ii++) { // otetaan loppu muistiin $temp_array[$ii]=$taulukko[$ii]; } // Järjestetään Tämä vaihtaa indexin alkamaan alusta sort($temp_array); // Pistetään loppu ylös ja yhdistetään taulukot foreach($temp_array as $key => $value) { $taulukko[$mista+$key]=$temp_array[$key]; } } // jarjesta_loppu(.... ?> </body> </html> editoitu: 15:27 28.9.05 chiman 15:20 28.9.05 Voisitko muokata tuosta koodista sisennykset yhdenmukaisiksi? Tabulaattorin voisi korvata vaikka neljällä välilyönnillä. Nykyisellään tuota on hyvin ikävä yrittää lukea. Laitetaan vielä vinkki: PHP muotoon: PHP zer0hunt3r 19:18 28.9.05 Joo kiitti vinkeistä, hiukan parantelin koodia ja lisäsin inputin niin ei tarvi koodiin muutella http://www.ippnet.fi/toni.helminen/Permutaatio/permutaatio.php tuolla voi kokeilla. chiman 10:58 29.9.05 Laitatko nuo sisennykset vielä vakiokäytännön mukaisiksi. Esim. PHP function jarjesta_loppu($mista, &$taulukko) { for ($ii=$mista; $ii<=count($taulukko)-1; $ii++) { // otetaan loppu muistiin $temp_array[$ii]=$taulukko[$ii]; } // Järjestetään Tämä vaihtaa indexin alkamaan alusta sort($temp_array); // Pistetään loppu ylös ja yhdistetään taulukot for ($oo=0; $oo<count($temp_array); $oo++) { $taulukko[$mista+$oo]=$temp_array[$oo]; } } // jarjesta_loppu(.... muotoon: PHP function jarjesta_loppu($mista, &$taulukko) { for ($ii=$mista; $ii<=count($taulukko)-1; $ii++) { // otetaan loppu muistiin $temp_array[$ii]=$taulukko[$ii]; } // Järjestetään Tämä vaihtaa indexin alkamaan alusta sort($temp_array); // Pistetään loppu ylös ja yhdistetään taulukot for ($oo=0; $oo<count($temp_array); $oo++) { $taulukko[$mista+$oo]=$temp_array[$oo]; } } // jarjesta_loppu(.... zer0hunt3r 13:14 29.9.05 Oli muokkaukses tullu pikku bugi korjasin ja vähän luettavampaan kuntoon kanssa, thx vinkeistä :) |
![]() Haku
|