Skip to content

Commit 001a11e

Browse files
committed
modify pairing algorithm
1 parent 562f451 commit 001a11e

File tree

1 file changed

+18
-95
lines changed

1 file changed

+18
-95
lines changed

pairs_algorithm.ipynb

+18-95
Original file line numberDiff line numberDiff line change
@@ -2,102 +2,53 @@
22
"cells": [
33
{
44
"cell_type": "code",
5-
"execution_count": 3,
5+
"execution_count": 1,
66
"metadata": {
7-
"collapsed": true
7+
"collapsed": false
88
},
99
"outputs": [],
1010
"source": [
1111
"import numpy as np\n",
1212
"\n",
13-
"classmates = ['Alexander','Bryan','Cindy','Crystal','DanielG','DanielT','Eric','Everett','Harry','John','Justin','Miles','Monika','Srikanth','Swathi','Tetyana','Timothy','Yeongcheon']\n",
14-
"\n",
15-
"def pairs(classmates, day=1):\n",
16-
" classmates.sort()\n",
17-
" if day > 4:\n",
18-
" day += 1\n",
19-
" for ind, value in enumerate(classmates):\n",
20-
" if ind%2==False and day*2 <= len(classmates):\n",
21-
" print value + ' *PAIR* ' + classmates[(ind-1+day*2)%len(classmates)]\n",
22-
" elif ind*2 < len(classmates) and day*2 > len(classmates) and day-10%len(classmates)!=(ind+day%10)%len(classmates): \n",
23-
" print classmates[(ind+day%10)%len(classmates)] + ' *PAIR* ' + classmates[(len(classmates)-ind+day%10)%len(classmates)]\n",
24-
" elif day-10%len(classmates)==(ind+day%10)%len(classmates):\n",
25-
" print classmates[(ind+day%10)%len(classmates)] + ' *PAIR* ' + classmates[(ind+9+day%10)%len(classmates)] "
26-
]
27-
},
28-
{
29-
"cell_type": "code",
30-
"execution_count": 56,
31-
"metadata": {
32-
"collapsed": false
33-
},
34-
"outputs": [
35-
{
36-
"name": "stdout",
37-
"output_type": "stream",
38-
"text": [
39-
"Harry *PAIR* Yeongcheon\n",
40-
"John *PAIR* Everett\n",
41-
"Justin *PAIR* Eric\n",
42-
"Miles *PAIR* Daniel T\n",
43-
"Monika *PAIR* Daniel G\n",
44-
"Srikanth *PAIR* Crystal\n",
45-
"Swathi *PAIR* Cindy\n",
46-
"Tetyana *PAIR* Bryan\n",
47-
"Timothy *PAIR* Alexander\n"
48-
]
49-
}
50-
],
51-
"source": [
52-
"pairs(classmates, 17)"
53-
]
54-
},
55-
{
56-
"cell_type": "code",
57-
"execution_count": 58,
58-
"metadata": {
59-
"collapsed": false
60-
},
61-
"outputs": [],
62-
"source": [
63-
"def cpairs(classmates, day):\n",
13+
"def pairs(classmates, day):\n",
6414
" classmates.sort()\n",
6515
" n = len(classmates)\n",
66-
" mask = np.ones(n, dtype=bool) # initiate a mask to indicate who has or has not been paired\n",
16+
" paired = np.ones(n, dtype=bool) # initiate a mask to indicate who has or has not been paired\n",
6717
" day = (day-1)%(n-1) # start day count from 0 and repeat pairings if day > (n-1)\n",
6818
" \n",
6919
" if day <= n/2:\n",
7020
" day += day/(n/4) # skip the day when people pair across\n",
7121
" for i in xrange(n):\n",
72-
" if mask[i]:\n",
22+
" if paired[i]:\n",
7323
" if i%2 == 0:\n",
7424
" print classmates[i] + ', ' + classmates[(i+1+day*2)%n]\n",
75-
" mask[i], mask[(i+1+day*2)%n] = 0, 0\n",
25+
" paired[i], paired[(i+1+day*2)%n] = 0, 0\n",
7626
" else:\n",
7727
" print classmates[i] + ', ' + classmates[(i-1-day*2)%n]\n",
78-
" mask[i], mask[(i-1-day*2)%n] = 0, 0\n",
28+
" paired[i], paired[(i-1-day*2)%n] = 0, 0\n",
7929
" \n",
80-
" elif day >= n/2:\n",
30+
" elif day > n/2:\n",
8131
" head = day - n/2 +1 # marks the person pairing across\n",
8232
" for i in xrange(n):\n",
83-
" if mask[i]:\n",
33+
" if paired[i]:\n",
8434
" if i == head:\n",
8535
" print classmates[head] + ', ' + classmates[head+(n/2)]\n",
86-
" mask[head], mask[head+(n/2)] = 0, 0\n",
36+
" paired[head], paired[head+(n/2)] = 0, 0\n",
8737
" else:\n",
8838
" print classmates[i] + ', ' + classmates[(2*head+n-i)%n]\n",
89-
" mask[i], mask[(2*head+n-i)%n] = 0, 0\n"
39+
" paired[i], paired[(2*head+n-i)%n] = 0, 0\n"
9040
]
9141
},
9242
{
9343
"cell_type": "code",
94-
"execution_count": 13,
44+
"execution_count": 2,
9545
"metadata": {
9646
"collapsed": true
9747
},
9848
"outputs": [],
9949
"source": [
100-
"classmates = ['Alexander','Bryan','Cindy','Crystal','Daniel G','Daniel T','Eric','Everett','Harry','John','Justin','Miles','Monika','Srikanth','Swathi','Tetyana','Timothy','Yeongcheon']\n"
50+
"classmates = ['Alexander','Bryan','Cindy','Crystal','Daniel G','Daniel T','Eric','Everett','Harry','John',\n",
51+
" 'Justin','Miles','Monika','Srikanth','Swathi','Tetyana','Timothy','Yeongcheon']\n"
10152
]
10253
},
10354
{
@@ -124,7 +75,7 @@
12475
}
12576
],
12677
"source": [
127-
"cpairs(classmates, 3)"
78+
"pairs(classmates, 3)"
12879
]
12980
},
13081
{
@@ -183,7 +134,7 @@
183134
},
184135
{
185136
"cell_type": "code",
186-
"execution_count": 60,
137+
"execution_count": 3,
187138
"metadata": {
188139
"collapsed": false
189140
},
@@ -205,35 +156,7 @@
205156
}
206157
],
207158
"source": [
208-
"cpairs(classmates, 19)"
209-
]
210-
},
211-
{
212-
"cell_type": "code",
213-
"execution_count": null,
214-
"metadata": {
215-
"collapsed": false
216-
},
217-
"outputs": [],
218-
"source": []
219-
},
220-
{
221-
"cell_type": "code",
222-
"execution_count": null,
223-
"metadata": {
224-
"collapsed": true
225-
},
226-
"outputs": [],
227-
"source": [
228-
" elif day > n/4 and day < n/2:\n",
229-
" for i in xrange(n):\n",
230-
" if mask[i]:\n",
231-
" if i%2 == 0:\n",
232-
" print classmates[i] + ', ' + classmates[(i+1+day*2)%n]\n",
233-
" mask[i], mask[(i-1+day*2)%n] = 0, 0\n",
234-
" else:\n",
235-
" print classmates[i] + ', ' + classmates[(i-1-day*2)%n]\n",
236-
" mask[i], mask[(i+1-day*2)%n] = 0, 0"
159+
"cpairs(classmates, 2)"
237160
]
238161
}
239162
],
@@ -253,7 +176,7 @@
253176
"name": "python",
254177
"nbconvert_exporter": "python",
255178
"pygments_lexer": "ipython2",
256-
"version": "2.7.10"
179+
"version": "2.7.11"
257180
}
258181
},
259182
"nbformat": 4,

0 commit comments

Comments
 (0)