het werkt ofzo
This commit is contained in:
parent
0bacf9bf89
commit
933af159cd
129
Book_1.ipynb
129
Book_1.ipynb
|
@ -18,12 +18,13 @@
|
|||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 3,
|
||||
"execution_count": 5,
|
||||
"id": "1e6ac084-5bf9-43f7-a7a6-8c8e20066159",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"import re "
|
||||
"import re \n",
|
||||
"import numpy as np"
|
||||
]
|
||||
},
|
||||
{
|
||||
|
@ -44,7 +45,7 @@
|
|||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 213,
|
||||
"execution_count": 2,
|
||||
"id": "98412978-4434-4461-8255-fde982948f26",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
|
@ -54,7 +55,7 @@
|
|||
"55834"
|
||||
]
|
||||
},
|
||||
"execution_count": 213,
|
||||
"execution_count": 2,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
|
@ -79,7 +80,7 @@
|
|||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 215,
|
||||
"execution_count": 3,
|
||||
"id": "66632939-dc5e-44ba-b740-868c20cabe8c",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
|
@ -89,7 +90,7 @@
|
|||
"53221"
|
||||
]
|
||||
},
|
||||
"execution_count": 215,
|
||||
"execution_count": 3,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
|
@ -201,6 +202,122 @@
|
|||
" total += max(color_dict['red']) * max(color_dict['green']) * max(color_dict['blue'])\n",
|
||||
"total"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "95831680-6f23-404b-97e6-0411c59f6bdf",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## Puzzel 3"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 104,
|
||||
"id": "3f70dc72-b4e4-4f65-87ac-d1222a01c8aa",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"data = open('data/puzzle_3.txt', 'r').readlines()"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 113,
|
||||
"id": "91a632d1-6262-4c28-bb17-45352c60c16e",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"517021"
|
||||
]
|
||||
},
|
||||
"execution_count": 113,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"data_list = [re.sub('\\n', '', line) for line in data]\n",
|
||||
"data_list = [re.sub('[^\\d\\.]', 'X', line) for line in data_list]\n",
|
||||
"total = 0\n",
|
||||
"for line_number, line in enumerate(data_list):\n",
|
||||
" matches = re.findall('\\d+', line)\n",
|
||||
" for number in matches:\n",
|
||||
" match = re.search(number, line)\n",
|
||||
" surrounding_string = \"\"\n",
|
||||
" start, end = match.span()\n",
|
||||
" if start > 0:\n",
|
||||
" start -= 1\n",
|
||||
" if end <= len(line):\n",
|
||||
" end += 1\n",
|
||||
" if line_number != 0:\n",
|
||||
" surrounding_string += data_list[line_number-1][start:end]\n",
|
||||
" surrounding_string += line[start:end]\n",
|
||||
" if line_number != len(data_list)-1:\n",
|
||||
" surrounding_string += data_list[line_number+1][start:end]\n",
|
||||
" if 'X' in surrounding_string:\n",
|
||||
" total += int(match.group())\n",
|
||||
" line = re.sub(match.group(), len(match.group())*'.', line, 1)\n",
|
||||
" match = re.search('\\d+', line) \n",
|
||||
"total"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 138,
|
||||
"id": "4b239c25-3a43-459e-9669-aa9834571733",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"81296995"
|
||||
]
|
||||
},
|
||||
"execution_count": 138,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"data_list = [re.sub('\\n', '', line) for line in data]\n",
|
||||
"asterisks = []\n",
|
||||
"numbers = []\n",
|
||||
"for line_number, line in enumerate(data_list):\n",
|
||||
" match = re.search('(\\*)|(\\d+)', line)\n",
|
||||
" while match is not None:\n",
|
||||
" x, y = match.span()\n",
|
||||
" if match.group() == '*':\n",
|
||||
" asterisks.append({'x_pos': x, 'line_number': line_number})\n",
|
||||
" else:\n",
|
||||
" numbers.append({'x_start':x, 'x_end': y, 'line_number': line_number, 'number': int(match.group())})\n",
|
||||
" line = re.sub('(\\*)|(\\d+)', len(match.group())*'.', line, 1)\n",
|
||||
" match = re.search('(\\*)|(\\d+)', line)\n",
|
||||
" \n",
|
||||
"for asterisk in asterisks:\n",
|
||||
" asterisk_numbers = []\n",
|
||||
" for number in numbers:\n",
|
||||
" if number['line_number'] == asterisk['line_number']:\n",
|
||||
" if number['x_end'] == asterisk['x_pos']:\n",
|
||||
" asterisk_numbers.append(number['number'])\n",
|
||||
" continue\n",
|
||||
" if number['x_start']-1 == asterisk['x_pos']:\n",
|
||||
" asterisk_numbers.append(number['number'])\n",
|
||||
" continue\n",
|
||||
" \n",
|
||||
" if (number['line_number']+1 == asterisk['line_number']) or (number['line_number']-1 == asterisk['line_number']):\n",
|
||||
" if asterisk['x_pos'] in [num for num in range(number['x_start']-1, number['x_end']+1)]:\n",
|
||||
" asterisk_numbers.append(number['number'])\n",
|
||||
"\n",
|
||||
" asterisk['numbers'] = asterisk_numbers\n",
|
||||
"total = 0\n",
|
||||
"for asterisk in asterisks:\n",
|
||||
" if len(asterisk['numbers']) == 2:\n",
|
||||
" total+= asterisk['numbers'][0] * asterisk['numbers'][1]\n",
|
||||
"total"
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
|
|
|
@ -5,6 +5,7 @@ Laten we beginnen met de imports
|
|||
|
||||
```python
|
||||
import re
|
||||
import numpy as np
|
||||
```
|
||||
|
||||
## Puzzel 1
|
||||
|
@ -105,3 +106,90 @@ total
|
|||
66027
|
||||
|
||||
|
||||
|
||||
## Puzzel 3
|
||||
|
||||
|
||||
```python
|
||||
data = open('data/puzzle_3.txt', 'r').readlines()
|
||||
```
|
||||
|
||||
|
||||
```python
|
||||
data_list = [re.sub('\n', '', line) for line in data]
|
||||
data_list = [re.sub('[^\d\.]', 'X', line) for line in data_list]
|
||||
total = 0
|
||||
for line_number, line in enumerate(data_list):
|
||||
matches = re.findall('\d+', line)
|
||||
for number in matches:
|
||||
match = re.search(number, line)
|
||||
surrounding_string = ""
|
||||
start, end = match.span()
|
||||
if start > 0:
|
||||
start -= 1
|
||||
if end <= len(line):
|
||||
end += 1
|
||||
if line_number != 0:
|
||||
surrounding_string += data_list[line_number-1][start:end]
|
||||
surrounding_string += line[start:end]
|
||||
if line_number != len(data_list)-1:
|
||||
surrounding_string += data_list[line_number+1][start:end]
|
||||
if 'X' in surrounding_string:
|
||||
total += int(match.group())
|
||||
line = re.sub(match.group(), len(match.group())*'.', line, 1)
|
||||
match = re.search('\d+', line)
|
||||
total
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
517021
|
||||
|
||||
|
||||
|
||||
|
||||
```python
|
||||
data_list = [re.sub('\n', '', line) for line in data]
|
||||
asterisks = []
|
||||
numbers = []
|
||||
for line_number, line in enumerate(data_list):
|
||||
match = re.search('(\*)|(\d+)', line)
|
||||
while match is not None:
|
||||
x, y = match.span()
|
||||
if match.group() == '*':
|
||||
asterisks.append({'x_pos': x, 'line_number': line_number})
|
||||
else:
|
||||
numbers.append({'x_start':x, 'x_end': y, 'line_number': line_number, 'number': int(match.group())})
|
||||
line = re.sub('(\*)|(\d+)', len(match.group())*'.', line, 1)
|
||||
match = re.search('(\*)|(\d+)', line)
|
||||
|
||||
for asterisk in asterisks:
|
||||
asterisk_numbers = []
|
||||
for number in numbers:
|
||||
if number['line_number'] == asterisk['line_number']:
|
||||
if number['x_end'] == asterisk['x_pos']:
|
||||
asterisk_numbers.append(number['number'])
|
||||
continue
|
||||
if number['x_start']-1 == asterisk['x_pos']:
|
||||
asterisk_numbers.append(number['number'])
|
||||
continue
|
||||
|
||||
if (number['line_number']+1 == asterisk['line_number']) or (number['line_number']-1 == asterisk['line_number']):
|
||||
if asterisk['x_pos'] in [num for num in range(number['x_start']-1, number['x_end']+1)]:
|
||||
asterisk_numbers.append(number['number'])
|
||||
|
||||
asterisk['numbers'] = asterisk_numbers
|
||||
total = 0
|
||||
for asterisk in asterisks:
|
||||
if len(asterisk['numbers']) == 2:
|
||||
total+= asterisk['numbers'][0] * asterisk['numbers'][1]
|
||||
total
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
81296995
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue