Removing files from data analysis directory
[ou-summer-of-code-2017.git] / 01-ticket-prices / ticket-pricing-generator.ipynb
index 3d591fd5141c073d6f02e4696267ae3676ddec22..37948a2e1a8fcab210d53e1554c116367635c604 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": 40,
+   "execution_count": 5,
    "metadata": {},
    "outputs": [
     {
      "data": {
       "text/plain": [
-       "{'Aalborg': 1,\n",
-       " 'Almaty': 2.0,\n",
-       " 'Brorfelde': 0.9,\n",
-       " 'Estacada': 0.4,\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': 0.6,\n",
-       " 'Karlukovo': 2.2,\n",
-       " 'Lemnos': 1,\n",
-       " 'Luoyang': 1,\n",
-       " 'Mamula': 1,\n",
-       " 'Mora': 1,\n",
-       " 'Morgantown': 2.9,\n",
-       " 'Nordkapp': 1.5,\n",
-       " 'Nullarbor': 2.2,\n",
-       " 'Parowan': 1,\n",
-       " 'Puente-Laguna-Garzonkuala-Penyu': 0.4,\n",
-       " 'Sofia': 1,\n",
-       " 'Stonington-Island': 1,\n",
-       " 'Sukhumi': 1,\n",
-       " 'Tambon-Pa-Fa': 1,\n",
-       " 'Tubakuba': 1,\n",
-       " 'Uzupis': 0.9,\n",
-       " 'Zhangye-Shi': 1}"
+       "{'Aalborg': 1.0,\n",
+       " 'Almaty': 1.0,\n",
+       " 'Brorfelde': 1.9,\n",
+       " 'Estacada': 1.0,\n",
+       " 'Geoje-Si': 1.0,\n",
+       " 'Giessenmestia': 0.5,\n",
+       " 'Gorongosa': 1.3,\n",
+       " 'Grimsey-Island': 0.6,\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': 0.6,\n",
+       " 'Morgantown': 1.0,\n",
+       " 'Nordkapp': 1.0,\n",
+       " 'Nullarbor': 1.8,\n",
+       " 'Parowan': 1.0,\n",
+       " 'Puente-Laguna-Garzonkuala-Penyu': 1.0,\n",
+       " 'Sofia': 1.0,\n",
+       " 'Stonington-Island': 1.0,\n",
+       " 'Sukhumi': 0.3,\n",
+       " 'Tambon-Pa-Fa': 0.9,\n",
+       " 'Tubakuba': 1.0,\n",
+       " 'Uzupis': 2.6,\n",
+       " 'Zhangye-Shi': 2.5}"
       ]
      },
-     "execution_count": 40,
+     "execution_count": 5,
      "metadata": {},
      "output_type": "execute_result"
     }
   },
   {
    "cell_type": "code",
-   "execution_count": 42,
+   "execution_count": 6,
    "metadata": {
     "collapsed": true
    },
   },
   {
    "cell_type": "code",
-   "execution_count": 66,
+   "execution_count": 7,
    "metadata": {
     "collapsed": true
    },
   },
   {
    "cell_type": "code",
-   "execution_count": 44,
+   "execution_count": 8,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "{'Aalborg': 1,\n",
+       " 'Almaty': 2.0,\n",
+       " 'Brorfelde': 0.9,\n",
+       " 'Estacada': 0.4,\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': 0.6,\n",
+       " 'Karlukovo': 2.2,\n",
+       " 'Lemnos': 1,\n",
+       " 'Luoyang': 1,\n",
+       " 'Mamula': 1,\n",
+       " 'Mora': 1,\n",
+       " 'Morgantown': 2.9,\n",
+       " 'Nordkapp': 1.5,\n",
+       " 'Nullarbor': 2.2,\n",
+       " 'Parowan': 1,\n",
+       " 'Puente-Laguna-Garzonkuala-Penyu': 0.4,\n",
+       " 'Sofia': 1,\n",
+       " 'Stonington-Island': 1,\n",
+       " 'Sukhumi': 1,\n",
+       " 'Tambon-Pa-Fa': 1,\n",
+       " 'Tubakuba': 1,\n",
+       " 'Uzupis': 0.9,\n",
+       " 'Zhangye-Shi': 1}"
+      ]
+     },
+     "execution_count": 8,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "destination_scores.update(destination_score_exceptions)\n",
+    "destination_scores"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 9,
    "metadata": {},
    "outputs": [
     {
   },
   {
    "cell_type": "code",
-   "execution_count": 48,
+   "execution_count": 10,
    "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": 11,
    "metadata": {},
    "outputs": [
     {
      "data": {
       "text/plain": [
-       "('4615dad7-f5ab-4c9b-8028-b3e5c676ff24', 1046, 'Almaty', 14)"
+       "('d332f9de36', 1084, 'Aalborg', 14)"
       ]
      },
-     "execution_count": 54,
+     "execution_count": 11,
      "metadata": {},
      "output_type": "execute_result"
     }
   },
   {
    "cell_type": "code",
-   "execution_count": 59,
+   "execution_count": 12,
    "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)]"
+       "[('715f4a7e01', 1711, 'Aalborg', 14),\n",
+       " ('089d8fb41', 1350, 'Nullarbor', 10),\n",
+       " ('5e4cac0bc', 1047, 'Morgantown', 14),\n",
+       " ('3d325aa3', 1121, 'Estacada', 14),\n",
+       " ('2208b9c9c8d', 982, 'Almaty', 7),\n",
+       " ('57a09a474ed', 717, 'Tambon-Pa-Fa', 14),\n",
+       " ('ce2dc149f13', 720, 'Lemnos', 7),\n",
+       " ('8e98f8d24', 1522, 'Sofia', 14),\n",
+       " ('11ad39807fb', 1492, 'Puente-Laguna-Garzonkuala-Penyu', 14),\n",
+       " ('726dc3d60', 1337, 'Hajnowski', 21),\n",
+       " ('3582dc3a65fc', 1640, 'Karlukovo', 7),\n",
+       " ('6088f9b7a20', 1333, 'Mamula', 14),\n",
+       " ('93804a851f', 1505, 'Stonington-Island', 10),\n",
+       " ('e7427c93592c', 1007, 'Grimsey-Island', 7),\n",
+       " ('66330891', 1421, 'Uzupis', 3),\n",
+       " ('423479b70b9', 1564, 'Sukhumi', 7),\n",
+       " ('394773a2c8', 1421, 'Ijsseloog', 21),\n",
+       " ('821b2172d', 1254, 'Giessenmestia', 21),\n",
+       " ('70e4246d', 1343, 'Nordkapp', 7),\n",
+       " ('9bba6559661', 1397, 'Gorongosa', 3),\n",
+       " ('77f95fa1e0d', 1058, 'Brorfelde', 3),\n",
+       " ('61c8b16c7', 1414, 'Parowan', 14),\n",
+       " ('03b4198d6a', 1397, 'Tubakuba', 14),\n",
+       " ('345db350cb', 1032, 'Geoje-Si', 21),\n",
+       " ('088ed5f9', 1411, 'Mora', 14),\n",
+       " ('e20d1d37', 1248, 'Holmegaard', 14),\n",
+       " ('b3b569bdab1', 914, 'Jayuya', 21),\n",
+       " ('704c26aeb2a', 1153, 'Zhangye-Shi', 14),\n",
+       " ('ca229988', 1178, 'Luoyang', 10)]"
       ]
      },
-     "execution_count": 59,
+     "execution_count": 12,
      "metadata": {},
      "output_type": "execute_result"
     }
   },
   {
    "cell_type": "code",
-   "execution_count": 60,
+   "execution_count": 13,
    "metadata": {
     "collapsed": true
    },
   },
   {
    "cell_type": "code",
-   "execution_count": 62,
+   "execution_count": 14,
    "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "iterating\n"
+     ]
+    },
+    {
+     "data": {
+      "text/plain": [
+       "[('26ae2d0b7', 1188, 'Aalborg', 7),\n",
+       " ('ee064e1e2ea', 785, 'Nullarbor', 14),\n",
+       " ('c5f99dca95e', 1727, 'Morgantown', 14),\n",
+       " ('b6d482b92', 1497, 'Estacada', 14),\n",
+       " ('6fb97c1a3', 993, 'Almaty', 7),\n",
+       " ('bfc72b962', 1153, 'Tambon-Pa-Fa', 14),\n",
+       " ('fc05fce8d', 1551, 'Lemnos', 14),\n",
+       " ('2407d5e3', 1234, 'Sofia', 7),\n",
+       " ('41c837263600', 1083, 'Puente-Laguna-Garzonkuala-Penyu', 14),\n",
+       " ('46c6b6fa76', 1184, 'Hajnowski', 14),\n",
+       " ('943fa28d', 1541, 'Karlukovo', 7),\n",
+       " ('6ffab38e7b', 1228, 'Mamula', 14),\n",
+       " ('1892f12d6', 948, 'Stonington-Island', 14),\n",
+       " ('16935ed587bf', 1312, 'Grimsey-Island', 14),\n",
+       " ('4ebc5e0b', 1227, 'Uzupis', 7),\n",
+       " ('4a642c384ea', 1146, 'Sukhumi', 14),\n",
+       " ('04feb63602', 1050, 'Ijsseloog', 14),\n",
+       " ('5d2c9d24', 1263, 'Giessenmestia', 21),\n",
+       " ('f806fc9d', 1553, 'Nordkapp', 21),\n",
+       " ('4caefcacded0', 1644, 'Gorongosa', 21),\n",
+       " ('aea2a458023', 727, 'Brorfelde', 21),\n",
+       " ('1afd05d3ea88', 1072, 'Parowan', 7),\n",
+       " ('303db888d', 1316, 'Tubakuba', 7),\n",
+       " ('9997e977978', 1170, 'Geoje-Si', 14),\n",
+       " ('2ee77108', 1549, 'Mora', 7),\n",
+       " ('6ed9a88972', 1295, 'Holmegaard', 14),\n",
+       " ('38b9690d981', 1204, 'Jayuya', 14),\n",
+       " ('166b77df', 979, 'Zhangye-Shi', 14),\n",
+       " ('7f1a85bc', 1140, 'Luoyang', 7),\n",
+       " ('7b1c64c74', 1361, 'Tambon-Pa-Fa', 10),\n",
+       " ('4a67a59a', 1055, 'Almaty', 7),\n",
+       " ('1ab9eb3d5422', 1376, 'Tambon-Pa-Fa', 14),\n",
+       " ('df7bd3ee5', 1209, 'Parowan', 7),\n",
+       " ('b4db7910', 1300, 'Ijsseloog', 10),\n",
+       " ('4ce3111c66', 1106, 'Karlukovo', 10),\n",
+       " ('9a226b7b33c', 906, 'Hajnowski', 7),\n",
+       " ('153da27bcb75', 1030, 'Ijsseloog', 3),\n",
+       " ('de5d04b2c3a', 867, 'Tubakuba', 7),\n",
+       " ('eaa91671', 943, 'Stonington-Island', 14),\n",
+       " ('b261dbd1cef', 996, 'Holmegaard', 21),\n",
+       " ('7a9b44f3bcc', 1277, 'Mora', 14),\n",
+       " ('e1f3bd201', 1379, 'Uzupis', 14),\n",
+       " ('83f28647', 973, 'Jayuya', 7),\n",
+       " ('0ba9dcee27f3', 1261, 'Karlukovo', 14),\n",
+       " ('4809881ff7', 1380, 'Holmegaard', 7),\n",
+       " ('67985d6aa', 1525, 'Stonington-Island', 14),\n",
+       " ('1e38291d', 1438, 'Luoyang', 14),\n",
+       " ('839240114', 1546, 'Tubakuba', 7),\n",
+       " ('ceb26b792', 1352, 'Sofia', 21),\n",
+       " ('7b049264', 1077, 'Hajnowski', 10),\n",
+       " ('34f7247adaf', 1413, 'Nordkapp', 10),\n",
+       " ('ce8b3fcd44b1', 849, 'Sofia', 14),\n",
+       " ('1fc012fcb7c5', 1081, 'Jayuya', 21),\n",
+       " ('54670c3136d', 1254, 'Luoyang', 7),\n",
+       " ('6f2f9ff6b7bd', 903, 'Zhangye-Shi', 3),\n",
+       " ('60fdf85cf570', 1002, 'Almaty', 14),\n",
+       " ('49e8530b61a0', 1061, 'Nullarbor', 3),\n",
+       " ('1634fe98c256', 1058, 'Jayuya', 7),\n",
+       " ('17d3decd842', 1041, 'Ijsseloog', 7),\n",
+       " ('f7cbb3da7e6', 731, 'Aalborg', 14),\n",
+       " ('c3cac7d3bc', 813, 'Ijsseloog', 7),\n",
+       " ('a1342d1ec', 1368, 'Ijsseloog', 7),\n",
+       " ('da926535df', 1383, 'Jayuya', 7),\n",
+       " ('398d3e972f49', 1194, 'Estacada', 14),\n",
+       " ('134d5f5b3f', 1399, 'Tambon-Pa-Fa', 14),\n",
+       " ('705baebce', 1287, 'Tubakuba', 3),\n",
+       " ('0ee0ff115', 1181, 'Jayuya', 21),\n",
+       " ('b116bf9bd', 1307, 'Zhangye-Shi', 21),\n",
+       " ('bf75e25a6b8', 1448, 'Puente-Laguna-Garzonkuala-Penyu', 7),\n",
+       " ('cb89673b727', 1681, 'Ijsseloog', 14),\n",
+       " ('3962815e6', 1497, 'Ijsseloog', 7),\n",
+       " ('3251b683b9f', 1466, 'Zhangye-Shi', 21),\n",
+       " ('4ad6523f', 1085, 'Luoyang', 7),\n",
+       " ('f60e203aaaf9', 623, 'Lemnos', 21),\n",
+       " ('35ea596f', 1613, 'Tubakuba', 7),\n",
+       " ('27861346', 1046, 'Grimsey-Island', 14),\n",
+       " ('67c14f2635', 1157, 'Stonington-Island', 7),\n",
+       " ('579302498bdc', 1076, 'Parowan', 14),\n",
+       " ('71573a6513', 1259, 'Giessenmestia', 7),\n",
+       " ('1fb40d6b', 1568, 'Stonington-Island', 7),\n",
+       " ('06af8642ff', 1389, 'Sofia', 7),\n",
+       " ('38b01883fd', 1309, 'Mamula', 10),\n",
+       " ('1385d067d40b', 1365, 'Zhangye-Shi', 7),\n",
+       " ('353e6dc9', 1039, 'Sukhumi', 10),\n",
+       " ('11896bedc4', 999, 'Morgantown', 7),\n",
+       " ('b96caebcfd6', 1155, 'Geoje-Si', 21),\n",
+       " ('435b4e82', 1429, 'Morgantown', 21),\n",
+       " ('68660362', 1568, 'Morgantown', 21),\n",
+       " ('c1254c8fc9a', 909, 'Puente-Laguna-Garzonkuala-Penyu', 7),\n",
+       " ('bce7bdf7c', 878, 'Lemnos', 10),\n",
+       " ('44dadca0cd9', 1345, 'Aalborg', 7),\n",
+       " ('d168673f959', 1330, 'Karlukovo', 7),\n",
+       " ('a3fec18095', 1256, 'Geoje-Si', 7),\n",
+       " ('33123a00', 1438, 'Grimsey-Island', 14),\n",
+       " ('d6b03403', 1207, 'Morgantown', 14),\n",
+       " ('ec5f5691', 1150, 'Luoyang', 14),\n",
+       " ('f22b8e717c', 1401, 'Tambon-Pa-Fa', 21),\n",
+       " ('995f57877aac', 1155, 'Tambon-Pa-Fa', 14),\n",
+       " ('4435ea0d0c5d', 1205, 'Tambon-Pa-Fa', 7),\n",
+       " ('b8521145', 1338, 'Ijsseloog', 7),\n",
+       " ('ea6c84938e2', 1310, 'Nullarbor', 7),\n",
+       " ('3b1a78218bb5', 1083, 'Tambon-Pa-Fa', 10),\n",
+       " ('e1df7ea96302', 1483, 'Almaty', 7),\n",
+       " ('c86e2e5826', 1331, 'Morgantown', 21),\n",
+       " ('1942931f2', 1219, 'Parowan', 14),\n",
+       " ('303965365c4', 1594, 'Sofia', 14),\n",
+       " ('cd227c32d4e', 984, 'Estacada', 14),\n",
+       " ('c9c6d041', 1194, 'Mora', 14),\n",
+       " ('b70e605889', 834, 'Puente-Laguna-Garzonkuala-Penyu', 10),\n",
+       " ('c11e991e22ea', 1453, 'Nullarbor', 3),\n",
+       " ('650a2b292e5c', 1623, 'Puente-Laguna-Garzonkuala-Penyu', 14),\n",
+       " ('a2dd4aec', 1160, 'Nullarbor', 3),\n",
+       " ('68022753', 1239, 'Mamula', 21),\n",
+       " ('5b23fa704734', 1194, 'Giessenmestia', 14),\n",
+       " ('a87ad38a7', 879, 'Aalborg', 21),\n",
+       " ('b4e498b9ed', 1060, 'Geoje-Si', 14),\n",
+       " ('b1aa6c5d8a', 821, 'Estacada', 21),\n",
+       " ('dda7d369', 1546, 'Uzupis', 21),\n",
+       " ('757f3c9f5', 1208, 'Hajnowski', 14),\n",
+       " ('732cbc2c276b', 947, 'Sukhumi', 14),\n",
+       " ('e1cd5acf5', 1044, 'Stonington-Island', 14),\n",
+       " ('b1dc6df3240', 1261, 'Holmegaard', 7),\n",
+       " ('952801ceb36', 1126, 'Stonington-Island', 7),\n",
+       " ('1541ba11', 1047, 'Almaty', 7)]"
+      ]
+     },
+     "execution_count": 14,
+     "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": 15,
+   "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": 16,
    "metadata": {},
    "outputs": [
     {
      "data": {
       "text/plain": [
-       "[['5f12ce1b86', '1192', 'Sukhumi', '14'],\n",
-       " ['0279c8a91b', '1008', 'Estacada', '14'],\n",
-       " ['1faea40e9c', '1085', 'Tambon-Pa-Fa', '14']]"
+       "[['dda7d369', '1546', 'Uzupis', '21'],\n",
+       " ['68022753', '1239', 'Mamula', '21'],\n",
+       " ['b261dbd1cef', '996', 'Holmegaard', '21']]"
       ]
      },
-     "execution_count": 63,
+     "execution_count": 16,
      "metadata": {},
      "output_type": "execute_result"
     }
   },
   {
    "cell_type": "code",
-   "execution_count": 64,
+   "execution_count": 17,
    "metadata": {
     "collapsed": true
    },
   },
   {
    "cell_type": "code",
-   "execution_count": 78,
+   "execution_count": 18,
    "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)]"
+       "[('9f7197d4f2f', 1185, 'Estacada', 21),\n",
+       " ('a61f5794124', 1458, 'Puente-Laguna-Garzonkuala-Penyu', 14),\n",
+       " ('56775261', 1107, 'Lemnos', 14),\n",
+       " ('eed54d307cc', 1458, 'Parowan', 21),\n",
+       " ('7285b19afa6f', 1663, 'Luoyang', 14),\n",
+       " ('78765b48', 1260, 'Nordkapp', 10),\n",
+       " ('428b6d2c5', 1152, 'Nordkapp', 21)]"
       ]
      },
-     "execution_count": 78,
+     "execution_count": 18,
      "metadata": {},
      "output_type": "execute_result"
     }
   },
   {
    "cell_type": "code",
-   "execution_count": 79,
+   "execution_count": 19,
    "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)]"
+       "[('428b6d2c5', 1152, 'Nordkapp', 21),\n",
+       " ('9f7197d4f2f', 1185, 'Estacada', 21),\n",
+       " ('56775261', 1107, 'Lemnos', 14),\n",
+       " ('78765b48', 1260, 'Nordkapp', 10),\n",
+       " ('eed54d307cc', 1458, 'Parowan', 21),\n",
+       " ('7285b19afa6f', 1663, 'Luoyang', 14),\n",
+       " ('a61f5794124', 1458, 'Puente-Laguna-Garzonkuala-Penyu', 14)]"
       ]
      },
-     "execution_count": 79,
+     "execution_count": 19,
      "metadata": {},
      "output_type": "execute_result"
     }
   },
   {
    "cell_type": "code",
-   "execution_count": 82,
+   "execution_count": 20,
    "metadata": {
     "collapsed": true
    },
   },
   {
    "cell_type": "code",
-   "execution_count": 83,
+   "execution_count": 21,
    "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))"
    ]
   },
   {