Advertisement
janisii

Salavecis by Janis

Nov 21st, 2014
162
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <title>Salavecis</title>
  6. </head>
  7. <body>
  8.    
  9. <script type="text/javascript">
  10.  
  11.     var pairs = [];
  12.     var participants = ["Anna", "Baiba", "Cecīlija", "Dina", "Egīls", "Fricis", "Guna", "Harijs", "Ilze", "Jānis", "Kārlis", "Liene", "Megija", "Nils", "Olga"];
  13.     var relationships = [ ["Anna", "Egīls"], ["Kārlis", "Ilze"], ["Megija", "Harijs"] ];
  14.  
  15.     // atrod partnerus, kam dāvināt dāvanas
  16.     for (var i = 0; i < participants.length; i++ ) {
  17.         pairs[pairs.length] = [participants[i], findPartner(participants[i], [])];
  18.     }
  19.  
  20.     // izdrukā rezultātus
  21.     for (var i = 0; i < pairs.length; i++ ) {
  22.         document.write( (i+1) + ". " + pairs[i][0] + " dāvina dāvanu " + pairs[i][1] + "<br />");
  23.     }  
  24.  
  25.     // pārbaudīt vai nav ierobežojumos
  26.     function inRelationships( me, p ) {
  27.         for (var i = 0; i < relationships.length; i++ ) {
  28.             if ( (me === relationships[i][0] || me === relationships[i][1])
  29.                 && (p === relationships[i][0] || p === relationships[i][1]) )
  30.                 return true;
  31.         }      
  32.         return false;
  33.     }
  34.  
  35.     // pārbauda vai nedāvina kādam jau dāvanu, vai nav jau iekļauts sarakstos
  36.     function inPairs( p, me ) {
  37.         for (var i = 0; i < pairs.length; i++ ) {
  38.             if ( p === pairs[i][1] || me === pairs[i][0] ) return true;
  39.         }      
  40.         return false;
  41.     }
  42.  
  43.     // atrast partneri kam dāvināt dāvanu (rekursīvi)
  44.     function findPartner( me, f ) {
  45.         if (f.length < participants.length) { // izvairīties no bezgalīgā cikla
  46.             var j = Math.floor((Math.random() * participants.length));
  47.  
  48.             if ( participants[j] !== me // nedāvina sev
  49.                     && !inRelationships(me, participants[j]) // nedāvina ģimenes locekļiem
  50.                     && !inPairs( participants[j], me ) ) // pārbauda vai nav jau dāvinātājs/dāvanas saņēmējs
  51.                 return participants[j];
  52.             else {
  53.                 if (f.indexOf(participants[j]) === -1) {
  54.                     f[f.length] = participants[j]; 
  55.                 }
  56.                 return findPartner( me, f ); // meklē partneri
  57.             }
  58.         }
  59.         window.location.reload(true); // ja ierobežojumu dēļ nevar atrast partneri, sākam visu no jauna
  60.     }
  61.  
  62. </script>
  63.  
  64. </body>
  65. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement