From 82f8e11ae4339c82a895d9511d43f9185b89dc0f Mon Sep 17 00:00:00 2001 From: Matthieu Bessat Date: Sun, 5 Dec 2021 16:52:20 +0100 Subject: [PATCH] day 1-5 --- day_1/code.py | 14 + day_1/code2.py | 18 + day_1/input1.txt | 11 + day_1/input2.txt | 2000 +++++++++++++++++ day_2/code.py | 23 + day_2/input1.txt | 6 + day_2/input2.txt | 1001 +++++++++ day_3/code.py | 89 + day_3/input1.txt | 12 + day_3/input2.txt | 1000 +++++++++ day_3/main | Bin 0 -> 16336 bytes day_3/main.c | 66 + day_3/tobin.py | 8 + day_4/code.py | 87 + day_4/input1.txt | 20 + day_4/input2.txt | 601 +++++ day_5/CHANGELOG.md | 5 + day_5/aocDay5.cabal | 32 + day_5/app/Main.hs | 4 + day_5/code | Bin 0 -> 33496 bytes day_5/code.hi | Bin 0 -> 1024 bytes day_5/code.hs | 75 + day_5/code.o | Bin 0 -> 27624 bytes day_5/code.py | 81 + .../build/aocDay5/autogen/Paths_aocDay5.hs | 51 + .../build/aocDay5/autogen/cabal_macros.h | 120 + .../aocDay5-0.1.0.0/x/aocDay5/cache/config | Bin 0 -> 2657 bytes .../package.conf.inplace/package.cache | Bin 0 -> 40 bytes .../package.conf.inplace/package.cache.lock | 0 .../aocDay5-0.1.0.0/x/aocDay5/setup-config | Bin 0 -> 49774 bytes day_5/dist-newstyle/cache/compiler | Bin 0 -> 12751 bytes day_5/dist-newstyle/cache/config | Bin 0 -> 2711 bytes day_5/dist-newstyle/cache/elaborated-plan | Bin 0 -> 31695 bytes day_5/dist-newstyle/cache/improved-plan | Bin 0 -> 48281 bytes day_5/dist-newstyle/cache/plan.json | 1 + day_5/dist-newstyle/cache/solver-plan | Bin 0 -> 28517 bytes day_5/dist-newstyle/cache/source-hashes | Bin 0 -> 112 bytes day_5/dist-newstyle/cache/up-to-date | Bin 0 -> 84 bytes .../packagedb/ghc-9.0.1/package.cache | Bin 0 -> 40 bytes .../packagedb/ghc-9.0.1/package.cache.lock | 0 day_5/example.txt | 10 + day_5/input.txt | 501 +++++ 42 files changed, 5836 insertions(+) create mode 100644 day_1/code.py create mode 100644 day_1/code2.py create mode 100644 day_1/input1.txt create mode 100644 day_1/input2.txt create mode 100644 day_2/code.py create mode 100644 day_2/input1.txt create mode 100644 day_2/input2.txt create mode 100644 day_3/code.py create mode 100644 day_3/input1.txt create mode 100644 day_3/input2.txt create mode 100644 day_3/main create mode 100644 day_3/main.c create mode 100644 day_3/tobin.py create mode 100644 day_4/code.py create mode 100644 day_4/input1.txt create mode 100644 day_4/input2.txt create mode 100644 day_5/CHANGELOG.md create mode 100644 day_5/aocDay5.cabal create mode 100644 day_5/app/Main.hs create mode 100644 day_5/code create mode 100644 day_5/code.hi create mode 100644 day_5/code.hs create mode 100644 day_5/code.o create mode 100644 day_5/code.py create mode 100644 day_5/dist-newstyle/build/x86_64-linux/ghc-9.0.1/aocDay5-0.1.0.0/x/aocDay5/build/aocDay5/autogen/Paths_aocDay5.hs create mode 100644 day_5/dist-newstyle/build/x86_64-linux/ghc-9.0.1/aocDay5-0.1.0.0/x/aocDay5/build/aocDay5/autogen/cabal_macros.h create mode 100644 day_5/dist-newstyle/build/x86_64-linux/ghc-9.0.1/aocDay5-0.1.0.0/x/aocDay5/cache/config create mode 100644 day_5/dist-newstyle/build/x86_64-linux/ghc-9.0.1/aocDay5-0.1.0.0/x/aocDay5/package.conf.inplace/package.cache create mode 100644 day_5/dist-newstyle/build/x86_64-linux/ghc-9.0.1/aocDay5-0.1.0.0/x/aocDay5/package.conf.inplace/package.cache.lock create mode 100644 day_5/dist-newstyle/build/x86_64-linux/ghc-9.0.1/aocDay5-0.1.0.0/x/aocDay5/setup-config create mode 100644 day_5/dist-newstyle/cache/compiler create mode 100644 day_5/dist-newstyle/cache/config create mode 100644 day_5/dist-newstyle/cache/elaborated-plan create mode 100644 day_5/dist-newstyle/cache/improved-plan create mode 100644 day_5/dist-newstyle/cache/plan.json create mode 100644 day_5/dist-newstyle/cache/solver-plan create mode 100644 day_5/dist-newstyle/cache/source-hashes create mode 100644 day_5/dist-newstyle/cache/up-to-date create mode 100644 day_5/dist-newstyle/packagedb/ghc-9.0.1/package.cache create mode 100644 day_5/dist-newstyle/packagedb/ghc-9.0.1/package.cache.lock create mode 100644 day_5/example.txt create mode 100644 day_5/input.txt diff --git a/day_1/code.py b/day_1/code.py new file mode 100644 index 0000000..e2a4f02 --- /dev/null +++ b/day_1/code.py @@ -0,0 +1,14 @@ +import fileinput + +previous = None +count = 0 +for i,line in enumerate(fileinput.input()): + try: + val = int(line.strip()) + except ValueError: + continue + if previous != None and val > previous: + count += 1 + previous = val + +print(count) diff --git a/day_1/code2.py b/day_1/code2.py new file mode 100644 index 0000000..5ed9bf1 --- /dev/null +++ b/day_1/code2.py @@ -0,0 +1,18 @@ +import fileinput + +data = [] +for inp in fileinput.input(): + val = inp.strip() + if val != '': + int_value = int(val) + data.append(int_value) +prec = None +count = 0 +for i in range(len(data) - 2): + s = data[i]+data[i+1]+data[i+2] + if prec != None and s > prec: + count += 1 + prec = s + +print(count) + diff --git a/day_1/input1.txt b/day_1/input1.txt new file mode 100644 index 0000000..60ac9b8 --- /dev/null +++ b/day_1/input1.txt @@ -0,0 +1,11 @@ +199 +200 +208 +210 +200 +207 +240 +269 +260 +263 + diff --git a/day_1/input2.txt b/day_1/input2.txt new file mode 100644 index 0000000..271cb3d --- /dev/null +++ b/day_1/input2.txt @@ -0,0 +1,2000 @@ +151 +150 +148 +147 +154 +155 +156 +161 +164 +165 +172 +174 +171 +172 +168 +170 +167 +168 +170 +177 +179 +146 +144 +168 +170 +174 +185 +184 +183 +185 +178 +179 +161 +164 +162 +167 +176 +175 +178 +179 +185 +183 +179 +174 +173 +174 +203 +199 +203 +201 +200 +210 +209 +207 +203 +204 +205 +208 +207 +215 +236 +238 +236 +238 +241 +242 +226 +225 +221 +218 +207 +209 +194 +191 +203 +202 +182 +160 +159 +191 +185 +171 +191 +185 +172 +178 +198 +200 +176 +181 +184 +185 +193 +205 +206 +207 +203 +229 +232 +242 +254 +250 +266 +265 +288 +278 +273 +274 +253 +255 +253 +246 +245 +247 +243 +246 +248 +251 +245 +243 +242 +259 +254 +259 +261 +274 +271 +273 +275 +283 +287 +286 +287 +286 +299 +295 +298 +300 +299 +302 +301 +300 +307 +302 +326 +323 +321 +318 +312 +302 +304 +301 +306 +309 +328 +326 +333 +346 +364 +369 +370 +358 +364 +363 +364 +361 +374 +373 +383 +385 +379 +378 +377 +353 +352 +353 +357 +355 +348 +356 +358 +359 +358 +357 +349 +354 +360 +341 +343 +342 +343 +347 +317 +322 +324 +328 +338 +350 +323 +365 +364 +384 +391 +395 +394 +385 +384 +367 +371 +376 +380 +390 +388 +387 +390 +401 +379 +378 +360 +363 +360 +370 +362 +349 +342 +324 +327 +338 +336 +339 +341 +337 +334 +319 +320 +317 +319 +314 +316 +350 +351 +352 +351 +349 +350 +352 +343 +347 +339 +337 +335 +338 +341 +342 +343 +345 +359 +361 +378 +382 +376 +381 +388 +389 +375 +368 +372 +365 +367 +369 +370 +369 +364 +363 +362 +364 +355 +372 +350 +356 +358 +363 +353 +354 +335 +327 +325 +326 +327 +342 +329 +327 +342 +337 +336 +334 +354 +343 +345 +341 +350 +344 +345 +352 +356 +388 +391 +406 +397 +405 +408 +402 +397 +398 +395 +410 +409 +411 +409 +413 +417 +416 +418 +424 +423 +424 +444 +438 +436 +459 +465 +463 +462 +470 +465 +473 +472 +464 +466 +468 +463 +469 +466 +469 +470 +457 +458 +457 +463 +478 +494 +507 +499 +498 +499 +510 +514 +517 +516 +537 +549 +559 +549 +541 +540 +541 +554 +557 +559 +547 +560 +563 +585 +609 +604 +605 +606 +612 +611 +601 +600 +588 +590 +584 +582 +583 +584 +580 +572 +552 +547 +538 +540 +526 +508 +491 +495 +512 +514 +504 +508 +509 +500 +495 +494 +493 +530 +528 +529 +522 +538 +519 +515 +502 +476 +467 +469 +470 +478 +477 +473 +475 +486 +512 +513 +517 +499 +503 +504 +505 +502 +503 +504 +505 +507 +516 +533 +539 +551 +552 +555 +551 +550 +548 +543 +534 +536 +524 +516 +534 +535 +533 +537 +545 +546 +545 +543 +544 +542 +574 +576 +575 +552 +551 +557 +558 +562 +555 +557 +574 +575 +564 +551 +543 +531 +534 +522 +525 +524 +522 +521 +524 +525 +538 +553 +561 +544 +542 +553 +556 +558 +557 +556 +558 +564 +551 +552 +545 +547 +571 +570 +571 +570 +569 +567 +569 +577 +581 +580 +577 +576 +574 +578 +568 +564 +567 +550 +527 +525 +524 +522 +520 +521 +522 +547 +550 +555 +554 +558 +559 +550 +552 +556 +557 +556 +567 +549 +548 +545 +565 +566 +570 +558 +545 +546 +545 +556 +552 +532 +535 +536 +535 +538 +543 +546 +553 +554 +577 +576 +577 +576 +568 +585 +583 +587 +575 +577 +588 +585 +583 +587 +577 +559 +561 +563 +559 +538 +545 +538 +539 +553 +559 +546 +549 +551 +552 +551 +542 +541 +543 +517 +514 +538 +550 +553 +530 +531 +539 +538 +551 +552 +550 +577 +596 +602 +599 +598 +615 +638 +641 +657 +642 +644 +645 +648 +644 +628 +626 +627 +595 +594 +595 +597 +601 +626 +635 +640 +641 +643 +649 +658 +654 +687 +662 +682 +678 +679 +709 +710 +716 +706 +705 +704 +701 +696 +701 +700 +703 +705 +707 +719 +698 +700 +703 +705 +708 +701 +735 +732 +712 +713 +715 +718 +719 +730 +731 +730 +736 +765 +768 +767 +764 +763 +791 +820 +852 +853 +860 +863 +865 +866 +850 +845 +823 +835 +820 +822 +816 +817 +816 +829 +830 +828 +809 +798 +771 +764 +778 +779 +769 +779 +789 +796 +801 +798 +800 +802 +804 +790 +788 +791 +778 +770 +763 +756 +739 +729 +719 +734 +737 +739 +740 +743 +745 +771 +772 +776 +793 +789 +791 +788 +789 +788 +792 +798 +801 +807 +801 +797 +793 +799 +804 +791 +790 +783 +784 +788 +786 +783 +784 +796 +791 +771 +764 +765 +768 +767 +770 +771 +781 +757 +750 +746 +755 +776 +777 +793 +797 +798 +795 +797 +800 +809 +807 +813 +843 +853 +869 +871 +873 +868 +861 +851 +852 +851 +843 +849 +835 +842 +843 +830 +828 +825 +826 +841 +871 +874 +872 +863 +862 +859 +861 +888 +895 +900 +901 +881 +878 +892 +888 +889 +893 +909 +893 +897 +910 +914 +912 +899 +912 +911 +908 +906 +907 +919 +926 +930 +932 +933 +934 +935 +937 +938 +934 +957 +937 +938 +945 +946 +937 +932 +960 +951 +973 +972 +978 +975 +976 +971 +973 +971 +974 +975 +976 +981 +980 +971 +972 +970 +972 +975 +977 +976 +978 +983 +1002 +1003 +996 +990 +978 +1012 +1021 +1027 +1005 +1021 +1032 +1031 +1026 +1036 +1044 +1018 +1021 +1042 +1050 +1052 +1050 +1052 +1053 +1055 +1041 +1032 +1029 +1027 +1028 +1041 +1054 +1047 +1046 +1050 +1064 +1029 +1040 +1039 +1036 +1037 +1026 +1033 +1034 +1025 +1029 +1025 +1026 +1024 +1025 +1021 +1022 +1019 +1016 +1020 +1008 +1003 +1006 +1040 +1037 +1044 +1042 +1044 +1040 +1048 +1044 +1054 +1037 +1034 +1040 +1041 +1019 +1015 +1021 +1042 +1043 +1037 +1035 +1032 +1034 +1043 +1060 +1050 +1047 +1052 +1057 +1060 +1059 +1047 +1051 +1053 +1040 +1046 +1043 +1041 +1042 +1046 +1030 +1029 +1010 +1022 +1023 +1025 +1023 +1032 +1050 +1051 +1047 +1044 +1050 +1057 +1058 +1061 +1076 +1077 +1071 +1081 +1084 +1118 +1128 +1123 +1126 +1119 +1121 +1118 +1120 +1119 +1110 +1118 +1108 +1118 +1115 +1130 +1131 +1120 +1139 +1134 +1136 +1113 +1114 +1118 +1119 +1114 +1106 +1077 +1086 +1088 +1082 +1095 +1099 +1100 +1110 +1114 +1101 +1116 +1103 +1102 +1103 +1111 +1112 +1109 +1150 +1172 +1169 +1170 +1183 +1188 +1186 +1205 +1200 +1205 +1212 +1207 +1211 +1227 +1228 +1222 +1225 +1226 +1221 +1224 +1225 +1224 +1228 +1220 +1221 +1222 +1243 +1247 +1248 +1259 +1258 +1246 +1254 +1251 +1260 +1261 +1251 +1252 +1275 +1273 +1269 +1291 +1285 +1274 +1275 +1278 +1277 +1287 +1299 +1300 +1275 +1281 +1268 +1298 +1297 +1299 +1274 +1270 +1271 +1278 +1256 +1248 +1240 +1224 +1225 +1230 +1233 +1230 +1210 +1209 +1207 +1213 +1226 +1224 +1226 +1230 +1226 +1227 +1223 +1234 +1229 +1228 +1227 +1226 +1232 +1230 +1235 +1208 +1212 +1213 +1216 +1215 +1216 +1239 +1241 +1245 +1247 +1253 +1260 +1252 +1262 +1272 +1266 +1267 +1268 +1266 +1270 +1277 +1280 +1282 +1280 +1271 +1273 +1272 +1284 +1282 +1285 +1286 +1287 +1286 +1287 +1288 +1292 +1304 +1299 +1288 +1307 +1315 +1311 +1301 +1311 +1345 +1364 +1359 +1358 +1373 +1374 +1369 +1377 +1378 +1381 +1383 +1378 +1385 +1386 +1389 +1386 +1365 +1358 +1352 +1353 +1360 +1362 +1361 +1352 +1353 +1361 +1360 +1366 +1359 +1349 +1359 +1348 +1374 +1376 +1374 +1359 +1369 +1368 +1374 +1356 +1358 +1359 +1351 +1338 +1339 +1340 +1323 +1343 +1352 +1345 +1340 +1337 +1338 +1364 +1362 +1358 +1355 +1352 +1356 +1374 +1376 +1372 +1370 +1386 +1384 +1378 +1381 +1382 +1385 +1387 +1386 +1376 +1378 +1376 +1372 +1368 +1363 +1362 +1364 +1365 +1369 +1368 +1364 +1349 +1374 +1375 +1376 +1388 +1364 +1363 +1371 +1370 +1372 +1375 +1364 +1366 +1355 +1356 +1370 +1371 +1353 +1356 +1358 +1356 +1351 +1364 +1373 +1368 +1369 +1371 +1372 +1376 +1362 +1349 +1344 +1336 +1335 +1334 +1333 +1337 +1336 +1338 +1344 +1345 +1344 +1331 +1332 +1331 +1328 +1330 +1329 +1334 +1333 +1332 +1328 +1330 +1329 +1340 +1341 +1338 +1339 +1344 +1356 +1359 +1360 +1380 +1389 +1362 +1359 +1350 +1368 +1372 +1377 +1386 +1383 +1388 +1389 +1401 +1399 +1404 +1394 +1390 +1391 +1390 +1392 +1408 +1398 +1388 +1352 +1349 +1327 +1333 +1327 +1303 +1295 +1297 +1296 +1298 +1306 +1305 +1312 +1323 +1327 +1325 +1327 +1328 +1317 +1321 +1320 +1319 +1301 +1308 +1327 +1328 +1326 +1318 +1323 +1326 +1330 +1344 +1347 +1352 +1355 +1354 +1364 +1365 +1350 +1326 +1345 +1350 +1351 +1367 +1362 +1370 +1372 +1399 +1415 +1406 +1405 +1407 +1414 +1405 +1406 +1410 +1400 +1395 +1396 +1389 +1382 +1387 +1394 +1392 +1391 +1377 +1374 +1373 +1361 +1376 +1381 +1380 +1365 +1374 +1356 +1354 +1353 +1339 +1347 +1348 +1347 +1348 +1330 +1332 +1317 +1322 +1321 +1327 +1326 +1335 +1340 +1341 +1331 +1328 +1315 +1313 +1321 +1333 +1339 +1334 +1340 +1339 +1333 +1332 +1335 +1345 +1346 +1348 +1344 +1347 +1356 +1355 +1356 +1357 +1358 +1353 +1354 +1355 +1354 +1364 +1366 +1364 +1359 +1362 +1367 +1349 +1353 +1350 +1327 +1340 +1370 +1369 +1364 +1360 +1357 +1356 +1349 +1343 +1345 +1348 +1352 +1351 +1369 +1349 +1358 +1361 +1359 +1367 +1368 +1370 +1382 +1383 +1386 +1388 +1375 +1373 +1372 +1373 +1390 +1392 +1391 +1387 +1371 +1357 +1351 +1361 +1362 +1365 +1367 +1382 +1383 +1382 +1379 +1375 +1373 +1378 +1376 +1374 +1376 +1368 +1375 +1376 +1386 +1387 +1388 +1396 +1414 +1423 +1433 +1434 +1421 +1419 +1417 +1433 +1435 +1415 +1432 +1453 +1454 +1452 +1451 +1459 +1462 +1466 +1494 +1483 +1480 +1476 +1472 +1468 +1469 +1466 +1443 +1448 +1457 +1458 +1452 +1449 +1442 +1444 +1446 +1445 +1441 +1443 +1448 +1449 +1450 +1458 +1454 +1457 +1458 +1460 +1458 +1463 +1469 +1468 +1459 +1437 +1450 +1447 +1472 +1471 +1480 +1481 +1473 +1480 +1476 +1477 +1464 +1472 +1481 +1485 +1489 +1487 +1488 +1491 +1470 +1477 +1486 +1492 +1493 +1494 +1495 +1485 +1493 +1497 +1492 +1499 +1501 +1502 +1514 +1515 +1517 +1518 +1516 +1514 +1517 +1519 +1517 +1518 +1516 +1496 +1519 +1522 +1524 +1528 +1529 +1531 +1524 +1526 +1528 +1546 +1538 +1561 +1570 +1569 +1574 +1572 +1571 +1572 +1564 +1571 +1576 +1575 +1576 +1575 +1580 +1579 +1564 +1561 +1566 +1555 +1546 +1565 +1567 +1562 +1563 +1537 +1538 +1524 +1532 +1533 +1567 +1573 +1574 +1569 +1571 +1570 +1571 +1576 +1571 +1556 +1554 +1547 +1551 +1538 +1540 +1518 +1521 +1522 +1532 +1551 +1555 +1557 +1580 +1582 +1583 +1582 +1579 +1580 +1581 +1595 +1596 +1599 +1595 +1609 +1622 +1635 +1636 +1662 +1666 +1667 +1670 +1666 +1669 +1673 +1672 +1671 +1661 +1662 +1683 +1685 +1682 +1684 +1692 +1693 +1692 +1696 +1669 +1681 +1682 +1686 +1702 +1704 +1706 +1707 +1711 +1714 +1720 +1711 +1708 +1710 +1709 +1713 +1720 +1721 +1722 +1723 +1706 +1709 +1710 +1726 +1739 +1738 +1740 +1747 +1732 +1715 +1712 +1706 +1708 +1695 +1691 +1693 +1691 +1696 +1692 +1699 +1696 +1699 +1683 +1672 +1674 +1692 +1731 +1730 +1705 +1697 +1713 +1715 +1722 +1721 +1707 +1708 +1717 +1713 +1714 +1712 +1703 +1701 +1707 +1703 +1705 +1699 +1734 +1729 +1741 +1739 +1754 +1743 +1746 +1744 +1745 +1751 +1779 +1774 +1775 +1773 +1776 +1783 +1782 +1780 +1778 +1776 +1771 +1780 +1748 +1743 +1740 +1739 +1740 +1731 +1732 +1733 +1730 +1742 +1744 +1743 +1751 +1750 +1751 +1738 +1746 +1750 +1753 +1742 +1744 +1743 +1735 +1734 +1731 +1740 +1725 +1727 +1709 +1716 +1717 +1718 +1712 +1713 +1708 +1707 +1723 +1725 +1726 +1744 +1745 +1752 +1753 +1740 +1739 +1736 +1733 +1741 +1751 +1758 +1769 +1760 +1777 +1786 +1787 +1791 +1792 +1819 +1825 +1829 +1828 +1810 +1812 +1811 +1813 +1818 +1820 +1819 +1832 +1847 +1846 +1845 +1846 +1856 +1851 +1853 +1851 +1860 +1849 +1854 +1879 +1864 +1851 +1852 +1851 +1872 +1879 +1883 +1876 +1883 +1884 +1888 +1887 +1877 +1900 +1903 +1912 +1913 +1899 +1915 +1919 +1916 +1917 +1918 +1932 +1929 +1932 +1951 +1962 +1977 +1972 +1951 +1943 +1942 +1947 +1951 +1974 +1977 +1979 +1975 +1932 +1917 +1919 +1927 +1932 +1929 +1927 +1929 +1928 +1922 +1923 +1929 +1938 +1923 +1910 +1921 +1922 +1920 +1903 +1905 +1895 +1894 +1923 +1924 +1921 +1924 +1926 +1924 +1951 +1968 +1974 +1976 +1995 +2006 +1991 +1990 +1989 +1981 +1971 +1959 +1951 +1955 +1953 +1964 +1963 +1939 +1946 +1943 +1941 +1938 +1927 +1926 +1925 +1957 +1937 +1939 +1942 +1939 +1952 +1961 +1976 +1977 +1989 +1991 +1965 +1966 +1955 +1934 +1935 +1929 +1944 +1945 +1935 +1942 +1970 +1969 +1942 +1941 +1966 +1965 +1934 +1935 +1953 +1942 +1943 +1947 +1964 +1961 +1963 +1969 diff --git a/day_2/code.py b/day_2/code.py new file mode 100644 index 0000000..4fbf3b6 --- /dev/null +++ b/day_2/code.py @@ -0,0 +1,23 @@ +import fileinput + +data = [] +for inp in fileinput.input(): + val = inp.strip() + if val != '': + cmd, v = val.split() + data.append((cmd, int(v))) + +horizontal = 0 +aim = 0 +depth = 0 +for cmd, val in data: + if cmd == 'forward': + horizontal+=val + depth+=aim*val + if cmd == 'down': + aim+=val + if cmd == 'up': + aim-=val +print(horizontal, depth) + +print(horizontal* depth) diff --git a/day_2/input1.txt b/day_2/input1.txt new file mode 100644 index 0000000..b7172ac --- /dev/null +++ b/day_2/input1.txt @@ -0,0 +1,6 @@ +forward 5 +down 5 +forward 8 +up 3 +down 8 +forward 2 diff --git a/day_2/input2.txt b/day_2/input2.txt new file mode 100644 index 0000000..3048eb8 --- /dev/null +++ b/day_2/input2.txt @@ -0,0 +1,1001 @@ +forward 2 +down 2 +forward 6 +forward 8 +down 8 +up 2 +forward 7 +forward 8 +down 1 +down 8 +forward 9 +down 1 +down 9 +up 9 +forward 8 +down 4 +forward 1 +forward 4 +up 3 +down 1 +up 4 +up 7 +down 8 +forward 8 +forward 9 +down 7 +forward 2 +up 2 +forward 3 +forward 2 +down 8 +up 3 +up 3 +forward 6 +down 5 +up 6 +down 3 +forward 4 +forward 2 +down 9 +down 9 +down 1 +down 3 +forward 7 +forward 4 +down 1 +down 3 +up 3 +up 9 +up 2 +down 6 +down 7 +forward 9 +down 7 +forward 3 +forward 5 +up 6 +up 4 +down 8 +down 6 +down 4 +up 2 +up 7 +up 8 +up 1 +forward 7 +up 9 +down 6 +up 7 +up 3 +forward 8 +up 9 +down 9 +up 2 +forward 8 +forward 4 +up 3 +forward 4 +up 2 +down 3 +up 7 +down 7 +forward 6 +forward 5 +forward 2 +forward 3 +up 2 +down 3 +up 6 +forward 2 +forward 4 +up 2 +down 6 +up 3 +down 8 +forward 7 +forward 8 +forward 3 +down 6 +forward 5 +forward 8 +down 6 +forward 4 +down 3 +up 2 +down 6 +down 5 +forward 8 +forward 8 +up 1 +down 9 +down 6 +forward 8 +up 1 +down 7 +forward 7 +up 4 +up 6 +down 3 +down 1 +up 9 +forward 8 +forward 1 +forward 2 +forward 2 +up 9 +up 4 +down 8 +up 9 +down 8 +forward 1 +forward 6 +up 3 +down 4 +forward 1 +down 5 +down 7 +down 9 +forward 1 +forward 1 +forward 5 +up 2 +up 4 +down 8 +forward 3 +forward 1 +forward 4 +down 6 +up 4 +up 4 +down 6 +up 9 +down 2 +up 6 +forward 5 +forward 5 +forward 1 +down 2 +up 1 +forward 6 +up 7 +forward 4 +up 3 +forward 3 +forward 8 +up 5 +forward 4 +up 3 +forward 9 +down 4 +down 8 +down 8 +forward 8 +forward 4 +down 5 +up 8 +down 4 +up 9 +forward 5 +up 3 +forward 8 +forward 3 +forward 7 +forward 5 +forward 3 +down 4 +down 3 +forward 9 +down 9 +forward 3 +down 7 +forward 8 +down 3 +forward 7 +forward 5 +up 6 +up 1 +forward 3 +down 3 +up 3 +down 1 +forward 8 +forward 5 +forward 1 +forward 6 +forward 9 +up 5 +down 5 +down 9 +forward 2 +down 5 +down 4 +up 9 +forward 9 +forward 7 +down 8 +up 3 +down 7 +down 1 +down 2 +down 4 +forward 2 +forward 7 +forward 3 +down 5 +down 3 +up 3 +down 4 +down 1 +forward 9 +down 1 +forward 4 +forward 6 +forward 7 +down 8 +up 4 +up 3 +down 4 +forward 5 +down 9 +down 1 +down 9 +up 9 +forward 6 +forward 7 +down 2 +up 1 +forward 8 +up 3 +forward 9 +forward 1 +up 9 +down 4 +forward 8 +forward 4 +forward 3 +forward 7 +forward 1 +forward 5 +forward 5 +forward 7 +down 8 +forward 1 +up 8 +forward 7 +up 8 +forward 2 +forward 7 +forward 3 +down 2 +forward 2 +forward 6 +down 7 +down 1 +up 2 +down 7 +up 3 +down 8 +down 4 +forward 2 +down 6 +forward 4 +down 8 +down 9 +forward 2 +down 2 +down 1 +forward 7 +up 2 +down 2 +forward 8 +forward 3 +down 9 +down 4 +down 5 +forward 6 +forward 2 +down 7 +up 7 +forward 1 +down 7 +down 3 +up 5 +down 8 +down 2 +down 2 +up 1 +forward 6 +up 2 +down 3 +up 1 +down 9 +forward 5 +forward 5 +up 5 +down 1 +down 7 +down 2 +forward 5 +down 6 +up 6 +forward 3 +down 1 +up 3 +forward 3 +down 7 +forward 5 +down 8 +down 5 +down 7 +down 7 +down 2 +forward 8 +down 7 +down 2 +up 7 +down 6 +down 8 +up 7 +forward 5 +up 8 +down 1 +forward 5 +down 2 +forward 3 +down 9 +down 7 +forward 3 +up 9 +up 7 +down 5 +down 3 +forward 3 +down 7 +forward 6 +forward 2 +up 9 +down 6 +up 4 +down 3 +up 3 +up 6 +up 1 +down 1 +down 7 +forward 7 +down 1 +up 1 +forward 6 +down 2 +up 6 +forward 4 +down 9 +forward 1 +forward 3 +down 1 +forward 9 +forward 1 +forward 5 +down 1 +down 8 +down 7 +down 7 +down 3 +up 1 +down 6 +down 2 +forward 3 +forward 8 +down 6 +down 8 +down 1 +down 6 +forward 5 +down 2 +down 6 +forward 7 +down 6 +forward 2 +forward 3 +down 8 +forward 4 +down 5 +down 1 +up 7 +forward 3 +forward 1 +forward 9 +forward 5 +down 2 +forward 6 +down 1 +up 3 +forward 6 +forward 5 +down 3 +down 6 +forward 2 +forward 3 +down 9 +up 4 +up 9 +up 1 +forward 6 +down 6 +forward 9 +forward 9 +down 6 +forward 4 +down 6 +forward 6 +forward 2 +forward 8 +forward 2 +down 2 +forward 6 +forward 4 +forward 2 +up 1 +down 2 +forward 7 +forward 2 +down 9 +forward 2 +forward 1 +down 8 +forward 4 +forward 7 +up 3 +down 2 +forward 4 +up 6 +down 1 +forward 6 +forward 3 +down 3 +down 3 +forward 7 +forward 9 +forward 5 +forward 9 +down 3 +down 3 +up 7 +down 2 +forward 1 +forward 3 +up 1 +forward 6 +down 6 +down 4 +down 2 +down 3 +down 1 +up 6 +forward 5 +down 6 +forward 2 +down 7 +forward 4 +down 2 +down 7 +down 6 +forward 3 +forward 1 +forward 6 +down 3 +forward 3 +up 1 +forward 5 +down 2 +up 1 +down 2 +up 5 +down 2 +up 3 +down 7 +up 6 +down 9 +forward 1 +forward 3 +down 9 +up 9 +down 4 +down 1 +forward 7 +forward 6 +up 1 +forward 5 +down 4 +up 4 +forward 7 +forward 6 +down 9 +up 9 +up 6 +up 6 +forward 6 +up 4 +forward 7 +down 4 +up 1 +forward 3 +down 5 +down 5 +up 2 +down 6 +forward 2 +up 2 +forward 1 +up 7 +up 8 +up 7 +down 3 +forward 5 +forward 9 +up 9 +down 7 +forward 5 +up 8 +down 9 +forward 6 +forward 1 +forward 3 +down 5 +up 4 +up 8 +down 5 +forward 5 +up 9 +down 7 +up 3 +forward 4 +down 1 +forward 1 +down 4 +forward 8 +up 8 +forward 4 +forward 5 +forward 6 +forward 2 +forward 5 +forward 6 +up 9 +down 3 +up 6 +down 3 +down 1 +down 2 +down 7 +down 9 +up 8 +down 5 +forward 4 +down 9 +forward 8 +forward 9 +down 3 +forward 4 +up 6 +forward 4 +forward 4 +down 6 +up 4 +down 4 +forward 9 +down 5 +down 7 +forward 9 +forward 4 +down 7 +down 2 +down 5 +down 4 +forward 5 +down 5 +forward 8 +forward 9 +forward 2 +down 8 +forward 9 +down 2 +forward 3 +up 6 +up 5 +down 9 +down 1 +up 7 +forward 9 +forward 9 +forward 2 +down 5 +up 5 +down 1 +forward 8 +forward 7 +down 7 +down 8 +down 1 +forward 5 +down 3 +forward 4 +down 1 +down 5 +forward 9 +up 1 +down 4 +down 7 +forward 8 +up 9 +up 6 +forward 4 +up 1 +forward 9 +down 6 +up 7 +down 8 +up 2 +forward 9 +up 6 +down 1 +up 7 +down 5 +down 3 +forward 2 +down 7 +forward 5 +forward 4 +down 4 +up 7 +down 5 +up 4 +forward 9 +forward 6 +forward 4 +down 8 +forward 1 +down 2 +forward 2 +down 3 +up 6 +forward 4 +down 5 +up 8 +forward 6 +forward 4 +up 4 +forward 5 +forward 3 +down 8 +forward 9 +forward 1 +forward 7 +down 8 +up 5 +forward 6 +down 4 +forward 3 +forward 7 +forward 2 +down 1 +up 5 +up 4 +down 8 +forward 3 +forward 8 +down 8 +forward 3 +up 9 +forward 9 +forward 2 +forward 7 +down 9 +up 5 +forward 7 +down 4 +up 4 +up 6 +down 2 +up 9 +up 7 +forward 4 +down 5 +up 4 +forward 3 +down 4 +down 7 +down 7 +up 7 +down 9 +down 9 +forward 7 +up 2 +forward 4 +forward 4 +forward 8 +forward 2 +down 1 +up 8 +down 9 +forward 1 +forward 4 +down 5 +down 3 +forward 3 +forward 1 +up 4 +down 6 +forward 2 +down 5 +down 1 +down 2 +forward 2 +down 3 +forward 6 +down 6 +down 3 +forward 9 +up 6 +up 9 +down 9 +up 5 +down 1 +down 1 +down 6 +forward 6 +forward 5 +forward 5 +forward 6 +down 8 +up 4 +down 3 +down 8 +down 9 +down 4 +down 7 +forward 2 +up 5 +forward 2 +forward 2 +forward 4 +down 4 +down 3 +forward 6 +forward 9 +down 9 +forward 4 +down 9 +down 2 +forward 1 +down 2 +up 3 +forward 2 +down 9 +up 5 +down 9 +forward 9 +forward 8 +down 1 +down 6 +up 2 +up 9 +forward 7 +up 1 +down 1 +down 3 +up 5 +down 2 +up 5 +down 7 +up 7 +up 8 +forward 2 +forward 3 +down 4 +forward 6 +up 3 +forward 7 +forward 7 +forward 7 +forward 7 +forward 8 +forward 4 +up 1 +forward 6 +forward 9 +forward 2 +down 3 +up 8 +down 9 +down 3 +down 8 +up 9 +down 6 +up 6 +up 9 +forward 9 +down 9 +forward 6 +forward 1 +down 3 +up 2 +forward 1 +up 2 +up 1 +forward 2 +down 1 +up 4 +forward 9 +down 5 +up 9 +down 4 +forward 4 +forward 1 +down 8 +forward 8 +down 5 +forward 5 +forward 7 +forward 6 +forward 7 +down 7 +down 3 +forward 9 +forward 6 +down 7 +forward 3 +forward 2 +down 1 +forward 2 +forward 5 +up 7 +up 7 +forward 2 +up 1 +forward 2 +up 2 +up 2 +up 6 +forward 4 +down 2 +up 3 +down 4 +down 7 +down 6 +forward 6 +forward 5 +forward 8 +forward 9 +up 1 +down 9 +up 6 +down 1 +up 1 +down 5 +forward 2 +forward 9 +forward 9 +up 4 +up 2 +forward 8 +up 4 +down 3 +down 8 +forward 2 +down 3 +down 8 +forward 2 +down 6 +down 8 +down 1 +up 4 +down 1 +forward 2 +up 7 +up 8 +down 8 +down 8 +forward 8 +down 1 +down 2 +down 1 +forward 9 +forward 5 +forward 8 +forward 7 +down 9 +down 2 +down 8 +forward 9 +down 3 +forward 4 +forward 1 +down 4 +forward 9 +up 6 +forward 6 +forward 7 +forward 7 +forward 6 +forward 8 +down 4 +forward 7 +down 8 +up 1 +forward 2 +down 1 +up 7 +forward 6 +up 9 +down 4 +up 4 +forward 1 +down 7 +down 2 +forward 4 +forward 4 +down 4 +down 2 +forward 5 +forward 9 +down 4 +down 5 +down 6 +up 9 +down 2 +up 4 +forward 7 +forward 5 +forward 1 +forward 9 +down 7 +up 4 +up 7 +forward 5 +up 8 +forward 2 +down 3 +up 1 +down 4 +forward 4 +forward 3 +forward 9 +forward 9 +down 9 +down 9 +up 7 +forward 4 +forward 9 +down 5 +down 5 +up 7 +up 4 +forward 9 +up 5 +down 2 +forward 5 +down 1 +forward 2 +down 6 +down 9 +forward 2 +up 4 +forward 6 +forward 6 +down 1 +up 8 +forward 5 +forward 9 +forward 6 +forward 4 +forward 9 +forward 2 +forward 5 +down 6 +up 4 +forward 2 +up 1 +forward 5 + diff --git a/day_3/code.py b/day_3/code.py new file mode 100644 index 0000000..b31e651 --- /dev/null +++ b/day_3/code.py @@ -0,0 +1,89 @@ +import fileinput + +data = [] +for inp in fileinput.input(): + val = inp.strip() + if val != '': + data.append(val) + +commons = [] +epsilon = [] +gamma = [] +charLen = len(data[0]) +lineLen = len(data) +for i in range(charLen): + count = 0 + for j in range(lineLen): + if data[j][i] == '1': + count += 1 + + status = 'lt' + #print(count, lineLen-count) + if count == (lineLen-count): status = 'eq' + if count > (lineLen-count): status = 'gt' + + if status == 'gt': + most,least = '1', '0' + else: + most,least = '0', '1' + + gamma.append(most) + epsilon.append(least) + commons.append((status, most, least)) + +g = int(''.join(gamma), 2) +e = int(''.join(epsilon), 2) + + +def get_distribution(nbs): + out = [] + for _i in range(len(nbs[0])): + count = 0 + for _j in range(len(nbs)): + if nbs[_j][_i] == '1': count += 1 + status = 'lt' + if count == (len(nbs)-count): status = 'eq' + if count > (len(nbs)-count): status = 'gt' + most,least = ('1', '0') if status == 'gt' else ('0', '1') + out.append((status, most, least)) + + return out + +def filter_item(mode, status, most, least, x, i, full): + print(f'{mode=}, {status=}, {most=}, {least=}, {x=}, {i=}, {full=}') + if mode: + if status == 'eq': + return x == '1' # oxygen + if x == most: return True + + if not mode: # co2 + if status == 'eq': + return x == '0' + if x == least: return True + + return False + +def rating(inp, mode = True): + nb = inp.copy() + i = 0 + while len(nb) > 1: + distri = get_distribution(nb) + print(f'= {len(nb)} -> {nb} {distri=}') + status, most, least = distri[i] + nb = list(filter(lambda x: filter_item(mode, status, most, least, x[i], i, x), nb)) + i += 1 + print(f'after filter: {nb}') + return int(nb[0], 2) + +print(g, e) +print(g*e) + +print(commons) +o = rating(data, True) +c = rating(data, False) +print('==') +print(o) # oxygen +print(c) # CO2 +print(o*c) + + diff --git a/day_3/input1.txt b/day_3/input1.txt new file mode 100644 index 0000000..665fd57 --- /dev/null +++ b/day_3/input1.txt @@ -0,0 +1,12 @@ +00100 +11110 +10110 +10111 +10101 +01111 +00111 +11100 +10000 +11001 +00010 +01010 \ No newline at end of file diff --git a/day_3/input2.txt b/day_3/input2.txt new file mode 100644 index 0000000..ae7cba8 --- /dev/null +++ b/day_3/input2.txt @@ -0,0 +1,1000 @@ +101010000100 +100001010100 +111100000101 +010000000010 +001101100010 +100110110101 +110100101101 +101010000001 +110011110000 +110000011011 +010111010100 +000101101001 +110001101100 +110100111101 +000101101100 +011111101000 +001011101100 +001011000110 +000011110110 +101110010111 +010011101001 +011111100101 +000001110101 +100001010010 +001110010101 +111010000110 +100111001111 +110010000101 +001111100001 +000110010101 +111001111011 +110000111111 +011101110001 +111001000011 +100110101011 +101101100010 +110100100101 +101011111000 +001101110011 +011000010011 +101010011111 +101011000110 +011111101001 +000011100000 +101111000101 +010000010111 +010110111000 +101110111100 +000001010011 +011011000001 +110101101011 +011110101100 +010001011100 +110111000011 +010101101001 +110011011111 +111101111101 +110011010111 +100100100110 +011100101111 +100111010000 +110000110111 +111000010111 +100001010001 +101010001111 +010101100111 +001010101111 +000001011011 +111100011110 +101110100010 +011111011110 +111110111011 +001110110111 +010011010000 +111011011101 +101110110100 +111010011111 +011011011101 +110001110100 +000010011010 +011101010101 +100000001000 +000100100001 +011110000000 +111100101010 +001100100010 +101001101110 +111010001110 +101011111101 +010011100101 +110111110101 +111000111010 +010000000111 +001101111111 +101101001100 +111001000100 +001100000000 +011011100100 +010011110000 +000001111110 +110011001010 +001001000110 +011011001101 +001111111111 +001010101010 +011110110100 +110101111111 +001111011101 +001101001111 +000000111100 +001101101010 +011000001001 +100100101101 +000000111011 +011101110011 +101011110010 +010110000010 +000101000000 +010100111011 +000111010011 +111011111000 +011110010000 +000011101001 +101001110000 +011101111101 +100010010100 +011100001011 +110011011000 +100010001110 +100101010111 +100101101110 +010010000011 +101011000111 +100100100111 +001000001000 +110010100011 +111100001011 +011010001000 +000011010000 +000111111011 +110100101110 +011110000011 +100101000011 +001100100001 +000010100011 +111101111011 +001010101101 +101110110010 +101011011010 +111010101011 +001110010001 +111110101011 +111111001011 +011100011101 +111100111001 +101011000000 +100000010111 +000101111101 +001011001110 +111101101010 +110001000000 +101111110100 +010111010110 +111011100001 +111100010100 +000100011100 +000011011011 +010000001001 +100100011001 +001010011110 +110001110011 +100010000110 +001110001101 +111001111111 +100100000011 +001001101011 +100101010011 +010111100010 +001110101100 +000110111111 +010011101101 +011101011011 +101000111100 +101100001011 +000011100011 +111110110011 +100011001101 +000100100011 +110011111010 +011001100111 +000011100110 +011001001110 +000111011110 +010101111101 +101100101011 +111110101111 +101101011010 +000101110111 +101011010010 +101100101010 +111101100100 +011100101000 +100111100010 +000110110011 +000000100001 +011110001110 +000111110010 +001100011001 +000001111001 +001111011111 +110011001111 +101010110101 +011010110100 +100010110011 +111111111101 +010001110011 +001101110000 +001110100011 +110010101011 +001010001000 +101010010000 +000101011111 +111000111101 +011101010110 +100111010011 +010010010000 +111000101101 +110000110010 +010110010001 +011101001110 +001010011111 +110011010001 +100000100001 +110110001100 +111110101101 +101110011011 +100101011011 +001010011010 +111101000110 +100010011000 +001101101001 +010001010100 +011100110010 +011010100110 +101111011110 +100011010111 +000011111110 +000110101011 +000011111000 +101110101100 +101100011110 +011010101011 +010001110111 +101010100001 +011011011001 +110011101011 +110001011111 +000010101100 +100000011101 +010000101000 +001111101100 +111100011100 +101110101101 +110111110100 +010101000001 +011110000001 +111100010101 +011110010001 +001101001100 +001011011100 +010110101111 +000100101011 +001100001010 +000101101111 +010111110110 +100010111011 +000110001011 +010111010011 +101001000101 +011000111101 +001001101001 +010100010000 +111111001000 +011110100011 +011000101100 +111101110100 +101010010110 +111101010111 +011001100100 +001110001110 +111110110000 +110100011111 +000101101110 +011000110011 +111001111110 +011110101110 +010011001101 +000011011111 +111001010111 +000000111101 +100101100100 +100001110101 +111100100101 +001110000110 +011100001101 +100100110011 +001100000100 +010011001110 +111111110011 +101110111111 +100111011000 +111110101110 +100010101100 +010101010000 +011101100001 +010010011101 +001111010111 +011100010101 +111101110101 +010100001110 +011000111000 +100110100101 +110101001111 +000011011010 +110101011010 +110010111100 +110111000101 +100111000100 +110101011111 +110110011101 +010111101010 +111001010011 +001001100100 +001101101101 +011100001100 +000110010011 +010101010110 +000011001101 +101001001100 +111011100011 +011011110100 +001110100001 +001000101001 +001100010111 +110000001101 +100010111101 +000110111101 +111001101101 +101110100000 +101001100101 +101100011001 +111010101101 +010101011100 +111100011000 +101111110101 +110111110011 +000000101100 +010110101011 +100111011011 +010111011000 +000101110100 +001010110101 +000010111011 +001110000001 +010000010000 +101110010101 +000000111110 +110100011000 +110110111100 +100010110100 +001000101110 +011001010101 +000100010001 +100011100010 +100011100000 +100010101001 +100101111000 +110000011110 +011000011101 +101101101101 +100110010110 +111110001000 +111001011010 +001110110001 +100000010101 +111101001111 +000010010100 +101100110001 +100101011000 +010101001010 +000111100000 +100010101000 +011101110100 +110110001110 +010001000110 +100101001100 +110000010111 +011000101111 +001111001000 +001110010010 +000010101101 +011000010000 +011011101010 +001010000101 +001010110010 +100001100000 +110111010000 +100010001101 +010011001011 +110011001110 +110111000110 +000001110010 +110010001001 +111100100100 +000101110110 +000100011001 +111111010101 +011010100000 +110111000100 +011101011010 +100011111110 +100001001101 +100111000001 +100001011111 +010010000010 +010111101011 +000001111100 +001100110111 +100111011100 +101000101100 +100111111111 +101101000110 +101111001111 +011010110101 +111000110000 +100010101101 +011110100100 +001101110101 +011101011000 +010101011000 +010110110011 +110101011110 +111010101100 +110111000000 +101011110110 +100111101010 +110001111110 +001000111001 +110001111011 +011010000100 +000101001010 +010111000001 +100000101000 +011010111001 +010011101110 +011011010101 +010110101100 +000010100110 +011111101011 +101111100110 +110010001100 +100000110100 +100111100011 +110111101010 +110010010000 +000011010010 +111000000111 +100101100101 +100011101110 +111110110110 +111001011000 +010100111101 +111110001100 +000110011101 +000010110010 +101000111011 +101000010100 +001001110001 +111010101111 +100011000101 +111011001100 +000000011100 +101010111001 +110111101000 +011000110001 +100100110010 +011101011101 +001011111111 +101011100110 +101011010111 +100001011010 +100100010100 +000010000010 +101101010111 +001011001101 +101100111010 +110101000001 +101101110100 +100100110111 +110001101001 +010101010001 +110110001111 +000011011101 +111111110001 +011110110101 +111100110101 +011111011011 +101001111110 +110101101010 +111001000001 +010100110001 +111011100101 +101011101101 +010010010001 +111110001001 +100100111000 +111110111100 +001000000000 +111110111101 +110010101101 +100110111110 +001010100010 +101011001001 +111101010100 +110011100000 +100111000111 +000011000110 +101010100000 +101011011000 +000010110110 +111100000011 +000000010010 +101010110111 +001111111000 +100011110101 +001001000010 +111011101110 +001111011100 +111011101010 +011011000101 +000001000010 +001000100100 +001110110011 +010101011011 +100011011010 +111000001110 +110010000000 +100101100010 +100111110011 +010011100001 +010001111010 +110101010101 +101111000001 +001001011100 +011110000110 +111001011110 +111001111010 +110100010011 +001000010010 +111110000010 +001000011001 +010100011101 +101111101011 +010111001111 +111011011010 +111101111010 +001111001111 +111110100000 +100000011000 +110100111100 +001011101000 +010011011001 +010000010011 +100010011010 +110001111111 +011010111011 +101001111100 +111110111000 +110000001100 +010000100101 +110101100111 +110011100010 +110001001101 +011101111011 +011010101101 +011000011111 +101011101001 +010100000010 +110100100010 +101010101101 +010000111101 +110100110110 +101100001100 +001011100011 +011110011001 +000000001010 +000010111001 +001000001010 +100101001010 +010000000011 +101011101100 +011101010111 +100100101001 +110100100100 +110101001101 +010100010111 +011001001100 +101100111001 +100001001011 +101100011111 +001111101101 +010011110101 +011100010011 +000010011101 +011110001101 +010001010011 +001001111001 +100111110100 +111011000111 +101010110000 +010010111011 +100010110111 +110011111110 +101111000111 +111011000000 +110001110001 +001100100011 +001011100111 +101001110010 +111001001101 +000010000011 +001011010010 +110111101110 +001000010110 +000111000111 +010001101010 +011001110101 +011000110000 +000111100100 +101010111101 +010010010010 +101111001001 +001100100111 +100111111000 +100000010011 +101101111001 +000110011110 +100001111101 +110000100001 +101110110110 +111010000010 +101010001010 +000001010000 +101011110100 +001101010110 +100011010011 +101011101110 +011101101101 +100101010110 +101011100111 +100010010000 +000101011101 +011000001000 +111011111110 +101001101111 +101000111001 +100010100111 +011111000101 +100010001111 +110011011101 +111101100111 +111101100000 +010111000100 +111010010010 +001011100100 +001000110100 +100110010111 +111010011100 +100101001101 +101001110110 +011001110010 +000111010110 +010000011101 +101100100001 +101001001000 +000111100011 +100110110000 +110011001001 +001011001001 +110101011100 +010001100101 +000000101010 +001001100001 +101001100011 +110001110101 +111001010010 +111011011000 +101101011000 +101001000010 +010110101110 +001000101101 +111001100111 +011110110000 +100100101100 +010100011111 +111000000000 +001000010111 +000000111010 +111011111001 +000110100011 +011110100110 +011011101100 +000000001101 +100101111011 +101110111001 +100111001110 +101110000101 +001110001111 +001000110010 +111101000011 +000100011011 +010111010101 +001100100000 +100101101011 +010111000011 +010101111010 +011000000111 +011011000110 +101001011100 +101101100000 +101110101001 +111000111110 +110010000010 +110111111001 +100100111011 +111011010011 +100001101000 +111110001110 +110100011010 +010101000111 +000110100111 +001111000101 +000111000011 +110001001001 +011000100010 +101001111011 +110001000101 +110111010011 +011100011011 +011011001011 +100101011111 +000000101000 +100001100110 +000100110101 +110100100000 +000101000001 +101111001100 +111101011100 +010001110110 +000001001100 +100100001110 +000100100111 +001101000001 +100011100110 +110110110010 +110001011001 +110001001000 +001011100010 +111011001011 +100101111110 +001001111011 +110101111010 +101100111100 +101111101000 +111110100101 +011110111101 +010110111101 +111010100010 +111100001100 +000001000111 +111011000100 +101000111000 +011101100100 +011000100000 +110001111101 +111010100011 +110010001010 +000101001111 +010110001001 +101101101010 +101100110010 +010010000111 +111110100010 +011011000011 +111111011011 +001011001000 +010001011101 +101101110010 +010001001101 +101000110101 +100100010011 +101010010001 +101010110011 +101110011110 +001010000110 +000011000000 +101111011000 +100001010110 +010111101101 +001110011011 +100100011110 +100001011001 +010100111111 +011101000110 +111010111011 +000010100100 +010011100111 +110001000011 +000100111010 +100111001000 +010110011000 +101101110101 +110101001011 +000101101010 +011110101111 +110111100111 +111100111011 +001000101011 +000010000101 +110101101101 +010000100111 +100110001011 +011001000110 +111101001000 +000010011000 +110101100001 +100100101111 +110111001010 +111011111011 +010111001000 +011011110011 +111011110010 +100011000111 +011001100011 +001111000000 +101001101010 +111111011101 +000100110001 +111010010000 +011111100000 +101110100101 +100011011110 +001000010001 +110110100000 +100011111011 +100011000001 +000011010100 +110101110110 +001100010010 +111011011001 +010101101111 +110111100100 +101000110100 +110001010100 +100010010111 +000111110111 +101101101100 +110100110001 +011011100000 +010011000000 +110101101000 +100011110001 +001011111101 +011000110110 +011101101010 +000011111100 +010110110111 +111101111001 +110111011101 +010001011000 +100110000101 +011101100101 +111101011000 +011110001000 +001011001100 +110110011111 +010111011100 +001111001110 +110010110110 +111011110110 +100000101100 +111100101011 +000100011110 +010111110000 +110011010101 +110000111110 +011100100011 +000101011000 +101110011100 +010111111000 +110010111101 +000001011010 +100010101011 +110001011100 +100100001100 +010101101010 +001101011110 +011011101111 +011100110011 +100011110000 +011110011111 +001011011101 +011010110010 +101000110111 +001001100111 +010111101111 +110110010001 +110001100000 +011001100101 +000110110111 +010010001100 +101100001010 +101010011110 +001010010110 +101001001001 +100110000010 +011101101111 +011010011001 +010111000010 +101001111111 +000010001001 +101000100011 +001110100100 +011011010000 +100111110101 +100110100000 +000101011001 +001100010110 +110011110010 +011000100001 +001100010101 +110010001101 +100011101001 +001100011110 +110101111101 +111111101000 +000011110001 +010000010100 +001101011001 +100111000000 +011100000101 +110110000000 +110011011001 +001100010011 +110011110110 +010010011111 +100001101001 +011100111100 +001011110001 +001010010011 +010000000101 +000100010011 +111101011001 +111100110110 +111000011100 +111101101110 +000101111011 +010101110101 +011110111111 +100000000011 +111000000011 +000010100000 +001110100010 +011001000010 +100001011110 +010100100111 +000111110011 +110100110101 +011001111100 +111101110110 +001101010101 +110110000010 +010101001101 +110100110000 +000100010101 +111011101001 +110111111111 +000000110010 +100111110110 +001000011111 +100100000101 +011001110110 +010010100110 +000101010111 +101001100000 +110011101110 +010001100001 +011100000100 +010100100000 +100000100100 diff --git a/day_3/main b/day_3/main new file mode 100644 index 0000000000000000000000000000000000000000..0a7a9dbfbfd1f04e95c1ee22a486d0f8ce97508f GIT binary patch literal 16336 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 literal 0 HcmV?d00001 diff --git a/day_3/main.c b/day_3/main.c new file mode 100644 index 0000000..682a114 --- /dev/null +++ b/day_3/main.c @@ -0,0 +1,66 @@ +#include +#include + +int tobin(char *inp) +{ + int len = strlen(inp); + printf("%d", len); + int out = 0; + int i = 0; + while (inp[i] != '\0') { + if (inp[i] == '1') { + out = out | (1 << len-i-1); + } + i++; + } + return out; +} + +int main(int argc, char** argv) { + char input; + char lines[1024][32]; + int lineCount = 0; + int charCount = 0; + while (scanf("%c", &input) == 1) { + if (input == '\n') { + charCount = 0; + lineCount++; + } else { + lines[lineCount][charCount] = input; + charCount++; + } + } + + charCount = strlen(lines[0]); + + char gamma[32]; + char epsilon[32]; + printf("Recorded %d %d \n", lineCount, charCount); + for (int i = 0; i < charCount; i++) { + int oneCount = 0; + for (int j = 0; j < lineCount; j++) { + printf("%c", lines[j][i]); + if (lines[j][i] == '1') + oneCount++; + } + printf("\n count: %d \n", oneCount); + if (oneCount > (lineCount-oneCount)) { + epsilon[i] = '0'; + gamma[i] = '1'; + } else { + epsilon[i] = '1'; + gamma[i] = '0'; + } + printf("\n"); + } + gamma[i+1] = '\0'; + epsilon[i+1] = '\0'; + printf("gamma: %s epsilon: %s \n", gamma, epsilon); + + int e = tobin(epsilon); + int g = tobin(gamma); + + printf("%d, %d \n", g, e); + printf("ans: %d \n", e*g); +} + diff --git a/day_3/tobin.py b/day_3/tobin.py new file mode 100644 index 0000000..5c475f8 --- /dev/null +++ b/day_3/tobin.py @@ -0,0 +1,8 @@ + +inp = '01011' +out = 0 +for i in range(0, len(inp)): + print(i, len(inp)-i-1) + if inp[i] == '1': + out = out | (1 << (len(inp)-i-1)) +print(out) diff --git a/day_4/code.py b/day_4/code.py new file mode 100644 index 0000000..f5a6969 --- /dev/null +++ b/day_4/code.py @@ -0,0 +1,87 @@ +import fileinput +import pprint + +data = [] +for inp in fileinput.input(): + val = inp.strip() + if val == '': + data.append(None) + if val != '': + data.append(val) + +# parse called numbers +to_be_called = list(map(int, data[0].strip().split(','))) + +# parse boards +boards = [] +currentBoard = [] +for line in data[2:]: + if line == None: + boards.append(currentBoard) + currentBoard = [] + continue + line_tmp = filter(lambda x: x != '', line.split(' ')) + line_tmp = map(int, line_tmp) + currentBoard.append(list(line_tmp)) + +def is_row_valid(row, called): + to_cmp = list(map(lambda x: x in called, row)) + return to_cmp == len(row)*[True] + +def board_do_win(deb, board, calling): + for row in board: + if is_row_valid(row, calling): + return True + + # generate columns + columns = [] + for column_index in range(len(board[0])): + current_c = [] + for row_index in range(len(board)): + current_c.append(board[row_index][column_index]) + columns.append(current_c) + # if deb: + # print(f'{columns=}') + + for column in columns: + if is_row_valid(column, calling): + return True + return False + +def get_wins(): + wins = [] + index_to_wins = [] + for i in range(len(to_be_called)): + calling = to_be_called[0:(i+1)] + for board_index,board in enumerate(boards): + if board_index in index_to_wins: + continue + deb = False + if calling == [7, 4, 9, 5, 11, 17, 23, 2, 0, 14, 21, 24, 10, 16, 13]: + print('DEBUG==') + deb = True + res = board_do_win(deb, board, calling) + if deb: + print(res, board) + if res: + wins.append((board_index, calling.copy(), board)) + index_to_wins.append(board_index) + return wins, index_to_wins + +def get_score_from_board(board, calling): + sum_unmarked = 0 + for row in board: + for e in row: + if e not in calling: + sum_unmarked += e + return sum_unmarked * calling[-1] + +score = 0 +wins, index_to_wins = get_wins() +pprint.pprint(wins) +print(f'{index_to_wins=}') +i, calling, winner = wins[-1] +score = get_score_from_board(winner, calling) + +pprint.pprint(winner) +print(f'{score=}') \ No newline at end of file diff --git a/day_4/input1.txt b/day_4/input1.txt new file mode 100644 index 0000000..f06791d --- /dev/null +++ b/day_4/input1.txt @@ -0,0 +1,20 @@ +7,4,9,5,11,17,23,2,0,14,21,24,10,16,13,6,15,25,12,22,18,20,8,19,3,26,1 + +22 13 17 11 0 + 8 2 23 4 24 +21 9 14 16 7 + 6 10 3 18 5 + 1 12 20 15 19 + + 3 15 0 2 22 + 9 18 13 17 5 +19 8 7 25 23 +20 11 10 24 4 +14 21 16 12 6 + +14 21 17 24 4 +10 16 15 9 19 +18 8 23 26 20 +22 11 13 6 5 + 2 0 12 3 7 + diff --git a/day_4/input2.txt b/day_4/input2.txt new file mode 100644 index 0000000..ba441b7 --- /dev/null +++ b/day_4/input2.txt @@ -0,0 +1,601 @@ +42,32,13,22,91,2,88,85,53,87,37,33,76,98,89,19,69,9,62,21,38,49,54,81,0,26,79,36,57,18,4,40,31,80,24,64,77,97,70,6,73,23,20,47,45,51,74,25,95,96,58,92,94,11,39,63,65,99,48,83,29,34,44,75,55,17,14,56,8,82,59,52,46,90,5,41,60,67,16,1,15,61,71,66,72,30,28,3,43,27,78,10,86,7,50,35,84,12,93,68 + +90 8 2 34 41 +11 67 74 71 62 +47 42 44 1 17 +21 55 12 91 6 +60 69 75 92 56 + +49 29 60 45 31 +94 51 73 33 67 +21 92 53 95 96 + 2 55 52 8 87 + 4 36 76 83 42 + +23 66 50 84 58 +62 98 81 76 57 +24 2 56 79 6 +55 0 16 64 38 +12 67 5 97 60 + +46 64 5 39 62 +16 82 13 77 52 +18 26 44 0 61 +25 7 43 42 50 +11 85 30 28 76 + +51 28 70 65 78 +62 88 30 36 96 +80 87 4 1 24 +63 22 41 79 34 +18 15 47 26 67 + +48 68 92 67 36 +54 50 71 98 21 +20 91 70 78 76 +87 97 44 3 93 +84 12 39 96 57 + +86 12 38 44 1 +10 87 74 53 66 +14 99 85 48 88 +59 33 76 71 31 +83 39 2 67 35 + +62 67 27 96 8 +81 23 78 33 48 +80 16 0 86 85 +26 54 29 32 89 +88 77 43 18 46 + +87 88 13 49 80 +78 19 81 56 11 +18 55 70 44 48 +31 37 24 95 28 +20 79 89 94 14 + +10 31 52 49 79 + 8 72 61 27 42 +73 4 11 43 91 +37 44 58 19 97 +96 63 90 13 74 + +71 27 87 40 99 +69 29 79 64 67 +85 66 4 28 30 +23 51 16 49 45 +92 12 74 1 75 + +46 52 40 12 44 + 0 73 20 86 1 +85 32 4 42 2 +21 33 56 39 9 +49 69 76 98 22 + +42 81 5 11 2 +57 50 77 8 24 +85 92 15 39 52 +37 70 36 79 67 +34 20 16 93 22 + +49 68 25 4 46 +17 57 77 59 54 +65 83 18 84 63 +36 74 61 22 71 +14 0 26 3 98 + + 1 80 93 66 58 +38 9 18 60 2 +70 46 35 88 11 +95 89 85 29 26 +82 68 25 15 53 + +97 80 28 17 7 +67 46 54 95 98 +38 74 42 57 79 +63 29 36 78 6 +90 60 84 10 14 + +18 88 8 96 0 +66 56 43 47 11 +69 73 14 71 25 +27 63 31 44 94 +75 95 84 74 13 + +92 9 98 17 74 +46 7 2 51 52 +21 60 5 87 15 +86 91 65 69 54 +61 85 1 62 53 + +89 80 4 0 68 +17 87 52 86 48 + 3 34 16 25 35 +13 38 49 66 50 +36 43 65 84 56 + + 9 93 54 92 55 +32 2 39 96 98 +58 72 52 83 97 +12 44 27 24 20 + 0 3 28 56 69 + +66 56 37 36 72 +35 49 40 43 44 +54 21 59 12 65 +74 25 22 80 98 +27 81 69 97 62 + +72 81 27 61 74 +26 50 79 13 53 +49 78 76 70 43 +51 64 99 46 67 +68 59 71 17 41 + +97 22 73 30 98 + 8 54 68 47 23 +70 89 41 52 61 +81 28 58 90 3 +88 40 86 46 43 + +94 6 46 43 59 +41 28 87 31 45 +83 26 66 81 1 +76 86 15 42 8 +67 47 54 4 77 + +96 56 22 67 2 +95 47 90 54 51 +78 79 29 82 48 +61 81 77 6 24 +71 93 98 26 75 + +95 7 77 94 64 +19 79 14 24 5 +50 48 4 71 22 +35 69 89 54 2 + 6 51 8 82 58 + +87 6 85 53 64 +50 43 80 61 15 +69 41 51 76 0 +78 26 37 62 16 +12 33 75 58 52 + +67 18 68 52 42 +37 30 49 31 69 +93 90 76 9 32 +60 84 73 94 17 +21 27 66 43 44 + +89 69 24 14 1 +88 33 50 2 63 +12 34 6 97 53 +28 26 55 8 32 +49 19 17 64 86 + +31 37 81 65 38 +96 18 45 19 58 +35 43 1 49 41 +46 85 92 53 15 + 3 34 8 14 21 + +35 68 61 45 39 +46 99 52 55 15 +74 14 10 62 17 + 8 66 98 89 91 +58 24 44 27 29 + +28 48 52 18 13 +17 35 20 11 49 +93 50 31 95 83 +27 33 79 44 80 + 4 96 23 65 68 + +70 78 31 86 36 +99 38 62 95 27 +52 74 25 80 41 +30 15 47 19 21 +77 23 53 9 7 + + 0 83 11 25 42 +50 64 76 67 72 +75 30 82 15 84 +58 17 87 61 33 +98 74 44 3 93 + + 5 40 78 24 11 +57 17 67 60 25 +37 76 28 56 35 +66 94 2 90 47 +86 10 85 46 45 + +63 12 7 74 14 +21 31 84 51 36 +66 20 25 46 41 +15 3 18 62 45 +35 78 93 2 9 + +90 9 33 63 41 +25 73 35 97 19 +99 96 45 71 22 +84 43 29 14 88 +42 8 1 78 68 + +98 84 38 95 27 +18 32 54 12 96 +56 50 2 45 53 +14 83 59 72 70 +22 41 28 9 78 + +89 94 50 33 73 +31 47 8 35 34 +43 92 95 21 51 +68 13 53 24 38 +80 69 44 87 83 + +32 82 75 73 91 +99 10 22 58 23 +86 9 42 81 40 +71 25 3 78 54 +80 15 83 5 4 + +58 1 3 11 24 +66 51 84 44 25 +37 54 12 27 97 +38 2 39 85 83 +89 91 33 79 59 + +49 22 12 84 60 +34 29 11 92 19 +97 41 88 53 38 +26 37 8 36 67 +91 3 90 52 46 + +77 35 76 56 20 +39 94 37 3 83 +78 81 66 29 4 +82 41 38 0 73 +59 16 88 15 30 + +34 69 74 90 33 + 9 47 71 94 10 +76 50 15 19 32 +49 89 31 21 92 +80 12 13 97 93 + +45 94 35 59 20 +18 46 14 36 30 + 6 78 84 38 99 + 5 4 90 92 63 +34 24 26 75 3 + +80 39 1 93 55 +67 71 30 44 76 +38 13 73 21 8 +11 47 46 69 29 +15 57 95 52 34 + +45 86 88 80 19 + 3 5 55 36 90 +54 85 44 18 39 +57 92 42 25 77 +43 0 12 1 24 + +74 71 83 29 25 +56 12 52 33 64 +68 94 97 14 15 + 7 48 24 80 5 +54 87 35 1 66 + +55 50 73 72 36 +17 80 87 68 90 + 8 33 81 1 51 +67 61 71 54 95 +93 98 27 56 0 + +19 32 63 6 98 +13 38 23 28 8 + 5 31 66 72 39 +99 46 2 64 14 +91 83 35 85 10 + +67 85 49 68 37 + 8 36 31 81 18 +74 61 20 80 50 +34 23 42 52 39 +21 14 22 58 54 + +16 14 69 13 81 +21 96 62 7 5 +95 52 0 67 24 + 6 30 65 66 86 +28 25 85 56 15 + + 4 41 21 86 32 +95 23 63 28 2 + 9 16 37 84 14 +92 22 71 42 5 +46 65 69 81 57 + +45 20 46 44 22 +62 93 78 58 25 +91 38 29 68 24 +21 55 71 43 26 +64 76 84 80 99 + +92 67 43 5 12 + 2 64 46 15 96 +95 75 73 38 30 +10 65 20 39 26 +36 16 25 27 88 + + 9 62 18 58 34 +85 80 36 2 48 +16 60 75 72 51 +39 22 32 61 54 +40 44 23 87 53 + +93 69 56 4 22 +73 51 24 53 19 +83 98 77 94 59 +52 70 15 40 48 +60 89 67 92 85 + +48 72 42 80 22 +99 49 11 77 4 +28 24 1 63 51 +85 93 62 7 78 +35 32 3 21 86 + +36 75 67 79 34 +20 8 71 6 5 +50 61 14 52 81 +26 37 0 80 77 +93 47 86 54 94 + +50 19 68 54 80 +81 12 33 87 24 +28 40 37 30 31 +41 51 15 27 97 +67 70 14 77 86 + +89 57 48 37 27 +44 46 29 63 20 +74 88 25 68 76 +18 28 91 59 58 +99 77 62 64 83 + +22 5 86 37 42 +47 69 87 34 89 +64 33 18 56 51 +30 49 11 79 17 +61 80 0 29 57 + + 7 82 87 15 83 +76 43 92 1 97 + 0 46 2 86 6 +48 27 29 61 67 +53 10 64 93 77 + +65 16 23 26 87 +58 5 25 97 94 +43 7 39 69 35 +62 81 56 13 28 +76 12 37 14 93 + +90 81 15 55 23 +58 40 8 56 76 +83 7 78 89 47 +65 70 13 48 42 +16 69 66 52 46 + +30 38 20 32 94 +91 96 34 23 90 +16 24 49 50 86 +65 19 56 7 66 +80 60 74 71 11 + +60 77 54 25 22 + 9 61 68 6 89 +15 71 10 84 41 + 1 47 8 43 63 +69 57 85 24 81 + +54 83 73 52 49 +69 96 31 57 44 +19 66 24 6 55 +91 84 20 3 27 + 7 9 71 43 75 + +90 72 15 99 2 +73 56 48 28 62 +40 75 0 59 31 +43 67 44 24 77 +98 35 4 3 37 + + 2 85 72 39 49 +58 25 91 69 19 +34 8 57 42 55 +80 21 51 64 30 +28 32 82 84 6 + +33 77 39 13 12 +86 21 96 82 94 +78 92 42 45 70 +31 22 60 80 67 +79 27 93 55 65 + +49 90 73 72 10 +98 89 77 88 12 +83 3 31 47 21 +65 26 93 55 53 + 5 95 22 8 63 + +79 88 11 62 25 +85 14 77 4 19 +41 31 83 26 67 +46 98 74 99 2 +44 53 70 36 52 + +21 33 15 57 53 +56 91 25 69 10 +52 59 73 96 87 +65 71 14 37 2 +39 89 29 83 64 + +88 38 45 39 20 +99 72 61 96 4 +23 24 67 49 80 +77 6 65 76 18 +59 51 78 33 46 + +44 22 9 90 83 +93 50 2 54 26 +68 71 43 85 41 +38 20 6 64 24 +81 39 33 56 27 + +98 1 69 30 38 +67 52 79 31 0 +24 41 82 55 73 +33 66 64 20 7 +65 9 14 70 94 + +59 63 65 25 1 +36 85 61 82 50 +52 3 70 30 43 +79 57 31 71 76 +19 97 93 77 49 + +60 45 90 32 74 +77 64 58 44 43 +71 49 37 21 46 +50 67 1 24 15 +14 22 0 40 23 + +65 87 81 64 28 +53 80 23 76 77 +49 14 50 2 35 +85 26 88 94 30 +79 18 68 15 45 + + 6 48 38 63 92 +51 45 58 4 76 +78 40 22 17 55 +79 12 66 61 5 +68 74 0 93 89 + +66 4 65 71 77 +47 35 38 83 64 +53 16 9 56 25 +92 81 55 60 33 +80 24 73 0 26 + +26 29 55 76 38 +79 52 91 84 39 +50 57 37 34 71 +33 31 68 92 24 +81 95 5 70 8 + +83 64 11 67 42 +97 29 27 4 78 +23 10 48 71 81 +80 74 86 17 36 +61 14 85 21 96 + +18 8 7 88 25 +59 5 28 57 69 +64 54 16 70 72 +13 75 71 33 2 +60 55 46 51 32 + +23 89 63 96 88 +71 66 9 53 65 +56 46 29 95 80 +44 94 90 3 5 +11 99 59 60 78 + +42 33 81 25 0 +46 66 63 82 94 +52 73 92 30 24 +59 26 50 87 45 +79 55 74 17 64 + +95 43 13 98 18 +62 12 24 88 28 +23 11 93 51 67 +71 0 44 64 96 +66 17 84 90 19 + +38 6 12 75 27 +28 73 62 50 51 +63 86 29 98 15 +46 90 4 58 96 +20 78 64 56 82 + +19 91 23 40 1 +78 57 75 43 2 +35 60 85 74 30 +80 3 63 54 32 +82 99 89 25 88 + +88 13 92 11 72 +56 6 35 55 21 + 8 20 36 60 99 + 1 96 57 45 12 +41 73 50 83 69 + +42 69 53 76 11 +38 74 13 14 86 +18 49 51 67 61 +26 80 47 16 78 +66 46 12 68 79 + +22 90 72 93 24 +55 29 43 28 5 +99 47 87 40 51 +81 18 70 20 36 + 0 48 23 46 82 + +91 74 83 95 54 +60 56 38 37 89 +87 96 71 50 35 + 5 11 42 72 3 +77 81 36 49 97 + +71 72 17 34 93 +45 81 22 67 23 +61 20 94 14 1 +85 40 15 36 88 +54 91 62 73 9 + +66 36 39 58 60 +96 8 22 49 77 +76 64 47 78 30 +50 41 12 69 15 + 7 1 29 72 27 + +90 12 65 13 39 +75 70 47 36 79 +31 54 17 10 32 +76 92 55 83 40 +49 5 20 44 37 + +16 78 65 5 70 +63 72 89 93 66 +21 90 46 54 81 + 7 48 88 60 11 +95 0 38 3 26 + +19 65 66 41 27 + 7 18 91 52 48 +87 55 49 68 71 +85 12 4 40 1 +57 67 6 11 58 + +91 85 38 14 21 +63 93 37 76 25 +68 36 4 24 71 +43 31 60 19 95 +52 55 13 83 78 diff --git a/day_5/CHANGELOG.md b/day_5/CHANGELOG.md new file mode 100644 index 0000000..3476371 --- /dev/null +++ b/day_5/CHANGELOG.md @@ -0,0 +1,5 @@ +# Revision history for aocDay5 + +## 0.1.0.0 -- YYYY-mm-dd + +* First version. Released on an unsuspecting world. diff --git a/day_5/aocDay5.cabal b/day_5/aocDay5.cabal new file mode 100644 index 0000000..a0dce2f --- /dev/null +++ b/day_5/aocDay5.cabal @@ -0,0 +1,32 @@ +cabal-version: 2.4 +name: aocDay5 +version: 0.1.0.0 + +-- A short (one-line) description of the package. +-- synopsis: + +-- A longer description of the package. +-- description: + +-- A URL where users can report bugs. +-- bug-reports: +license: NONE +author: Matthieu Bessat +maintainer: spamfree@matthieubessat.fr + +-- A copyright notice. +-- copyright: +-- category: +extra-source-files: CHANGELOG.md + +executable aocDay5 + main-is: Main.hs + + -- Modules included in this executable, other than Main. + -- other-modules: + + -- LANGUAGE extensions used by modules in this package. + -- other-extensions: + build-depends: base ^>=4.15.0.0 + hs-source-dirs: app + default-language: Haskell2010 diff --git a/day_5/app/Main.hs b/day_5/app/Main.hs new file mode 100644 index 0000000..65ae4a0 --- /dev/null +++ b/day_5/app/Main.hs @@ -0,0 +1,4 @@ +module Main where + +main :: IO () +main = putStrLn "Hello, Haskell!" diff --git a/day_5/code b/day_5/code new file mode 100644 index 0000000000000000000000000000000000000000..d7a13c29c8a6442f3b305be929ed53a08f8b3a55 GIT binary patch literal 33496 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 Dee!>l literal 0 HcmV?d00001 diff --git a/day_5/code.hi b/day_5/code.hi new file mode 100644 index 0000000000000000000000000000000000000000..51259bfe08834da340b7ecb9f15725fdbf71a46c GIT binary patch literal 1024 zcmY*X>r)d~6u)~3&yf16wYJtz&iKiU_JgB-QxwWfDUQiMuw+-CVp21m!|mpE6?8C-}~CK7F_D_Mi2Zs zFxnhgnJznWx#{j7*X;h`8Z71sdySr-dUnlKznC`G`<`y`G@rj{_uZI2UFp0X^>tgl zby%$5vtC+j`ezt>;u`GkEUBsL#L68*6;v)H8>$A?I8p;j*j;TBh)al_ITpFg+~ zG%Qcu>NB{-xd7Z6Z;H7?l>?>Ed16;c@e( zvWBt2u8Hx9Y*gn9+v5&nLu|P*f8=5B)mqDZ?^{W}qkXo^)bTogJ&Mg;ExsG=9CBAn zfiEk)l|%N${!!f5Jy}s#;%cvz_?_kUgfX!a8Iup&Mn0~Gezxa{^<`gKgR2wMGi}Zu zEN0(mwy(wfhYpZ;h5jGMvS>#qdn*=6O^d zz@5nK2C&84Uwtp&uuWo@I;#AM`8)3n7|Mgklh+M~r8Mc5v<1wjxsQ>!>du8e>&uFO z*Y&9gll<0T2#FdX=_FE2)q}y64~wO~8`mhCJ@%^1VeHy1ZX0#1L8cxVi@1H%2$@~q z$h0`c$nuaWzVi@`_JgSen2KXfjjs z@@e9GiWf2@N3GY~`;Vk#J;{-@o*>gzMZ7?2#ZGcHc}`HC1Bu>atLKcnlJjqLcNL{28(H?=zV+lP?f`0*}y|M!U literal 0 HcmV?d00001 diff --git a/day_5/code.hs b/day_5/code.hs new file mode 100644 index 0000000..6c013b0 --- /dev/null +++ b/day_5/code.hs @@ -0,0 +1,75 @@ +import Text.Printf +import System.IO + +-- getChunk :: Int -> String -> String +-- getChunk 0 subject = ("", subject) +-- getChunk len "" = "" +-- getChunk len subject = +-- let (hd, tl) = (getChunk (len-1) (tail subject)) +-- (hd, (head subject) : tl) + +chunksOfString :: Int -> String -> [String] + +chunksOfString 0 subject = [subject] +chunksOfString len "" = [] +chunksOfString len subject = do + (take len subject):(chunksOfString len (drop len subject)) + + + + +splitStrOnce :: String -> String -> (String, String) +splitStrOnce separator "" = ("", "") +splitStrOnce "" subject = (subject, "") +splitStrOnce separator subject = do + let sepLen = length separator + if (take sepLen subject) == separator then + ("", (drop sepLen subject)) + else do + let res = splitStrOnce separator (tail subject) + (((head subject):(fst res)), (snd res)) + +splitStr :: String -> String -> [String] +splitStr separator "" = [] +splitStr separator subject = do + let res = splitStrOnce separator subject + (fst res):(splitStr separator (snd res)) + +intOfString :: String -> Int +intOfString x = read x :: Int + +-- addPointToDiagram :: (Int, Int) -> [[Int]] + +-- rows -> columns -> diagram +makeDiagram :: Int -> Int -> [[Int]] +makeDiagram rows columns = replicate rows (replicate columns 0) + +addLinesToDiagram diagram (line:remaining) = + addLinesToDiagram (addToDiagram line) remaining + where addToDiagram ((xA, yA), (xB, yB)) = + undefined + + +main :: IO () +main = do + -- parse input of the day 5 of advent of code 2021 + input <- getContents + let parsed = map (\(a:[b]) -> (a,b)) $ map (\x -> do { + map (\(x:[y]) -> ((intOfString x), (intOfString y))) + $ map (splitStr ",") + $ splitStr " -> " x + }) $ lines $ input + + let allPoints = concat $ map (\(a,b) -> [a,b]) $ parsed + let allXs = map (\(x,y) -> x) $ allPoints + let allYs = map (\(x,y) -> y) $ allPoints + let maxX = maximum allXs + let maxY = maximum allYs + + let diagram = makeDiagram (maxY+1) (maxY+1) + + putStrLn (printf "diagram size: rows: %d; columns: %d" (maxY+1) (maxX+1)) + + diagram = map addLineToDiagram (parsed + + putStrLn $ show $ allXs diff --git a/day_5/code.o b/day_5/code.o new file mode 100644 index 0000000000000000000000000000000000000000..ff3d0480717062ea64386cbcb9ecdb21f7de4e93 GIT binary patch literal 27624 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 H{{8<08Khpb literal 0 HcmV?d00001 diff --git a/day_5/code.py b/day_5/code.py new file mode 100644 index 0000000..ebb5fc8 --- /dev/null +++ b/day_5/code.py @@ -0,0 +1,81 @@ +import fileinput +import pprint + +def print_diagram(d): + for r in d: + for e in r: + print('.' if e == 0 else e, end='') + print('') + +def parse_lines(): + lines, points = [], [] + for inp in fileinput.input(): + val = inp.strip() + if val == '': continue + if val != '': + # quick and dirty way to parse each line (unreadable!) + a, b = list( + map(lambda pt: tuple(list( + map(int, pt.split(',')) + )), val.split(' -> ')) + ) + points.append(a) + points.append(b) + lines.append((a, b)) + return lines, points + +def draw_line(diagram, a, b, mode): + step = 0 + if mode == 'horizontal': + for i in range(a[0], b[0]+1): + diagram[a[1]][i] += 1 + step += 1 + if mode == 'vertical': + for i in range(a[1], b[1]+1): + diagram[i][a[0]] += 1 + step += 1 + if mode == 'diagonal': + inc = 1 if b[1] > a[1] else -1 + for i in range(a[0], b[0]+1): + x, y = i, a[1]+inc*step + diagram[y][x] += 1 + step += 1 + return step + +def count_overlap(diagram): + c = 0 + for r in diagram: + for e in r: + if e >= 2: c += 1 + return c + +def main(): + lines, points = parse_lines() + + #print(points) + + xs = [x for x,y in points] + ys = [y for x,y in points] + + rows = max(ys)+1 + columns = max(xs)+1 + + # create the diagram + diagram = [[0 for j in range(columns)] for i in range(rows)] + + # draw lines in diagram + for a,b in lines: + mode = 'diagonal' + if a[1] == b[1]: + mode = 'horizontal' + if a[0] == b[0]: + mode = 'vertical' + if draw_line(diagram, a, b, mode) == 0: + draw_line(diagram, b, a, mode) + + #print_diagram(diagram) + + overlap = count_overlap(diagram) + print(overlap) + +main() diff --git a/day_5/dist-newstyle/build/x86_64-linux/ghc-9.0.1/aocDay5-0.1.0.0/x/aocDay5/build/aocDay5/autogen/Paths_aocDay5.hs b/day_5/dist-newstyle/build/x86_64-linux/ghc-9.0.1/aocDay5-0.1.0.0/x/aocDay5/build/aocDay5/autogen/Paths_aocDay5.hs new file mode 100644 index 0000000..55cdf69 --- /dev/null +++ b/day_5/dist-newstyle/build/x86_64-linux/ghc-9.0.1/aocDay5-0.1.0.0/x/aocDay5/build/aocDay5/autogen/Paths_aocDay5.hs @@ -0,0 +1,51 @@ +{-# LANGUAGE CPP #-} +{-# LANGUAGE NoRebindableSyntax #-} +{-# OPTIONS_GHC -fno-warn-missing-import-lists #-} +{-# OPTIONS_GHC -Wno-missing-safe-haskell-mode #-} +module Paths_aocDay5 ( + version, + getBinDir, getLibDir, getDynLibDir, getDataDir, getLibexecDir, + getDataFileName, getSysconfDir + ) where + +import qualified Control.Exception as Exception +import Data.Version (Version(..)) +import System.Environment (getEnv) +import Prelude + +#if defined(VERSION_base) + +#if MIN_VERSION_base(4,0,0) +catchIO :: IO a -> (Exception.IOException -> IO a) -> IO a +#else +catchIO :: IO a -> (Exception.Exception -> IO a) -> IO a +#endif + +#else +catchIO :: IO a -> (Exception.IOException -> IO a) -> IO a +#endif +catchIO = Exception.catch + +version :: Version +version = Version [0,1,0,0] [] +bindir, libdir, dynlibdir, datadir, libexecdir, sysconfdir :: FilePath + +bindir = "/home/mbess/.cabal/bin" +libdir = "/home/mbess/.cabal/lib/x86_64-linux-ghc-9.0.1/aocDay5-0.1.0.0-inplace-aocDay5" +dynlibdir = "/home/mbess/.cabal/lib/x86_64-linux-ghc-9.0.1" +datadir = "/home/mbess/.cabal/share/x86_64-linux-ghc-9.0.1/aocDay5-0.1.0.0" +libexecdir = "/home/mbess/.cabal/libexec/x86_64-linux-ghc-9.0.1/aocDay5-0.1.0.0" +sysconfdir = "/home/mbess/.cabal/etc" + +getBinDir, getLibDir, getDynLibDir, getDataDir, getLibexecDir, getSysconfDir :: IO FilePath +getBinDir = catchIO (getEnv "aocDay5_bindir") (\_ -> return bindir) +getLibDir = catchIO (getEnv "aocDay5_libdir") (\_ -> return libdir) +getDynLibDir = catchIO (getEnv "aocDay5_dynlibdir") (\_ -> return dynlibdir) +getDataDir = catchIO (getEnv "aocDay5_datadir") (\_ -> return datadir) +getLibexecDir = catchIO (getEnv "aocDay5_libexecdir") (\_ -> return libexecdir) +getSysconfDir = catchIO (getEnv "aocDay5_sysconfdir") (\_ -> return sysconfdir) + +getDataFileName :: FilePath -> IO FilePath +getDataFileName name = do + dir <- getDataDir + return (dir ++ "/" ++ name) diff --git a/day_5/dist-newstyle/build/x86_64-linux/ghc-9.0.1/aocDay5-0.1.0.0/x/aocDay5/build/aocDay5/autogen/cabal_macros.h b/day_5/dist-newstyle/build/x86_64-linux/ghc-9.0.1/aocDay5-0.1.0.0/x/aocDay5/build/aocDay5/autogen/cabal_macros.h new file mode 100644 index 0000000..71066ce --- /dev/null +++ b/day_5/dist-newstyle/build/x86_64-linux/ghc-9.0.1/aocDay5-0.1.0.0/x/aocDay5/build/aocDay5/autogen/cabal_macros.h @@ -0,0 +1,120 @@ +/* DO NOT EDIT: This file is automatically generated by Cabal */ + +/* package aocDay5-0.1.0.0 */ +#ifndef VERSION_aocDay5 +#define VERSION_aocDay5 "0.1.0.0" +#endif /* VERSION_aocDay5 */ +#ifndef MIN_VERSION_aocDay5 +#define MIN_VERSION_aocDay5(major1,major2,minor) (\ + (major1) < 0 || \ + (major1) == 0 && (major2) < 1 || \ + (major1) == 0 && (major2) == 1 && (minor) <= 0) +#endif /* MIN_VERSION_aocDay5 */ +/* package base-4.15.0.0 */ +#ifndef VERSION_base +#define VERSION_base "4.15.0.0" +#endif /* VERSION_base */ +#ifndef MIN_VERSION_base +#define MIN_VERSION_base(major1,major2,minor) (\ + (major1) < 4 || \ + (major1) == 4 && (major2) < 15 || \ + (major1) == 4 && (major2) == 15 && (minor) <= 0) +#endif /* MIN_VERSION_base */ + +/* tool gcc-11.1.0 */ +#ifndef TOOL_VERSION_gcc +#define TOOL_VERSION_gcc "11.1.0" +#endif /* TOOL_VERSION_gcc */ +#ifndef MIN_TOOL_VERSION_gcc +#define MIN_TOOL_VERSION_gcc(major1,major2,minor) (\ + (major1) < 11 || \ + (major1) == 11 && (major2) < 1 || \ + (major1) == 11 && (major2) == 1 && (minor) <= 0) +#endif /* MIN_TOOL_VERSION_gcc */ +/* tool ghc-9.0.1 */ +#ifndef TOOL_VERSION_ghc +#define TOOL_VERSION_ghc "9.0.1" +#endif /* TOOL_VERSION_ghc */ +#ifndef MIN_TOOL_VERSION_ghc +#define MIN_TOOL_VERSION_ghc(major1,major2,minor) (\ + (major1) < 9 || \ + (major1) == 9 && (major2) < 0 || \ + (major1) == 9 && (major2) == 0 && (minor) <= 1) +#endif /* MIN_TOOL_VERSION_ghc */ +/* tool ghc-pkg-9.0.1 */ +#ifndef TOOL_VERSION_ghc_pkg +#define TOOL_VERSION_ghc_pkg "9.0.1" +#endif /* TOOL_VERSION_ghc_pkg */ +#ifndef MIN_TOOL_VERSION_ghc_pkg +#define MIN_TOOL_VERSION_ghc_pkg(major1,major2,minor) (\ + (major1) < 9 || \ + (major1) == 9 && (major2) < 0 || \ + (major1) == 9 && (major2) == 0 && (minor) <= 1) +#endif /* MIN_TOOL_VERSION_ghc_pkg */ +/* tool haddock-2.24.0 */ +#ifndef TOOL_VERSION_haddock +#define TOOL_VERSION_haddock "2.24.0" +#endif /* TOOL_VERSION_haddock */ +#ifndef MIN_TOOL_VERSION_haddock +#define MIN_TOOL_VERSION_haddock(major1,major2,minor) (\ + (major1) < 2 || \ + (major1) == 2 && (major2) < 24 || \ + (major1) == 2 && (major2) == 24 && (minor) <= 0) +#endif /* MIN_TOOL_VERSION_haddock */ +/* tool hpc-0.68 */ +#ifndef TOOL_VERSION_hpc +#define TOOL_VERSION_hpc "0.68" +#endif /* TOOL_VERSION_hpc */ +#ifndef MIN_TOOL_VERSION_hpc +#define MIN_TOOL_VERSION_hpc(major1,major2,minor) (\ + (major1) < 0 || \ + (major1) == 0 && (major2) < 68 || \ + (major1) == 0 && (major2) == 68 && (minor) <= 0) +#endif /* MIN_TOOL_VERSION_hpc */ +/* tool hsc2hs-0.68.7 */ +#ifndef TOOL_VERSION_hsc2hs +#define TOOL_VERSION_hsc2hs "0.68.7" +#endif /* TOOL_VERSION_hsc2hs */ +#ifndef MIN_TOOL_VERSION_hsc2hs +#define MIN_TOOL_VERSION_hsc2hs(major1,major2,minor) (\ + (major1) < 0 || \ + (major1) == 0 && (major2) < 68 || \ + (major1) == 0 && (major2) == 68 && (minor) <= 7) +#endif /* MIN_TOOL_VERSION_hsc2hs */ +/* tool pkg-config-1.8.0 */ +#ifndef TOOL_VERSION_pkg_config +#define TOOL_VERSION_pkg_config "1.8.0" +#endif /* TOOL_VERSION_pkg_config */ +#ifndef MIN_TOOL_VERSION_pkg_config +#define MIN_TOOL_VERSION_pkg_config(major1,major2,minor) (\ + (major1) < 1 || \ + (major1) == 1 && (major2) < 8 || \ + (major1) == 1 && (major2) == 8 && (minor) <= 0) +#endif /* MIN_TOOL_VERSION_pkg_config */ +/* tool runghc-9.0.1 */ +#ifndef TOOL_VERSION_runghc +#define TOOL_VERSION_runghc "9.0.1" +#endif /* TOOL_VERSION_runghc */ +#ifndef MIN_TOOL_VERSION_runghc +#define MIN_TOOL_VERSION_runghc(major1,major2,minor) (\ + (major1) < 9 || \ + (major1) == 9 && (major2) < 0 || \ + (major1) == 9 && (major2) == 0 && (minor) <= 1) +#endif /* MIN_TOOL_VERSION_runghc */ +/* tool strip-2.36 */ +#ifndef TOOL_VERSION_strip +#define TOOL_VERSION_strip "2.36" +#endif /* TOOL_VERSION_strip */ +#ifndef MIN_TOOL_VERSION_strip +#define MIN_TOOL_VERSION_strip(major1,major2,minor) (\ + (major1) < 2 || \ + (major1) == 2 && (major2) < 36 || \ + (major1) == 2 && (major2) == 36 && (minor) <= 0) +#endif /* MIN_TOOL_VERSION_strip */ + +#ifndef CURRENT_COMPONENT_ID +#define CURRENT_COMPONENT_ID "aocDay5-0.1.0.0-inplace-aocDay5" +#endif /* CURRENT_COMPONENT_ID */ +#ifndef CURRENT_PACKAGE_VERSION +#define CURRENT_PACKAGE_VERSION "0.1.0.0" +#endif /* CURRENT_PACKAGE_VERSION */ diff --git a/day_5/dist-newstyle/build/x86_64-linux/ghc-9.0.1/aocDay5-0.1.0.0/x/aocDay5/cache/config b/day_5/dist-newstyle/build/x86_64-linux/ghc-9.0.1/aocDay5-0.1.0.0/x/aocDay5/cache/config new file mode 100644 index 0000000000000000000000000000000000000000..78967f8105ce4049cfa214248e99cbb705386240 GIT binary patch literal 2657 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 literal 0 HcmV?d00001 diff --git a/day_5/dist-newstyle/cache/elaborated-plan b/day_5/dist-newstyle/cache/elaborated-plan new file mode 100644 index 0000000000000000000000000000000000000000..3038bfb4ecca72eb5403b1b021345cd85acb670c GIT binary patch literal 31695 zcmeHwTaO$`c3vhq9NyWy&kSdzso7a+c6X+#tNK#iz1r1Ivztw}rf)cUvoEd9%$4*%$v%b)*?slQnH==XlS*gY@GfAd=_?|R+CKq>y$Kl|u^e*RDY+kgHi|Kn%> z>z>ONn3kd)9CqtVjb@|8xo#+PH2mzV(&VZv{)gya)m$$371GcNqiJXW{4c-z-~a8i zpPgm+yXVQm*eTjU6`)Kbk}A&sL=AU&Coaq2Ghy7b38rMSZFlM>ORbI zN5et=pdYI`D0|p|Kd-{J!k#%UNAe`ns3guo9)HsOfT@dt@&WSHRmsNmI7~awig78op!Gm z^cGsPv-5KcOWsV-Ui25|JipuSG>zuZTY-oO75VYs#JKbil*=e?0^BvDy3}zNuy}2&R*a~J^KI@rpLA2fKEH&HBR;x3Q z{Iy|-g?6Xq1xxr`X!>4zX?A9&)tdEY=GtC!skhi%=(bV9rJ0t|BmPdcEJKqIMPTC8 zKc_GJH3PE0a=q1fL-ZY^E|W9_{$Su_ajWHvU^&MY#N9-bI1zlKKdsWfK)Ik9G}5|E_eG9 zP|%Qly_XKXK`#k{&j;RUbQlI>HR5@rMlUf;Q=0~;-6tfI{lEQ}+b}uc`nt06XnE`5 zgN^NnjRAM3(`S;kWX2=e;@3?tj2egOw`nA&&&wNda<ZnF zX@HUBoO4~Zcav@Ylu|I^lsPZk8UuHepa7p&a|d|?|6THn%kYj z?&VG{{NS+2Xv=#)iH8h&(-zf%kU{b>O*sNGZ139&8u`%2uuK(V9z(unkuz_8fukJ5 zr9&bWDW%~k*dGQ72NF8oR>+GW^5ewDGO2Eyq zvgXZ-Ca2bIjuzYd?YVkCjK)Xxto5C4JmG9swdcvojZ{^BA!N|y>ih;rLHCq-=FFMT zC)Em1sjN7lVkw~8ANzq({*wyjdhzUZ_ATUfWuiK@Qt?JAKbWX$;PIsM(L|opCpT@a ziu_gUt7<91h&m^Ct1MP2PC}XEqzP=L*FNhwZy`7?c!xqw6~4LAie8^yuP7OdU9Hq5%JRHW!DAW4cB?Wo4zLy*XP}lDV-BB1vwYXOsr$KMr&vgPQM+yi4gQ8FxqHBtQ;gonU~#dz)Sm7378bnO?%Yyy)^E)=W!U=nM&i~AOpwI=#`19354+wd ze8CRNxhhza#4p*-*O|KFje>(XIcDId0CChECrJ>E7<#7+HC7JAnK)JW=2srCfmGsO z?gj(a|89kTg>Ny#4Q6<7)D4EJh8Ve9LKWsam|pzx@a zl1A3I8!LS;O&Jy&7&yW%M$`=i7rSeGcaH_{a0wV_Y!hO;Z$JCaIM;NV<~t6+;^g`+-!i7F7u6MYF9QN8TW$ zkw*bq--8eyN76V?`W}44f|uy~T6h#li@T~x1tS=$GJ(~kb-HVL!`#*iG*P#_tZfy* zcrc8!E}%_n)HTpnQmNK^d8NvgcrW0wy{zls$+4_sab^^bq;=*K-brE~{*cXZJtw+5 zmhP_Yv%dW}=rQjF;$6?u)izx(RL>XKj$sj9VH=nNF-4bDQ5suu^k6W|GOCl@^o~2y z3Up1PLC2x!)Y;fhgrMb6up=q6COw9$jX7aW+TF7Xq}x4_a{c)R6;#vneN6WVc)jo- ziO14`bT$=h#1jukTXwJ9M|4K^#%S1_H?4N>co;P9TRlbFipbPCtoCO?555_D7_p@6 zy1^OF1Q!#siFY(lxJV^t=fz0aYCFDK|x+Gzto2SawE|%sVWVK{*%wUIm`_ppu_W zL=lIcc(gk#Y3PmRKGs0F*kv?HJgKb`nlsJqqUIf|d6YnVw76T8%onAU>=T4NV&Kax zY?<#0)9h4k2yvtuo5e1bx{Hy+Ziwd}K3ZukCsHjJ)c0ICK!oE_fG(c-Z(_3tjf;wH z1$KVUhSn@-5=^*EEFd)2x0yC2v|TjTtPZbc^y5s!O+!uNe((rkXg|vk3#brclvz#* ztOn`$ARFE&Uk{?pw^AM+L@&Z5js{i;N2Wpjb6%;453uqq-t&f1Pn5(8o@ID7`{J5Cw?2g!r~1W{ry~0YT^eG4}SQ8mZER8u(@Y)!;># zc~Y_@_#Z^w*tbTMcXeVyhk^WH2gh|d@9z{DRM3o>594==_<9#6X7p|m-N5h}@m{-A z63)5g68dCst<`4LRp{&tqtrsI@-`s5$RO2+0*jLhYB~VcR+*KpuRAJJS%Icn>})Lq za08dRr4E7w48CD`ngX;J97+4VWvpnVaz^3|u5WLm<~W1gJa$LE7Lpur)_2F9-Q#qW z&Ba(z-lvnhTi=Fn&4!mtIy*ac#ku$;ts(vqhk5YK^o5k3JsM zvDIdBU0^p<>R(EUs&W+Zby|x2MKvbRr&g0MBN=`p)@!oD@t?wO3y^%7wQ3Z>>}jWJ2%5Cz4WyrFW%f8lMWT_bv9hwu zEtRTEQ_H;%^ikNg%)(l;fs7n|F>0Zfv=YzrlXuHd<9^?ZBSYr-L)*;!A(soJiiX3f zD%7_2U886xPQxP!aHPiA92(9wB{r|JZJfnmAE<$#v4hD$kgQ}2j1ASlcDN2cJc%g@ zq^d7#J{3yI4E!R|?CyG1D2)wkorI`%H@hX22CXt6sFH$Csj?xHJ+rXNIlWt;H}Z9J zRewbkVz1kLWTbDG7QEI6JYRmVgsIiEM#hj|4zZ&@J!Q?i%Xjp2ohRi|lO`v3307rM zPNszN490xIHCP#;STi33puB^DtZi~kW(5gwuvw@;p>#pPhT7EImbj%5hp0FMOC#HC ztb6%@g5alEVu@dJ1=7$gj;&Zg%AuYzaEL=8I7@$IdV$sJ5p1d0pJsI4=#XpFFdCoI zu&aeUu}&nL+L0p`qQoTD9LBT*lYqtlUmU z^ICXk%X!}`nBTZ1q{KD(ekI4_CuufCC@Mi0*4r)FDk$$q)%4LR>_unW&nNAE{i68w zf&UYCZBNS9)T7-h*wnCmaH+rdx>8T)cbHl3!lP8JVKlh2oaH7|9hWL9X2}B_48vi6 z!+SQ#!Uf6L>Hgqs{D`uzjiok;kq+$uPs<+Nbj}*|4VOH8F!NZ>x@^OrMi2zla2Af>@xDo z-SgZo=P-$1gnpoRIs5U;dOvs(^lPEozEDd%Y9*R>EY&V(YIZ>{eWIr^pL|yP#7qi4 zq20(&%*^DI+6cpz>_px%(cfpa<^Dl{ecR7!$ezh@ZLT|yTL%m6_T0?kQV{qv3-i5> zw>01O{pO;-(3O433r0fbHTN-@!0|>dIyo{Vg;hDCt6rqypJoFh3gXV)L?o`|14kl>5W&V~B^Ypqalc|`@(BTLSVxla4Z*;%nHF~RHP zOG?9&p7~F3WVUfnrIPbyRgku>?xKOCQYWhk;+~94oiO$0N>KE@;W`wQ(y6cX@ia?9^On z&3p6hc6(_KCnLP2nHjOu6_a6_6|dxXeKbvN+h-k~X6dx)#3iMG4W2}Kfc6|yiEq<8 z$Y#vsMRs6?@(Lo&(+wn(R&riM-0?75XT_o>9zIQQ4Z&I%rZjWgd77d;H;dCuUuk86 zd~#cxNqNue49gFRXNeL>Rej< z%y742h?yMgvedapyBX8lMy)iNGqRw4#^;&h*}zBX18+D%^fzB4>ZxM^G@5RxQCa0D!18_}1E0S}OGhm)VHXis@q1x} z3rqdu?MQ8{6!iS$+vwTd+bpR0(QDLny(o%DSQJAwj(BacpyP*cqGKnFqLNX5<4rVd z>b0vvCaNk{?ThXE@fZt(YE?CBA^E18OWiD5S?%dnsOJ9rQ5@|B$v_<|#bmFL`j71b zOjdz+6#{>G6yr1-TFY@k$-J$E{06Nz!F`Z}+c!;PJG$@rYpVs}awSM{p#a@>-w$7W z{dJJULN92@nL#JdyRt^Z7>$xT)g%?K&qQpxA5 zaXPalt?2>WOS4P}=i8bWn6A{h@yqNE^O_6wP8Y|>rvhF-^< zJXXhc4@zBNQV#Sv7FBe!IhA4!yO4u&+qVXsUVoe(X1mV?(XzcQQ6#Ev-Id0k69I9 z|G1j7)jl=r?98cI+jFO3Rr9j_rxkfETR^i`Wp)y8Rc9{jFS%4=b3-p9!fu4{o&c01f z7T^iV0zDyFpptCa7Lk?iJ0&YCR1&U+CFN>ZlD=J19w%JjawWuxBwGbaqE(O?$==LL+8qp!x`zi`&RZo!5-dZKS{ah0rZRtL?ShD&Lfp!X@$FVvrz69!)~ z30c6@GabD|oPK!hJYo9V^=EVpIbgz_`ZIOt`sFgNbsdc3ajF8^)D`@l`m?RLf`jvU zXSq-3Th%thhIfoZ9goL-Te=cw>35Xw6Xf61saJ5YhL0-calk&plN6XuczrJE$Eu_i znrvRy`tgK(*}Sax*CyuC=62p=e$*CrUT_M*71AYAK}2Vt`EG-6Jc?IwjOj(dr!ZWB z?~+W3!MVfo*XqyiBOKnr6Fu1BPhA17D@hx2JeC1;AJeep7{{`(e%()9fo_si4s^cH zau@5*R+fk1+Sli*ifBY%y|x+J3Fp?KTljcJI)_42Pi8~cE3nnp+Gw{DVp;e z%!QVLxj;Hf5Jd+*T~;%PnO)&|pX92!oM)`*hNWqw?%<@ZV7GD_H0pfKk|?1%BBN!5 zimta63*FgbZWvHe)y5=pKEjEo)D;kwt%YpZSz=k_V>Re`6%>6K!bRNq zU6w|z>Q=NI9h0S8fv8sVptHbo$drauzNG~UOf9g?;5=q|Nq5a$4RZyu(q+)uVYw+z z*WBxJ1wmb@lBynIFh{(uNIleN&0Rq(DT6uBIjt+4)<)PHxk5(g;e-_6e98P&6VxNK z3ren_rX~uwbHvhYQB0Guccbp8;=ZgaaAwgQgLBOCXj@czz+Z))D|D3IWLG0jgC*`k zB1}E~_%IoQd9&`?leuAtO@O1N`{ zrQy*Y9N`KeOc;9oFUPn+6ZYt4bR4A^h8*bl zEQeOia_XEhy@Qpy0#hq4GdS}s4~7RvC zQ@p8w#raj%0Yi|_RhtfhzZJYx104G>SJ-}4m2xtp z^I?U)w5(6qa{9`Q&J^oIA3({d58(W#NY}>zOaBge}^T} zzJS4&=)QgQ-oVF+#E~mFMcfq}&W~9Gnm6zy@TuqP;4pOsrv6uEaL%y2$^ouO;gUD} zNY(=c*EuM2I4@ZPDqh6{Yq&h#KhCvVVWD@HfumV zs@w7#>Un2Ofe;-DMD>^lomrMcg((QLEG;DfwO|`^&a(`n5d{q5WQYe}2DlGI?@^%8 zuJF*@WdfJ;Hfut;HZds($#tpPq3|AcBpej^RPs2##ahr7iQ}nvyxwz#Ol>g(oWITd zs=MgxHBT^JC8>JGF?9td|5Ijg9QyQeBBwNi3p_S za-b6y<(`Ipe+7@|q^>}joPf^XU^xX+XT#D4&xZvhpHYOJziG)n3XbT8uE+{VvPIb0 zWm$5auxuAgZ|cz9D-&v*Q6G z+;E_l1B6a}-$JqntDur@;Nh?rFKb)jFc zDF_GojY=NpS6B<$fa$>x$JDI^p%F8OIoDVURyK$=XbMVJF5%7rOG7iGJdz1UwOc@) z-)2dSNw|!1tXFG1G6k4Qk zkd{gw=O?U1)igrHUU;-kr%LhmmMfsH=>qJ0&ax;Uw5Q>h<9LKlD0J$-7UKMayo8QS z5nTzLB^YrovINGD$GFlsqr(Fs)A*4A&ZPqXmgX0-@N2-?V1AVUae!CH=#3>a#}Saq zUxb}H%c{K59b6hOgsjsN!1;{%(Y`dlj0dh@)V>O+^A=0O(!j=eci}|p8bCo60dw07y`s}N!#mTBrZ4Rfd;1q{da5%rl8c?0sOGZ`q(cfgA zC@_szWd`T>SswKbI9aEC3|Gih-x=WanIAR+SzT?8Lp6<0U4h6(dC-Yi4y*WT1n7=j zA<-(nCOQM=qx>j7wNT^=+2n@-=N;yU?e_vqNU@YL21k=;m#UMqfgN>^IiS^Vd@G(y(fn`->?*_U$tVHPpT=2faGPXYF&Zr zk@~+YWUBQHaK6j@02G<#(`xlc02M07HspNDGOARN$%X_$bg692xyw@MKuXF?19^s> zy23!wSrv=ZW*tcRNz{qqyU28@D+r~W!<<(v1^;Leyq1=_LWj1k*h1tXV+VOv6O3+1 zjz7z*%PJ|aRV)s|P5lpT&|=sfV*uqjlJHO)oWSM$I%}d*(=!C74GUsQZDGzQEQMC| zB*Ku1(}`F&Pb{x zyoQI=;0J36bgkFT&gnO%HSe|iW6Y##%1NmXX%yTxS02XE^C*59=_i;Cc5_8N96H2< z7m4~~00(1`GhM#aaNXkR*-vd4&N~*4_d1@}Y^JOA9?t34`~Hs)u-9ZH-nS&ob=|a9 zkK+0;XP=X1TPL8wTeBU8JeW9riO@{5sZ6^N^yt;)B!0YNO5wWjwbZ zuB_Cs>z8=77ok^Msl~(6wN-V6r~vmB^*RO#h9C^s`nqGta24-ZxpO zx*>xz$7-fxe)-EV-ZCRj4Lh_GtLcW#WLxQO{XwlhMt|+q>L?_;eWUyOBfNQ8qahY+ zJZNBsZWZqyv8Y49;8f3j)DF~6o_cGx%zX6`Lf$uOf*TuOZPvPYdxIXawVL2LB62>7 zt>5n!3~&~t91Ci%$O4jKxlCFRha3b%Qa;_y`EweW!3vOmgrVPwnWu= z6)kdSGf>a{#+~2AXqOhUc)ss9tPXN3&uiD_nK~zRZ<|!rQmm4X@UYbZzcgIY2JfJC zs&s1)Lv0;=$ODw$^S$|5Z+31GzwqVHHd{-xUb{E57_>SIzK@sV{odTX*IAh1*RQUy zGQ3gB{dF2Uk2N&(B*ak_{6SZBvpTq-SYCR^d_67fqqpNhM?BG-sQ>om+kT(E4{QE$q~;hi{G^P^~b?C<4`@xJdSAV06i)lsWkw&W8I}|>#LkSt8bk{v?lMJxiiKr*D)Td zors#cu&m?_-4eXaEW2_K*g|hHio&UfWb31tpPR9`-eInxS+A(o>jUpO*Qv#Mk2&$H zQ%5RifnOis-BnB?%31rAnep3Hbn=`oUSdxJIYBFBd)TeoO6nFph>_MJxMcOfwe`M` z#dUX&`Y=27S_ekTZhW8JT6xGV%rL&epm^;`l;8jWc5{;uTU16-*4nN?>1BzZc3piy5bw)$X+6U9!QI~Orx?#?Qm4x1))7O@ZwUOP`p6VuXO3n}dpvrhte!u?`_fZS} z@e=(gWKUhfGB$nBbg+Hpg!a+A`vs93B?cpT2_aHG)+u=33t+H~VC0-DpyM6*hg(l- z63SS1zYSPS)KQUGU0kficF$&0!53~B!E3z4GKxvaV$SJQHt(ZZ8n&!eO~ETxSm3-N z8~&?t1FNfy|mWAD-zMD z=EFPU!D)FY-YVn=7Pm4kHp0};Z>U!#syyEvi(UDB6?0aFE#I;Da27mO$z!faL0)=1 z=*02@U1rIPMkeOod478r8)@SsQ?R=RXK#W$T2CaO6iTop4u0aod3aERw+iJk`z#07 zO$x-9VsGB0?DBcstD|__JuKAGIU*X?t7Ft+F$nsg;!-GQ78|E;*IwbGbC;^R1obJ=tUWi)s7!d(mp>CuV<`qvAZ0{)N~aS^oxG zj#TmUvw1xKt7|{h<{|CsCuZ&M^40z$`(-uFs%&Zfq*_KS{+1f-qW@L?*pI;`|7NdY zxL0izb;sLq7)VmR_cQTK}T{yIb9}UEMviJu}@^Wbvm+_Rj1yMT!!)DUvNxEp6LgIx91) zn5(SH>dY#Ml z^|z0v52Btw-D~?vGTm^Uwi8Y#!zlKry9aK4xiQmdp0WSkfBMDe|MYMEp$OfY9wqT~ za^Qe%@Vx6r{Z7yY+aLY?fAnwv?%xu&8^jg{?Htp8{8zv8-<ZMb2rBmMlR~E#B|4G>Q-p^ z*kovQ{oZsuY9CF{HWnK*Wpy9qxch@%y&FcV(UcOtnVN`lm6TB3Hgb6u+gvkkQ%4IE z`{+i)A6y+58q+^c8!scpPg|91cEbM%HzV0JGTB{Ea^)_nh@FI{w^Tb75w-HPc#}neF(F z+g$J$n)BXrd)arE<~qK=)NXY;erK^cH@7gqxa`dOttD@1-tpX4dq!*iqUk%!ZD(%Q zU6^foP1jv+I&COwdvmRM-(B#R{Ux{ET5LjoezCc8Og{Ct%=Xjp8=(iRY+U`terajYYF0>tI$)8qG@I=O z7Tp#~xIEj`dc@zUmZfR(p$JTz`Umube`Y}TE!SJMJ4WBp>M}`9;133l7dKkI2$pkf zK-^7I5+{OR^wlWs8T*om)$N=7{Y)c_y8Po*#*@;a#8Am>ulwXYWf?c}Q54RYtG^Zb z3%@0eb57*0IY$dB$EWbm=5AjC3L3JXcawqB>%_kQMb8-y4+4LrhFoXZ=){_7>X8O& z_Xx>k|6hNz8#)JEUzb-Ou53NHzq$RO(c|uP@=UUp%y=YQ{Q1ZU`i+C+yEKxM=j9DJ zIoqe5!C;)2w3u-Wf7$TMvx@iCH|wXUi5uCvXbQVJ%VkX_{X%LmiL-eCV_6hBAz zaQ$iYv-<4JY;)Rkj`kO(x!qapUT){Y4-Sj8w!HU~cu1o+OwlwD(nvn0DMvt>?LAXL zBOm%`mZ?I_qsdnda^}s?bCjdG(vV0+N=Y#E_XmE=fkYZ_E98aW_oCRuGAS2PyNR6T z%K1QhuR4Nx1oShAp9dkVT^FxLIXEGk&TZzrvwo|cqi~G*^8bhPWb0>Rs*NIQEL2Di|7etkD+ae3Gxld!(u1%Jk$!ppAd31_paJ&#werK<7^ zA&st7=hr{<-4o`SGp9eFR4Y88vf_Y>r2sb^dA?TuvkK+u;@QdUTgdC`SaoWp;*C_k zKUP)G;YsJiu{?YAODZIwyClELJH_LYd>Z32dd;K5bcN5F8i0L!qV$ zKWzxnABPOG;Kc-uORiK9E-^S$E$fP+*XJ9}1r^Q}gsM@^H1>m)SE{yXSe1;FlvE38 zwgRXUS}ba~jjkO#ao{Ik7)!lHt}(x-?m0=|)i{t1e+xZ$(SDm5Xjp8E)ZU_+d-BBF-{UJkdm!Zb$ zfjASZ3V-yq!)qXw_*c7rkM+M(p_jdQqoXxSV}2HHntn9p_3#Giw!i~$1X=W9Nk*C#J*&hQy?r5=BybDFsba6kZ~!)yR)sN&B*<^#-9Y z)tibcg!7WJtsV89UO*#{0#beV19%)s;~eR`|1Aq%q~Ghop)W1&N=hmiK~t3pj3%9? zyPh}9tyDouOj};owhCa>8$?+bNKLBMHPBWPsn)xBrOK5!FW|AAtn1&-v20**W*7{m zb>ZNv$uq}@HEKxw-t zQm#K=r-G*Rd>>1D1iW6*jiZrtpfsC`wa*g|E4A!ixsRk7*&Cr@bKX+5dq)GmanI-} zsjY}iox^B<26X@1k%JLS%APh@C1v)^G>cFA!M7txHf_XTqYoRJ(<=MgFnCIN8f6y0 zw5Ep31`3yT*mLVx1q-_3^e^b&ja4q?lu#P?G1^Jjyq3}PCNu<8am1(G5P{MtD3E5^ z8A>v5vs4D+H-DXKmZ>)q^1Lb0u(KvRbwn}KuG`EVHcZ}vy z0?pClPEj&nlv1)!5cY_HFR`#;zROHAQ@Jk0p=xXfyHx5fMh>$fo_p|cwXqUQwVYSK zbKw9Hj)p$Ec;>%}%^Wl?D7IDD`8gXpWkHi*!X;t>p|P>ev?-zOqOoRmcqOABWg2d1 zY7&M1LxiDWmLV2UA;d7VoDx{`lTkMt-Y8%9`+pFs_{eLptr zl@{tSD>)Tv9S+cs2k?WEv0F-+LCK^0#hce%!Ca6I;%a2-zQ zkv}|$ynH3-mdVAvN_tZlWi(SN2B3iXt|>l6Xgu^o>;#C?%LMp+A2F8@-%`Y^aZx28 z=)5<=-o8{LRhm$Jugt&ZzX&o8<1UMkm^H$#YqJ< z9RTZV%*xhJJ1SFIK}t2)*;*Rl1}=3=9RvwzeADnW1!&Jdl=gd5TTx5pjKmq-*nWhX z;|y~1*d2PQkmP`~zB_8~9wozUF2;)TKAqg%#x{IwHoRO+v$KO4HK(TyXT(9|cZ|3$ zRfGqu#h%?R!d;dM{4nsx+<1gTq@VIL99=_chOAM2^CZaJ8$XI`0dwv~BK z>c#kt$x0Wj*&@(YwMN>8M<4a-*lN?cF0gAV^)IDFRXK|IIxR*1q8gp&6RXLWk&L|^ zdZx9gM{L9S!4G=Ax9PO~Y;Y!1?ilWxS_8u04i+x5_>)X$csk;Gytms}51p>m8!3Yu zm0+3)65LS!9{bqi%p5E=%*TE*z(mDg53)d(nn5;grb^C*+@yZ@AY1C728z+goOY^) zkdn5Xp7fJcnK@2Tk!a*<}v#{1|AR|X#j9REA?L~vMhf1#? zUX{uwmaaGhLPSLik<5tj8!lZ+M8PrGAoMqq451{-UwE z^F+l7EPk8Gs5eA3jR*d4dmxVChDIwQlXuEc<6h|WCFhrz;V=+=7c?y!@1}%Om;q$; zf=gqd-^nI&n)WF3hg>d@DjE)_s!-F~ceJ9NCykbbEI&tDY1E#ZKEs(dtVI% zjU7x5{CG86U~H)VwZnDr!EsEnFI9ahk(|J*q>%}&hUV1R5NOy(lD!qJaL*xHnk&1EJTS(j5&;M2RZ?R|Nah^`87G6 zsHjgoIrGs~TS zn5Z?326vXz+=Qy*QbolqxrYbC@UXw;JsoG^f@JJuUpN~-q3ox|Qk%p`hjxIcWshz; zXASy=mpnW$^H|QhOv9f<7t3WYpGd>uLR`$OVbSBf449wQp*(XGQI+bO?P^}xJqll7 zN3!Bes*cu_r2N0g-+X9UTAsV%#ye0%D&`zEg|!odzeh%@kTB>IWi=L zRXL)oVAI&Lqyfc*cYPH&WFDk?)@4a@x^SGF(DU;mi@du^X9pbxJF+jt(OKli6{KS2 z+0Og?xd5g7A)Skc$B25L+rfAs=0M!y~N9LcdcyY_JRSp0NXf-g2Z7wSi^ zwL-z=6%|mAEIBjgI_W28XVtL87_XBrDGg8Q%zum{GmU#9m7JGjJlT1b2~}wIgv)v9 zT4rgFw@VRKX}*~sGt;X2uDW4OWii)xHgawY>wnq98N!=-9r8pGmO#mOr4MF=f$!DY zN6PK+;}NF~7qskkT6il7@A7o;veV3BbHQ0?wOY&bcrwCSo}CptUDg?#SJR zM1!X>UPCYzhAGY5c3w(Ro}0yKrmwUzK|Z;yjdMl=2<4)LU%i0YUygA`V{@jRQ3>ZK zIBmA7T{efgS)#t7HnfFvob6w4CZar>egSD-cO>mt4n( zUG$(X0ulXKR~?T^#oy&2ud1A+wCY?M{LFBtVu%?Z>$23@hr1cmTUxC&nNzZ$eahpR z;^|I@_i@hjM?FW&oEr?yc^YSso8#Sz+~tG(^f}`^O>((A>`K(ns>gjk(ZG-DPs7jZ zqt8?6S(s737kQC~eNsK9}dr**@FUf6ezY1gvX&(W&`&_NBcMz%UMKkA1X) zhO$c$4S{+zA|4HfqNE^O_6wP8q|;q>22NW)d8{7W?UuU0xE!R#j8R96Ok-zJk9-2MMxGon!eo-jIL&4f)sJkpF3! z|HD$FRCPf0kT2->D;eQ7D|kOD@nXKSzp+$K{^M%SX6wYPbF(LAZOxyARn5!xpH}3x zY=M-uDzoEwt8zPzw<^0oF4+s)Cl~|v(~pX}xUD4)l6|~10PnnyHB){_6 z^7Kn3DihjrvdO4DK3RarBn$MIWPu)&ES`NEpDe&*k_CE9vOp!-vMu^Xx^I`PtWZg~ z8kUr+VM+Q{NqH1=fyA_2dQ)Sui+eZDDdK!C344G5}r=D7;WOIh5d+Vca*>!Id#N zlwi#9E|WtE%)@S8Zw-DEd2%ShypoU~(vd8qg+(65z=vHBy)Mt|o^P zOb#VTLq2)uT`icV=N&XAhZ3Z=vC78UPUv{b&x{>`B%d5g@L+N%0Uwo+cga=94#-YS`9K34J0Ke|*5ptEb+84- zzR95krI)So=u-plmhc!}c;Dr9=KvJgwHA2`M)|bKp#-b+(llFmawx&%P=fMtNs~hf z)Ki=Cj>+Uu0=SFGp#(6(A<+jp#;tR3-CI^;0H!ddWeDfZv2>6 zf!=4I%TO$)N;z!W97@0^{1qOm(XB@w zge|^a&-j~t@~|*Dl)$jtpXlj~$)NWt+6zcV?IzN}$a$Ig}uG62s(Bg2|x->HGWU!3L8<2_}aU;H;3zp#+7~0VanM zobV8X$)NOKE4=NDAH=0AqD>Mj2=>*P=ZzLKN#60&637u5II`fFCIwWQ)Z|bCOvXyRP90e=-hc`f1D0g}lpjh!v+#>puH{qs zj5)fHF4dpudt#TDc-nqNXtOg-eR8&ahD9!v_)Q(mbxCt64P*2^W%~L0GkxvB*Gxhd za2{SVe2K%u4vwrROnzughn4cU^{=1cOxXx0@Nr2$Rwb>_ zWb(4skH_T8x6B3k>*cME)@VYG(3RbKe2R@CV~ zw!n8tro>>~X8Ei2XZLVM*N!t(g-&b%t|>_qvK*EHbPs34#Yea+28Zf~i7n6#lFEVB zk67+P{n_fuAXs1Du!V+Jy%lMyb(1;If^%obmfz=yYiGy$%gh1F>XY3s6I&?I4o!+? z{RVTPWvIu?hcS-!@;!QGNZ+t#3(tEbSIuQTV@=l$O+$4tXkrU?Gp8X%t#4QoB~)Fg5~#5F95Eg&j86*6IKnPriWHNWGG!XcfcMps4Kf}#&Y zxQJW7%hIUTv=y!NkH}KCKvb)F&{||UWGaPJzNG~UOf9g?U_EAeNq1e}S8EGoq|2bS z!*Wxcu6|9-76f&rN~(GUzd|NnSETf_=C&Y)l*X**oYrMdYcuE!Z6Txca6$^OzG8l= z3F?vAt*N%4x+V&^b;#0eQJmd}H+Iy;*|@~p7C5tLj=?%&d9*DmJ>ahc#}+!uuCtpW zR)Zz(LLx{U^6p44y(DWr@Iy3nVS1m$$FNx&tP6Hri&pyHMrZH9@88GqskUI$Qwpf{ z7gvvcSdNW=1yNYu%ZJ|dbkoeT&K1r=rs zO6{kFTbEfH9_{`i?j?o^11J1yglj#64qewC^=;w$o~q8VeAXk@rpj=r>=q31Rucw! zTcETIIneT04y~Bw)a7RhPE|!K7MNObnZa6Mc`)2RL>X|dtoB+eW=L#dcqc7DnZ>%s zI*`G2+`1iLOcZY_AbHawY+Ywr)B%GVe7(9YDAhp;x87lC^eFuf7`Y(C81#xy2S%`k ziF(vHHtRg=LP1%H6R!CKWs|3775b90K4Hu0D>GVCtPgzvC8IuoOVONOVhcolAP-vau^fD%K(QZ= zJl__Kd|?5#{(vRXzJS4&=)NI(ukYcSq@gW1Mcfq})=yajnm6#+_o(Nm!C_(xO#QFS zV4Y%ll>^+{iks)*N3tFuc$$MUhxL**pyE|Lu#Ow;!=qfg6&7l@)lAmstOpI0(??*F z*aDzhwjvXr0kHkKM$m>^U^t2$_0p23UWM`H=@)o`(t# zxBM<0-fRm-?X7@XKW0hP_GZvl(Y&e+xQM8Kgk~-{)piAk^*2}p#z5Q$=R2`dkk~?} zsKY?4k68j^Dcx{^N$i0wR2oZ#Zrx*UTFor;Q6qC z$b;>$z-Uq6hHU_{+Y5E?Oan01w< zU}cRMgQlQlGRX9=$RqK4I7mw+kM%RwqG}o;VkbD0<1y}8o=w98A=CJg0oKI= z|5nN`WZ_Q%Ym@m={>OeBgR)uy)pHyHsr*IQs8A0b5Cty9i)PvdRh*# z=2;g!l15ZhMiy*=$g|`@>(8>BvH`B%UQw5(q!+8%f~7Xdqt+FcMDN{oaUYwfsutJ1 z1ggdoTX2fQDmbhkum)5o4!B2Ehv;uIPZXHOt1^T2`z(+81{`nDK87u1s_zW2Lgt5! zKvwsyM}a!2Be4Y{8|6W(&vIDBS0jKsw1q^g_$krqF(2he@u`I(TgW;;3|Mb7KWx9} zV?v6hEWHC{3r4mtpw@^bVcPr<9drGiX0BnXn0%EYWYEQJoFr1Uh9XV{4?3>2MJu~;qEfs~*0+Yx*hnJ%#fp_Fr& z^@^q7A2qT&!u(U{(6$vBh-I?`@~S2nZa|Jd%d0R@UaMFvgq!If+MvO(JHi0Ub0p!R zHaLdM`gPVsr4HQ4;~_{8U1|ffK4B@eq9=U}nYc0u>juiMi7gg&LNsiUF97Jyom328%Z>Cdb8B18&t4S}wjhHL6sddo{#Mwm&}l#@~& zQd4i~mrO_f=l$qqzaFY9mKkZ_#NlUzENa#DnlUltW)dvBeAb0w=@9#<;Km9bzrKwyqSm)_> z&zczJ)Ydl3t{wHU7UrsZM{(tu+Nje=#&hez>S_(Uez8+~5jeHgS~Mu#rLFE2t!Z6a zfssRXz(#E+jykX-mod|S{XrPDov^0o8MU>0T0_;fomjG0GnIxL^*asLbyJTxHSExi zt)}ZHlWCrEFtD}(Y_H`z%J#=39H5y{E#)Ae{F5X>YQ8$x;Q}wf2SDhM# zyKE|$uRKJ^`$kQ0bMxy*H8;eTc%f`(iOBgRwlH)HOs7H0v7q*fEFfu?OQZ#HNY`i5 zvE5@6&&go2TvO&t*Hg5jta{(V65U$BmKcAD#_dNwQmsYp-^FN`6tZ|O^cqG7xtZrR zYx7i{le)W2s%i<=T!%xIOWl_$+Td-pPL*!$L6BMp9|1S7A9~KhoHIAS)LfYH=4P79 zb55%>yW}_9i=O8?ZLc%G;ItQK`T4)gtPEX?`|C7z9&2dmaezlv@P+OVtx1z4A44H) zZTAS5=S*wa8x@PqAP zwrV4(n|m}jsrBKKYr_Z~#jD8BojvNq?9^**7%97k{`A)B1D&ra&G-g`;?*bp7!LrT znZ^OOsI;Q2$6tAp__Z}v|6P=)1YcAzoPyepNdGd?OA1RbT&ytMltPbn#n-`+hy|bf z(&7yRs_aoa99B2Ei%w~*ci5+#2WHlb{jDy-O#n&SC~>~{u%?DO4H-#aP47}K)<$-L z{FEC<2{}K+9971f^1|>XF3B$V$BWZgW|;1%n_+dT@9GY=ubj|6ns-k{1yo z%=eG5vCZUW`_*;O*L~Rv`)y2gcY*4tz&TCU{8yq1p0h;M99J=wgG|9XZ>3btb15A>YfkJQXwtA>_k!!su*mxcw=ym^!u&(ut-*m-dA{2QyYl-g z=Bx@^J~H_5ka?n#$6S$uyyU3YjzaE&nI$i1nTVlt+q;`aynILF>`jnI<9y%aLJ5|{ zgP&dv-J}L@6*wHmXF0g0Qy{(sd-K}JHeV8UWf+azgF+phC8B1%GD0mDgP`{-UY1sU zig>l)lxl=(5X*Oua_5tY9E-8=rv9K;?^0x*sv9NobgDfe z-t4#hG`~#aF;;&cv)1r)vMjLa7pT)HE)dlw9Fe&AT=w*4a3z-+@0@0OH&w=+s`#=cX=anJCjdta5oR&Pu1iSZuz+%h7BAcM40nW{tgG^(z7d>|1b0`uYLdk literal 0 HcmV?d00001 diff --git a/day_5/dist-newstyle/cache/plan.json b/day_5/dist-newstyle/cache/plan.json new file mode 100644 index 0000000..826d0dc --- /dev/null +++ b/day_5/dist-newstyle/cache/plan.json @@ -0,0 +1 @@ +{"cabal-version":"3.4.0.0","cabal-lib-version":"3.4.0.0","compiler-id":"ghc-9.0.1","os":"linux","arch":"x86_64","install-plan":[{"type":"configured","id":"aocDay5-0.1.0.0-inplace-aocDay5","pkg-name":"aocDay5","pkg-version":"0.1.0.0","flags":{},"style":"local","pkg-src":{"type":"local","path":"/tmp_workspace/aoc-2021/day_5/."},"dist-dir":"/tmp_workspace/aoc-2021/day_5/dist-newstyle/build/x86_64-linux/ghc-9.0.1/aocDay5-0.1.0.0/x/aocDay5","depends":["base-4.15.0.0"],"exe-depends":[],"component-name":"exe:aocDay5","bin-file":"/tmp_workspace/aoc-2021/day_5/dist-newstyle/build/x86_64-linux/ghc-9.0.1/aocDay5-0.1.0.0/x/aocDay5/build/aocDay5/aocDay5"},{"type":"pre-existing","id":"base-4.15.0.0","pkg-name":"base","pkg-version":"4.15.0.0","depends":["ghc-bignum-1.0","ghc-prim-0.7.0","rts"]},{"type":"pre-existing","id":"ghc-bignum-1.0","pkg-name":"ghc-bignum","pkg-version":"1.0","depends":["ghc-prim-0.7.0"]},{"type":"pre-existing","id":"ghc-prim-0.7.0","pkg-name":"ghc-prim","pkg-version":"0.7.0","depends":["rts"]},{"type":"pre-existing","id":"rts","pkg-name":"rts","pkg-version":"1.0","depends":[]}]} \ No newline at end of file diff --git a/day_5/dist-newstyle/cache/solver-plan b/day_5/dist-newstyle/cache/solver-plan new file mode 100644 index 0000000000000000000000000000000000000000..152c91fc092e5e49441a349aa9b77bbefb4be765 GIT binary patch literal 28517 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 Hl@tR2?5Pc^ literal 0 HcmV?d00001 diff --git a/day_5/dist-newstyle/packagedb/ghc-9.0.1/package.cache b/day_5/dist-newstyle/packagedb/ghc-9.0.1/package.cache new file mode 100644 index 0000000000000000000000000000000000000000..b3cae5cf028ad4728b344193a7c6fe4e76e36af3 GIT binary patch literal 40 ZcmZQb&qyxFPG 5,9 +8,0 -> 0,8 +9,4 -> 3,4 +2,2 -> 2,1 +7,0 -> 7,4 +6,4 -> 2,0 +0,9 -> 2,9 +3,4 -> 1,4 +0,0 -> 8,8 +5,5 -> 8,2 \ No newline at end of file diff --git a/day_5/input.txt b/day_5/input.txt new file mode 100644 index 0000000..9ec47c3 --- /dev/null +++ b/day_5/input.txt @@ -0,0 +1,501 @@ +976,35 -> 24,987 +552,172 -> 870,490 +647,640 -> 841,834 +580,460 -> 580,749 +614,575 -> 746,575 +97,846 -> 441,846 +467,680 -> 767,680 +722,860 -> 722,98 +31,338 -> 31,581 +113,712 -> 184,712 +738,897 -> 136,897 +820,750 -> 144,74 +291,411 -> 641,411 +581,878 -> 581,657 +449,540 -> 787,202 +79,925 -> 981,23 +800,120 -> 36,884 +253,603 -> 253,643 +574,138 -> 574,966 +847,199 -> 144,902 +816,177 -> 243,750 +963,632 -> 472,141 +38,41 -> 986,989 +980,225 -> 980,801 +255,350 -> 647,350 +732,311 -> 732,907 +109,662 -> 113,662 +333,317 -> 470,180 +111,146 -> 339,146 +136,856 -> 534,458 +555,39 -> 555,895 +699,327 -> 699,496 +280,948 -> 660,948 +919,293 -> 316,896 +343,645 -> 620,368 +14,984 -> 975,23 +219,653 -> 696,176 +50,350 -> 50,956 +919,550 -> 919,568 +405,532 -> 238,532 +328,95 -> 979,746 +564,716 -> 119,716 +52,285 -> 52,126 +240,671 -> 963,671 +691,416 -> 676,431 +216,247 -> 216,530 +103,309 -> 103,643 +265,163 -> 981,879 +623,399 -> 760,262 +392,568 -> 674,286 +280,82 -> 863,665 +657,522 -> 657,858 +194,16 -> 443,16 +158,326 -> 158,372 +582,530 -> 582,159 +857,638 -> 857,807 +463,575 -> 463,108 +74,390 -> 74,967 +437,892 -> 224,892 +854,409 -> 366,897 +875,858 -> 875,871 +245,683 -> 735,193 +911,285 -> 216,980 +944,170 -> 701,170 +149,244 -> 149,653 +879,926 -> 70,117 +193,198 -> 777,782 +11,581 -> 287,305 +513,163 -> 939,163 +551,705 -> 551,636 +546,79 -> 546,630 +392,877 -> 392,240 +859,821 -> 859,975 +755,581 -> 755,722 +941,636 -> 976,636 +212,807 -> 595,807 +24,847 -> 24,248 +972,46 -> 40,978 +434,328 -> 491,328 +573,663 -> 16,663 +882,43 -> 882,777 +162,786 -> 11,786 +774,340 -> 322,340 +33,775 -> 883,775 +422,958 -> 212,748 +973,879 -> 415,321 +278,602 -> 435,759 +983,99 -> 321,99 +594,502 -> 727,635 +755,674 -> 314,233 +67,336 -> 702,336 +617,128 -> 617,287 +735,929 -> 165,929 +758,778 -> 758,679 +38,27 -> 971,960 +873,419 -> 949,419 +305,138 -> 978,811 +282,404 -> 377,404 +753,267 -> 945,267 +877,796 -> 64,796 +35,32 -> 949,946 +18,383 -> 64,429 +855,407 -> 938,324 +845,965 -> 88,208 +77,960 -> 960,77 +225,714 -> 490,714 +619,40 -> 395,40 +87,379 -> 87,178 +961,828 -> 302,828 +78,321 -> 78,816 +243,620 -> 883,620 +581,560 -> 69,560 +420,957 -> 768,957 +927,427 -> 908,408 +100,406 -> 100,736 +369,27 -> 199,27 +177,804 -> 177,727 +83,807 -> 166,724 +358,119 -> 358,583 +866,223 -> 348,741 +283,636 -> 283,476 +792,481 -> 161,481 +126,476 -> 612,962 +829,437 -> 829,444 +402,683 -> 402,11 +680,278 -> 676,278 +391,597 -> 521,467 +467,787 -> 646,608 +637,689 -> 637,959 +161,173 -> 161,604 +582,252 -> 582,181 +971,93 -> 329,93 +763,195 -> 156,802 +576,504 -> 755,325 +156,56 -> 657,557 +276,940 -> 836,380 +800,933 -> 800,734 +486,607 -> 486,54 +847,679 -> 299,131 +558,711 -> 558,643 +44,869 -> 44,877 +897,399 -> 897,265 +856,217 -> 856,701 +395,784 -> 395,634 +443,647 -> 443,977 +59,735 -> 59,860 +564,519 -> 173,910 +516,860 -> 54,860 +23,467 -> 23,551 +82,102 -> 849,869 +316,551 -> 195,551 +943,41 -> 25,959 +314,865 -> 314,74 +434,491 -> 501,491 +941,563 -> 860,563 +937,842 -> 320,225 +415,725 -> 415,841 +822,308 -> 500,308 +136,434 -> 22,434 +275,356 -> 280,356 +672,935 -> 22,935 +776,22 -> 55,743 +219,198 -> 219,775 +977,923 -> 977,344 +37,922 -> 815,144 +107,493 -> 107,804 +840,913 -> 840,686 +249,774 -> 249,485 +765,696 -> 649,696 +491,708 -> 302,708 +345,589 -> 345,357 +935,206 -> 759,206 +757,823 -> 30,96 +590,513 -> 746,513 +373,18 -> 845,490 +816,829 -> 816,608 +104,15 -> 964,875 +650,675 -> 650,389 +333,987 -> 857,463 +627,398 -> 627,223 +578,208 -> 159,208 +355,594 -> 355,633 +63,921 -> 873,921 +510,434 -> 801,143 +953,928 -> 308,283 +947,48 -> 25,970 +384,203 -> 384,97 +806,160 -> 934,288 +690,29 -> 269,29 +825,834 -> 269,278 +620,613 -> 620,540 +554,698 -> 419,833 +887,554 -> 457,554 +276,573 -> 276,487 +213,211 -> 213,619 +437,621 -> 141,917 +951,59 -> 951,272 +270,455 -> 270,336 +727,25 -> 42,710 +803,384 -> 615,196 +643,715 -> 643,741 +750,815 -> 642,923 +464,693 -> 714,943 +828,773 -> 189,134 +507,858 -> 58,858 +289,898 -> 190,898 +380,518 -> 749,149 +696,219 -> 760,219 +678,177 -> 686,185 +241,103 -> 857,103 +782,773 -> 782,508 +20,24 -> 277,281 +175,805 -> 59,805 +375,944 -> 375,938 +180,971 -> 203,971 +379,984 -> 830,984 +298,376 -> 254,376 +807,376 -> 486,376 +931,512 -> 931,931 +889,859 -> 361,859 +632,546 -> 298,880 +429,616 -> 583,770 +814,838 -> 503,527 +64,301 -> 753,301 +706,124 -> 706,698 +323,976 -> 323,43 +42,82 -> 550,590 +260,528 -> 260,462 +201,656 -> 593,656 +348,516 -> 203,516 +201,675 -> 413,675 +928,70 -> 138,860 +323,427 -> 601,427 +874,156 -> 630,156 +335,374 -> 335,522 +237,551 -> 597,551 +14,125 -> 909,125 +805,59 -> 67,797 +656,684 -> 656,263 +487,544 -> 487,464 +637,890 -> 637,606 +27,983 -> 952,58 +899,93 -> 77,915 +504,288 -> 504,689 +404,289 -> 700,289 +643,336 -> 321,336 +190,865 -> 674,865 +844,12 -> 81,775 +821,365 -> 821,453 +503,20 -> 503,811 +20,122 -> 983,122 +28,231 -> 398,231 +441,263 -> 931,263 +130,19 -> 925,19 +577,873 -> 577,706 +322,489 -> 322,621 +269,134 -> 935,800 +61,841 -> 491,841 +286,720 -> 542,464 +497,530 -> 497,266 +178,616 -> 512,282 +184,338 -> 184,241 +906,946 -> 327,946 +879,947 -> 879,302 +815,788 -> 963,788 +791,322 -> 791,395 +851,116 -> 793,116 +232,114 -> 934,816 +273,839 -> 157,839 +184,876 -> 184,138 +298,586 -> 634,250 +130,127 -> 130,753 +453,485 -> 855,887 +663,776 -> 934,776 +799,326 -> 799,661 +56,498 -> 274,716 +650,317 -> 52,915 +93,342 -> 391,44 +972,22 -> 59,935 +761,78 -> 508,331 +577,578 -> 15,16 +51,902 -> 72,881 +51,91 -> 51,422 +89,602 -> 89,280 +339,129 -> 339,329 +173,413 -> 489,413 +756,383 -> 745,383 +216,39 -> 216,373 +844,404 -> 552,404 +313,276 -> 313,895 +236,330 -> 231,330 +836,496 -> 836,291 +18,48 -> 950,980 +562,408 -> 562,606 +70,105 -> 70,469 +402,458 -> 694,166 +228,644 -> 689,183 +220,646 -> 834,32 +691,734 -> 141,184 +24,974 -> 978,20 +805,111 -> 11,905 +765,765 -> 210,210 +265,810 -> 248,810 +742,506 -> 179,506 +945,954 -> 40,49 +403,464 -> 600,464 +149,784 -> 754,784 +784,757 -> 222,757 +905,839 -> 160,839 +660,971 -> 609,971 +148,505 -> 309,505 +571,494 -> 323,494 +573,109 -> 71,109 +513,649 -> 54,649 +287,582 -> 287,604 +569,218 -> 569,790 +108,740 -> 108,816 +542,899 -> 445,802 +939,519 -> 939,752 +810,643 -> 810,236 +571,95 -> 560,106 +547,431 -> 547,42 +299,536 -> 299,820 +506,808 -> 437,808 +727,803 -> 941,589 +583,100 -> 891,100 +552,556 -> 515,556 +789,871 -> 90,172 +81,649 -> 641,89 +264,518 -> 511,518 +498,324 -> 596,324 +642,836 -> 642,481 +695,827 -> 768,900 +603,940 -> 603,352 +975,64 -> 92,947 +65,515 -> 65,405 +766,667 -> 344,667 +284,162 -> 245,162 +139,123 -> 942,926 +316,906 -> 316,907 +42,418 -> 224,600 +338,733 -> 338,46 +448,744 -> 448,796 +198,153 -> 198,723 +122,433 -> 712,433 +887,708 -> 685,708 +452,265 -> 817,630 +317,613 -> 317,959 +185,841 -> 788,238 +702,558 -> 734,558 +45,749 -> 330,464 +250,174 -> 250,561 +276,664 -> 793,664 +164,434 -> 619,434 +360,13 -> 686,339 +52,333 -> 361,642 +315,675 -> 315,175 +646,530 -> 815,699 +363,554 -> 58,554 +730,80 -> 38,772 +90,85 -> 494,85 +863,64 -> 218,64 +633,492 -> 633,134 +321,919 -> 324,919 +395,133 -> 395,592 +152,963 -> 983,132 +42,149 -> 674,781 +754,146 -> 858,146 +53,628 -> 976,628 +433,365 -> 433,735 +951,360 -> 951,913 +875,250 -> 875,463 +923,348 -> 208,348 +951,586 -> 103,586 +818,924 -> 178,284 +265,130 -> 265,859 +26,410 -> 805,410 +847,149 -> 190,806 +136,36 -> 797,36 +841,660 -> 620,660 +759,553 -> 393,919 +530,743 -> 647,860 +163,909 -> 979,93 +798,175 -> 399,574 +934,847 -> 934,231 +373,749 -> 373,397 +679,871 -> 695,887 +407,468 -> 524,468 +890,611 -> 988,611 +104,706 -> 745,65 +533,659 -> 533,126 +342,460 -> 187,460 +398,26 -> 398,254 +116,11 -> 886,781 +846,317 -> 329,834 +919,104 -> 120,903 +93,843 -> 912,24 +618,610 -> 618,311 +834,276 -> 85,276 +983,26 -> 42,967 +412,706 -> 412,204 +51,966 -> 952,65 +969,871 -> 969,258 +51,652 -> 608,95 +289,903 -> 869,903 +283,760 -> 781,760 +521,74 -> 521,848 +720,572 -> 638,572 +146,847 -> 146,930 +980,953 -> 42,15 +49,956 -> 941,64 +209,242 -> 905,242 +249,185 -> 374,60 +916,738 -> 916,793 +12,922 -> 872,62 +543,198 -> 123,198 +316,423 -> 316,549 +694,514 -> 869,514 +36,46 -> 916,926 +427,295 -> 267,295 +884,669 -> 884,175 +558,379 -> 549,379 +89,85 -> 968,964 +48,544 -> 48,675 +337,81 -> 337,870 +953,46 -> 44,955 +37,912 -> 251,698 +342,191 -> 342,238 +874,289 -> 353,810 +547,935 -> 97,485 +392,359 -> 859,826 +329,815 -> 329,98 +65,22 -> 118,75 +803,341 -> 803,763 +389,98 -> 964,98 +420,520 -> 396,520 +204,650 -> 583,650 +446,77 -> 739,77 +208,447 -> 75,580 +693,443 -> 693,668 +341,697 -> 802,697 +398,718 -> 318,638 +430,38 -> 430,665 +519,932 -> 490,932 +381,492 -> 242,353 +896,616 -> 638,616 +520,552 -> 901,933 +750,44 -> 307,44 +653,209 -> 186,676 +399,447 -> 208,256 +741,146 -> 741,399 +228,893 -> 228,214 +934,925 -> 71,62 +986,74 -> 74,986 +422,88 -> 467,43 +566,680 -> 875,371 +328,465 -> 38,465 +705,620 -> 705,441 +534,256 -> 534,784 +909,939 -> 909,222 +467,640 -> 323,640 +372,725 -> 816,281 +78,631 -> 78,933 +739,376 -> 397,718 +901,954 -> 153,206 +869,212 -> 799,212 +192,946 -> 192,736 +946,13 -> 13,946 +267,480 -> 267,561 +954,287 -> 954,190 +145,935 -> 913,167 +295,152 -> 458,152 +10,690 -> 139,690 +121,23 -> 977,879 +265,247 -> 265,976 +281,793 -> 787,793 +988,355 -> 367,976 +97,807 -> 323,807 +527,506 -> 474,506 +359,340 -> 359,280 +371,203 -> 801,203 +53,593 -> 53,980 +377,705 -> 987,95 +901,975 -> 153,227 +851,442 -> 565,442 +425,976 -> 850,551 +766,674 -> 766,572 +18,757 -> 18,444 +386,682 -> 386,424 +966,640 -> 604,278 +919,973 -> 141,195 +672,768 -> 405,768 +271,814 -> 971,114 +719,902 -> 474,902 +365,768 -> 877,256 +360,787 -> 214,787 +133,616 -> 266,483 +577,399 -> 59,399 +290,74 -> 290,145 +154,131 -> 154,210 +