Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Salavecis</title>
- </head>
- <body>
- <script type="text/javascript">
- var pairs = [];
- var participants = ["Anna", "Baiba", "Cecīlija", "Dina", "Egīls", "Fricis", "Guna", "Harijs", "Ilze", "Jānis", "Kārlis", "Liene", "Megija", "Nils", "Olga"];
- var relationships = [ ["Anna", "Egīls"], ["Kārlis", "Ilze"], ["Megija", "Harijs"] ];
- // atrod partnerus, kam dāvināt dāvanas
- for (var i = 0; i < participants.length; i++ ) {
- pairs[pairs.length] = [participants[i], findPartner(participants[i], [])];
- }
- // izdrukā rezultātus
- for (var i = 0; i < pairs.length; i++ ) {
- document.write( (i+1) + ". " + pairs[i][0] + " dāvina dāvanu " + pairs[i][1] + "<br />");
- }
- // pārbaudīt vai nav ierobežojumos
- function inRelationships( me, p ) {
- for (var i = 0; i < relationships.length; i++ ) {
- if ( (me === relationships[i][0] || me === relationships[i][1])
- && (p === relationships[i][0] || p === relationships[i][1]) )
- return true;
- }
- return false;
- }
- // pārbauda vai nedāvina kādam jau dāvanu, vai nav jau iekļauts sarakstos
- function inPairs( p, me ) {
- for (var i = 0; i < pairs.length; i++ ) {
- if ( p === pairs[i][1] || me === pairs[i][0] ) return true;
- }
- return false;
- }
- // atrast partneri kam dāvināt dāvanu (rekursīvi)
- function findPartner( me, f ) {
- if (f.length < participants.length) { // izvairīties no bezgalīgā cikla
- var j = Math.floor((Math.random() * participants.length));
- if ( participants[j] !== me // nedāvina sev
- && !inRelationships(me, participants[j]) // nedāvina ģimenes locekļiem
- && !inPairs( participants[j], me ) ) // pārbauda vai nav jau dāvinātājs/dāvanas saņēmējs
- return participants[j];
- else {
- if (f.indexOf(participants[j]) === -1) {
- f[f.length] = participants[j];
- }
- return findPartner( me, f ); // meklē partneri
- }
- }
- window.location.reload(true); // ja ierobežojumu dēļ nevar atrast partneri, sākam visu no jauna
- }
- </script>
- </body>
- </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement