Tweaked problem definition and data file for problem 1
[ou-summer-of-code-2017.git] / 01-ticket-prices / ticket-pricing-generator.ipynb
index 3d591fd5141c073d6f02e4696267ae3676ddec22..7214bd703a10d9bc76902b0ea77a49dc27278dcf 100644 (file)
@@ -2,7 +2,7 @@
  "cells": [
   {
    "cell_type": "code",
-   "execution_count": 45,
+   "execution_count": 1,
    "metadata": {
     "collapsed": true
    },
@@ -15,7 +15,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 19,
+   "execution_count": 2,
    "metadata": {
     "collapsed": true
    },
@@ -29,7 +29,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 20,
+   "execution_count": 3,
    "metadata": {},
    "outputs": [
     {
@@ -66,7 +66,7 @@
        " 'Luoyang']"
       ]
      },
-     "execution_count": 20,
+     "execution_count": 3,
      "metadata": {},
      "output_type": "execute_result"
     }
   },
   {
    "cell_type": "code",
-   "execution_count": 39,
+   "execution_count": 4,
    "metadata": {},
    "outputs": [
     {
      "data": {
       "text/plain": [
-       "{'Aalborg': 1,\n",
-       " 'Almaty': 1,\n",
-       " 'Brorfelde': 1,\n",
-       " 'Estacada': 1,\n",
-       " 'Geoje-Si': 1,\n",
-       " 'Giessenmestia': 1,\n",
-       " 'Gorongosa': 1,\n",
-       " 'Grimsey-Island': 1,\n",
-       " 'Hajnowski': 1,\n",
-       " 'Holmegaard': 1,\n",
-       " 'Ijsseloog': 1,\n",
-       " 'Jayuya': 1,\n",
-       " 'Karlukovo': 1,\n",
-       " 'Lemnos': 1,\n",
-       " 'Luoyang': 1,\n",
-       " 'Mamula': 1,\n",
-       " 'Mora': 1,\n",
-       " 'Morgantown': 1,\n",
-       " 'Nordkapp': 1,\n",
-       " 'Nullarbor': 1,\n",
-       " 'Parowan': 1,\n",
-       " 'Puente-Laguna-Garzonkuala-Penyu': 1,\n",
-       " 'Sofia': 1,\n",
-       " 'Stonington-Island': 1,\n",
-       " 'Sukhumi': 1,\n",
-       " 'Tambon-Pa-Fa': 1,\n",
-       " 'Tubakuba': 1,\n",
-       " 'Uzupis': 1,\n",
-       " 'Zhangye-Shi': 1}"
+       "{'Aalborg': 1.0,\n",
+       " 'Almaty': 1.0,\n",
+       " 'Brorfelde': 1.0,\n",
+       " 'Estacada': 1.0,\n",
+       " 'Geoje-Si': 1.0,\n",
+       " 'Giessenmestia': 1.0,\n",
+       " 'Gorongosa': 1.0,\n",
+       " 'Grimsey-Island': 1.0,\n",
+       " 'Hajnowski': 1.0,\n",
+       " 'Holmegaard': 1.0,\n",
+       " 'Ijsseloog': 1.0,\n",
+       " 'Jayuya': 1.0,\n",
+       " 'Karlukovo': 1.0,\n",
+       " 'Lemnos': 1.0,\n",
+       " 'Luoyang': 1.0,\n",
+       " 'Mamula': 1.0,\n",
+       " 'Mora': 1.0,\n",
+       " 'Morgantown': 1.0,\n",
+       " 'Nordkapp': 1.0,\n",
+       " 'Nullarbor': 1.0,\n",
+       " 'Parowan': 1.0,\n",
+       " 'Puente-Laguna-Garzonkuala-Penyu': 1.0,\n",
+       " 'Sofia': 1.0,\n",
+       " 'Stonington-Island': 1.0,\n",
+       " 'Sukhumi': 1.0,\n",
+       " 'Tambon-Pa-Fa': 1.0,\n",
+       " 'Tubakuba': 1.0,\n",
+       " 'Uzupis': 1.0,\n",
+       " 'Zhangye-Shi': 1.0}"
       ]
      },
-     "execution_count": 39,
+     "execution_count": 4,
      "metadata": {},
      "output_type": "execute_result"
     }
    ],
    "source": [
-    "destination_scores = {n: 1 for n in destination_names}\n",
+    "destination_scores = {n: 1.0 for n in destination_names}\n",
     "destination_scores"
    ]
   },
   },
   {
    "cell_type": "code",
-   "execution_count": 66,
+   "execution_count": 5,
    "metadata": {
     "collapsed": true
    },
   },
   {
    "cell_type": "code",
-   "execution_count": 44,
+   "execution_count": 6,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "{'Aalborg': 1.0,\n",
+       " 'Almaty': 2.0,\n",
+       " 'Brorfelde': 0.9,\n",
+       " 'Estacada': 0.4,\n",
+       " 'Geoje-Si': 1.0,\n",
+       " 'Giessenmestia': 1.0,\n",
+       " 'Gorongosa': 1.0,\n",
+       " 'Grimsey-Island': 1.0,\n",
+       " 'Hajnowski': 1.0,\n",
+       " 'Holmegaard': 1.0,\n",
+       " 'Ijsseloog': 1.0,\n",
+       " 'Jayuya': 0.6,\n",
+       " 'Karlukovo': 2.2,\n",
+       " 'Lemnos': 1.0,\n",
+       " 'Luoyang': 1.0,\n",
+       " 'Mamula': 1.0,\n",
+       " 'Mora': 1.0,\n",
+       " 'Morgantown': 2.9,\n",
+       " 'Nordkapp': 1.5,\n",
+       " 'Nullarbor': 2.2,\n",
+       " 'Parowan': 1.0,\n",
+       " 'Puente-Laguna-Garzonkuala-Penyu': 0.4,\n",
+       " 'Sofia': 1.0,\n",
+       " 'Stonington-Island': 1.0,\n",
+       " 'Sukhumi': 1.0,\n",
+       " 'Tambon-Pa-Fa': 1.0,\n",
+       " 'Tubakuba': 1.0,\n",
+       " 'Uzupis': 0.9,\n",
+       " 'Zhangye-Shi': 1.0}"
+      ]
+     },
+     "execution_count": 6,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "destination_scores.update(destination_score_exceptions)\n",
+    "destination_scores"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 7,
    "metadata": {},
    "outputs": [
     {
   },
   {
    "cell_type": "code",
-   "execution_count": 48,
+   "execution_count": 12,
    "metadata": {
     "collapsed": true
    },
     "    price = 0\n",
     "    for _ in range(4):\n",
     "        price += random.randint(100, 500)\n",
-    "    hol_id = str(uuid.uuid4())\n",
+    "    hol_id = str(uuid.uuid4())[-random.randint(8, 12):]\n",
     "    return hol_id, price, name, days"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 54,
+   "execution_count": 13,
    "metadata": {},
    "outputs": [
     {
      "data": {
       "text/plain": [
-       "('4615dad7-f5ab-4c9b-8028-b3e5c676ff24', 1046, 'Almaty', 14)"
+       "('c657491bdd7', 737, 'Ijsseloog', 21)"
       ]
      },
-     "execution_count": 54,
+     "execution_count": 13,
      "metadata": {},
      "output_type": "execute_result"
     }
   },
   {
    "cell_type": "code",
-   "execution_count": 59,
+   "execution_count": 24,
    "metadata": {},
    "outputs": [
     {
      "data": {
       "text/plain": [
-       "[('3c425201-5538-4a3f-bfd7-1219137c9d63', 1147, 'Aalborg', 21),\n",
-       " ('5913e357-dc18-49c5-850d-aa0172041cc4', 1398, 'Nullarbor', 3),\n",
-       " ('bc966859-49ad-4c26-b36e-94251b0a29b5', 1064, 'Morgantown', 7),\n",
-       " ('ab1d0a54-41bc-4351-beb8-f6e5fd4f07f0', 1722, 'Estacada', 14),\n",
-       " ('b5efba4e-373d-4a15-b048-8fcb3169c441', 1132, 'Almaty', 7),\n",
-       " ('bd1ff2b9-5b97-4a13-9d8a-601faea40e9c', 1085, 'Tambon-Pa-Fa', 14),\n",
-       " ('5b9df004-a8b7-4c28-a27e-21e24cd566b5', 1264, 'Lemnos', 7),\n",
-       " ('5951de60-9e98-471f-a917-74e3c8a3457a', 938, 'Sofia', 14),\n",
-       " ('c6a4cad7-cd9a-4e05-bd16-92305c933269',\n",
-       "  922,\n",
-       "  'Puente-Laguna-Garzonkuala-Penyu',\n",
-       "  14),\n",
-       " ('9527ee0b-4bcd-4a1f-95fd-b3a627eacf02', 1071, 'Hajnowski', 14),\n",
-       " ('82b6adfb-f09d-420f-bbf9-ea90450d21f6', 734, 'Karlukovo', 3),\n",
-       " ('7b08192c-5e30-45dc-bb31-2da61861c0ac', 1692, 'Mamula', 21),\n",
-       " ('5abbe3e4-7d2e-404c-9ce2-27083f95c140', 1277, 'Stonington-Island', 7),\n",
-       " ('b3f517ca-2a07-427d-8531-81227468b611', 1280, 'Grimsey-Island', 3),\n",
-       " ('f1fa90d2-0f58-480f-80c0-0fddb845b71a', 1225, 'Uzupis', 7),\n",
-       " ('330e4f58-31d2-474f-8e23-654224689a18', 1016, 'Sukhumi', 14),\n",
-       " ('a6837ba1-42aa-488d-b39a-5b49422ce165', 966, 'Ijsseloog', 21),\n",
-       " ('a7e4161a-0435-4915-961e-8c204e527a4b', 1465, 'Giessenmestia', 21),\n",
-       " ('633be2e4-a719-496e-9987-d5ea8b6ab428', 1256, 'Nordkapp', 3),\n",
-       " ('bd83d3e3-6134-4511-918c-a94338ffb0c8', 1508, 'Gorongosa', 7),\n",
-       " ('05ed4593-3582-4fde-8958-a63274507344', 1099, 'Brorfelde', 7),\n",
-       " ('b8361d0a-7f23-4491-9450-c28917807a68', 1364, 'Parowan', 7),\n",
-       " ('dc7f49c2-672e-4abc-a58a-4e8b45e786d7', 1491, 'Tubakuba', 14),\n",
-       " ('b709a89e-e5c5-4a60-97ca-55ad350fa7f1', 1373, 'Geoje-Si', 7),\n",
-       " ('18888ae2-e410-4430-87af-1d07ba9b25bb', 1317, 'Mora', 3),\n",
-       " ('b08ebc25-7d02-4973-8e28-fa3b75ed4e29', 1483, 'Holmegaard', 14),\n",
-       " ('d3519dde-9a15-4982-b1ed-1dd6dbecc2c1', 653, 'Jayuya', 21),\n",
-       " ('fa882848-1787-424a-90c3-8593bb91f174', 1027, 'Zhangye-Shi', 10),\n",
-       " ('21d2fcc8-f528-467d-b0ba-a6748933a4a8', 1261, 'Luoyang', 14)]"
+       "[('9d25c63364', 1375, 'Aalborg', 14),\n",
+       " ('9eebed9a8c', 1024, 'Nullarbor', 21),\n",
+       " ('1878f1decd0f', 1074, 'Morgantown', 14),\n",
+       " ('8c5701a15090', 1126, 'Estacada', 10),\n",
+       " ('f54356416', 1476, 'Almaty', 14),\n",
+       " ('fd3f630097', 1211, 'Tambon-Pa-Fa', 3),\n",
+       " ('ba1eca1e3c', 1134, 'Lemnos', 14),\n",
+       " ('6e614079e', 983, 'Sofia', 21),\n",
+       " ('723d6cd8b8c', 1226, 'Puente-Laguna-Garzonkuala-Penyu', 7),\n",
+       " ('67d5ba46574', 885, 'Hajnowski', 14),\n",
+       " ('af932c766e', 1756, 'Karlukovo', 3),\n",
+       " ('6803ee6ab68f', 891, 'Mamula', 10),\n",
+       " ('b721ca2c', 1269, 'Stonington-Island', 14),\n",
+       " ('c10ced934a83', 1254, 'Grimsey-Island', 21),\n",
+       " ('13f08b1e45b', 970, 'Uzupis', 21),\n",
+       " ('212729ebcc0', 1100, 'Sukhumi', 14),\n",
+       " ('294407f475f', 1273, 'Ijsseloog', 14),\n",
+       " ('e63140bd9652', 859, 'Giessenmestia', 10),\n",
+       " ('cd815d115', 970, 'Nordkapp', 21),\n",
+       " ('ff301e4dc', 1103, 'Gorongosa', 21),\n",
+       " ('e44ce4502a6', 1326, 'Brorfelde', 14),\n",
+       " ('8631ec6315', 1194, 'Parowan', 14),\n",
+       " ('766fe50f8f3', 1078, 'Tubakuba', 7),\n",
+       " ('6238cc640', 1409, 'Geoje-Si', 3),\n",
+       " ('0ae89c204', 1085, 'Mora', 21),\n",
+       " ('aa221d744', 1157, 'Holmegaard', 14),\n",
+       " ('9f842558a', 941, 'Jayuya', 21),\n",
+       " ('791ed3da', 1159, 'Zhangye-Shi', 10),\n",
+       " ('9ac98764f', 1048, 'Luoyang', 14)]"
       ]
      },
-     "execution_count": 59,
+     "execution_count": 24,
      "metadata": {},
      "output_type": "execute_result"
     }
   },
   {
    "cell_type": "code",
-   "execution_count": 60,
+   "execution_count": 25,
    "metadata": {
     "collapsed": true
    },
   },
   {
    "cell_type": "code",
-   "execution_count": 62,
+   "execution_count": 29,
    "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "iterating\n"
+     ]
+    },
+    {
+     "data": {
+      "text/plain": [
+       "[('8d178e8fe50', 1310, 'Aalborg', 7),\n",
+       " ('98c040c3', 1375, 'Nullarbor', 14),\n",
+       " ('744efb40a295', 1068, 'Morgantown', 14),\n",
+       " ('08d2936f40', 1175, 'Estacada', 3),\n",
+       " ('91bc0a2d0', 1180, 'Almaty', 14),\n",
+       " ('0e792455b8d', 1007, 'Tambon-Pa-Fa', 14),\n",
+       " ('6454824e86', 1359, 'Lemnos', 7),\n",
+       " ('5daea80f7d2', 1399, 'Sofia', 7),\n",
+       " ('ffcc1079c877', 1579, 'Puente-Laguna-Garzonkuala-Penyu', 14),\n",
+       " ('bc53df7eb', 1168, 'Hajnowski', 14),\n",
+       " ('669c3fe3f', 1038, 'Karlukovo', 7),\n",
+       " ('541bd6119', 1028, 'Mamula', 7),\n",
+       " ('dd23065a18', 1391, 'Stonington-Island', 14),\n",
+       " ('3634c172', 1176, 'Grimsey-Island', 10),\n",
+       " ('4a52d756', 1174, 'Uzupis', 7),\n",
+       " ('6a1a190ed083', 1042, 'Sukhumi', 14),\n",
+       " ('4a264d5f4e', 1262, 'Ijsseloog', 14),\n",
+       " ('9e1d45351', 1292, 'Giessenmestia', 21),\n",
+       " ('b4c9727f3a', 955, 'Nordkapp', 7),\n",
+       " ('894fa3b99c', 704, 'Gorongosa', 7),\n",
+       " ('fafb6875f', 1140, 'Brorfelde', 21),\n",
+       " ('dc8aebebfc2', 946, 'Parowan', 3),\n",
+       " ('094ee9edf9ce', 676, 'Tubakuba', 7),\n",
+       " ('d752d52589', 1148, 'Geoje-Si', 21),\n",
+       " ('6ea4cebc128f', 775, 'Mora', 10),\n",
+       " ('0085ebcc2b2', 1442, 'Holmegaard', 21),\n",
+       " ('48b4a7976bf1', 1133, 'Jayuya', 3),\n",
+       " ('e689ad12', 1405, 'Zhangye-Shi', 21),\n",
+       " ('fad4adaf', 1297, 'Luoyang', 3),\n",
+       " ('6e4ca2fdf', 684, 'Ijsseloog', 3),\n",
+       " ('83377c09f17', 980, 'Sofia', 7),\n",
+       " ('3ca80302270', 1404, 'Luoyang', 7),\n",
+       " ('91e78da67', 1054, 'Nordkapp', 7),\n",
+       " ('ddb13dd26f', 1158, 'Lemnos', 10),\n",
+       " ('865d85be7', 896, 'Ijsseloog', 21),\n",
+       " ('dbfe9d638ef', 1221, 'Nordkapp', 7),\n",
+       " ('698a05914c', 1440, 'Giessenmestia', 14),\n",
+       " ('e11b4c5c', 1075, 'Parowan', 3),\n",
+       " ('9910d5838754', 860, 'Morgantown', 14),\n",
+       " ('3e4d219009', 904, 'Geoje-Si', 7),\n",
+       " ('19ef5c556', 1624, 'Sofia', 14),\n",
+       " ('072a1106d', 1329, 'Lemnos', 14),\n",
+       " ('7bb0a03d18ab', 1673, 'Brorfelde', 21),\n",
+       " ('07cc90dd3', 1209, 'Lemnos', 14),\n",
+       " ('ca9fe765', 1491, 'Grimsey-Island', 14),\n",
+       " ('3100ad053f', 910, 'Tambon-Pa-Fa', 10),\n",
+       " ('7a95be26f65', 944, 'Jayuya', 7),\n",
+       " ('4cffd22dd9b9', 1089, 'Stonington-Island', 14),\n",
+       " ('eac0d3ed07', 1531, 'Brorfelde', 21),\n",
+       " ('d826034e08', 1195, 'Tubakuba', 14),\n",
+       " ('7bd023c3', 1191, 'Holmegaard', 21),\n",
+       " ('ddd7891fb37', 1348, 'Almaty', 7),\n",
+       " ('d3e9b79053c', 1274, 'Aalborg', 21),\n",
+       " ('6106854836f', 748, 'Brorfelde', 14),\n",
+       " ('9c1f692ea', 1061, 'Stonington-Island', 21),\n",
+       " ('bf086837530', 1162, 'Parowan', 14),\n",
+       " ('8b6e8446', 1360, 'Morgantown', 21),\n",
+       " ('1d6a1b08', 927, 'Luoyang', 21),\n",
+       " ('e1d4e033df7', 1057, 'Grimsey-Island', 21),\n",
+       " ('deb36f50', 1761, 'Nordkapp', 14),\n",
+       " ('aef2526d1978', 1422, 'Morgantown', 21),\n",
+       " ('97afbad2bb', 1129, 'Stonington-Island', 21),\n",
+       " ('18952053b', 1049, 'Mamula', 7),\n",
+       " ('43cd83bb01', 1443, 'Giessenmestia', 14),\n",
+       " ('d57afd163', 1140, 'Geoje-Si', 7),\n",
+       " ('d29a0551504e', 1210, 'Zhangye-Shi', 7),\n",
+       " ('182f52c61f', 916, 'Estacada', 10),\n",
+       " ('9aa4a9bbd9f8', 1391, 'Aalborg', 10),\n",
+       " ('d6b5aa1d219e', 1303, 'Aalborg', 14),\n",
+       " ('64f067b7fc', 1392, 'Luoyang', 14),\n",
+       " ('0c33d4e1', 1551, 'Luoyang', 7),\n",
+       " ('cb24efd90', 948, 'Morgantown', 21),\n",
+       " ('328fd2275', 806, 'Aalborg', 21),\n",
+       " ('c81a1fcfb', 931, 'Sukhumi', 21),\n",
+       " ('ccf770ecaa2', 1206, 'Tubakuba', 14),\n",
+       " ('44946ac3d470', 852, 'Karlukovo', 3),\n",
+       " ('fd7278523', 1363, 'Sukhumi', 7),\n",
+       " ('0e9e7473eb', 1023, 'Gorongosa', 14),\n",
+       " ('8f6abf6d', 1580, 'Sukhumi', 14),\n",
+       " ('677046c1f45d', 1213, 'Karlukovo', 10),\n",
+       " ('beaf2d8e35', 947, 'Grimsey-Island', 3),\n",
+       " ('d33d871c', 1150, 'Aalborg', 14),\n",
+       " ('54945eeed430', 1001, 'Nullarbor', 10),\n",
+       " ('911bee88b048', 1218, 'Almaty', 21),\n",
+       " ('062bb5cf', 1178, 'Zhangye-Shi', 14),\n",
+       " ('b73e3ee1b21', 1028, 'Zhangye-Shi', 7),\n",
+       " ('b268e12d1d0b', 984, 'Mora', 7),\n",
+       " ('53b5f150', 1149, 'Jayuya', 10),\n",
+       " ('0aeeffa1a3', 1209, 'Luoyang', 21),\n",
+       " ('901c5848', 1107, 'Sofia', 10),\n",
+       " ('c19a8114d44', 1188, 'Hajnowski', 3),\n",
+       " ('989f0ca8', 930, 'Nordkapp', 21),\n",
+       " ('02d4b258b8a', 1152, 'Estacada', 3),\n",
+       " ('f7db1341c848', 1240, 'Nullarbor', 3),\n",
+       " ('8cb1c9b33b', 1001, 'Almaty', 7),\n",
+       " ('811b8fcf', 1335, 'Morgantown', 10),\n",
+       " ('f4dd99265', 1294, 'Karlukovo', 21),\n",
+       " ('d5821111c6c', 1236, 'Nordkapp', 14),\n",
+       " ('c18ca0a78', 1069, 'Grimsey-Island', 14),\n",
+       " ('c7b043d2', 1327, 'Nullarbor', 7),\n",
+       " ('dcdccf9a55b8', 1574, 'Ijsseloog', 7),\n",
+       " ('646c6f60', 1247, 'Sofia', 10),\n",
+       " ('980e8f3064fc', 976, 'Giessenmestia', 14),\n",
+       " ('0b9cb9e950', 1458, 'Estacada', 7),\n",
+       " ('295b0f07', 997, 'Zhangye-Shi', 21),\n",
+       " ('3da51cf71e', 1864, 'Giessenmestia', 14),\n",
+       " ('4c0c6a48', 1069, 'Sofia', 7),\n",
+       " ('7ed300f23', 1474, 'Luoyang', 21),\n",
+       " ('ca039bc4a1ed', 1216, 'Sofia', 7),\n",
+       " ('07ea553e', 1348, 'Zhangye-Shi', 14),\n",
+       " ('44aadddc', 1245, 'Tubakuba', 14),\n",
+       " ('25c7800fd18', 1582, 'Lemnos', 14),\n",
+       " ('14e6e1034a', 948, 'Nordkapp', 21),\n",
+       " ('eca25db7a', 968, 'Gorongosa', 14),\n",
+       " ('90b158ef', 1350, 'Morgantown', 14),\n",
+       " ('2da4222c8', 1374, 'Geoje-Si', 10),\n",
+       " ('5d85167ed5c', 878, 'Luoyang', 3),\n",
+       " ('b7f4d5b476c', 1755, 'Nullarbor', 14),\n",
+       " ('686e7e91a', 1282, 'Giessenmestia', 10),\n",
+       " ('85f6122bb848', 1296, 'Gorongosa', 14),\n",
+       " ('e2c945275868', 867, 'Zhangye-Shi', 21),\n",
+       " ('17637f07', 1242, 'Jayuya', 7),\n",
+       " ('1cf53c93a', 919, 'Sofia', 7),\n",
+       " ('7b95b6d95', 1525, 'Morgantown', 21)]"
+      ]
+     },
+     "execution_count": 29,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "finished = False\n",
+    "while not finished:\n",
+    "    print('iterating')\n",
+    "    holidays = []\n",
+    "    for n in destination_names:\n",
+    "        holidays += [make_holiday(n)]\n",
+    "    for _ in range(95):\n",
+    "        holidays += [make_holiday()]\n",
+    "    finished = (len(set(h[0] for h in holidays)) == len(holidays))\n",
+    "holidays"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 30,
+   "metadata": {
+    "collapsed": true
+   },
    "outputs": [],
    "source": [
     "random.shuffle(holidays)\n",
     "with open('01-holidays.txt', 'w') as f:\n",
     "    for hid, price, name, days in holidays:\n",
-    "        f.write('{} {} {} {}\\n'.format(hid[-10:], price, name, days))"
+    "        f.write('{} {} {} {}\\n'.format(hid, price, name, days))"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 63,
+   "execution_count": 31,
    "metadata": {},
    "outputs": [
     {
      "data": {
       "text/plain": [
-       "[['5f12ce1b86', '1192', 'Sukhumi', '14'],\n",
-       " ['0279c8a91b', '1008', 'Estacada', '14'],\n",
-       " ['1faea40e9c', '1085', 'Tambon-Pa-Fa', '14']]"
+       "[['07ea553e', '1348', 'Zhangye-Shi', '14'],\n",
+       " ['02d4b258b8a', '1152', 'Estacada', '3'],\n",
+       " ['d29a0551504e', '1210', 'Zhangye-Shi', '7']]"
       ]
      },
-     "execution_count": 63,
+     "execution_count": 31,
      "metadata": {},
      "output_type": "execute_result"
     }
   },
   {
    "cell_type": "code",
-   "execution_count": 64,
+   "execution_count": 18,
    "metadata": {
     "collapsed": true
    },
   },
   {
    "cell_type": "code",
-   "execution_count": 78,
+   "execution_count": 19,
    "metadata": {},
    "outputs": [
     {
      "data": {
       "text/plain": [
-       "[('6138068a-3c16-4f7f-8dc6-a1199608abc5', 1209, 'Nordkapp', 21),\n",
-       " ('eafb15a4-1839-4fb5-be9b-d8389018bd07', 1052, 'Estacada', 21),\n",
-       " ('ab659b71-347d-45dc-9416-34def36ffc7d', 1514, 'Giessenmestia', 21),\n",
-       " ('bb8d5034-49ce-483d-ab6c-d16caf2584a5', 724, 'Stonington-Island', 14),\n",
-       " ('7476b214-8b55-47f6-833e-dfa487c4270a', 782, 'Geoje-Si', 14),\n",
-       " ('f2ffe169-7cc5-42e1-9b46-8cdb61bb906d', 769, 'Morgantown', 3),\n",
-       " ('2e6a6d6d-6c08-4021-b99f-05202c898b5f', 1184, 'Morgantown', 21)]"
+       "[('c6efb742d00c', 1010, 'Puente-Laguna-Garzonkuala-Penyu', 7),\n",
+       " ('7c111cbe', 1061, 'Morgantown', 14),\n",
+       " ('6b1006fa49', 1137, 'Sofia', 3),\n",
+       " ('fb330270', 1075, 'Uzupis', 3),\n",
+       " ('acf977ef446f', 1318, 'Mora', 14),\n",
+       " ('02277d8e', 1023, 'Zhangye-Shi', 10),\n",
+       " ('3fa7eb52c', 1515, 'Zhangye-Shi', 14)]"
       ]
      },
-     "execution_count": 78,
+     "execution_count": 19,
      "metadata": {},
      "output_type": "execute_result"
     }
   },
   {
    "cell_type": "code",
-   "execution_count": 79,
+   "execution_count": 20,
    "metadata": {},
    "outputs": [
     {
      "data": {
       "text/plain": [
-       "[('f2ffe169-7cc5-42e1-9b46-8cdb61bb906d', 769, 'Morgantown', 3),\n",
-       " ('2e6a6d6d-6c08-4021-b99f-05202c898b5f', 1184, 'Morgantown', 21),\n",
-       " ('ab659b71-347d-45dc-9416-34def36ffc7d', 1514, 'Giessenmestia', 21),\n",
-       " ('eafb15a4-1839-4fb5-be9b-d8389018bd07', 1052, 'Estacada', 21),\n",
-       " ('7476b214-8b55-47f6-833e-dfa487c4270a', 782, 'Geoje-Si', 14),\n",
-       " ('bb8d5034-49ce-483d-ab6c-d16caf2584a5', 724, 'Stonington-Island', 14),\n",
-       " ('6138068a-3c16-4f7f-8dc6-a1199608abc5', 1209, 'Nordkapp', 21)]"
+       "[('c6efb742d00c', 1010, 'Puente-Laguna-Garzonkuala-Penyu', 7),\n",
+       " ('3fa7eb52c', 1515, 'Zhangye-Shi', 14),\n",
+       " ('fb330270', 1075, 'Uzupis', 3),\n",
+       " ('7c111cbe', 1061, 'Morgantown', 14),\n",
+       " ('02277d8e', 1023, 'Zhangye-Shi', 10),\n",
+       " ('6b1006fa49', 1137, 'Sofia', 3),\n",
+       " ('acf977ef446f', 1318, 'Mora', 14)]"
       ]
      },
-     "execution_count": 79,
+     "execution_count": 20,
      "metadata": {},
      "output_type": "execute_result"
     }
   },
   {
    "cell_type": "code",
-   "execution_count": 82,
+   "execution_count": 21,
    "metadata": {
     "collapsed": true
    },
   },
   {
    "cell_type": "code",
-   "execution_count": 83,
+   "execution_count": 23,
    "metadata": {},
    "outputs": [
     {
      "name": "stdout",
      "output_type": "stream",
      "text": [
-      "db61bb906d 769 Morgantown 3\n",
-      "202c898b5f 1284 Morgantown 21\n",
-      "def36ffc7d 1514 Giessenmestia 21\n",
-      "389018bd07 1052 Estacada 21\n",
-      "a487c4270a 782 Geoje-Si 14\n",
-      "6caf2584a5 724 Stonington-Island 14\n",
-      "199608abc5 1209 Nordkapp 21\n"
+      "f2ffe169-7cc5-42e1-9b46-8cdb61bb906d 769 Morgantown 3\n",
+      "2e6a6d6d-6c08-4021-b99f-05202c898b5f 1284 Morgantown 21\n",
+      "ab659b71-347d-45dc-9416-34def36ffc7d 1514 Giessenmestia 21\n",
+      "eafb15a4-1839-4fb5-be9b-d8389018bd07 1052 Estacada 21\n",
+      "7476b214-8b55-47f6-833e-dfa487c4270a 782 Geoje-Si 14\n",
+      "bb8d5034-49ce-483d-ab6c-d16caf2584a5 724 Stonington-Island 14\n",
+      "6138068a-3c16-4f7f-8dc6-a1199608abc5 1209 Nordkapp 21\n"
      ]
     }
    ],
    "source": [
     "for hid, price, name, days in example_holidays:\n",
-    "        print('{} {} {} {}'.format(hid[-10:], price, name, days))"
+    "        print('{} {} {} {}'.format(hid, price, name, days))"
    ]
   },
   {