login  Naam:   Wachtwoord: 
Registreer je!
 Forum

While loop (Opgelost)

Offline DMM - 12/11/2008 15:34
Avatar van DMMPHP beginner Beste

Het is al een tijdje geleden dat ik me nog met Php heb beziggehouden, waardoor ik vastzit bij een (simpel) probleem.
Ik heb 5 letters en die zou ik in willekeurige volgorde naar het scherm willen schrijven. Een script zou dus alle mogelijke combinaties moeten overlopen. Voorwaarde is dat elke letter slechts 1 keer gebruikt mag worden. Die zijn de vijf letters:
ABCDE
ABCED
ABECD
...

In totaal zouden er zo'n 120 combinaties moeten zijn geloof ik en dat zou met een (while) loop moeten gebeuren, maar ik weet niet (meer) hoe ik dit zou aanpakken.

Bedankt

David

10 antwoorden

Gesponsorde links
Offline Kr4nKz1n - 12/11/2008 16:43
Avatar van Kr4nKz1n Onbekend Ik heb geen idee, en zit even logisch na te denken. Kan dit uberhaupt wel met een while-loop. Hier heb je volgens mij functies voor nodig.
Offline BigBug - 12/11/2008 16:51
Avatar van BigBug PHP expert Ik denk dat het mogelijk is, maar dan moet je terug naar de roots van de wiskunde. Het aantal combinaties is in dit geval 5! (5 faculteit) => 5*4*3*2*1 = 120 opties, zoals je al aangaf. Het eerste wat je sowieso moet doen is denk ik de string in stukjes hakken, elke letter apart dus... en verder zou ik het ook niet direct kunnen verzinnen.
Offline MiST - 12/11/2008 17:07
Avatar van MiST Lid 4 for loops nesten? 

Denk dat dit een recursieprobleemptjen is met een redelijk hoge complexiteit 

*Denkt verder over elegante implementatie*
Offline Wim - 12/11/2008 17:24
Avatar van Wim Crew algemeen
Kr4nKz1n schreef:
Ik heb geen idee, en zit even logisch na te denken. Kan dit uberhaupt wel met een while-loop. Hier heb je volgens mij functies voor nodig.

waarom reageer je als je geen idee hebt?
-------------

het antwoord is trouwens simpeler dan dat je gaat verwachten: PHP.net: str_shuffle
Offline nemesiskoen - 12/11/2008 17:34 (laatste wijziging 12/11/2008 17:35)
Avatar van nemesiskoen Gouden medaille

PHP expert
ga je dan 120 keer str_shuffle aanroepen en hopen dat het 120 verschillende permutaties zijn? Of ze vergelijken met de vorige?

Of wil meneer de topicstarter enkel 1 permutatie zien?
Nja, anders:
  1. <?php
  2.  
  3. $alfabet = array('a', 'b', 'c', 'd', 'e');
  4.  
  5. getNext($alfabet, array(), 1);
  6.  
  7. function getNext($array, $previous, $step) {
  8. if($step++ == 6) {
  9. foreach($previous as $char) {
  10. echo $char;
  11. }
  12. echo '<br />';
  13. }
  14. foreach($array as $letter) {
  15. if(!in_array($letter, $previous)) {
  16. $prev = array_merge($previous, array($letter));
  17. getNext($array, $prev, $step);
  18. }
  19. }
  20. }


Ja, de functie heeft een achterlijke naam omdat ik geen idee heb hoe je zoiets zou moeten noemen:-)
Offline Wim - 12/11/2008 17:37
Avatar van Wim Crew algemeen nuja, als je ze allemaal wilt hebben van abcde dan kan je ze er beter statisch inzetten... daarom ben ik er van uit gegaan dat de TS er slechts 1 wilt...
Offline Abbas - 12/11/2008 17:37
Avatar van Abbas Gouden medaille

Crew .NET
Pom pom tsssjjj!! 
Offline nemesiskoen - 12/11/2008 17:40
Avatar van nemesiskoen Gouden medaille

PHP expert
mmm twas me nooit opgevallen dat "rn" en een "m" zohard op elkaar lijken...
Offline Abbas - 12/11/2008 17:42
Avatar van Abbas Gouden medaille

Crew .NET
Wa dachte dan: por n, po rn, tssjjj?! ^^
Offline DMM - 12/11/2008 19:26
Avatar van DMM PHP beginner Dankuwel Vage!
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.191s