Removing files from data analysis directory
[ou-summer-of-code-2017.git] / 01-ticket-prices / ticket-pricing-generator.ipynb
1 {
2 "cells": [
3 {
4 "cell_type": "code",
5 "execution_count": 1,
6 "metadata": {
7 "collapsed": true
8 },
9 "outputs": [],
10 "source": [
11 "import random\n",
12 "import re\n",
13 "import uuid"
14 ]
15 },
16 {
17 "cell_type": "code",
18 "execution_count": 2,
19 "metadata": {
20 "collapsed": true
21 },
22 "outputs": [],
23 "source": [
24 "def cap_after_hyphen(string):\n",
25 " return re.sub(r'\\-(?P<first>[a-z])', \n",
26 " lambda m: '-' + m.group('first').upper(), \n",
27 " string) "
28 ]
29 },
30 {
31 "cell_type": "code",
32 "execution_count": 3,
33 "metadata": {},
34 "outputs": [
35 {
36 "data": {
37 "text/plain": [
38 "['Aalborg',\n",
39 " 'Nullarbor',\n",
40 " 'Morgantown',\n",
41 " 'Estacada',\n",
42 " 'Almaty',\n",
43 " 'Tambon-Pa-Fa',\n",
44 " 'Lemnos',\n",
45 " 'Sofia',\n",
46 " 'Puente-Laguna-Garzonkuala-Penyu',\n",
47 " 'Hajnowski',\n",
48 " 'Karlukovo',\n",
49 " 'Mamula',\n",
50 " 'Stonington-Island',\n",
51 " 'Grimsey-Island',\n",
52 " 'Uzupis',\n",
53 " 'Sukhumi',\n",
54 " 'Ijsseloog',\n",
55 " 'Giessenmestia',\n",
56 " 'Nordkapp',\n",
57 " 'Gorongosa',\n",
58 " 'Brorfelde',\n",
59 " 'Parowan',\n",
60 " 'Tubakuba',\n",
61 " 'Geoje-Si',\n",
62 " 'Mora',\n",
63 " 'Holmegaard',\n",
64 " 'Jayuya',\n",
65 " 'Zhangye-Shi',\n",
66 " 'Luoyang']"
67 ]
68 },
69 "execution_count": 3,
70 "metadata": {},
71 "output_type": "execute_result"
72 }
73 ],
74 "source": [
75 "destination_names = ('Aalborg Nullarbor MORGANTOWN ESTACADA ALMATY TAMBON-PA-FA Lemnos Sofia Puente-Laguna-Garzon' +\n",
76 "'KUALA-PENYU HAJNOWSKI KARLUKOVO Mamula STONINGTON-ISLAND Grimsey-Island Uzupis SUKHUMI IJsseloog GIESSEN' +\n",
77 "'MESTIA NORDKAPP GORONGOSA Brorfelde PAROWAN Tubakuba GEOJE-SI MORA HOLMEGAARD JAYUYA ZHANGYE-SHI LUOYANG')\n",
78 "destination_names = destination_names.lower().split()\n",
79 "destination_names = [n[0].upper() + n[1:] for n in destination_names]\n",
80 "destination_names = [cap_after_hyphen(n) for n in destination_names]\n",
81 "\n",
82 "destination_names"
83 ]
84 },
85 {
86 "cell_type": "code",
87 "execution_count": 4,
88 "metadata": {},
89 "outputs": [
90 {
91 "data": {
92 "text/plain": [
93 "{'Aalborg': 1.0,\n",
94 " 'Almaty': 1.0,\n",
95 " 'Brorfelde': 1.0,\n",
96 " 'Estacada': 1.0,\n",
97 " 'Geoje-Si': 1.0,\n",
98 " 'Giessenmestia': 1.0,\n",
99 " 'Gorongosa': 1.0,\n",
100 " 'Grimsey-Island': 1.0,\n",
101 " 'Hajnowski': 1.0,\n",
102 " 'Holmegaard': 1.0,\n",
103 " 'Ijsseloog': 1.0,\n",
104 " 'Jayuya': 1.0,\n",
105 " 'Karlukovo': 1.0,\n",
106 " 'Lemnos': 1.0,\n",
107 " 'Luoyang': 1.0,\n",
108 " 'Mamula': 1.0,\n",
109 " 'Mora': 1.0,\n",
110 " 'Morgantown': 1.0,\n",
111 " 'Nordkapp': 1.0,\n",
112 " 'Nullarbor': 1.0,\n",
113 " 'Parowan': 1.0,\n",
114 " 'Puente-Laguna-Garzonkuala-Penyu': 1.0,\n",
115 " 'Sofia': 1.0,\n",
116 " 'Stonington-Island': 1.0,\n",
117 " 'Sukhumi': 1.0,\n",
118 " 'Tambon-Pa-Fa': 1.0,\n",
119 " 'Tubakuba': 1.0,\n",
120 " 'Uzupis': 1.0,\n",
121 " 'Zhangye-Shi': 1.0}"
122 ]
123 },
124 "execution_count": 4,
125 "metadata": {},
126 "output_type": "execute_result"
127 }
128 ],
129 "source": [
130 "destination_scores = {n: 1.0 for n in destination_names}\n",
131 "destination_scores"
132 ]
133 },
134 {
135 "cell_type": "code",
136 "execution_count": 5,
137 "metadata": {},
138 "outputs": [
139 {
140 "data": {
141 "text/plain": [
142 "{'Aalborg': 1.0,\n",
143 " 'Almaty': 1.0,\n",
144 " 'Brorfelde': 1.9,\n",
145 " 'Estacada': 1.0,\n",
146 " 'Geoje-Si': 1.0,\n",
147 " 'Giessenmestia': 0.5,\n",
148 " 'Gorongosa': 1.3,\n",
149 " 'Grimsey-Island': 0.6,\n",
150 " 'Hajnowski': 1.0,\n",
151 " 'Holmegaard': 1.0,\n",
152 " 'Ijsseloog': 1.0,\n",
153 " 'Jayuya': 1.0,\n",
154 " 'Karlukovo': 1.0,\n",
155 " 'Lemnos': 1.0,\n",
156 " 'Luoyang': 1.0,\n",
157 " 'Mamula': 1.0,\n",
158 " 'Mora': 0.6,\n",
159 " 'Morgantown': 1.0,\n",
160 " 'Nordkapp': 1.0,\n",
161 " 'Nullarbor': 1.8,\n",
162 " 'Parowan': 1.0,\n",
163 " 'Puente-Laguna-Garzonkuala-Penyu': 1.0,\n",
164 " 'Sofia': 1.0,\n",
165 " 'Stonington-Island': 1.0,\n",
166 " 'Sukhumi': 0.3,\n",
167 " 'Tambon-Pa-Fa': 0.9,\n",
168 " 'Tubakuba': 1.0,\n",
169 " 'Uzupis': 2.6,\n",
170 " 'Zhangye-Shi': 2.5}"
171 ]
172 },
173 "execution_count": 5,
174 "metadata": {},
175 "output_type": "execute_result"
176 }
177 ],
178 "source": [
179 "adjust = random.sample(destination_names, 10)\n",
180 "inc_names = adjust[:5]\n",
181 "dec_names = adjust[5:]\n",
182 "for n in inc_names:\n",
183 " destination_scores[n] = float(random.randint(11, 30)) / 10\n",
184 "for n in dec_names:\n",
185 " destination_scores[n] = float(random.randint(3, 9)) / 10 \n",
186 "destination_scores"
187 ]
188 },
189 {
190 "cell_type": "code",
191 "execution_count": 6,
192 "metadata": {
193 "collapsed": true
194 },
195 "outputs": [],
196 "source": [
197 "destination_scores = {'Aalborg': 1, 'Almaty': 2.0, 'Brorfelde': 0.9, 'Estacada': 0.4, 'Geoje-Si': 1,\n",
198 " 'Giessenmestia': 1, 'Gorongosa': 1, 'Grimsey-Island': 1, 'Hajnowski': 1, 'Holmegaard': 1, 'Ijsseloog': 1,\n",
199 " 'Jayuya': 0.6, 'Karlukovo': 2.2, 'Lemnos': 1, 'Luoyang': 1, 'Mamula': 1, 'Mora': 1, 'Morgantown': 2.9,\n",
200 " 'Nordkapp': 1.5, 'Nullarbor': 2.2, 'Parowan': 1, 'Puente-Laguna-Garzonkuala-Penyu': 0.4, 'Sofia': 1,\n",
201 " 'Stonington-Island': 1, 'Sukhumi': 1, 'Tambon-Pa-Fa': 1, 'Tubakuba': 1, 'Uzupis': 0.9, 'Zhangye-Shi': 1}"
202 ]
203 },
204 {
205 "cell_type": "code",
206 "execution_count": 7,
207 "metadata": {
208 "collapsed": true
209 },
210 "outputs": [],
211 "source": [
212 "destination_score_exceptions = {'Almaty': 2.0, 'Brorfelde': 0.9, 'Estacada': 0.4, 'Jayuya': 0.6, 'Karlukovo': 2.2, 'Morgantown': 2.9,\n",
213 " 'Nordkapp': 1.5, 'Nullarbor': 2.2, 'Puente-Laguna-Garzonkuala-Penyu': 0.4, 'Uzupis': 0.9}"
214 ]
215 },
216 {
217 "cell_type": "code",
218 "execution_count": 8,
219 "metadata": {},
220 "outputs": [
221 {
222 "data": {
223 "text/plain": [
224 "{'Aalborg': 1,\n",
225 " 'Almaty': 2.0,\n",
226 " 'Brorfelde': 0.9,\n",
227 " 'Estacada': 0.4,\n",
228 " 'Geoje-Si': 1,\n",
229 " 'Giessenmestia': 1,\n",
230 " 'Gorongosa': 1,\n",
231 " 'Grimsey-Island': 1,\n",
232 " 'Hajnowski': 1,\n",
233 " 'Holmegaard': 1,\n",
234 " 'Ijsseloog': 1,\n",
235 " 'Jayuya': 0.6,\n",
236 " 'Karlukovo': 2.2,\n",
237 " 'Lemnos': 1,\n",
238 " 'Luoyang': 1,\n",
239 " 'Mamula': 1,\n",
240 " 'Mora': 1,\n",
241 " 'Morgantown': 2.9,\n",
242 " 'Nordkapp': 1.5,\n",
243 " 'Nullarbor': 2.2,\n",
244 " 'Parowan': 1,\n",
245 " 'Puente-Laguna-Garzonkuala-Penyu': 0.4,\n",
246 " 'Sofia': 1,\n",
247 " 'Stonington-Island': 1,\n",
248 " 'Sukhumi': 1,\n",
249 " 'Tambon-Pa-Fa': 1,\n",
250 " 'Tubakuba': 1,\n",
251 " 'Uzupis': 0.9,\n",
252 " 'Zhangye-Shi': 1}"
253 ]
254 },
255 "execution_count": 8,
256 "metadata": {},
257 "output_type": "execute_result"
258 }
259 ],
260 "source": [
261 "destination_scores.update(destination_score_exceptions)\n",
262 "destination_scores"
263 ]
264 },
265 {
266 "cell_type": "code",
267 "execution_count": 9,
268 "metadata": {},
269 "outputs": [
270 {
271 "name": "stdout",
272 "output_type": "stream",
273 "text": [
274 "| Destination | Score |\n",
275 "|-------------|-------|\n",
276 "| Almaty | 2.0 |\n",
277 "| Brorfelde | 0.9 |\n",
278 "| Estacada | 0.4 |\n",
279 "| Jayuya | 0.6 |\n",
280 "| Karlukovo | 2.2 |\n",
281 "| Morgantown | 2.9 |\n",
282 "| Nordkapp | 1.5 |\n",
283 "| Nullarbor | 2.2 |\n",
284 "| Puente-Laguna-Garzonkuala-Penyu | 0.4 |\n",
285 "| Uzupis | 0.9 |\n"
286 ]
287 }
288 ],
289 "source": [
290 "print('| Destination | Score |')\n",
291 "print('|-------------|-------|')\n",
292 "for n in sorted(destination_scores):\n",
293 " if destination_scores[n] != 1:\n",
294 " print('|', n, '|', destination_scores[n], '|')"
295 ]
296 },
297 {
298 "cell_type": "code",
299 "execution_count": 10,
300 "metadata": {
301 "collapsed": true
302 },
303 "outputs": [],
304 "source": [
305 "def make_holiday(name=None):\n",
306 " if not name:\n",
307 " name = random.choice(destination_names)\n",
308 " days = random.choice([3, 7, 7, 7, 10, 14, 14, 14, 14, 21, 21])\n",
309 " price = 0\n",
310 " for _ in range(4):\n",
311 " price += random.randint(100, 500)\n",
312 " hol_id = str(uuid.uuid4())[-random.randint(8, 12):]\n",
313 " return hol_id, price, name, days"
314 ]
315 },
316 {
317 "cell_type": "code",
318 "execution_count": 11,
319 "metadata": {},
320 "outputs": [
321 {
322 "data": {
323 "text/plain": [
324 "('d332f9de36', 1084, 'Aalborg', 14)"
325 ]
326 },
327 "execution_count": 11,
328 "metadata": {},
329 "output_type": "execute_result"
330 }
331 ],
332 "source": [
333 "make_holiday()"
334 ]
335 },
336 {
337 "cell_type": "code",
338 "execution_count": 12,
339 "metadata": {},
340 "outputs": [
341 {
342 "data": {
343 "text/plain": [
344 "[('715f4a7e01', 1711, 'Aalborg', 14),\n",
345 " ('089d8fb41', 1350, 'Nullarbor', 10),\n",
346 " ('5e4cac0bc', 1047, 'Morgantown', 14),\n",
347 " ('3d325aa3', 1121, 'Estacada', 14),\n",
348 " ('2208b9c9c8d', 982, 'Almaty', 7),\n",
349 " ('57a09a474ed', 717, 'Tambon-Pa-Fa', 14),\n",
350 " ('ce2dc149f13', 720, 'Lemnos', 7),\n",
351 " ('8e98f8d24', 1522, 'Sofia', 14),\n",
352 " ('11ad39807fb', 1492, 'Puente-Laguna-Garzonkuala-Penyu', 14),\n",
353 " ('726dc3d60', 1337, 'Hajnowski', 21),\n",
354 " ('3582dc3a65fc', 1640, 'Karlukovo', 7),\n",
355 " ('6088f9b7a20', 1333, 'Mamula', 14),\n",
356 " ('93804a851f', 1505, 'Stonington-Island', 10),\n",
357 " ('e7427c93592c', 1007, 'Grimsey-Island', 7),\n",
358 " ('66330891', 1421, 'Uzupis', 3),\n",
359 " ('423479b70b9', 1564, 'Sukhumi', 7),\n",
360 " ('394773a2c8', 1421, 'Ijsseloog', 21),\n",
361 " ('821b2172d', 1254, 'Giessenmestia', 21),\n",
362 " ('70e4246d', 1343, 'Nordkapp', 7),\n",
363 " ('9bba6559661', 1397, 'Gorongosa', 3),\n",
364 " ('77f95fa1e0d', 1058, 'Brorfelde', 3),\n",
365 " ('61c8b16c7', 1414, 'Parowan', 14),\n",
366 " ('03b4198d6a', 1397, 'Tubakuba', 14),\n",
367 " ('345db350cb', 1032, 'Geoje-Si', 21),\n",
368 " ('088ed5f9', 1411, 'Mora', 14),\n",
369 " ('e20d1d37', 1248, 'Holmegaard', 14),\n",
370 " ('b3b569bdab1', 914, 'Jayuya', 21),\n",
371 " ('704c26aeb2a', 1153, 'Zhangye-Shi', 14),\n",
372 " ('ca229988', 1178, 'Luoyang', 10)]"
373 ]
374 },
375 "execution_count": 12,
376 "metadata": {},
377 "output_type": "execute_result"
378 }
379 ],
380 "source": [
381 "holidays = []\n",
382 "for n in destination_names:\n",
383 " holidays += [make_holiday(n)]\n",
384 "holidays"
385 ]
386 },
387 {
388 "cell_type": "code",
389 "execution_count": 13,
390 "metadata": {
391 "collapsed": true
392 },
393 "outputs": [],
394 "source": [
395 "for _ in range(95):\n",
396 " holidays += [make_holiday()]"
397 ]
398 },
399 {
400 "cell_type": "code",
401 "execution_count": 14,
402 "metadata": {},
403 "outputs": [
404 {
405 "name": "stdout",
406 "output_type": "stream",
407 "text": [
408 "iterating\n"
409 ]
410 },
411 {
412 "data": {
413 "text/plain": [
414 "[('26ae2d0b7', 1188, 'Aalborg', 7),\n",
415 " ('ee064e1e2ea', 785, 'Nullarbor', 14),\n",
416 " ('c5f99dca95e', 1727, 'Morgantown', 14),\n",
417 " ('b6d482b92', 1497, 'Estacada', 14),\n",
418 " ('6fb97c1a3', 993, 'Almaty', 7),\n",
419 " ('bfc72b962', 1153, 'Tambon-Pa-Fa', 14),\n",
420 " ('fc05fce8d', 1551, 'Lemnos', 14),\n",
421 " ('2407d5e3', 1234, 'Sofia', 7),\n",
422 " ('41c837263600', 1083, 'Puente-Laguna-Garzonkuala-Penyu', 14),\n",
423 " ('46c6b6fa76', 1184, 'Hajnowski', 14),\n",
424 " ('943fa28d', 1541, 'Karlukovo', 7),\n",
425 " ('6ffab38e7b', 1228, 'Mamula', 14),\n",
426 " ('1892f12d6', 948, 'Stonington-Island', 14),\n",
427 " ('16935ed587bf', 1312, 'Grimsey-Island', 14),\n",
428 " ('4ebc5e0b', 1227, 'Uzupis', 7),\n",
429 " ('4a642c384ea', 1146, 'Sukhumi', 14),\n",
430 " ('04feb63602', 1050, 'Ijsseloog', 14),\n",
431 " ('5d2c9d24', 1263, 'Giessenmestia', 21),\n",
432 " ('f806fc9d', 1553, 'Nordkapp', 21),\n",
433 " ('4caefcacded0', 1644, 'Gorongosa', 21),\n",
434 " ('aea2a458023', 727, 'Brorfelde', 21),\n",
435 " ('1afd05d3ea88', 1072, 'Parowan', 7),\n",
436 " ('303db888d', 1316, 'Tubakuba', 7),\n",
437 " ('9997e977978', 1170, 'Geoje-Si', 14),\n",
438 " ('2ee77108', 1549, 'Mora', 7),\n",
439 " ('6ed9a88972', 1295, 'Holmegaard', 14),\n",
440 " ('38b9690d981', 1204, 'Jayuya', 14),\n",
441 " ('166b77df', 979, 'Zhangye-Shi', 14),\n",
442 " ('7f1a85bc', 1140, 'Luoyang', 7),\n",
443 " ('7b1c64c74', 1361, 'Tambon-Pa-Fa', 10),\n",
444 " ('4a67a59a', 1055, 'Almaty', 7),\n",
445 " ('1ab9eb3d5422', 1376, 'Tambon-Pa-Fa', 14),\n",
446 " ('df7bd3ee5', 1209, 'Parowan', 7),\n",
447 " ('b4db7910', 1300, 'Ijsseloog', 10),\n",
448 " ('4ce3111c66', 1106, 'Karlukovo', 10),\n",
449 " ('9a226b7b33c', 906, 'Hajnowski', 7),\n",
450 " ('153da27bcb75', 1030, 'Ijsseloog', 3),\n",
451 " ('de5d04b2c3a', 867, 'Tubakuba', 7),\n",
452 " ('eaa91671', 943, 'Stonington-Island', 14),\n",
453 " ('b261dbd1cef', 996, 'Holmegaard', 21),\n",
454 " ('7a9b44f3bcc', 1277, 'Mora', 14),\n",
455 " ('e1f3bd201', 1379, 'Uzupis', 14),\n",
456 " ('83f28647', 973, 'Jayuya', 7),\n",
457 " ('0ba9dcee27f3', 1261, 'Karlukovo', 14),\n",
458 " ('4809881ff7', 1380, 'Holmegaard', 7),\n",
459 " ('67985d6aa', 1525, 'Stonington-Island', 14),\n",
460 " ('1e38291d', 1438, 'Luoyang', 14),\n",
461 " ('839240114', 1546, 'Tubakuba', 7),\n",
462 " ('ceb26b792', 1352, 'Sofia', 21),\n",
463 " ('7b049264', 1077, 'Hajnowski', 10),\n",
464 " ('34f7247adaf', 1413, 'Nordkapp', 10),\n",
465 " ('ce8b3fcd44b1', 849, 'Sofia', 14),\n",
466 " ('1fc012fcb7c5', 1081, 'Jayuya', 21),\n",
467 " ('54670c3136d', 1254, 'Luoyang', 7),\n",
468 " ('6f2f9ff6b7bd', 903, 'Zhangye-Shi', 3),\n",
469 " ('60fdf85cf570', 1002, 'Almaty', 14),\n",
470 " ('49e8530b61a0', 1061, 'Nullarbor', 3),\n",
471 " ('1634fe98c256', 1058, 'Jayuya', 7),\n",
472 " ('17d3decd842', 1041, 'Ijsseloog', 7),\n",
473 " ('f7cbb3da7e6', 731, 'Aalborg', 14),\n",
474 " ('c3cac7d3bc', 813, 'Ijsseloog', 7),\n",
475 " ('a1342d1ec', 1368, 'Ijsseloog', 7),\n",
476 " ('da926535df', 1383, 'Jayuya', 7),\n",
477 " ('398d3e972f49', 1194, 'Estacada', 14),\n",
478 " ('134d5f5b3f', 1399, 'Tambon-Pa-Fa', 14),\n",
479 " ('705baebce', 1287, 'Tubakuba', 3),\n",
480 " ('0ee0ff115', 1181, 'Jayuya', 21),\n",
481 " ('b116bf9bd', 1307, 'Zhangye-Shi', 21),\n",
482 " ('bf75e25a6b8', 1448, 'Puente-Laguna-Garzonkuala-Penyu', 7),\n",
483 " ('cb89673b727', 1681, 'Ijsseloog', 14),\n",
484 " ('3962815e6', 1497, 'Ijsseloog', 7),\n",
485 " ('3251b683b9f', 1466, 'Zhangye-Shi', 21),\n",
486 " ('4ad6523f', 1085, 'Luoyang', 7),\n",
487 " ('f60e203aaaf9', 623, 'Lemnos', 21),\n",
488 " ('35ea596f', 1613, 'Tubakuba', 7),\n",
489 " ('27861346', 1046, 'Grimsey-Island', 14),\n",
490 " ('67c14f2635', 1157, 'Stonington-Island', 7),\n",
491 " ('579302498bdc', 1076, 'Parowan', 14),\n",
492 " ('71573a6513', 1259, 'Giessenmestia', 7),\n",
493 " ('1fb40d6b', 1568, 'Stonington-Island', 7),\n",
494 " ('06af8642ff', 1389, 'Sofia', 7),\n",
495 " ('38b01883fd', 1309, 'Mamula', 10),\n",
496 " ('1385d067d40b', 1365, 'Zhangye-Shi', 7),\n",
497 " ('353e6dc9', 1039, 'Sukhumi', 10),\n",
498 " ('11896bedc4', 999, 'Morgantown', 7),\n",
499 " ('b96caebcfd6', 1155, 'Geoje-Si', 21),\n",
500 " ('435b4e82', 1429, 'Morgantown', 21),\n",
501 " ('68660362', 1568, 'Morgantown', 21),\n",
502 " ('c1254c8fc9a', 909, 'Puente-Laguna-Garzonkuala-Penyu', 7),\n",
503 " ('bce7bdf7c', 878, 'Lemnos', 10),\n",
504 " ('44dadca0cd9', 1345, 'Aalborg', 7),\n",
505 " ('d168673f959', 1330, 'Karlukovo', 7),\n",
506 " ('a3fec18095', 1256, 'Geoje-Si', 7),\n",
507 " ('33123a00', 1438, 'Grimsey-Island', 14),\n",
508 " ('d6b03403', 1207, 'Morgantown', 14),\n",
509 " ('ec5f5691', 1150, 'Luoyang', 14),\n",
510 " ('f22b8e717c', 1401, 'Tambon-Pa-Fa', 21),\n",
511 " ('995f57877aac', 1155, 'Tambon-Pa-Fa', 14),\n",
512 " ('4435ea0d0c5d', 1205, 'Tambon-Pa-Fa', 7),\n",
513 " ('b8521145', 1338, 'Ijsseloog', 7),\n",
514 " ('ea6c84938e2', 1310, 'Nullarbor', 7),\n",
515 " ('3b1a78218bb5', 1083, 'Tambon-Pa-Fa', 10),\n",
516 " ('e1df7ea96302', 1483, 'Almaty', 7),\n",
517 " ('c86e2e5826', 1331, 'Morgantown', 21),\n",
518 " ('1942931f2', 1219, 'Parowan', 14),\n",
519 " ('303965365c4', 1594, 'Sofia', 14),\n",
520 " ('cd227c32d4e', 984, 'Estacada', 14),\n",
521 " ('c9c6d041', 1194, 'Mora', 14),\n",
522 " ('b70e605889', 834, 'Puente-Laguna-Garzonkuala-Penyu', 10),\n",
523 " ('c11e991e22ea', 1453, 'Nullarbor', 3),\n",
524 " ('650a2b292e5c', 1623, 'Puente-Laguna-Garzonkuala-Penyu', 14),\n",
525 " ('a2dd4aec', 1160, 'Nullarbor', 3),\n",
526 " ('68022753', 1239, 'Mamula', 21),\n",
527 " ('5b23fa704734', 1194, 'Giessenmestia', 14),\n",
528 " ('a87ad38a7', 879, 'Aalborg', 21),\n",
529 " ('b4e498b9ed', 1060, 'Geoje-Si', 14),\n",
530 " ('b1aa6c5d8a', 821, 'Estacada', 21),\n",
531 " ('dda7d369', 1546, 'Uzupis', 21),\n",
532 " ('757f3c9f5', 1208, 'Hajnowski', 14),\n",
533 " ('732cbc2c276b', 947, 'Sukhumi', 14),\n",
534 " ('e1cd5acf5', 1044, 'Stonington-Island', 14),\n",
535 " ('b1dc6df3240', 1261, 'Holmegaard', 7),\n",
536 " ('952801ceb36', 1126, 'Stonington-Island', 7),\n",
537 " ('1541ba11', 1047, 'Almaty', 7)]"
538 ]
539 },
540 "execution_count": 14,
541 "metadata": {},
542 "output_type": "execute_result"
543 }
544 ],
545 "source": [
546 "finished = False\n",
547 "while not finished:\n",
548 " print('iterating')\n",
549 " holidays = []\n",
550 " for n in destination_names:\n",
551 " holidays += [make_holiday(n)]\n",
552 " for _ in range(95):\n",
553 " holidays += [make_holiday()]\n",
554 " finished = (len(set(h[0] for h in holidays)) == len(holidays))\n",
555 "holidays"
556 ]
557 },
558 {
559 "cell_type": "code",
560 "execution_count": 15,
561 "metadata": {
562 "collapsed": true
563 },
564 "outputs": [],
565 "source": [
566 "random.shuffle(holidays)\n",
567 "with open('01-holidays.txt', 'w') as f:\n",
568 " for hid, price, name, days in holidays:\n",
569 " f.write('{} {} {} {}\\n'.format(hid, price, name, days))"
570 ]
571 },
572 {
573 "cell_type": "code",
574 "execution_count": 16,
575 "metadata": {},
576 "outputs": [
577 {
578 "data": {
579 "text/plain": [
580 "[['dda7d369', '1546', 'Uzupis', '21'],\n",
581 " ['68022753', '1239', 'Mamula', '21'],\n",
582 " ['b261dbd1cef', '996', 'Holmegaard', '21']]"
583 ]
584 },
585 "execution_count": 16,
586 "metadata": {},
587 "output_type": "execute_result"
588 }
589 ],
590 "source": [
591 "with open('01-holidays.txt') as f:\n",
592 " hols = [h.split() for h in f.readlines()]\n",
593 "hols[:3]"
594 ]
595 },
596 {
597 "cell_type": "code",
598 "execution_count": 17,
599 "metadata": {
600 "collapsed": true
601 },
602 "outputs": [],
603 "source": [
604 "assert len(set(h[0] for h in hols)) == len(hols)"
605 ]
606 },
607 {
608 "cell_type": "code",
609 "execution_count": 18,
610 "metadata": {},
611 "outputs": [
612 {
613 "data": {
614 "text/plain": [
615 "[('9f7197d4f2f', 1185, 'Estacada', 21),\n",
616 " ('a61f5794124', 1458, 'Puente-Laguna-Garzonkuala-Penyu', 14),\n",
617 " ('56775261', 1107, 'Lemnos', 14),\n",
618 " ('eed54d307cc', 1458, 'Parowan', 21),\n",
619 " ('7285b19afa6f', 1663, 'Luoyang', 14),\n",
620 " ('78765b48', 1260, 'Nordkapp', 10),\n",
621 " ('428b6d2c5', 1152, 'Nordkapp', 21)]"
622 ]
623 },
624 "execution_count": 18,
625 "metadata": {},
626 "output_type": "execute_result"
627 }
628 ],
629 "source": [
630 "example_holidays = []\n",
631 "names = random.sample(destination_score_exceptions.keys(), 2) + random.sample(destination_names, 4)\n",
632 "names += [names[-1]]\n",
633 "example_holidays = [make_holiday(n) for n in names]\n",
634 "example_holidays"
635 ]
636 },
637 {
638 "cell_type": "code",
639 "execution_count": 19,
640 "metadata": {},
641 "outputs": [
642 {
643 "data": {
644 "text/plain": [
645 "[('428b6d2c5', 1152, 'Nordkapp', 21),\n",
646 " ('9f7197d4f2f', 1185, 'Estacada', 21),\n",
647 " ('56775261', 1107, 'Lemnos', 14),\n",
648 " ('78765b48', 1260, 'Nordkapp', 10),\n",
649 " ('eed54d307cc', 1458, 'Parowan', 21),\n",
650 " ('7285b19afa6f', 1663, 'Luoyang', 14),\n",
651 " ('a61f5794124', 1458, 'Puente-Laguna-Garzonkuala-Penyu', 14)]"
652 ]
653 },
654 "execution_count": 19,
655 "metadata": {},
656 "output_type": "execute_result"
657 }
658 ],
659 "source": [
660 "random.shuffle(example_holidays)\n",
661 "example_holidays"
662 ]
663 },
664 {
665 "cell_type": "code",
666 "execution_count": 20,
667 "metadata": {
668 "collapsed": true
669 },
670 "outputs": [],
671 "source": [
672 "example_holidays = [('f2ffe169-7cc5-42e1-9b46-8cdb61bb906d', 769, 'Morgantown', 3),\n",
673 " ('2e6a6d6d-6c08-4021-b99f-05202c898b5f', 1284, 'Morgantown', 21),\n",
674 " ('ab659b71-347d-45dc-9416-34def36ffc7d', 1514, 'Giessenmestia', 21),\n",
675 " ('eafb15a4-1839-4fb5-be9b-d8389018bd07', 1052, 'Estacada', 21),\n",
676 " ('7476b214-8b55-47f6-833e-dfa487c4270a', 782, 'Geoje-Si', 14),\n",
677 " ('bb8d5034-49ce-483d-ab6c-d16caf2584a5', 724, 'Stonington-Island', 14),\n",
678 " ('6138068a-3c16-4f7f-8dc6-a1199608abc5', 1209, 'Nordkapp', 21)]"
679 ]
680 },
681 {
682 "cell_type": "code",
683 "execution_count": 21,
684 "metadata": {},
685 "outputs": [
686 {
687 "name": "stdout",
688 "output_type": "stream",
689 "text": [
690 "f2ffe169-7cc5-42e1-9b46-8cdb61bb906d 769 Morgantown 3\n",
691 "2e6a6d6d-6c08-4021-b99f-05202c898b5f 1284 Morgantown 21\n",
692 "ab659b71-347d-45dc-9416-34def36ffc7d 1514 Giessenmestia 21\n",
693 "eafb15a4-1839-4fb5-be9b-d8389018bd07 1052 Estacada 21\n",
694 "7476b214-8b55-47f6-833e-dfa487c4270a 782 Geoje-Si 14\n",
695 "bb8d5034-49ce-483d-ab6c-d16caf2584a5 724 Stonington-Island 14\n",
696 "6138068a-3c16-4f7f-8dc6-a1199608abc5 1209 Nordkapp 21\n"
697 ]
698 }
699 ],
700 "source": [
701 "for hid, price, name, days in example_holidays:\n",
702 " print('{} {} {} {}'.format(hid, price, name, days))"
703 ]
704 },
705 {
706 "cell_type": "code",
707 "execution_count": null,
708 "metadata": {
709 "collapsed": true
710 },
711 "outputs": [],
712 "source": []
713 }
714 ],
715 "metadata": {
716 "kernelspec": {
717 "display_name": "Python 3",
718 "language": "python",
719 "name": "python3"
720 },
721 "language_info": {
722 "codemirror_mode": {
723 "name": "ipython",
724 "version": 3
725 },
726 "file_extension": ".py",
727 "mimetype": "text/x-python",
728 "name": "python",
729 "nbconvert_exporter": "python",
730 "pygments_lexer": "ipython3",
731 "version": "3.5.2+"
732 }
733 },
734 "nbformat": 4,
735 "nbformat_minor": 2
736 }