login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Anagrammenmaker (Opgelost)

Offline anton - 17/04/2009 22:44
Avatar van antonLid Hey,
Ik weet niet of ik juist zit in deze categorie, maar ik zou eigenlijk een script moeten hebben dat van bepaalde letters alle mogelijke anagrammen geeft...ik heb al op internet gezocht maar daar vind ik er enkel die anagrammen maken van bestaande woorden naar bestaande woorden...De woorden die ik wil anagrammeren(??) bestaan niet...Mijn JS kennis rijkt al niet zo ver, maar dit kan ik zeker niet...ik heb wel een soort van theorie bedacht: Als ik alle letters in een array zet en ze er dan laat uithalen in verschillende volgordes tot het script alle mogelijke combinaties heeft gehad...maar ik weet dus echt niet hoe...Kan er iemand me helpen???
Dit is de Array als je die zou kunnen gebruiken:
  1. var letters = new Array(
  2. "J",
  3. "i",
  4. "e",
  5. "r",
  6. "d",
  7. "a",
  8. "d",
  9. "d",
  10. "u",
  11. "D",
  12. "e",
  13. "l",
  14. "o",
  15. "i",
  16. "u",
  17. "n",
  18. "V",
  19. "i",
  20. "n",
  21. "d",
  22. "r");

Bedankt alvast
MVG
Anton

5 antwoorden

Gesponsorde links
Offline Rik - 18/04/2009 11:29 (laatste wijziging 18/04/2009 11:29)
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Ik heb deze code getest met een paar letters:
  1. var letters = new Array('J', 'i', 'e', 'r', 'd', 'a', 'd', 'd', 'u', 'D', 'e', 'l', 'o', 'i', 'u', 'n', 'V', 'i', 'n', 'd', 'r');
  2. var combinaties = new Array('');
  3. var temp_combinaties = new Array;
  4. for (i in letters) {
  5. for (j in combinaties) {
  6. for (k in letters) {
  7. if (combinaties[j].indexOf(letters[k]) < 0) {
  8. temp_combinaties.push(combinaties[j] + letters[k]);
  9. }
  10. }
  11. }
  12. combinaties = temp_combinaties;
  13. temp_combinaties = new Array;
  14. }
  15. alert(combinaties.join('\n'));
Dat werkt prima, maar met die hele lijst die jij geeft duurt het echt héél lang. Je krijgt dan namelijk 21! = 5*10^19 = 50 triljoen mogelijkheden.  
Offline MiST - 18/04/2009 13:51
Avatar van MiST Lid filter je de dubbels?
Offline anton - 18/04/2009 16:53 (laatste wijziging 18/04/2009 20:15)
Avatar van anton Lid Ok...ik snap hier niets meer van...met die 21 letters liep mn internet vast dusja...dus heb ik nu iets met minder letters en in plaats van alert heb ik document.write gebruikt... dat is alles dat ik veranderd heb, maar het werkt nog steeds niet...
Dit is wat ik nu heb:
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  4. <title>Untitled Document</title>
  5. <script type="text/javascript">

  1. function MakeList(){
  2. var letters = new Array("d","e","h","o","r","i","z","o","n");
  3. var combinaties = new Array('');
  4. var temp_combinaties = new Array;
  5. for (i in letters) {
  6. for (j in combinaties) {
  7. for (k in letters) {
  8. if (combinaties[j].indexOf(letters[k]) < 0) {
  9. temp_combinaties.push(combinaties[j] + letters[k]);
  10. }
  11. }
  12. }
  13. combinaties = temp_combinaties;
  14. temp_combinaties = new Array;
  15. }
  16. document.write(combinaties.join("\n"));
  17. }

  1. </head>
  2.  
  3. <body onload="MakeList()">
  4. </body>
  5. </html>

Misschien ziet iemand de fout???
ThX 
Offline Rik - 19/04/2009 14:19
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Probeer m'n code eerst eens met wat minder letters om te zien dat hij allemaal unieke combinaties maakt.  

Ik denk dat javascript gewoon niet zulke grote arrays aan kan. 7 lijkt het maximum te zijn. Als je er toch zo veel wilt kun je beter een andere taal gebruiken.
Offline anton - 19/04/2009 22:52
Avatar van anton Lid ok je hebt gelijk ik heb de "de" eraf gedaan en nu krijg ik en HEEEEELLEEEE lijst maar het werkt! Heel erg bedankt boukefalos!!

MVG
Anton
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.187s