Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit c498f8e

Browse files
authored
Day 9 (#7)
1 parent b2919b7 commit c498f8e

File tree

1 file changed

+132
-0
lines changed

1 file changed

+132
-0
lines changed

2018/09/solution.ipynb

Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
{
2+
"cells": [
3+
{
4+
"cell_type": "markdown",
5+
"source": [
6+
"# Advent of Code 2018 - Day 9"
7+
],
8+
"metadata": {}
9+
},
10+
{
11+
"cell_type": "markdown",
12+
"source": [
13+
"## Input"
14+
],
15+
"metadata": {}
16+
},
17+
{
18+
"cell_type": "code",
19+
"source": [
20+
"# data - part 1 - 410 players; last marble is worth 72059 points\n",
21+
"# player_count, final_marble_value, high_score, winner_id = 410, 72059, 0, 370\n",
22+
"\n",
23+
"# data - part 2 - 410 players; last marble is worth 7205900 points\n",
24+
"# brute force approach (let it run for hours)\n",
25+
"player_count, final_marble_value, high_score, winner_id = 410, 7205900, 0, 370\n",
26+
"\n",
27+
"#\n",
28+
"# data examples:\n",
29+
"#\n",
30+
"# player_count, final_marble_value, high_score, winner_id = 9, 25, 32, 5\n",
31+
"# player_count, final_marble_value, high_score, winner_id = 10, 1618, 8317, 10\n",
32+
"# player_count, final_marble_value, high_score, winner_id = 13, 7999, 146373, 12\n",
33+
"# player_count, final_marble_value, high_score, winner_id = 17, 1104, 2764, 16\n",
34+
"# player_count, final_marble_value, high_score, winner_id = 21, 6111, 54718, 5\n",
35+
"# player_count, final_marble_value, high_score, winner_id = 30, 5807, 37305, 20"
36+
],
37+
"outputs": [],
38+
"execution_count": 58,
39+
"metadata": {
40+
"collapsed": false,
41+
"outputHidden": false,
42+
"inputHidden": false
43+
}
44+
},
45+
{
46+
"cell_type": "markdown",
47+
"source": [
48+
"## Part 1"
49+
],
50+
"metadata": {}
51+
},
52+
{
53+
"cell_type": "code",
54+
"source": [
55+
"marble_list = [0]\n",
56+
"curr_marble_idx = 0\n",
57+
"player_scores = {}\n",
58+
"\n",
59+
"for curr_marble_val in range(1, final_marble_val + 1):\n",
60+
" # adjust for marble value 0 belonging to no player\n",
61+
" # (this could be cleaner)\n",
62+
" player_nbr = ((curr_marble_val - 1) % player_count) + 1\n",
63+
"\n",
64+
" if curr_marble_val == 1:\n",
65+
" marble_list.append(1)\n",
66+
" curr_marble_idx = 1\n",
67+
"\n",
68+
" elif curr_marble_val % 23 == 0:\n",
69+
" marble_to_remove_idx = (curr_marble_idx - 7) % len(marble_list)\n",
70+
" marble_to_remove_val = marble_list.pop(marble_to_remove_idx)\n",
71+
" curr_marble_idx = marble_to_remove_idx\n",
72+
"\n",
73+
" player_scores[player_nbr] = (player_scores.get(player_nbr, 0)\n",
74+
" + curr_marble_val\n",
75+
" + marble_to_remove_val)\n",
76+
"\n",
77+
" else:\n",
78+
" # next pos calc is a little weird to append when pos = list len\n",
79+
" next_marble_idx = ((curr_marble_idx + 1) % len(marble_list)) + 1\n",
80+
" marble_list.insert(next_marble_idx, curr_marble_val)\n",
81+
" curr_marble_idx = next_marble_idx\n",
82+
"\n\n",
83+
"def print_high_score(player_scores):\n",
84+
" player_id = max(player_scores, key=player_scores.get)\n",
85+
" print '{}: {}'.format(player_id, player_scores[player_id])\n",
86+
"\nprint_high_score(player_scores)"
87+
],
88+
"outputs": [
89+
{
90+
"output_type": "stream",
91+
"name": "stdout",
92+
"text": [
93+
"215: 3624387659\n"
94+
]
95+
}
96+
],
97+
"execution_count": 59,
98+
"metadata": {
99+
"collapsed": false,
100+
"outputHidden": false,
101+
"inputHidden": false
102+
}
103+
}
104+
],
105+
"metadata": {
106+
"kernel_info": {
107+
"name": "boto3"
108+
},
109+
"language_info": {
110+
"mimetype": "text/x-python",
111+
"nbconvert_exporter": "python",
112+
"name": "python",
113+
"pygments_lexer": "ipython2",
114+
"version": "2.7.10",
115+
"file_extension": ".py",
116+
"codemirror_mode": {
117+
"version": 2,
118+
"name": "ipython"
119+
}
120+
},
121+
"kernelspec": {
122+
"name": "boto3",
123+
"language": "python",
124+
"display_name": "boto3"
125+
},
126+
"nteract": {
127+
"version": "0.12.3"
128+
}
129+
},
130+
"nbformat": 4,
131+
"nbformat_minor": 4
132+
}

0 commit comments

Comments
 (0)