-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
96 lines (84 loc) · 2.22 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
var email = require('./email');
var tentativas = 1;
var friendList = [
{
name: "### first friend name ###",
email: "### first friend email ###",
secretFriend: null
},
{
name: "### second friend name ###",
email: "### second friend email ###",
secretFriend: null
},
{
name: "### third friend name ###",
email: "### third friend email ###",
secretFriend: null
},
{
name: "### fourth friend name ###",
email: "### fourth friend email ###",
secretFriend: null
}
];
var unselectedEmails;
function resetEmails() {
unselectedEmails = [];
friendList.map(function (friend, index) {
unselectedEmails.push(friend.email);
});
}
function getRandomFriend() {
var randomIndex = Math.floor(Math.random() * unselectedEmails.length);
return getFriendByEmail(unselectedEmails[randomIndex]);
}
function secretFriendIsValid(secretFriend, friend) {
if (secretFriend.email === friend.email) {
return false;
}
if (unselectedEmails.indexOf(secretFriend.email) === -1) {
return false;
}
return true;
}
function getFriendByEmail(email) {
for (var i = 0; i < friendList.length; ++i) {
if (friendList[i].email === email) {
return friendList[i];
}
}
return null;
}
function getNewSecretFriend(friend, isTheLast) {
var secretFriend = getRandomFriend();
if (isTheLast) {
return secretFriend;
}
if (secretFriendIsValid(secretFriend, friend)) {
unselectedEmails.splice(unselectedEmails.indexOf(secretFriend.email), 1);
return secretFriend;
}
return getNewSecretFriend(friend, isTheLast);
}
function selectFriends() {
resetEmails();
var lastFriend;
var secretFriend;
friendList.map(function (friend, index) {
secretFriend = getNewSecretFriend(friend, index === friendList.length - 1);
friend.secretFriend = secretFriend.email;
});
lastFriend = friendList[friendList.length - 1];
console.log("Tentativa:", tentativas);
tentativas++;
if (!secretFriendIsValid(getFriendByEmail(lastFriend.secretFriend), lastFriend)) {
selectFriends();
}
}
selectFriends();
friendList.map(function (friend) {
friend = JSON.parse(JSON.stringify(friend));
friend.secretFriend = getFriendByEmail(friend.secretFriend);
email.email.send(friend);
});