575 lines
16 KiB
Plaintext
575 lines
16 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 52,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"with open('input','r') as f:\n",
|
|
" data = f.read()\n",
|
|
"data=data.splitlines()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 53,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"def find_zeros(data):\n",
|
|
" zeros = []\n",
|
|
" for x,line in enumerate(data):\n",
|
|
" for y,char in enumerate(line):\n",
|
|
" if char == '0':\n",
|
|
" zeros.append((x,y))\n",
|
|
"\n",
|
|
" return zeros\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 54,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"[(0, 11),\n",
|
|
" (0, 18),\n",
|
|
" (0, 32),\n",
|
|
" (0, 34),\n",
|
|
" (0, 41),\n",
|
|
" (0, 45),\n",
|
|
" (0, 49),\n",
|
|
" (1, 2),\n",
|
|
" (1, 13),\n",
|
|
" (1, 27),\n",
|
|
" (1, 52),\n",
|
|
" (2, 0),\n",
|
|
" (2, 5),\n",
|
|
" (2, 17),\n",
|
|
" (2, 22),\n",
|
|
" (2, 26),\n",
|
|
" (2, 37),\n",
|
|
" (2, 40),\n",
|
|
" (3, 9),\n",
|
|
" (3, 21),\n",
|
|
" (3, 30),\n",
|
|
" (3, 46),\n",
|
|
" (3, 53),\n",
|
|
" (3, 55),\n",
|
|
" (3, 57),\n",
|
|
" (4, 1),\n",
|
|
" (4, 16),\n",
|
|
" (4, 36),\n",
|
|
" (4, 42),\n",
|
|
" (4, 44),\n",
|
|
" (4, 48),\n",
|
|
" (5, 2),\n",
|
|
" (5, 12),\n",
|
|
" (5, 15),\n",
|
|
" (5, 25),\n",
|
|
" (5, 33),\n",
|
|
" (5, 36),\n",
|
|
" (5, 43),\n",
|
|
" (6, 9),\n",
|
|
" (6, 10),\n",
|
|
" (6, 15),\n",
|
|
" (6, 37),\n",
|
|
" (7, 4),\n",
|
|
" (7, 11),\n",
|
|
" (7, 25),\n",
|
|
" (7, 28),\n",
|
|
" (7, 59),\n",
|
|
" (8, 18),\n",
|
|
" (8, 20),\n",
|
|
" (8, 39),\n",
|
|
" (8, 46),\n",
|
|
" (9, 27),\n",
|
|
" (9, 44),\n",
|
|
" (9, 47),\n",
|
|
" (9, 50),\n",
|
|
" (9, 52),\n",
|
|
" (9, 59),\n",
|
|
" (10, 3),\n",
|
|
" (10, 14),\n",
|
|
" (10, 31),\n",
|
|
" (10, 32),\n",
|
|
" (10, 36),\n",
|
|
" (11, 1),\n",
|
|
" (11, 6),\n",
|
|
" (11, 14),\n",
|
|
" (11, 42),\n",
|
|
" (11, 55),\n",
|
|
" (12, 1),\n",
|
|
" (12, 31),\n",
|
|
" (12, 35),\n",
|
|
" (12, 59),\n",
|
|
" (13, 8),\n",
|
|
" (13, 10),\n",
|
|
" (13, 12),\n",
|
|
" (13, 17),\n",
|
|
" (13, 24),\n",
|
|
" (13, 28),\n",
|
|
" (13, 34),\n",
|
|
" (14, 21),\n",
|
|
" (14, 27),\n",
|
|
" (14, 28),\n",
|
|
" (14, 39),\n",
|
|
" (14, 52),\n",
|
|
" (14, 57),\n",
|
|
" (15, 5),\n",
|
|
" (15, 29),\n",
|
|
" (15, 57),\n",
|
|
" (16, 0),\n",
|
|
" (16, 25),\n",
|
|
" (16, 33),\n",
|
|
" (16, 38),\n",
|
|
" (16, 41),\n",
|
|
" (16, 48),\n",
|
|
" (16, 55),\n",
|
|
" (17, 7),\n",
|
|
" (17, 16),\n",
|
|
" (17, 25),\n",
|
|
" (17, 53),\n",
|
|
" (18, 1),\n",
|
|
" (18, 9),\n",
|
|
" (18, 36),\n",
|
|
" (18, 41),\n",
|
|
" (19, 12),\n",
|
|
" (19, 16),\n",
|
|
" (19, 20),\n",
|
|
" (19, 22),\n",
|
|
" (19, 28),\n",
|
|
" (19, 42),\n",
|
|
" (19, 47),\n",
|
|
" (19, 51),\n",
|
|
" (20, 2),\n",
|
|
" (20, 10),\n",
|
|
" (20, 24),\n",
|
|
" (20, 33),\n",
|
|
" (20, 45),\n",
|
|
" (20, 47),\n",
|
|
" (21, 14),\n",
|
|
" (21, 23),\n",
|
|
" (21, 29),\n",
|
|
" (21, 33),\n",
|
|
" (21, 42),\n",
|
|
" (21, 52),\n",
|
|
" (22, 2),\n",
|
|
" (22, 44),\n",
|
|
" (22, 55),\n",
|
|
" (23, 14),\n",
|
|
" (23, 34),\n",
|
|
" (23, 35),\n",
|
|
" (23, 55),\n",
|
|
" (24, 4),\n",
|
|
" (24, 7),\n",
|
|
" (24, 13),\n",
|
|
" (24, 24),\n",
|
|
" (24, 25),\n",
|
|
" (24, 27),\n",
|
|
" (24, 38),\n",
|
|
" (24, 42),\n",
|
|
" (24, 45),\n",
|
|
" (25, 16),\n",
|
|
" (25, 20),\n",
|
|
" (25, 22),\n",
|
|
" (25, 31),\n",
|
|
" (25, 36),\n",
|
|
" (25, 53),\n",
|
|
" (26, 5),\n",
|
|
" (26, 11),\n",
|
|
" (26, 20),\n",
|
|
" (26, 24),\n",
|
|
" (26, 50),\n",
|
|
" (26, 53),\n",
|
|
" (27, 2),\n",
|
|
" (27, 4),\n",
|
|
" (27, 16),\n",
|
|
" (27, 37),\n",
|
|
" (27, 47),\n",
|
|
" (27, 49),\n",
|
|
" (27, 58),\n",
|
|
" (28, 7),\n",
|
|
" (28, 33),\n",
|
|
" (28, 39),\n",
|
|
" (28, 45),\n",
|
|
" (28, 56),\n",
|
|
" (29, 10),\n",
|
|
" (29, 26),\n",
|
|
" (29, 32),\n",
|
|
" (29, 50),\n",
|
|
" (29, 54),\n",
|
|
" (30, 4),\n",
|
|
" (30, 22),\n",
|
|
" (30, 37),\n",
|
|
" (31, 17),\n",
|
|
" (31, 25),\n",
|
|
" (31, 26),\n",
|
|
" (31, 32),\n",
|
|
" (31, 37),\n",
|
|
" (31, 40),\n",
|
|
" (31, 47),\n",
|
|
" (32, 5),\n",
|
|
" (32, 13),\n",
|
|
" (32, 24),\n",
|
|
" (32, 36),\n",
|
|
" (32, 41),\n",
|
|
" (32, 46),\n",
|
|
" (32, 53),\n",
|
|
" (32, 59),\n",
|
|
" (33, 10),\n",
|
|
" (33, 23),\n",
|
|
" (33, 28),\n",
|
|
" (33, 34),\n",
|
|
" (33, 38),\n",
|
|
" (33, 42),\n",
|
|
" (33, 50),\n",
|
|
" (34, 28),\n",
|
|
" (34, 51),\n",
|
|
" (35, 4),\n",
|
|
" (35, 16),\n",
|
|
" (35, 46),\n",
|
|
" (35, 58),\n",
|
|
" (36, 4),\n",
|
|
" (36, 20),\n",
|
|
" (36, 55),\n",
|
|
" (37, 0),\n",
|
|
" (37, 1),\n",
|
|
" (37, 16),\n",
|
|
" (37, 18),\n",
|
|
" (37, 26),\n",
|
|
" (37, 34),\n",
|
|
" (37, 44),\n",
|
|
" (37, 56),\n",
|
|
" (38, 4),\n",
|
|
" (38, 13),\n",
|
|
" (38, 22),\n",
|
|
" (38, 32),\n",
|
|
" (38, 40),\n",
|
|
" (38, 45),\n",
|
|
" (39, 12),\n",
|
|
" (39, 17),\n",
|
|
" (39, 27),\n",
|
|
" (39, 30),\n",
|
|
" (39, 41),\n",
|
|
" (39, 43),\n",
|
|
" (39, 58),\n",
|
|
" (40, 1),\n",
|
|
" (40, 11),\n",
|
|
" (40, 22),\n",
|
|
" (40, 33),\n",
|
|
" (40, 37),\n",
|
|
" (40, 50),\n",
|
|
" (40, 53),\n",
|
|
" (41, 0),\n",
|
|
" (41, 5),\n",
|
|
" (41, 27),\n",
|
|
" (41, 45),\n",
|
|
" (41, 53),\n",
|
|
" (41, 55),\n",
|
|
" (42, 2),\n",
|
|
" (42, 9),\n",
|
|
" (42, 20),\n",
|
|
" (42, 21),\n",
|
|
" (42, 24),\n",
|
|
" (42, 36),\n",
|
|
" (42, 38),\n",
|
|
" (42, 42),\n",
|
|
" (43, 2),\n",
|
|
" (43, 6),\n",
|
|
" (43, 8),\n",
|
|
" (43, 25),\n",
|
|
" (44, 22),\n",
|
|
" (44, 23),\n",
|
|
" (44, 26),\n",
|
|
" (44, 28),\n",
|
|
" (44, 34),\n",
|
|
" (44, 37),\n",
|
|
" (44, 39),\n",
|
|
" (44, 42),\n",
|
|
" (44, 46),\n",
|
|
" (44, 47),\n",
|
|
" (44, 49),\n",
|
|
" (44, 59),\n",
|
|
" (45, 9),\n",
|
|
" (45, 10),\n",
|
|
" (45, 17),\n",
|
|
" (45, 31),\n",
|
|
" (45, 59),\n",
|
|
" (46, 18),\n",
|
|
" (46, 31),\n",
|
|
" (46, 33),\n",
|
|
" (46, 54),\n",
|
|
" (47, 1),\n",
|
|
" (47, 5),\n",
|
|
" (47, 10),\n",
|
|
" (48, 19),\n",
|
|
" (48, 23),\n",
|
|
" (48, 25),\n",
|
|
" (48, 35),\n",
|
|
" (48, 38),\n",
|
|
" (48, 51),\n",
|
|
" (49, 7),\n",
|
|
" (49, 20),\n",
|
|
" (49, 35),\n",
|
|
" (49, 50),\n",
|
|
" (50, 10),\n",
|
|
" (50, 20),\n",
|
|
" (50, 26),\n",
|
|
" (50, 42),\n",
|
|
" (50, 45),\n",
|
|
" (50, 55),\n",
|
|
" (51, 4),\n",
|
|
" (51, 6),\n",
|
|
" (51, 7),\n",
|
|
" (51, 10),\n",
|
|
" (51, 15),\n",
|
|
" (51, 19),\n",
|
|
" (51, 51),\n",
|
|
" (51, 58),\n",
|
|
" (52, 28),\n",
|
|
" (52, 32),\n",
|
|
" (52, 42),\n",
|
|
" (53, 15),\n",
|
|
" (53, 45),\n",
|
|
" (53, 59),\n",
|
|
" (54, 1),\n",
|
|
" (54, 7),\n",
|
|
" (54, 13),\n",
|
|
" (54, 19),\n",
|
|
" (54, 23),\n",
|
|
" (54, 27),\n",
|
|
" (54, 28),\n",
|
|
" (54, 35),\n",
|
|
" (54, 38),\n",
|
|
" (54, 43),\n",
|
|
" (54, 48),\n",
|
|
" (54, 51),\n",
|
|
" (55, 4),\n",
|
|
" (55, 26),\n",
|
|
" (55, 28),\n",
|
|
" (55, 57),\n",
|
|
" (56, 7),\n",
|
|
" (56, 11),\n",
|
|
" (56, 38),\n",
|
|
" (57, 14),\n",
|
|
" (57, 17),\n",
|
|
" (57, 18),\n",
|
|
" (57, 36),\n",
|
|
" (57, 47),\n",
|
|
" (58, 11),\n",
|
|
" (58, 29),\n",
|
|
" (58, 31),\n",
|
|
" (58, 40),\n",
|
|
" (58, 45),\n",
|
|
" (58, 56),\n",
|
|
" (59, 3),\n",
|
|
" (59, 28),\n",
|
|
" (59, 37),\n",
|
|
" (59, 43),\n",
|
|
" (59, 50)]"
|
|
]
|
|
},
|
|
"execution_count": 54,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"find_zeros(data)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 55,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"['987672345210988321089487678943210101985430123012901212349876',\n",
|
|
" '890581876347809451276596521058923432876543276529874301236765',\n",
|
|
" '081490932156918760345603430667898943109801983434565321245125',\n",
|
|
" '112387893045329654565012348766087652234712123403125430104034',\n",
|
|
" '201236794532134503456983289632128141045623010512036765295543',\n",
|
|
" '310145687621032012987674108543459031012654107696543894387654',\n",
|
|
" '498456546001221093474565432432569122101965298787645976578761',\n",
|
|
" '567307632120332387565478901201678233212874345676534589469450',\n",
|
|
" '569218986787454456010785832178876544589012321201225676354321',\n",
|
|
" '478123678796561234521896541069987235678987430390310101256910',\n",
|
|
" '312054569657320899634567892454100124017986543485436543267871',\n",
|
|
" '203765012348210798749656876363211345623477012576567654106565',\n",
|
|
" '104894343239345687658775965278901210786568943689658987265430',\n",
|
|
" '985787210101012210343189034107349809894329876756567456892121',\n",
|
|
" '276321895696523421221076121001256756765018549843498305743012',\n",
|
|
" '123450734789434322834565432890162125321567678732565214654012',\n",
|
|
" '043545643298545618965436901781878034450410589721056543204323',\n",
|
|
" '652634102187656709878927801652989876567323434874347890116454',\n",
|
|
" '701783214074327812567213452343567865018430128965236921327985',\n",
|
|
" '879898543265018903450102169603498984329543012340121023438876',\n",
|
|
" '930569856104345676543221078712321075655432121050123214589565',\n",
|
|
" '321478987645430189876330789610165034746583043269874303678456',\n",
|
|
" '430326786554321234565445698543278129837895650178965452102365',\n",
|
|
" '545415898545210765676324582344569100121298782348766567801476',\n",
|
|
" '696504305676905894889213001053213256780367091059654321945987',\n",
|
|
" '787413218789876103990102128967104345091452187768345670236896',\n",
|
|
" '898310129650145212850167034878545432187873677851210980167345',\n",
|
|
" '790101212341232101763258949889436782106924578960102398798201',\n",
|
|
" '889212303216987232654345656776521093345014467017681432120132',\n",
|
|
" '974322454307896342363214780345810894214323454178590541098743',\n",
|
|
" '865401965416787651654303291236989765201412963289487672347652',\n",
|
|
" '765432876545619650189432100387870652106507875670343781656761',\n",
|
|
" '765410987814308761276541087498761543017890124501289890967890',\n",
|
|
" '898321678903216654365650196501252102120987033215670767856981',\n",
|
|
" '456912565214327612984787767102343256761856144256781056743234',\n",
|
|
" '367803454323438703673298898234358543892349856105892343212101',\n",
|
|
" '219804456554549654560143567895569212876548761234987454101234',\n",
|
|
" '008512367567632103067654410766978103975432810125676655670543',\n",
|
|
" '127601898458903452198103328957860198786901912089985765781632',\n",
|
|
" '234534567321012560198712367046043245697850105678789854398701',\n",
|
|
" '103421673450523871237601452132154032106543214543210710239678',\n",
|
|
" '011210982567658964321546543012965124321432343058988720106549',\n",
|
|
" '320125671098576545690037012129876765010541012167349634218932',\n",
|
|
" '430134040123489836789128903456745895432672123453234545347451',\n",
|
|
" '549232132123498721654100190109832106701089098500104456956320',\n",
|
|
" '678943433001567890193289283254108987892128987612245437875410',\n",
|
|
" '217654456712346521089374374363201076985434376543336521056587',\n",
|
|
" '103450349809454434678765465478912345876548985965447899867898',\n",
|
|
" '212761212778765894501250104567656210230123476876534038769876',\n",
|
|
" '429843203989987765410343215698567340145696545123410125612345',\n",
|
|
" '343456117801256784320354210785458756968787034014567234501654',\n",
|
|
" '652107006901343098901235341812329647879674123456798012612703',\n",
|
|
" '567898215414332187612356756901410138984565012343898543563812',\n",
|
|
" '238987312323278076543349867812567221345694321032187623438910',\n",
|
|
" '109813408954109189801210789003498210210782107153098018542123',\n",
|
|
" '216701567867898276764325650101567367823473498544567129656034',\n",
|
|
" '345652101210567345123434543234989456910565567639875678798945',\n",
|
|
" '456543458325430410089545696545678321045876543320564549567876',\n",
|
|
" '434567869450321523679656787230109878236905452011254235650165',\n",
|
|
" '321018978761234334578765698101234569107812301232340123543234']"
|
|
]
|
|
},
|
|
"execution_count": 55,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"data"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"10a"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 58,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"841\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"def recursive_check(x,y,data,stage):\n",
|
|
" # foreach direction check if within bounds\n",
|
|
" for x,y in [(x,y) for x,y in [(x+1,y),(x-1,y),(x,y+1),(x,y-1)] if x>=0 and x < len(data) and y>=0 and y < len(data[0])]:\n",
|
|
" if int(data[x][y]) == stage:\n",
|
|
" if stage == 9:\n",
|
|
" yield (x,y)\n",
|
|
" else:\n",
|
|
" for solution in recursive_check(x,y,data,stage+1):\n",
|
|
" yield solution\n",
|
|
" else: \n",
|
|
" continue\n",
|
|
"\n",
|
|
"\n",
|
|
"summ = 0\n",
|
|
"for zero in find_zeros(data):\n",
|
|
" peaks = set(recursive_check(zero[0],zero[1],data,1))\n",
|
|
" summ += len(peaks) \n",
|
|
"\n",
|
|
"print(summ)\n",
|
|
" \n",
|
|
" \n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"# 10b"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 59,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"1875\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"def recursive_check(x,y,data,stage):\n",
|
|
" # foreach direction check if within bounds\n",
|
|
" for x,y in [(x,y) for x,y in [(x+1,y),(x-1,y),(x,y+1),(x,y-1)] if x>=0 and x < len(data) and y>=0 and y < len(data[0])]:\n",
|
|
" if int(data[x][y]) == stage:\n",
|
|
" if stage == 9:\n",
|
|
" yield (x,y)\n",
|
|
" else:\n",
|
|
" for solution in recursive_check(x,y,data,stage+1):\n",
|
|
" yield solution\n",
|
|
" else: \n",
|
|
" continue\n",
|
|
"\n",
|
|
"\n",
|
|
"summ = 0\n",
|
|
"for zero in find_zeros(data):\n",
|
|
" peaks = list(recursive_check(zero[0],zero[1],data,1))\n",
|
|
" summ += len(peaks) \n",
|
|
"\n",
|
|
"print(summ)\n",
|
|
" \n",
|
|
" \n"
|
|
]
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": "pdf",
|
|
"language": "python",
|
|
"name": "python3"
|
|
},
|
|
"language_info": {
|
|
"codemirror_mode": {
|
|
"name": "ipython",
|
|
"version": 3
|
|
},
|
|
"file_extension": ".py",
|
|
"mimetype": "text/x-python",
|
|
"name": "python",
|
|
"nbconvert_exporter": "python",
|
|
"pygments_lexer": "ipython3",
|
|
"version": "3.12.7"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 2
|
|
}
|