Removing files from data analysis directory
[ou-summer-of-code-2017.git] / 00-holiday-specs / holiday-spec-generator.ipynb
1 {
2 "cells": [
3 {
4 "cell_type": "code",
5 "execution_count": 329,
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": 330,
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": 331,
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": 331,
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": 332,
88 "metadata": {
89 "collapsed": true
90 },
91 "outputs": [],
92 "source": [
93 "few_destination_names = ['Aalborg', 'Nullarbor', 'Morgantown', 'Parowan', 'Tubakuba', 'Geoje-Si']"
94 ]
95 },
96 {
97 "cell_type": "code",
98 "execution_count": 371,
99 "metadata": {
100 "collapsed": true
101 },
102 "outputs": [],
103 "source": [
104 "def make_holiday(name=None):\n",
105 " if not name:\n",
106 " name = random.choice(destination_names)\n",
107 " price = 0\n",
108 " for _ in range(6):\n",
109 " price += random.randint(100, 300)\n",
110 " surcharge = 0\n",
111 " for _ in range(6):\n",
112 " surcharge += random.randint(50, 150)\n",
113 " hol_id = str(uuid.uuid4())[-random.randint(8, 12):]\n",
114 " return hol_id, price, name, surcharge"
115 ]
116 },
117 {
118 "cell_type": "code",
119 "execution_count": 334,
120 "metadata": {},
121 "outputs": [
122 {
123 "data": {
124 "text/plain": [
125 "('db91156c', 1240, 'Aalborg', 440)"
126 ]
127 },
128 "execution_count": 334,
129 "metadata": {},
130 "output_type": "execute_result"
131 }
132 ],
133 "source": [
134 "make_holiday()"
135 ]
136 },
137 {
138 "cell_type": "code",
139 "execution_count": 350,
140 "metadata": {},
141 "outputs": [
142 {
143 "data": {
144 "text/plain": [
145 "[('06ac3a9503b1', 1227, 'Aalborg', 442),\n",
146 " ('d85f0e60a', 1239, 'Nullarbor', 449),\n",
147 " ('b3a272766a', 1110, 'Morgantown', 509),\n",
148 " ('b6c2aa7e3', 1345, 'Estacada', 424),\n",
149 " ('d4eaa7f8cc8b', 1104, 'Almaty', 484),\n",
150 " ('c317bc9d7cc', 1075, 'Tambon-Pa-Fa', 369),\n",
151 " ('bccde42c0', 1332, 'Lemnos', 493),\n",
152 " ('b0144b482a', 1291, 'Sofia', 481),\n",
153 " ('445c3a850f54', 1237, 'Puente-Laguna-Garzonkuala-Penyu', 480),\n",
154 " ('59d11cd5e4', 1248, 'Hajnowski', 412),\n",
155 " ('df04f8ebcbe', 1043, 'Karlukovo', 476),\n",
156 " ('cd66382b1', 1202, 'Mamula', 365),\n",
157 " ('f134b58dd57b', 1516, 'Stonington-Island', 483),\n",
158 " ('ae72be72d', 1372, 'Grimsey-Island', 376),\n",
159 " ('7526e7e52986', 1356, 'Uzupis', 416),\n",
160 " ('099a5b5615d', 1158, 'Sukhumi', 439),\n",
161 " ('cbcf3eb0953b', 1202, 'Ijsseloog', 444),\n",
162 " ('2e205f2c', 1009, 'Giessenmestia', 426),\n",
163 " ('83ed8adee', 1177, 'Nordkapp', 471),\n",
164 " ('099e6a27a7d', 1238, 'Gorongosa', 441),\n",
165 " ('cb4422b7', 1199, 'Brorfelde', 408),\n",
166 " ('7df5b4b81e', 1452, 'Parowan', 553),\n",
167 " ('78f90135', 1127, 'Tubakuba', 405),\n",
168 " ('1ca8e1b0', 1267, 'Geoje-Si', 440),\n",
169 " ('e1a1fb01', 1551, 'Mora', 479),\n",
170 " ('472c727d38', 1258, 'Holmegaard', 481),\n",
171 " ('1c1e844f72', 1100, 'Jayuya', 412),\n",
172 " ('8c36acb8bd5', 1283, 'Zhangye-Shi', 438),\n",
173 " ('a4c1eba28663', 1405, 'Luoyang', 450)]"
174 ]
175 },
176 "execution_count": 350,
177 "metadata": {},
178 "output_type": "execute_result"
179 }
180 ],
181 "source": [
182 "holidays = []\n",
183 "for n in destination_names:\n",
184 " holidays += [make_holiday(n)]\n",
185 "holidays"
186 ]
187 },
188 {
189 "cell_type": "code",
190 "execution_count": 336,
191 "metadata": {},
192 "outputs": [],
193 "source": [
194 "# holidays = []\n",
195 "# for _ in range(20):\n",
196 "# n = random.choice(few_destination_names)\n",
197 "# holidays += [make_holiday(n)]\n",
198 "# holidays"
199 ]
200 },
201 {
202 "cell_type": "code",
203 "execution_count": 337,
204 "metadata": {
205 "collapsed": true
206 },
207 "outputs": [],
208 "source": [
209 "for _ in range(95):\n",
210 " holidays += [make_holiday()]"
211 ]
212 },
213 {
214 "cell_type": "code",
215 "execution_count": 361,
216 "metadata": {},
217 "outputs": [],
218 "source": [
219 "def best(holidays): \n",
220 " return max(holidays,\n",
221 " key = lambda h: h[1] + max(h[3] - 500, 0))[0]"
222 ]
223 },
224 {
225 "cell_type": "code",
226 "execution_count": 362,
227 "metadata": {},
228 "outputs": [
229 {
230 "data": {
231 "text/plain": [
232 "'a52c279d29'"
233 ]
234 },
235 "execution_count": 362,
236 "metadata": {},
237 "output_type": "execute_result"
238 }
239 ],
240 "source": [
241 "best(holidays)"
242 ]
243 },
244 {
245 "cell_type": "code",
246 "execution_count": 358,
247 "metadata": {},
248 "outputs": [
249 {
250 "data": {
251 "text/plain": [
252 "443"
253 ]
254 },
255 "execution_count": 358,
256 "metadata": {},
257 "output_type": "execute_result"
258 }
259 ],
260 "source": [
261 "holidays[0][3]"
262 ]
263 },
264 {
265 "cell_type": "code",
266 "execution_count": 363,
267 "metadata": {
268 "collapsed": true
269 },
270 "outputs": [],
271 "source": [
272 "def best_500(holidays): \n",
273 " return max(holidays,\n",
274 " key = lambda h: h[1] + h[3] - 500)[0]"
275 ]
276 },
277 {
278 "cell_type": "code",
279 "execution_count": 364,
280 "metadata": {
281 "collapsed": true
282 },
283 "outputs": [],
284 "source": [
285 "def best_base(holidays): \n",
286 " return max(holidays,\n",
287 " key = lambda h: h[1])[0]"
288 ]
289 },
290 {
291 "cell_type": "code",
292 "execution_count": 377,
293 "metadata": {},
294 "outputs": [
295 {
296 "data": {
297 "text/plain": [
298 "[('d7d9600a9018', 984, 'Aalborg', 559),\n",
299 " ('a4fda9ce7e7', 1132, 'Nullarbor', 549),\n",
300 " ('b50b0503', 1169, 'Morgantown', 514),\n",
301 " ('c5d2db28c', 1206, 'Estacada', 565),\n",
302 " ('909acf5b3', 1137, 'Almaty', 599),\n",
303 " ('d21d32624', 1288, 'Tambon-Pa-Fa', 652),\n",
304 " ('b0ca7167f7', 1265, 'Lemnos', 679),\n",
305 " ('88324193b87', 1180, 'Sofia', 597),\n",
306 " ('d053b7fa98', 1125, 'Puente-Laguna-Garzonkuala-Penyu', 621),\n",
307 " ('6e6ee9c06', 1053, 'Hajnowski', 565),\n",
308 " ('a86f98f6d8', 1388, 'Karlukovo', 524),\n",
309 " ('443a80bb', 1286, 'Mamula', 872),\n",
310 " ('cf8876d4e73', 823, 'Stonington-Island', 693),\n",
311 " ('04f3f57cda', 1321, 'Grimsey-Island', 631),\n",
312 " ('b6ef99699d8', 963, 'Uzupis', 549),\n",
313 " ('8255b281', 1302, 'Sukhumi', 542),\n",
314 " ('234cd3dc12de', 1206, 'Ijsseloog', 468),\n",
315 " ('e3790f1484', 1682, 'Giessenmestia', 448),\n",
316 " ('9d478716', 1282, 'Nordkapp', 617),\n",
317 " ('ae037be7d2', 1187, 'Gorongosa', 548),\n",
318 " ('a8240f7292', 1119, 'Brorfelde', 675),\n",
319 " ('90409a70', 1143, 'Parowan', 679),\n",
320 " ('886090a35571', 1428, 'Tubakuba', 575),\n",
321 " ('b6ad98c5c8', 1131, 'Geoje-Si', 502),\n",
322 " ('f38f75c8e4e', 1319, 'Mora', 685),\n",
323 " ('224ec122957', 1164, 'Holmegaard', 545),\n",
324 " ('c4a45e60f', 1078, 'Jayuya', 573),\n",
325 " ('ca574abd1d59', 1201, 'Zhangye-Shi', 559),\n",
326 " ('0d3a5b9861', 1232, 'Luoyang', 547),\n",
327 " ('2781c13abc2', 1057, 'Tubakuba', 561),\n",
328 " ('d77b1148', 1396, 'Mamula', 579),\n",
329 " ('3bc5b60c2a5', 1231, 'Nullarbor', 517),\n",
330 " ('0afe71e09d', 1276, 'Stonington-Island', 640),\n",
331 " ('fed8853e496e', 1098, 'Geoje-Si', 688),\n",
332 " ('fc20a36d036', 928, 'Almaty', 738),\n",
333 " ('05c4bc08fd31', 1210, 'Jayuya', 516),\n",
334 " ('0dc258d3e', 1164, 'Tubakuba', 596),\n",
335 " ('498d42d27', 1095, 'Holmegaard', 562),\n",
336 " ('616a27c7', 942, 'Brorfelde', 639),\n",
337 " ('a46da8767867', 1281, 'Sofia', 598),\n",
338 " ('763db1eb6980', 944, 'Geoje-Si', 707),\n",
339 " ('59ea16ce6364', 1110, 'Grimsey-Island', 711),\n",
340 " ('00f15d691e2c', 1205, 'Estacada', 487),\n",
341 " ('92f4320298', 1093, 'Morgantown', 620),\n",
342 " ('06b34cf1', 1134, 'Nordkapp', 529),\n",
343 " ('83fea1e3', 1365, 'Lemnos', 596),\n",
344 " ('8edd80b3fb1', 1215, 'Brorfelde', 714),\n",
345 " ('2b11e359e8f9', 1488, 'Brorfelde', 613),\n",
346 " ('164cc47ace7c', 1068, 'Zhangye-Shi', 527),\n",
347 " ('70e5c8cd42', 1185, 'Mora', 546),\n",
348 " ('7b2fddd6', 1263, 'Holmegaard', 630),\n",
349 " ('25a2c3799a', 1340, 'Sukhumi', 709),\n",
350 " ('68ac312e3af5', 1421, 'Geoje-Si', 621),\n",
351 " ('63c55129', 1260, 'Stonington-Island', 579),\n",
352 " ('0b4b44db1d', 1089, 'Holmegaard', 591),\n",
353 " ('0b3b738f0', 1226, 'Stonington-Island', 688),\n",
354 " ('a6538cfa970', 1100, 'Parowan', 661),\n",
355 " ('1634bfe2408', 1264, 'Giessenmestia', 460),\n",
356 " ('7c2e49058b', 1022, 'Estacada', 509),\n",
357 " ('f02bc3375', 1225, 'Tubakuba', 569),\n",
358 " ('be8b9d110', 984, 'Tubakuba', 485),\n",
359 " ('627824317b47', 909, 'Giessenmestia', 532),\n",
360 " ('476cd20cca', 1046, 'Nullarbor', 648),\n",
361 " ('44e58004d2', 1206, 'Karlukovo', 526),\n",
362 " ('d00ab6e33', 1167, 'Sofia', 574),\n",
363 " ('1c5f5ecd6a', 1332, 'Holmegaard', 615),\n",
364 " ('9557b5625e4', 1242, 'Puente-Laguna-Garzonkuala-Penyu', 622),\n",
365 " ('34f1e2873504', 1042, 'Giessenmestia', 572),\n",
366 " ('b9ac3a5e', 961, 'Grimsey-Island', 663),\n",
367 " ('11ea654a37dc', 1306, 'Tambon-Pa-Fa', 653),\n",
368 " ('113bdf3f311', 1167, 'Grimsey-Island', 615),\n",
369 " ('b450fed871', 1244, 'Luoyang', 584),\n",
370 " ('e4964650f', 1093, 'Karlukovo', 675),\n",
371 " ('f3c42695', 1241, 'Nordkapp', 751),\n",
372 " ('61e833fb', 1158, 'Sukhumi', 502),\n",
373 " ('146c154627', 1321, 'Parowan', 658),\n",
374 " ('d4ab30071b', 895, 'Nullarbor', 589),\n",
375 " ('2f3d30dd1d9', 1230, 'Lemnos', 679),\n",
376 " ('f793130d4b2d', 1473, 'Nordkapp', 595),\n",
377 " ('c0f9ca8f476', 1186, 'Zhangye-Shi', 660),\n",
378 " ('bfd6cbaf09e1', 898, 'Nullarbor', 615),\n",
379 " ('829cc66f6524', 1254, 'Luoyang', 651),\n",
380 " ('0fe6b54be76', 1318, 'Sukhumi', 591),\n",
381 " ('a3169c6312', 1364, 'Sofia', 631),\n",
382 " ('2a57e5b6bff', 1203, 'Geoje-Si', 624),\n",
383 " ('e29a171ab', 1278, 'Lemnos', 602),\n",
384 " ('03478ddc6', 1119, 'Hajnowski', 599),\n",
385 " ('1cb8cefaab4', 1278, 'Gorongosa', 606),\n",
386 " ('f7566ec36', 972, 'Uzupis', 538),\n",
387 " ('34f4312fdd0', 1121, 'Grimsey-Island', 644),\n",
388 " ('d2719728360', 1145, 'Tambon-Pa-Fa', 727),\n",
389 " ('89e60557edd', 1345, 'Hajnowski', 565),\n",
390 " ('66ffcd848', 974, 'Nullarbor', 707),\n",
391 " ('7cfb6f85', 969, 'Grimsey-Island', 589),\n",
392 " ('f22c113c', 1217, 'Mamula', 521),\n",
393 " ('647315ef', 824, 'Uzupis', 668),\n",
394 " ('42e05169e', 1104, 'Jayuya', 476),\n",
395 " ('e0862b3984ce', 1270, 'Morgantown', 565),\n",
396 " ('355f35a449d', 1061, 'Sofia', 539),\n",
397 " ('a68d97fbfdb', 987, 'Brorfelde', 459),\n",
398 " ('3de94090', 1149, 'Tambon-Pa-Fa', 590),\n",
399 " ('24ebbe60', 1331, 'Estacada', 628),\n",
400 " ('4b9291505', 1230, 'Giessenmestia', 648),\n",
401 " ('52e1d5566142', 1173, 'Ijsseloog', 721),\n",
402 " ('d4bc8ebfb', 1373, 'Mamula', 651),\n",
403 " ('d7bcc37c902b', 1127, 'Giessenmestia', 520),\n",
404 " ('71772664d35c', 1205, 'Geoje-Si', 615),\n",
405 " ('94d98461f6', 1179, 'Almaty', 496),\n",
406 " ('f87121d062', 1127, 'Karlukovo', 502),\n",
407 " ('cdd546172', 1221, 'Puente-Laguna-Garzonkuala-Penyu', 593),\n",
408 " ('cf38d8107', 1073, 'Nullarbor', 613),\n",
409 " ('cd563561', 1136, 'Nordkapp', 634),\n",
410 " ('13d8d416d', 1328, 'Giessenmestia', 590),\n",
411 " ('1b38b7b4d94', 1205, 'Aalborg', 660),\n",
412 " ('cd1f4025', 1419, 'Mamula', 629),\n",
413 " ('382daab54', 1461, 'Nullarbor', 601),\n",
414 " ('22b8e494f', 1029, 'Nullarbor', 623),\n",
415 " ('da517616ec', 1272, 'Gorongosa', 520),\n",
416 " ('0ab5ce808111', 1268, 'Gorongosa', 542),\n",
417 " ('ced9502128', 1077, 'Ijsseloog', 576),\n",
418 " ('83a7d0bbd1', 1225, 'Aalborg', 689),\n",
419 " ('18e93a0f0c', 918, 'Ijsseloog', 560),\n",
420 " ('7f98bd73d5cc', 1125, 'Nordkapp', 628),\n",
421 " ('ddc31baf1', 1175, 'Puente-Laguna-Garzonkuala-Penyu', 612)]"
422 ]
423 },
424 "execution_count": 377,
425 "metadata": {},
426 "output_type": "execute_result"
427 }
428 ],
429 "source": [
430 "finished = False\n",
431 "while not finished:\n",
432 "# print('iterating')\n",
433 " holidays = []\n",
434 " for n in destination_names:\n",
435 " holidays += [make_holiday(n)]\n",
436 " for _ in range(95):\n",
437 " holidays += [make_holiday()]\n",
438 " finished = ((len(set(h[0] for h in holidays)) == len(holidays)) and \n",
439 " len(set([best(holidays), \n",
440 " best_500(holidays), \n",
441 "# best_base(holidays)\n",
442 " ])) >= 2\n",
443 "# True\n",
444 " )\n",
445 "holidays"
446 ]
447 },
448 {
449 "cell_type": "code",
450 "execution_count": 378,
451 "metadata": {
452 "collapsed": true
453 },
454 "outputs": [],
455 "source": [
456 "random.shuffle(holidays)\n",
457 "with open('00-prices.txt', 'w') as f:\n",
458 " for hid, price, name, days in holidays:\n",
459 " f.write('{} {} {} {}\\n'.format(hid, price, name, days))"
460 ]
461 },
462 {
463 "cell_type": "code",
464 "execution_count": 376,
465 "metadata": {},
466 "outputs": [
467 {
468 "data": {
469 "text/plain": [
470 "[['9bbe30d6', '1253', 'Brorfelde', '604'],\n",
471 " ['a6f792b85035', '1104', 'Estacada', '681'],\n",
472 " ['337f1026e1', '1372', 'Karlukovo', '585']]"
473 ]
474 },
475 "execution_count": 376,
476 "metadata": {},
477 "output_type": "execute_result"
478 }
479 ],
480 "source": [
481 "with open('00-prices.txt') as f:\n",
482 " hols = [h.split() for h in f.readlines()]\n",
483 "hols[:3]"
484 ]
485 },
486 {
487 "cell_type": "code",
488 "execution_count": 341,
489 "metadata": {
490 "collapsed": true
491 },
492 "outputs": [],
493 "source": [
494 "assert len(set(h[0] for h in hols)) == len(hols)"
495 ]
496 },
497 {
498 "cell_type": "code",
499 "execution_count": 342,
500 "metadata": {
501 "collapsed": true
502 },
503 "outputs": [],
504 "source": [
505 "example_holidays = [('f2ffe169-7cc5-42e1-9b46-8cdb61bb906d', 769, 'Morgantown', 3),\n",
506 " ('2e6a6d6d-6c08-4021-b99f-05202c898b5f', 1284, 'Morgantown', 21),\n",
507 " ('ab659b71-347d-45dc-9416-34def36ffc7d', 1514, 'Giessenmestia', 21),\n",
508 " ('eafb15a4-1839-4fb5-be9b-d8389018bd07', 1052, 'Estacada', 21),\n",
509 " ('7476b214-8b55-47f6-833e-dfa487c4270a', 782, 'Geoje-Si', 14),\n",
510 " ('bb8d5034-49ce-483d-ab6c-d16caf2584a5', 724, 'Stonington-Island', 14),\n",
511 " ('6138068a-3c16-4f7f-8dc6-a1199608abc5', 1209, 'Nordkapp', 21)]"
512 ]
513 },
514 {
515 "cell_type": "code",
516 "execution_count": 343,
517 "metadata": {},
518 "outputs": [
519 {
520 "name": "stdout",
521 "output_type": "stream",
522 "text": [
523 "f2ffe169-7cc5-42e1-9b46-8cdb61bb906d 769 Morgantown 3\n",
524 "2e6a6d6d-6c08-4021-b99f-05202c898b5f 1284 Morgantown 21\n",
525 "ab659b71-347d-45dc-9416-34def36ffc7d 1514 Giessenmestia 21\n",
526 "eafb15a4-1839-4fb5-be9b-d8389018bd07 1052 Estacada 21\n",
527 "7476b214-8b55-47f6-833e-dfa487c4270a 782 Geoje-Si 14\n",
528 "bb8d5034-49ce-483d-ab6c-d16caf2584a5 724 Stonington-Island 14\n",
529 "6138068a-3c16-4f7f-8dc6-a1199608abc5 1209 Nordkapp 21\n"
530 ]
531 }
532 ],
533 "source": [
534 "for hid, price, name, days in example_holidays:\n",
535 " print('{} {} {} {}'.format(hid, price, name, days))"
536 ]
537 },
538 {
539 "cell_type": "code",
540 "execution_count": null,
541 "metadata": {
542 "collapsed": true
543 },
544 "outputs": [],
545 "source": []
546 }
547 ],
548 "metadata": {
549 "kernelspec": {
550 "display_name": "Python 3",
551 "language": "python",
552 "name": "python3"
553 },
554 "language_info": {
555 "codemirror_mode": {
556 "name": "ipython",
557 "version": 3
558 },
559 "file_extension": ".py",
560 "mimetype": "text/x-python",
561 "name": "python",
562 "nbconvert_exporter": "python",
563 "pygments_lexer": "ipython3",
564 "version": "3.5.2+"
565 }
566 },
567 "nbformat": 4,
568 "nbformat_minor": 2
569 }