mirror of
https://github.com/SebastianStork/advent-of-code.git
synced 2026-01-21 14:31:34 +01:00
Move c++ solutions into separate directory
This commit is contained in:
parent
3c40f13cfc
commit
4adbe68617
28 changed files with 1 additions and 1 deletions
7
2024/cpp/day-01/day-01.pro
Normal file
7
2024/cpp/day-01/day-01.pro
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
TEMPLATE = app
|
||||
CONFIG += console c++17
|
||||
CONFIG -= app_bundle
|
||||
CONFIG -= qt
|
||||
|
||||
SOURCES += \
|
||||
main.cpp
|
||||
1000
2024/cpp/day-01/input
Normal file
1000
2024/cpp/day-01/input
Normal file
File diff suppressed because it is too large
Load diff
59
2024/cpp/day-01/main.cpp
Normal file
59
2024/cpp/day-01/main.cpp
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
#include <algorithm>
|
||||
#include <iostream>
|
||||
#include <vector>
|
||||
|
||||
using namespace std;
|
||||
|
||||
void readInput(vector<int> &list1, vector<int> &list2)
|
||||
{
|
||||
int value1, value2;
|
||||
while (cin >> value1 >> value2) {
|
||||
list1.push_back(value1);
|
||||
list2.push_back(value2);
|
||||
}
|
||||
}
|
||||
|
||||
void sortLists(vector<int> &list1, vector<int> &list2)
|
||||
{
|
||||
sort(list1.begin(), list1.end());
|
||||
sort(list2.begin(), list2.end());
|
||||
}
|
||||
|
||||
int calculateTotalDistance(const vector<int> &list1, const vector<int> &list2)
|
||||
{
|
||||
int totalDistance = 0;
|
||||
for (size_t i = 0; i < list1.size(); i++) {
|
||||
totalDistance += abs(list1[i] - list2[i]);
|
||||
}
|
||||
return totalDistance;
|
||||
}
|
||||
|
||||
int calculateSimilarityScore(const vector<int> &list1, const vector<int> &list2)
|
||||
{
|
||||
int similarityScore = 0;
|
||||
size_t index2 = 0;
|
||||
for (size_t index1 = 0; index1 < list1.size(); index1++) {
|
||||
while ((index2 < list2.size()) && (list1[index1] > list2[index2])) {
|
||||
index2++;
|
||||
}
|
||||
while ((index2 < list2.size()) && (list1[index1] == list2[index2])) {
|
||||
similarityScore += list2[index2];
|
||||
index2++;
|
||||
}
|
||||
}
|
||||
return similarityScore;
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
vector<int> list1, list2;
|
||||
readInput(list1, list2);
|
||||
|
||||
sortLists(list1, list2);
|
||||
|
||||
// Part one
|
||||
cout << "Total distance between the lists: " << calculateTotalDistance(list1, list2) << endl;
|
||||
|
||||
// Part two
|
||||
cout << "Similarity Score: " << calculateSimilarityScore(list1, list2) << endl;
|
||||
}
|
||||
7
2024/cpp/day-02/day-02.pro
Normal file
7
2024/cpp/day-02/day-02.pro
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
TEMPLATE = app
|
||||
CONFIG += console c++17
|
||||
CONFIG -= app_bundle
|
||||
CONFIG -= qt
|
||||
|
||||
SOURCES += \
|
||||
main.cpp
|
||||
1000
2024/cpp/day-02/input
Normal file
1000
2024/cpp/day-02/input
Normal file
File diff suppressed because it is too large
Load diff
80
2024/cpp/day-02/main.cpp
Normal file
80
2024/cpp/day-02/main.cpp
Normal file
|
|
@ -0,0 +1,80 @@
|
|||
#include <iostream>
|
||||
#include <sstream>
|
||||
#include <vector>
|
||||
|
||||
using namespace std;
|
||||
|
||||
vector<vector<int>> readInput()
|
||||
{
|
||||
vector<vector<int>> list;
|
||||
string line;
|
||||
while (getline(cin, line)) {
|
||||
list.push_back({});
|
||||
stringstream stream(line);
|
||||
int value;
|
||||
while (stream >> value) {
|
||||
list.back().push_back(value);
|
||||
}
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
int getIndexOfUnsafeValue(const vector<int> &report)
|
||||
{
|
||||
const int MAX_SAFE_DIFFERENCE = 3;
|
||||
|
||||
int directionOfChange = (report.front() < report.back()) ? 1 : -1;
|
||||
for (size_t i = 0; i < report.size() - 1; i++) {
|
||||
int levelDifference = (report[i + 1] - report[i]) * directionOfChange;
|
||||
if (levelDifference <= 0 || levelDifference > MAX_SAFE_DIFFERENCE) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
bool isSafeReport(const vector<int> &report, const bool applyDampener)
|
||||
{
|
||||
int indexOfUnsafeValue = getIndexOfUnsafeValue(report);
|
||||
|
||||
if (indexOfUnsafeValue == -1) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!applyDampener) {
|
||||
return false;
|
||||
}
|
||||
|
||||
vector<int> tempReport = report;
|
||||
int unsafeValue = report[indexOfUnsafeValue];
|
||||
tempReport.erase(tempReport.begin() + indexOfUnsafeValue);
|
||||
if (getIndexOfUnsafeValue(tempReport) == -1) {
|
||||
return true;
|
||||
}
|
||||
|
||||
tempReport.insert(tempReport.begin() + indexOfUnsafeValue, unsafeValue);
|
||||
tempReport.erase(tempReport.begin() + indexOfUnsafeValue + 1);
|
||||
return getIndexOfUnsafeValue(tempReport) == -1;
|
||||
}
|
||||
|
||||
int calculateNumberOfSafeReports(const vector<vector<int>> &list, const bool applyDampener)
|
||||
{
|
||||
int numberOfSafeReports = 0;
|
||||
for (const vector<int> &report : list) {
|
||||
numberOfSafeReports += isSafeReport(report, applyDampener);
|
||||
}
|
||||
return numberOfSafeReports;
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
vector<vector<int>> list = readInput();
|
||||
|
||||
// Part one
|
||||
cout << "Number of safe reports: " << calculateNumberOfSafeReports(list, false) << endl;
|
||||
|
||||
// Part two
|
||||
cout << "Number of safe reports (when taking the dampener into account): "
|
||||
<< calculateNumberOfSafeReports(list, true) << endl;
|
||||
}
|
||||
7
2024/cpp/day-03/day-03.pro
Normal file
7
2024/cpp/day-03/day-03.pro
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
TEMPLATE = app
|
||||
CONFIG += console c++17
|
||||
CONFIG -= app_bundle
|
||||
CONFIG -= qt
|
||||
|
||||
SOURCES += \
|
||||
main.cpp
|
||||
6
2024/cpp/day-03/input
Normal file
6
2024/cpp/day-03/input
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
?% mul(948,148)why() %how(670,744)mul(590,32);where())#}from()>how()mul(611,372)}{~^?>from()^mul(835,665)who()]#^don't()select()select())mul(724,851)[>&mul(188,482)$mul(781,111)[who()<why(),!]mul(678,13)why()$#%who()mul(620,771)<!^}@^+what()mul(281,719)(]'what()where()>&from():!mul(147,678)how(){mul(938,510)where()!$?*['mul(103,563)where())mul(4,125)$*>>^mul(126,929)]& %~mul(161,418)who()>>do()]-''?mul(416,366)~?/where()]who()mul(459,47))>what(){@[(mul(219,400)+do()when()from():who()when()]&{{%mul(804,830)-select()what()*what()%}mul(861,992)who()!',mul(159,874)#<)''<mul(460,777)?mul(909,244)how()+what()]<do()?}mul(749,87)from()(who();why()mul(430,124)/$>how()@$%mul(214,139)&how()>mul(112,835)select()*from()@why()?[{mul(209,568)/; ~)mul(630,749):mul(841,589)/;who()>[mul(778,567)+when() how()<#mul(544,851)what(){+mul(327,103)from()what()/[~-mul(995,415)/when()-mul(880,153)}:}mul(368,920)'how()mul(864,419)from()what()@mul(208,291)who()<?}?what()',[{mul(575,454)*&(<{how()[mul(557,489){{why(){how()@who()~mul(423,703)mul(910,916)+what()^/<-*from()'mul(746,826),-*)/+>}^from()mul(154,571)++:>,mul(601,458)why()<;how()~from(172,16)mul(333,315)?[mul(513,260) {*mul(117,759)%]mul(77,644){($%>]&~mul(238,306)~select()from();-'who()'mul(460,352); ?select()>[[(from() mul(337,294)why()how()</$<where()don't()(?]{why()%}from()mul(367,653)~mul(910,873)^why()>mul(499,785)>what()[*:#where()*what()mul(765,210)*$[]mul(461,957)##)+}when()-@:mul(198,90)what()what()how()') )mul(258,966)]+(when()mul(535,417)where()!don't()@mul(939,319)?mul(751,538))! mul(758,675)~how()[how(),@>[where()when(29,965)mul(358,39){^what();/(where()how()mul(271,786)why():mul(792,761)do()$]%mul(740,232)>who(949,378)what()[(where()who(){who()#mul(595,343)%+mul(194,296)'mul(161,747): '{where(12,567),@mul(234,39)!+do()/who()[where()&'what()when()how())mul(138,925)),#;where()>{mul(738,864){mul(605,662)*when()%when()+( /~&mul(633,935)when()];mul(263/}*<!where(),- ~when()mul(512,798)]}where())when()who()mul(933,447)where()}mul(33,935*mul(15,975)mul(574,550)+#^;'$from(280,157)$^what()mul(919,849)@mul(18,160))$&^]how()what() when()where()mul(88,657):/from())+:/when()@]mul(71,74)from()'*:@{>mul(127,821)^how()$$select()select()@^{:mul(867,979)&%/>{%^how()what(499,657)+do()%what()(~;-:*mul(438,941)<]?]mul(208,834when()&^;]from()when(613,710)^}+$mul(809,573)mul^)*:from(379,983)mul(47,786)}when()-what()how(450,632)> where()how()mul(810,597 ;;{%(select()select()&,mul(356,249)from()/!{#&^mul(23,248)(!who()]-+,mul(873,987)]{what()< )-{^mul(591,317)/mul(382,188)mul(476,338)*why()$]mul(865,625)who()})?select():*@[)don't()/ ,mul(737,418)select(318,357);+ what()<mul(41,445)mul(236,630)$}from()]$^$,(do()-select()mul(369,197)from()]#};^mul(561,752)+&#+}?}:mul(18,235)<'& ,(*mul(645,811)why()select()who()[>where()don't()%#>!>/@what()[mul(490,823)&^( ,'@ [do()@mul(855,491)*^why()[,mul(348,679)how()$who() '&how(16,459)/!;mul(43,422)#^from()![}select()mul(976,749)-}select()-where()select()mul(223,589)%[why()mul(868,881)mul(178,790)$,{who()from()#,mul(318,399):where()?[mul(182,864)where() mul(156,690) -]mul(857,353)#'%,},>?+@mul(914,528)where()$mul(785,748)<$who()[mul(453,859)%'@ mul(84,729)/{do()(?$<}mul(820,286)?:*?}#when()(%mul(245,958when()?from(),+mul(128,335)mul(463,102);:]@-~-%mul(914,398)
|
||||
+mul(720,985)how(340,568)^!what()[),[mul(734,270)~')?who()]]mul(964,739)from()?who()$when() /mul(566,142)}*,?how()~mul(733,766)when()mul(319,914)when()mul(808,141)*@:&who();mul(736,736)where(){&!$when()]^mul(612,574)how()mul~]what()!!'[:mul(805,568),<^+~ #)&who()mul(810,729),[~/^<&mul(706,233)!-'{why(),(?&mul(28,746)%mul(127,170)-?} #don't()from(),[@,mul(282,734)mul(332,651)[:~mul(771,888)#who()^select(110,751)>who(){mul(655,334)why()+~&}mul(129,762)mul(597,498))*~-}who()who()~'$mul(235,859)where()^-,,@mul(661,707)[ ~,<-mul(502,445)?why(){why()from()-how()*>&mul(237,280)how()mul(669,512)#$< mul(426,417)[what()why()~select()*%,'where()mul(213,617)##>mul(148-how()&]mul(437,581)who()'<from()>%[:how()mul(985,24);mul(446,704)who(),mul(549#}%>[mul(58,502)%mul(55,502)~<where()''who()}<mul(678,579)mul(457,825)+how()from()'(*#+$$mul(266,507)mul(925,485)^why()mul(605,592)[}<>^<mul(173,922)@:<where()/-]'mul(110,899%select()why()why()>[%%;mul(63,642)>how())<*{mul(155,625)]mul(238,47)where()&@mul(630,112)who() mul(570,946)mul(299,320){({mul(307,251)%[]$%mul(621,739)^!}{^-+what())mul(350,650)!>who()what()]^,*mul(154,394)&?^mul(410,870)[-select()why()<who():+%don't()where()$]/when() how()when()mul(708from()]&?mul(589,972)*mul(167,814)[mul(807?%don't()])?'(who()mul(614,926)mul(404,930)'?+;mul(252how()^who(529,21)'who()%mul(675,37)mul(362*what(640,926)select()'?what(){'>mul(744,141)why():))from()^select()what()mul(991,854){-]+mul(64,859))~>>%>%select()#-mul(282,835)'select()'%<$!from(299,765)don't()-'mul(352,659),mul(366,409),when()mul(672,590)#@#}/(## mul(550,937)$#/^~mul(458,447)mul#(,/<mul(538,275)}where()'?'!-)mul<^>(how(),mul(465,230)^select()$<from(595,221):mul(704,141)what()]when()^select()^)^%'mul(260,350)>how()what()#@};(from()~mul(716,318)from()+]<!?mul(625,41)#[,~ /mul(19}mul(760,4)@how()mul(508,977)@select())][[mul(261,452 $mul(11,905)how(731,838)[mul(823,988)?!?@&&'mul(929,818)(>mul(701,784)!;>do()'&)when()select()mul(945,704)mul(250,874)who()]@don't()why(51,895)-,how()*+{why()%/mul(964,293)&<^where()<select();&mul(900,32)]where()$from()&#from()who()({mul(755,539)mul(26,466)how()$when()%&$~)mul(926,673)$what()!select(),do()~select()#^mul(272,306)~%'mul(22,647)$mul(904,943)^>-from()mul(635,212)when()how()[mul(314,335)%(- + ~mul(635,915)~[[do(){where(307,78)(who()(why()where();mul(450from()mul(903,662)>$mul(924,200),why()select()$mul(418,533)where()[where()mul(266,643):~^/#(:[from()mul(81,715),who()@:~+who()'%mul(79?who()select();# mul(436,105)#*why() #~[,where()'mulwho()[(~)[mul(119,92)]where(),select()why()?mul(639,691):+<why()why()mul(815,366)*where()-what()/?>mul(188,19)who()(select()what()mul(916,808));~mul(630,228)-)where()[~mul(586/[how()+~!>}>[how()mul(106,235)do()>why(416,339):mul(788,357)[when(442,691)what()how()where()$from()who()mul(471,832)]/*mul(837,328)<)>!mul(389,633)'from(),mul(70when()!from()select()$](when()*%mul(903,43)where(62,223)^from();@()mul(852,198)-when()?mulhow(168,455)(select()how();from()/mul(918,330)what()'how(215,263)$:{~how()*mul(136,552)from(363,441)-when()how()what()-+mul(229,899)!where()when()from(){mul(47,875)~mul(500,586)/&&where(),where()mul(571,252))%}^~when()mul(979,493)do()@!+~>^mul(568,461)]where()$who(){from();mul(743,403)@?[mul(117,954))/mul(382,589)<:what() mul(578,730)#/<,when()#)select()}mul(889,462){how(562,136)select()when()^>mul(150,815)/$from()?what()mul(842,604)**?'-^>;~'mul(622,493)
|
||||
mul(901,810)[<,^$do()<#why()<why()},,select()mul(257,221)mul(393,412)-from()&$]mul(198,284)/>;/why()mul(296,969)@mul(224,163)#<$what():,what()mul(995,485)$~)who()mul(382,831)'&~mul(146,234)mul(228,532)mul(944,430)!!who()<;'$(%do()%'{mul(588,828)~$why():where()mul(753(select()/':~$[mul(785,897)/<(#$)@mul(821,858)$what()+@/*mul(545,209)where();what()mul-why()>mul(808,588),where()];;}mul(431,815)<<;how()?@why()(^don't()select()$)!mul(832,43)what()[where()mul(935,377)from()++where()$-]@mul(793,489)*&mul(910,985)mul(340,122);from(87,683)[[]]'mul(659>from()['from()~,;@:^mul(420,510)/mul{from()$ >! -mul(508,275)!()@+{!mul(134,503)how()?mul(717,994)@}what()}[@<do()~'[??from() #&}mul(443,258)){do()^mul(894,293),@from()mul(470,736)/select()where()from()how()mul(769,763)/-'mul(436,853)from()mul(955,870);#why()how()how()mul(807,205)#do()select()<@$when()*select()>mul(899,477)who(88,557){[?-mul[how()>>@mul(113,239)&;?what(825,719)from()}@mul(717,829)when()who()%@what()when()#':mul(644,495)]^$ >[~don't()!#mul(175,323)><$>do()[[$what()/>(#~mul(976,792))what()#{how()-$?mul(534,805))what()@mul(600from()'from()mul(859,367)from()mul(852,796)?{[]/'~mul(624,853($:;^mul(522,963)+mul(143,246)[,what()#*when()',why()mul(435,720)mul(812,909)'<? /;when()}*how()do()mul(49,504)how()when()/!mul(799,134)$mul(213,950)from(182,488)];]do()mul(325,689)(@mul(485,128)who()mul(376~when()(%-what()(mul(776,635)#: from(788,757)}mul(997,619)-from(919,426)where()where()how() mul(370,735)*what(),*%$mul(408,722)}#mul(990,90)(<where()*don't()*@:(;what()%:*#mul(804,562)mul(162,269)]mul mul(267,461)%#{(};^~[mul(124,671) ~-<$<from()<from()mul(401,89)>&!!who()how()/,who()>mul(179,82))]don't()@(}<who()where()%<from()]mul(950,333) }&mul(420,707)mul(293,223)what()(/mul(131,775)>@<mul(498,349)mul(416,808)*how(676,683)select()&@mul(100,528)'&from()/[<,%>!mul(224,804'}-mul(180,723)#+@mul(144,160 +#<]where()+!from()select()(mul(614,183)mul(123,655)*+##mul(744,352):#$when()~&,what(625,950)select()'mul(468,293)*]+#mul/$why()where(623,670)%@;mul(722,469)&(%;do()) from()mul(557,124)/}:mul(928,793>]how(){?who()'<mul(74,894)%mul(312,960)'(,]%^mul(560,307<where();when()}how()%>[mul(624,959)&mul(765,13):who()<),who()& mul(639,802)&;(@:why(988,378):mul(677,987)~@-! ;!^do()mul(29,935)mul(134,862)when()+{what()when()who()}~why()mul(541,335)who()@[<mul(342what()select()who();mul(833,47)when()%@}${why()mul(891,370)(@*@[^mul(652,523)}why()&-(?'*mul(906,962) )mul(691,622)~(!<--when(506,845)</$mul(603,406)'how(83,339)mul(44,583)<:-^/why()mul(812,857$what()<-:$]what()?mul(226,418)!>'+why();when()&mul(127,948)$mul(485,474))?$mul(278,206)select()mul(641,623){} @{*where()'?mul}>mul(792,193) [#;*%->~what()mul(876,897)/@+'mul(341,837)^)why()?;@+^^~mul(718,922)[why()when()/,{}select()who())mul(941,117)/}/who()why(293,857))mul(414,482)what()! how()who()mul(910,766)!]what(),how()*mul(6,611)~;{who()who()[--mul(720,952)why(546,471)!)from()/?mul(971,461)}&/$@'mul(452,187)#who():(mul(44,298)mul(530,770)']:who()&$from()mul(544,752)mul(375,827))&@select()^;who()where()how()mulselect()^%^,/&mul(204,187)when()&,}$(who();mul(60,317)+who()$from()(how(942,734);@mul(239,338)!?:%)}@select()(mul(284,525)select()what()where()@^#~[mul(718,185)&!*{';when()@when()mul(272,161)how()%how()?mul(66,988)@)@,::>)mul(930,190)why(),~when()%<@&where(),mul(143,136)why()-,/*-what()+mul(73,408)~ who()%*select()'+where()#!/usr/bin/perlmul(379,680)
|
||||
;@mul(257,25)[!mul(646,635)>?who()who()from()mul(25,275(select()+why()%mul(102,254)%}/where()$mul(608,18)when()*#mul(343,951) mul(337,866)*^?#@why(805,831)-mulwhen()from()mul(854,5)when()@$why()mul(896,11)^mul(451,271)'how()?who()?)<%[}don't()who()/[{]-?from()when()?mul(198,238)])mul(750,760)+/-!what()~?#mul(880,271)%?select();where()(<^select()mul(373@from()where(),mul(700,15),mul(406,120)mul(551,206)mul(636,315);+{mul(261,201)mul,:-/&mul(267,217)/,'mul(132,410)@@;;who()when()]do()why()mul(4,121)#from()/mul(242what()how(277,558)<how()from()+:who()from()what()when()mul(27,714)who()why()what()mul(676,758)+^@*'}mul(274,109)-}]),select()*when()]why()mul(60,516)when()when(708,630)%%where():mul(34,59)from()#]how()+who()%who()*don't()select()&~(;where()/mul(548,869)&mul(439,68)]@}%)~&mul(46,712)when()+[&]where(),+mul(940,261)^who()where()mul(655,165) >'how()how(){mul(12,537)&[>}mul(322,676)[#,do()@,mul(248,663),when()-do()^what()]when()who()what()how())mul(864,73)how()?]*mul(653,55)when()from()from()how()@ }mul(94,590)]~what()mul(164,505)]from()when()]mul(218,565)(from() why()[*when()}[mul(306,447)*]][> #mul(783,715?)+^~mul(308,994):<*~)>from()why()*mul(508,139)>from()@;+~#mul(652,903)#[/?mul(407,208]how(){when(),**@*:/mul(849,965)mul(69,198<'#%[?mul(236,808)what()from()%from()why()^/,don't()select()&where()@mul(888,101) mul(332,775)who()):select()),:-mul(119,209)%how()mulfrom()select()don't(){mul(838,613)why() '({*<!mul(372,376)mul(407,117$who()[ mul(171,741)where();mul(742,142)mul(34#^+:who()mul(157,514)>~>*mul(466,106)mul(883,754->(%%who()[!mul(587,792)'((!?select()&}<mul(791,734){how()&;+<(mul(655,63):why(){!{)mul(320,950)->-'#)why()#[mul(234,162),what(497,671)why()#mul(985,797)>}~;from()select()mul(117,492)&~+from()]%>*$&mul(451,669))}'/@how()?where()why(694,295)'mul(676,756){~;select()what()}what()^}mul(963,857);%/how()?mul(944,194);select()<&^how(){->mul(195,702))?select()why()&~%}why()#mul(90,304)@%why(673,634)*/where()- <:do(){}!mul;who()]where()]-@?<mul(919,817),>when()how()how()>mul(875,604)select()%do()%mul(790,136)*$,mul(853,95)[how()>!%?mul(246,573)&!what()/#from()!mul(382,307),!#[-mul(32,733)$+[*mul(192,47)(@who()mul(304,303)@mul(167,528):select())!:how(){what()(}mul(933,177))#>$#,$:mul(81,603)<mul(40,227)mul(717,937)mul(853,848)mul(66,164)where())^<>what()?how()when()mul(206,607)<where()[$)}when()how()select()*mul(265,447)*/what())%+'[ from()mul(358,747)what()+%how()#from():,what()@mul(791,401)~where()[mul(990,778)?~[!:>!'^mul(666,852)mul(651,206)!+]}from()don't():*]#what()mul(359*%who()^)'mul(190,764)who()when()}select()~(~mul(547,102)mul(406,618)%when()>)<mul(822,907)?/[/from()mul(945,506)>![#mul(890,746)#who()$'~%]',+mul(341,395)who()--mul(285,533)}how()@<}!mul(715}>+~ select()where()$ (mul(894,62)?]}who()&when(652,875)%:}from(24,82)mul(713,250))-^{*%mul(548,903)&]]<]why(){from()when() mul(796,100)-(how()$%~mul(589,969) :who() @mul(271,734)<}mul(761,8)}@['- ['$mul(178,28)who()who(282,161)@$from()mul(413,253)#when()?(mul(585,394))select():$?#?>who()?mul(245,344)who()^who()where()why()~@why()don't()why()how()who(450,27)who()(!mul(951,644):select()-)%?*don't(), mul(189,841)]* why()*>'mul(758,690)what()<select()~>@>mul(728,932)how()?select()what()}mul(716,985){where()who()+who():mul(840,772)%how()>:;where()mul(139,830)$select()),mul(730,4)when(305,277);[$!,)mul(278,740)who(856,922)who()#<where()*>mul(212,541)((]mul(689,475)mul(814,611)'}&~{~~mul(716,817)who()mul(21,315))don't())(why()')$<mul(541,349)
|
||||
$)mul(257,544)+where()how()-[how()^+ mul(986,808){[<why()%!;mul(940,137)who()-+(from()**^mul{>)who()how()?%why()}!<mul(908,379)select(811,438)mul(15,196)from(623,826)-from()+!mul(38,667){>{<{mul(41,189)-<how()*%when()}what(539,203)]mul(813,528)who())why()( ]how()why()how(){mul(299,367)]{[(@^mul(131,889)?:&who())when()'why()$&mul(728,552)^}when()@~mul(842,113)from()),?{!mul(811,809)*how(15,189)#>&+from(544,351)~&mul(516,38)]?;-@?don't()@}*mul(792,426when();#~ >%why()(/$mul(755,392)*(#]where()@select(),^select()mul(630]>*who(267,517)why()-;(mul(176,492)select()from()}~:who()mul(761,226)&,((mul(750,451)@/%select()from()mul(345,75)what()/who(); ~mul(431<)&mul(693,289)?~/mul(693,335)'mul(475,545){(*+~ mul(668,535)how()don't()?,<@mul(980,251)*why()$when()*-)mul(886,969):?/':]}-who()(mul(686,683)#}+($why()mul*^*$){&-(mul(94,775)- @when()?%]{when()mul(376,100)''/,&]^<mul(853,752)when()%who(),[^@where()!do()who()when()how()when(474,246)mul(318,180)do()%~(mul(216,96) ;}]why(907,964)$+when(680,212)?mul(442,979)why()what();##select()%mul(34,342)mul(641,907)@]who()@^:^mul(648,605)how()<}]when()!mul(567,219)?where()$what()~+from(),%how()mul(549,85)$-&(mul(94,269)~how(811,581)who(596,80)-how()~mul(510,591)mul(586,482)who()?#-<[[select()*}mul(249]{%<,where()*~^mul(628,294)]+what())why()mul(312,879&,?+don't()mul(100,514)when()select()mul(621,918)@select(813,295)/{^'%+mul(239,859) ']<*)mul(868,763)where()[/when()@)#{^mul(209,999)how()do()*#}},},&>mul(70/:from(184,559)>mul(679,138))<mul(454,112)[@)-?*where()mul(573,473)[(-/mul(867,232)~]/^/!'&where()mul(391,655)[%'mul(73,32)/{->)(~mul(929,872)'%#)mul(563,750)>(mul(324,725)what()why()[@$mul(186,770)?mul(719,251)[mul(270,934)+>when()'$when()mul(647,486)how()from(947,190),!(?mul(113,517) %[select()what()^)!mul(299,591)]:@' *where(145,530)/mulwhen()mul(811,260)mul(80,605) where(296,197))])>from()mul(324,361)select(){[/';/},mul(648,947&how(){who()/'-%*]mul(949,359){mul(288,162)&];&:^mul(188,899)select()where()]%mul(248,30)#[&+'why()'') don't()][}& mul(808,221)what()@>><;>*mul{;>what()what()+mul(646,752)select()<from()why(211,37)~~~:mul(196,842)}where(690,849)where()[$select(571,536)how()from()<mul(6,129)what()what()?]]how()mul(116,23)who(205,335)>)'where()!mul(748,585)>?<##mul(381,399)mul(597,746)) *mul(881,573)/:({why()'mul(527,57)@/what()?mul(395,551)%who()when()%'mul(713,766)[<mul(749,438)'(}^when();{mul(43,565)what()% #mul(653,209)what():!-mul(64,870)#from()select()from()mul(206,327)?(mul(678,256)^{mul(311,65)who()when()<(when()mul(552,622)*how()%?~;:;;)mul(767,192)--&$mul(512,806)['?')who()mul/({what()&/#'!mul(811,828)]select()~@!/(}$)mul(683,153)&}&~how()from()mul(815,380),?$*+mul(133,342)mul(867,908)!;&why()?(+!mul(915,100))when(895,91)&select()!({where(758,740)mul(759,261)-from()&])mul(365,436)from()&' &^mul(541,400)~from()-what()!mul(679,638)mul(107^#,%~#>[)*select()mul(313,218))when()when()mul(360,494<-select():::- [/mul(517,923)*from(),from()how()+]mul(870,559)}{*?do()>~mul(704,518)where()!)select()?from()where()&'do();mul(270,449)~[*mul(774,600)how():>why()[!when()mul(338,711){]mul(962,193)*where()#![-+mul(511,924):[who()why()}mul(252,534when())when()when()()'!why(230,750)-mul(543,358)~~ -mul(394,506){mul(176,192)who()from()%@mul(181,776)%[ don't()when()where(229,174)+}@who()where()]>mul(553,452)@{/mul(790,202)&&-]mul(783,999)'mul(123,410)<,#what()}how()when()from()$~mul(674,974)why()#>do()'[$]}when()mul(907,824)from()select(){what()mul(584,273)#<>>do()mul(767,778)how()how()from()[#<$from()how()>mul(133,565):mul(888,792)
|
||||
who()where()don't()]mul(891,277)~mul(160,638)('don't()/@/%{mul(462,975)!^:+mul(317,407){who()/from()/mul(424,628) when()select()mul(415,352)!?[where(){?how()/mul(661^, -mul(141,973)(/where()!#who()(what()#$mul(916,889)when()$ )mul(945,846)why()+#where()@how()mul(147,694)%select()mul(414,149)< when(){)what()&[how()mul(903,731)~#mul(389,694)mul(72,447)mul(490,881)?++from()>+ ^(mul(703,722)mul(622,578)from() }@^)+mul(642,732)>from()where()@>${who()mul(526,211$why()[why()mul(349,908)who(635,389)from()what()*$*>@mul(180,150)//: ^mul(622,131);[-^~-mul(32,430)mul(306,173)~where()how() (mul(292,552)<mul(422,363)^<<!#when(304,583)who()mul(348,963)': #select(875,567)#>'where()!do() why()~] who()@^mul(20,119)?[$+/$^mul(242,536)who()'-&'from()mul(351,640){,]~mul(152,587)@select(140,751)<+mul(387,212)[where()%when())how()& >mul(916,539)~]?[when()>!when()??mul(322,151)!]!]~!;mul(27,537); ##;^}}mul(538,277)why()mul(205,526)mul(412,826)^@?where()'mul(957from(193,394)from(863,680)!@how()mul(771,563)( who()mul(377,655) ]select();who()mul(360,272)-select()$what(){mul(291,618)})from()^when(),how()where()don't()why()+&mul(462,803)^$,mul(788,584)@ %?:![:mul(439,528)mul(129,761)]!~mul(321,102)mul(41,728){&what()how()mul(93,933))[ where()^*@+mul(553,965select() '&{-mul(712,817)/<why()[:>/&mul(482,328)when()'mul(957,978)-}{[>{@what()who()mul(48,186)?]how()$what()&,)mul(33,872)#mul(125,207):;mul(143,386)how(),select()don't()}#when()%]&^@?^mul(107,59)&%?don't()mul(183,332):{}/[(#%-+mul(766,627)from()who() what()-+$^mul(41,791)who()] ;-#select()~mul(939,288)[:(</{$how()%select()mul(624,973) ]%mul(780,706)why(677,630);don't()+mul(3,844)$)$$where(),!why()[:mul(506,60)( <>@what()who()?mul(210,210)?select()why()select()where()-how()^mul(755,497)+?^(mul(860,478)^}+$from()(mul(565,649)}mul(184,450) ;/+%[why()mul(752,488)$how()mul(349,56)#'%,+mul(571,637)(mul(186,674)?how() </~@:%mul(295,276)'~where()-&%!mul(72,565);mul(140,645)%#-#*mul(258,568)!/select()why():&}from()from()don't()mul(458,777)#>,'^#!mul(577,819)mul(767,490)how()@when(359,565)mul(97,67)when()?where()>,'(-mul(267,998)%where()why()where():mul(593,317)<mul(514,327)how()~$[{mul(942,232)how()(who() 'from())mul(752,235)?/!'/*#mul(291,995){who()%!,%mul(873,542)%mul(543,144)from())'select()mul(317,658)+mul(819,545)<&what()who()$#who()how()$*mul(849,792)<;-mul(401,327)select()^}?mul(184,612))(where()what()[where()where()@}'mul(532,791)how()how()from()$*~:mul(963,569)when()%- :}why()^~$mul(520,245))^):{do()!mul(900,510)$ %who(615,822)mul(374,872)''/ mul(808,426)select()mul(268,752)&why(),</%!:!/don't()who(){when()*(where()mul(403,172)^mul(185,447)}mul(233,330)why()/&&%who()#/^mul(705,506)?%from();mul(494,15)['}]-}mul(45,474)who()@who()@why()don't()mul(174,355)?what(),@*$+#&mul(9,768);:^mul(381,691)when()&$/]?what(564,603)^how()mul(468,953)[@when()}mul(702,659) where()?where(){**mul(535,116)~where()$('}^~from()mul(926,18)&who()$when()where()>from(),mul(541,30)/why()${[from()who() mul(732,465)[<!{mul(794,385)mul(676,776)who()]/mul(45,904)<~+who()@-!)&where()mul(49,63))mul(710,576)+mul(279,872)&<{what()-how(),&how()~
|
||||
147
2024/cpp/day-03/main.cpp
Normal file
147
2024/cpp/day-03/main.cpp
Normal file
|
|
@ -0,0 +1,147 @@
|
|||
#include <iostream>
|
||||
#include <vector>
|
||||
|
||||
using namespace std;
|
||||
|
||||
vector<string> readInput()
|
||||
{
|
||||
vector<string> lines;
|
||||
string line;
|
||||
while (getline(cin, line)) {
|
||||
lines.push_back(line);
|
||||
}
|
||||
return lines;
|
||||
}
|
||||
|
||||
bool isNumber(const string &potentialNumber)
|
||||
{
|
||||
for (const char c : potentialNumber) {
|
||||
if (!isdigit(c)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
string getNextValidInstruction(string &line, bool *doMultiplication = nullptr)
|
||||
{
|
||||
const bool considerConditionals = doMultiplication;
|
||||
|
||||
while (true) {
|
||||
{
|
||||
size_t mulPosition = line.find("mul(");
|
||||
if (mulPosition == string::npos) {
|
||||
return "";
|
||||
}
|
||||
|
||||
if (considerConditionals) {
|
||||
size_t doPosition = line.find("do()");
|
||||
size_t dontPosition = line.find("don't()");
|
||||
|
||||
if ((doPosition < mulPosition) && (dontPosition < mulPosition)) {
|
||||
*doMultiplication = doPosition > dontPosition;
|
||||
} else {
|
||||
if (doPosition < mulPosition) {
|
||||
*doMultiplication = true;
|
||||
} else if (dontPosition < mulPosition) {
|
||||
*doMultiplication = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
line.erase(0, mulPosition);
|
||||
}
|
||||
|
||||
if (considerConditionals && !*doMultiplication) {
|
||||
line.erase(0, 4);
|
||||
continue;
|
||||
}
|
||||
|
||||
size_t commaPosition = line.find(',');
|
||||
if (commaPosition == string::npos) {
|
||||
return "";
|
||||
}
|
||||
|
||||
size_t closingBracketPosition = line.find(')');
|
||||
if (closingBracketPosition == string::npos) {
|
||||
return "";
|
||||
}
|
||||
|
||||
int lengthOfNumber1 = commaPosition - 4;
|
||||
int lengthOfNumber2 = closingBracketPosition - commaPosition - 1;
|
||||
if ((lengthOfNumber1 < 1 || lengthOfNumber1 > 3)
|
||||
|| (lengthOfNumber2 < 1 || lengthOfNumber2 > 3)) {
|
||||
line.erase(0, 4);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!isNumber(line.substr(4, lengthOfNumber1))
|
||||
|| !isNumber(line.substr(commaPosition + 1, lengthOfNumber2))) {
|
||||
line.erase(0, 4);
|
||||
continue;
|
||||
}
|
||||
|
||||
string validInstruction = line.substr(0, closingBracketPosition + 1);
|
||||
line.erase(0, closingBracketPosition + 1);
|
||||
|
||||
return validInstruction;
|
||||
}
|
||||
}
|
||||
|
||||
int getInstructionResult(const string &instruction)
|
||||
{
|
||||
size_t commaPosition = instruction.find(',');
|
||||
int number1 = stoi(instruction.substr(4, commaPosition - 4));
|
||||
int number2 = stoi(
|
||||
instruction.substr(commaPosition + 1, instruction.length() - commaPosition - 1));
|
||||
return number1 * number2;
|
||||
}
|
||||
|
||||
int calculateSumIgnoringConditionals(vector<string> lines)
|
||||
{
|
||||
int result = 0;
|
||||
|
||||
for (string &line : lines) {
|
||||
while (true) {
|
||||
string instruction = getNextValidInstruction(line);
|
||||
if (instruction.empty()) {
|
||||
break;
|
||||
}
|
||||
|
||||
result += getInstructionResult(instruction);
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
int calculateSumConsideringConditionals(vector<string> lines)
|
||||
{
|
||||
int result = 0;
|
||||
bool doMultiplication = true;
|
||||
|
||||
for (string &line : lines) {
|
||||
while (true) {
|
||||
string instruction = getNextValidInstruction(line, &doMultiplication);
|
||||
if (instruction.empty()) {
|
||||
break;
|
||||
}
|
||||
|
||||
result += getInstructionResult(instruction);
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
vector<string> lines = readInput();
|
||||
|
||||
// Part one
|
||||
cout << "Sum of all the multiplications: " << calculateSumIgnoringConditionals(lines) << endl;
|
||||
|
||||
// Part two
|
||||
cout << "Sum of all the multiplications (when taking the conditional statements into account): "
|
||||
<< calculateSumConsideringConditionals(lines) << endl;
|
||||
}
|
||||
7
2024/cpp/day-04/day-04.pro
Normal file
7
2024/cpp/day-04/day-04.pro
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
TEMPLATE = app
|
||||
CONFIG += console c++17
|
||||
CONFIG -= app_bundle
|
||||
CONFIG -= qt
|
||||
|
||||
SOURCES += \
|
||||
main.cpp
|
||||
140
2024/cpp/day-04/input
Normal file
140
2024/cpp/day-04/input
Normal file
|
|
@ -0,0 +1,140 @@
|
|||
MASAMXSXSSXSASXSMMXSSMXSAMSAMXSXXAMSXSASXXMASAMXMSMMSSXSASMXXAXMAMXMAMXXMASXXSXMSSXAMMSMMMSSSMASAMXSAMAXMSMXMMMXMASAMXSXSSMMMSMSXXMAMMXAMAMX
|
||||
SAMXSSMMMAAMAMAAXAASAMMXAXMMAMXSMAMMAAAXXMAMXMAXMAAMXMAMASXMASMMSMMSAMMSAMXMASAMAMSSXMAAAAXMASXMASXMAMMMMAMXSMSASAAMSAMAAAASASXMXXMAXMAXSAMX
|
||||
MAMMXAXAMMMMAMSMMMXMAMSSSMSSMMAXXAMMMMMMMAXSSSSMSMSMSMSMAMAAXMAAMXASAXMSAMMSMMAMXXAMASXSMSMSMSMSAMASAMAAMASXAASAMXSXMASASMMMASAMMMSMSXXMAXXM
|
||||
SSMMSSSSSMXSAMAMMXSSXMXAAMAAAMMMSMSAMAMAASXXMAAASXXASAAXMASMMXMMMMASMSMSAMAAMXSXMMASAMMMAXAMAMAMASASASMXSASMMMMXSMMMSXMAMMSMXMASAAAXXAAMAMSA
|
||||
AMAMAAAAAXAMXXASAAXAXXMXMMSXMMAASASXXAMXXMMXMMMMMAMAMSMSXAAXSSSXMAXMXAXMXMSMSAXAAXMMXXMMAMAMAMSSMMMSAXAXMXMXMXMAMMMAMAMSMAMAXSAXMMXXMXMSAAAS
|
||||
MSAMMSMMSMMMSMXMMASMXMAAXAXASMMXSASASMXSASXMMXSAMMMAXAMSMMSMMAAAXSASMXXMSXMAMASMMMAMSSSMSSXMXMAMXAAMXMMMSMMMSAMXXAMMSMAAMASMMMXSSSSXSAXSMSMM
|
||||
XXASAMAAXMXASMMMXAAMXASMMASAMAXXMAMXMAAMAMSAMASASXMXSASXXAXAMMMMMXMMMSXMAAMXMAXAASAMMMAAAMAMSMSMXMXSXMAAAMAAMSXMXSMMAXSXSASXAXSAMAAAMMXXAMAM
|
||||
SSXMASMMSSMASAMXXSXSXXXXSAMXSSMMMXSAMMMMMSXSAMXXMASASMMMMMXSMMAAXAXAAAASXMMXMMSSMSASMSMMMSAMMAMAXSAMXSMSSSMSSXXSAXAXMMAAMMXXSSMAMMMMMXMMASAM
|
||||
MAMXAMXAXAMXSAMXMMAMMAMMSXXAAAMXAXMAXSXMMAMXMXMASXMASMMMSMAMASXMMASMMSMMAMXXMXAAMXAXAXSMXMASMAMAMMASAXXMXAMXAMAMAMXMSSMSXMSMXAMSMASXMAMMAMAM
|
||||
MASMMSMMSMSXXAMXMMAMAAAAXXMASMMSSSSSMMAXSAMASAXMXAMMMAASAMXMAMAAXXAMXAXSXMXMXMSSMMMMMMMMASAMMAMSMSAMXSXMMSXMXMMMSMMSASXAAMAMSSMMSXXASAXXSSMM
|
||||
XAMXXAAAMXMAMMMMXMSSSXSSSMMXMAAXAAAAAMAMSAMXXXSXMAXXMSMSMSSMAMMMMXAXSMMMXMAMSAMXAXXAXAASASAMSXSAAMXSMSAAAMAMXXSAAAXMASMSMSAMXXAMXSSMMSMSXAAX
|
||||
MSMMSMSAMXMSAMXMXXAAAAXAMXAXSMMXMMMMMMMMSMSMMSMMAMASAMASMAASMMSXMSXMMMAMSMSMSASXMMSXSAXMXSAMAXSMSMAXASXMMSAMMMASMMMMMMMMAXMMXMXMAAMMAXMMMSMM
|
||||
AAAXAMMASXAXAMMMMMMSMMMAMXMXSMSSMMXXAAXXMAAMXXAMAMAMAMAMMSMMXAMAMMASXMAMAAXASAMXMAMXMMXXASMMXXSAMMSMXMASASASXAMMSAXXMAAMMSSMXXMMMSXMAMXSAMXA
|
||||
MMSMAMMAAMMMAMAAAAXAAXXAMMMAMXAAAMXSSMSSMSMSMSAMXMASAMMSAMAMMXXXSSMMASXXMMMMMXMAMAXASAMMXMMMXMMAMAMMMSMMASAMXSXAXMXMSMSSMAAXMMXSAMXMASAMASMS
|
||||
XSMMXMSXMAASAMSSSSSSMMSXXAMAMMXSMMMAAXAMXXXAMSAMASXSASAMXMAMAXSMMAMSMMXASXSSMXSXMMMMSMMMSMMSAMSXMASAMASMAMXMAMMMXXMXAAXAMSSMAAAMXMASASASAMAM
|
||||
MAMAMMMMXMXAMXAXMMXMAXMMSASMMSMAMXAXSMXSAMMMXXAMXMASXMXSASXMMMAASAMAAXSXMAXAMXSXASXAXXAAAAASAXMXSXXMXASMMSMMMMAXXSAMMXXAMMAMXSXMXSAMXSXMXSMS
|
||||
SMMXSAAASMXAXMAXMXSMMXAAAMXMAMSAMXSXMAAMASAMSSMMAMAMASXMMMXAAXMXMMMMMMMMMSMAAAMSAAAAMMMSSMMSSMXAMMXSMXMXMAAMXSSSMMAXASXSMSAMXMASAMMSMMMSMMXS
|
||||
AXXMMMSMXASXMXSMSASAASMMXSAMMMSMSAMXMXMMAMAXAAXSAMXSAMXSASMSMSXSMSMMSMMAAXMSMAMMSAMSSXAMXAXSMMMXXXAMAMMASMXMXAXXAXXMASAMXXXSASAMASAMAAAXAMAM
|
||||
MMXAMXMMMXSASAASMASMMXAMAMASXASXMASXMAXMSXSMSSMMASAMASAMXSAAAMAMAAAXAAMMSMMASXXXMXXAAMMMMAMXAAMMSMAXXAMAMSMSMMMXMMSMMMXMXMSXMMASAMAXSMMSXMAX
|
||||
XSMSAAXMAMMAMXSAMXMMSSMMASXMAXMAMXXASASXMAXAMXAMAMASAMXMAMXMAMSMSSSMSSMAXMSASMMXAXMASXAMSMSSSMSAMMSMXXMXSAMXAASXSAMAAAAMAMSAXSAMASMMXAMXMSSS
|
||||
AXAXMMMMSMMAMMMMMXMAXAXSASMMAMSAMSSMMMSAMAMAMMSMMSAMXMMMMSAMXXXAAAAMAAMXMAMAXAMSMSAAXXXXAAAAXAMXSAMAMXXSAMMSSMMMMASXMSASAXMSMMMSAMXXSAMXMAAX
|
||||
MMXMXMAAAAMXXAAXXMMSMXMMASASAXMASXAAAXMXMXSAMAAXAAMSAAXAAAXSSMMMMMMMSSMAMXMAMMASAAMXMAXSMMMSMXSXMMSAXSXAMXMAXAXXMXMXMXASXXSAMAAMASMMMAMAMMSM
|
||||
MAASXSXSXXMMSSMSAXAXMAXXXSXMASMMMAMSMMXAXXXMSSXSXMASMXSMSXMMXAXASXSXMAXXSAMXSXAMMMSSMXMMSAMMMMAAXAMXMXMSXMMMSMMMSMSMXMXMAXXASXMMAMMMSASASMAM
|
||||
MSMSAMMMMMAXAAMMMMMSSSSSMMAMXMASXAXAAMSMSXXXAMXAMXMXXAAAAMMXMXSAMXAMAXAMAAMAMMMMXAAAMXMASXSAAXSXMXMAMAMAXMAMSAMXAAAAXSAMXMMXMMAMXSAASXSMMMAM
|
||||
MMXMXMAAAMMASMMSMSXAAAXMAXAMSAMXSMSMSMAMMMXMASMMMMAAMXSMMAAAAMMMMXMAMMAXSASASASAMMSSMMMASMSMSMXXAAMAMAMMMMAXXASMMSMSMSAXAAMMXMXMAAMMSMMMMSAX
|
||||
MXMXMSSSXSXAAXXXAXMMSMSSSMAMSAMXAXXXXMXSAAXMXMMMASMXSAAAXSSSSSSMSAXAXSAMMASMSASXSXAAASMASAMAXAMXXMSSSSSXSXMSSSMAAMXMASXXMSMAAMMMXXMXXAAAASMS
|
||||
MASAXXXXASMSMSMMSMXMAAXAASXMXMASMMSMMMXMASXMMXXSAXMAMXMMMXXAAAXASMMSXMASMAMMMAMAXMXSMMMXMAMSMSMMSAMAAAAAAASAXASMMMAXXMAXXAMXAMASXSMXSSMSMXAA
|
||||
XAMMMMSMXMAXAMXAAMAXMXMSMMXXXXAXAASAAAAAMMMSASMMMXSASAMSMSMMMMMAMMAMASXMMSSXMAMAMSXMAMSASAMAAMAMMAMMMMMMMSMASMMXMSASXMMMSASXSSMSAASXXMMMMMSM
|
||||
MSXSAAAXXMAMXXMXSSSSXSAMXSAMSMXSMMMSMSSSMMAMASMAXASMSAAXAXAAAXMAMMASXMAXAXMMSXSXAMASAMSAXMXMXMAXMAMXXSXSXAAAMXMAMMXSAAAAXAMXMAXMMMMXMASAAAMM
|
||||
MMASMSMSXSASMAAXXAMAMMSMAMAXAAMXMAXAMXAMXMAMXMMXMMSXSMMMSMSSSXSASMXSASMMXSAASAMXXMAMAMMMMSASXXXSMSAMSAASMMMMSXMSMSSSMMMSSSMSSSMMAXAAAASXSMSM
|
||||
XMAMXAAXXXAMMAMXMAMXMAAMSSSMMSASXMSAXSAMXSSSSMAMSASAXXXAMAXMAXSAXMASXAXAASMMSAMXSMASMMAAMSASAASAMAAMXMXMSXAAXXXAASASMSXXAAAXAXASASMMXXXMMASM
|
||||
XMXMXMSMSMMMAMXASAMMMSSMMAMMAMMMAXSMMXAMXAXAAMAMSAMXMMMMSSMAXMMSMSMSSMXMMXMASAMAASAMASMSMMMMXXMASMXMMXSMMMMSSSMSSMAMXXMMXMMMMMXSAMXSMSSSMAMA
|
||||
MXMMMXAAAAXSMMSASXSAMAXXMAMMAMAMMMSXXXASMSMSMMMXMSMAXAAXMXAXMMAXMAXMAMMSMMMASAMXMMSSMMXXAAXAMXSAMXSXMAXAAAXAAMAMXMXMMMXXAMXXXXAMXMXXAAAAMMMS
|
||||
MXAAASMSMSMMAAMXMAMMSMMSMMSSSMMASXMAXSXMXXAXAASAMASXSXSSSSMSXMAXMXAXMMAAASMXSXSSMAXSXMASMMMAXMXMAXSAMSSMMSAMMMAMXAMAXAAXSSMSSSXMAXMMMMMMMAAX
|
||||
SSSMXSAAAXMXMMAAMSMMAAMXSXAXAASAMAMSMMAMXMMMSMSASXSMMXAMXSXMAMASMSSSSSSSSMMXMMMAMSMMXMASAXSXXSAXMMSAMXAXAXMXAMMMXMAAMMSSXAAAAAMASAASMSXSXMSS
|
||||
AXAXAMMMMMMXSMSXAAASMSXAXMMMSMMASXMMAMXSAMXAXXXAMMSAXSMSAXMAMMAMXAAAAMAMXAMXSASAMXSMAMASXMMSMSASMAXMMSXMMSXSMMSAMXAXMAXMXMMMSMAAXSXMASAAXSAM
|
||||
MSAMXSASAAXMXAAMSSXMAMMMMSAMXAAXAMASAMASXSMMSSMAMAMSMAAMASMSSMXSMMMMMMSMXXMASASXMAMMAMAMAXAAXXMMMSSMXMASXAAXXAAAXXMSSMMSMSAMAXMAXMMMAMMMMMAS
|
||||
XAAMXXASMXSMMMMMAXAMASXMASMMSSMMMMMMXMMSAMMMAMSMMAXASMXMSMAXAAXAXSAXMXXAMSMXSAMMMAMXAMXSMMXSSMMAXMAMSAMASMXMMMXMMXXAAAAAXXAMXSSMAMSMMSXXASAM
|
||||
MMAMAMMMXMAXXMSMXSXMASAMASXMAAXMMASMMMXMXMAMAXAXMMSMMXAMXSMSAMXMXSASXAMXMAAMMMMASASXSSXAXAMAAMXAMMAMMASAMXMSASASXXMSSMMSMMAMXXMMSXMAXMASMASM
|
||||
ASAMXSAAASMMSAAMXSXMMSAMAXAMSXMMSASASAAXAMXSMSXSXMAAMSAXAAXMAMAMAMMMMMMAXXMXAMXAMXSXMAXMXSAXMXMSSSSMXXMAMMXMASAXAXMAMXXXXSSSMAMSMASXMMMXXXXS
|
||||
MSASASMSMMMAMSAMAMASAMXASMSMMAAAMXSXMASMSMAMXXAXMSSSMXMMSSMSASXMASXXMASMSSSMASMMSXSASXMSAMSMXSXAAAXSASMMMSASMMMMAMMASXMMAMAAMAMAMAMMAASXMMMS
|
||||
XSAMAMXXMSMXMXXMASXMASXMMAAASXMMSMMMMMMAAMASAMMMMXMMMXMAMAASAXMSMSMMXMXAAAMSMXMAAAXAMAXMMMAXASMMMMMAMXAAMMAMMAAXAASXMMAAMMSMMMSMSSMSSMMAAAAM
|
||||
XMXMAMXMASAMXXXMAXAMXSXMMSMMMMXXAMXAAAMXMASMXASAMAMMMAMXSMMMSMAMXMASAMMMMMMXSAAMMSMSMMMSASXMXMXAMXSAXSMMSMMMMSMSSXXMASMMXXAMXAAMAAAMAMSSMMSS
|
||||
XMAMAMSMMMMAXXSMSSXMAMAXAAMXXASXSSSSMXMAMMMASMXASASASXSXXAXAMMXMAXSMXSASMXSAMXXXAMAAAXASASMMAMSMSMSXXAXAXAAMMAAAMAMSXMAXSMMMMSSXSMMMAAXMAXAA
|
||||
XSSSXSAMMAXMMXMAXAXMASMMSMSXMASAMXAMASMXMAMAMMSAMASMSAMASMMMSMSSSSMXMXASAAMASMSSMMSMXMMSXMAMXMASAAXMXMXSSMMSSMMMSSMMMXMASASAMXXAASMSMMSSMMSS
|
||||
AAAXMAMASXSXXMMAMXMMMMAXXASMAXMXMAXSXSASMMMSAMXXMXMASXMMAMXAAXMAMAMMMMMMMXSAMXMAAXXSAMMMASXMXSXSMSMAAMAXAMAAMAXMAXMAMMXASAMAMAMXMMMSAAAXXAMX
|
||||
ASMXXXAAAMMXSASASXMXSSMMMXMASMSXMSAXAMAMMMAXMMMXMAMXMSXMMAMMMSMSMXMAMAMAMXSAMMSSMMXMXSASAMASAMXMAMMSSMASMMSSXSMMAXSXSAMXXASAMXSSMMAMMMXSMSSM
|
||||
XMXSMMMMSAAASMMMSMAAMAXXMSSMMAXXAMMMSMMMSMMMSAMXSASAAMXSAMXSMSAXMSSSMXXMMASAMMAAMMSMAAMMXSAMMSAMAMMAXMASXAMMMMXXAAAAAXMSSMSASAXAAMSSMSXAXAAA
|
||||
MMAMAAAAXMMXSAMXSAMMSSMMXAAAMSMMXSAAMAMAAAAAXAMXMAMMMMAXXMXAAMAMAAAAASASMXSSMMMSMAAMAMXXXMMSXXXXSMMAXMASMSSMAMASMMMMMMMXAASAMXSMMMMAAAMMMSSM
|
||||
AMASMSMMSAMXSAMAMSXMAMASMSSMMMXMAXMASXMMSMMSSSMSSMMAXMAMAMAMXMSMMMXSASAXXMMMMSMXMMXSXXXSXMASMSMMXMMSMMXSAXAAMXAXXXAAAAXXMMMAMXMMXASMMMMSMXMX
|
||||
SMAXAAAXSMMAMAMSSXSMASXMAXXXAXAMASMASXAAXMXMAAMAAASXMSSSMMASXSAMXMXXAMAMSMSAAAAASXMMXSMAXMAMMAMAXAAMASMMMMMSXMASMSSSSSMXAXMAXSAMSXSMMMXAAXSS
|
||||
MMSMSMMAMMMSSSXMAMXSAMAMXMMSSXXSXMMMSXSMXXAMXMMMXMMAMXXAMSASXMAMXSAMXMAAMAAMSSSMXAAAAXAMMMMMMASMXMMSAMAAASXMMAXAAXMAMAMSXMXXXSAXAMXMAXSASAAA
|
||||
XAAAXMASMXSAMXAXSMMXMSMMMSXAMSMSXMAMSXMSXMMSASMSSSSXMMSMMMASXMAMSMASMMASMXMMXAXASXMMSSSXSAAASASXASAMASXMSMMSMSSMMMMSMSMMASMMASXMXAAMMMAAMMXM
|
||||
MXMMMXAMAXMASASMXASMXAAASAMXSAXXAXAXMXSASAXAMAAAAXAXAAAAXXAXXXAMXSAMXSSXMAXSMMMMMSAMAXMAXMMMAAMMXMAMXMMMMAAXAAAAMSAAXAAMAXAAMSAMXSSMSAMXMSMM
|
||||
SSMSSMASMMSMMAXASMMASXSXSXAXMXSSXMSASMMASMSSSXMMMMXSMSSMSASAMXMSAMXSASXAMXMXAAXSAMXMMXMMMSMMMAMMXSMMSXMAXMSSMSSMMMSMSMSMMMMMXXAMAMMASAXXMXAA
|
||||
AAAAXMXMXMAXMXMASXMXMXMAXMASMMXXXAMAASMAMXXAAMXAXSAMAAAMAMMASAMXASAMXSMMMMXSSMSMXSXAXXXSAAAAXSXMASAASAMMSMXAAAXAXXAMSAMASASXMSMMMSMAMXXMMSMM
|
||||
SMMMSSXSASMSMAMXMAMAMXMXMMAAAAAMMSMMMXMASMMMMXMAMMAXAASXMXSAMASXMMXXXMAXAMXAAMXXAMMMMXAMMSMMMMAMASMMSMMMAMSMMMSXMMMSMASAMAAAAAXAAAMMSMAAAMAS
|
||||
MAMXAASMMSAAXASXSMSASMMSAMSSSMMSAMASMMMXAAAAXSXMASAMXSXAXMMXSXMAMAAMMMSMMMSXMAMMXMASMXMXAMXAAMAMMSAMXAXMAMAXSAMAAAMSMAMXMXSMMMSMSSMXAAXMXSAM
|
||||
MASMMMSXAMXMSMSMAXSAAAAASXAXAAAMMSMMASXXMSMSSXAMAMASXMMMMASAMASAMSMSXAAXMAXAXMXSSSXSAASMMSSXXAASXSMMMXMSXMXXMASMSMMXMAXAAMXAAXXXMAAMAXSAAMXS
|
||||
SASASASMSMSMAASASMMAMMMMMMMXMMMSMAMMAMXMMAMXXMXMAXMMAMAXMAMASAMAXXASMSSSMMMMMAXMAMMXMXXAAXAAXSAMXSASMXMAMXMMSXMMAAXAXSSSSMMSMSSMMMXSAAAMMMAS
|
||||
MXSAMASAAAASMSMAMMMAXXSAMASXAAAAXMSSMSSXSAMAXMSSMSSSSMSSMMMAMXSMMMAMAXXMMAASASASMSSMMXSMMMSMMMASAXSAAASMSAXXAAXSXSSMMMAMAXXAMAAAXAAMXMMXAXAS
|
||||
SXMMMXMXMMMSXXMSMXXSSMMASAMMSMXSSXAAXAAXXMSMSMASAMXAXAMSXMASMMXAASAMMAMXMSXSAMAXAAAAMXAXAAXAXSAMAMXMSMMASASASXMMXMXMMMAMAMSAMSSMMMMSSXXSMSMS
|
||||
MAAAXAMSSMMXAXAMMMAAAXSAMASMMSAAAMSSMMXMXXAAXMAMMMMSMSMSXXAXASMSMSXSAAXAMMMMMMMMMSSMMMMXMMMAMMXMMMAAXXMXMAMMXMMSAMAXAXXMSMXSMXAXSAXSMMAAAAAX
|
||||
SSMMXXMAAAMMSMMMASXSAMXXSAMAAMMMMXXAXXASMSMSMMMSAXAXXAASXMMSMMAXXXAAMMSMSAMAMAXAAAMAMAXXSASMXSXSXMASMSXMMAMXXAAMASASXSAMXMXXXXMXMXMMASXMSMSM
|
||||
AAASASMSSMMAAAXMXSAAAAXXMXSMMMSASMSSMSMSAXXMMMASMMSMSMSMMSAAXMSSMMMMXAAASMSASMMMMMXAASMXMXXSAMAMMMXMAXASMSSSSMMSXMXXXAAAXMASMSMMMMMSAMAXXAMX
|
||||
SSMMASAMXMMSSSMSAMXMXSMMSMMMXXXASAAXAAAMMMMMXSASXXXXAMXAAMSMSMAMXASXSMMMMASMMXAMXSSSMXXAMAMMMMAMASAMXSXMAMAMXAAXXMMSSXMMXMASAAAAAXAMASXMMSMS
|
||||
XAXMXMXMAXMMAXAMXSASMXMASAASXXMSMMMMSMMASMMMAMASASMSMSMMMMMXAMAMSXSXAXMAMXSASMSAAMAMXMASMASAASASASASASAMXMSMMMMXAXSAMMSXSAMXXXSMXMMSXMAMMXAA
|
||||
SMMSSXSMSSMMMMXMXSASAXMASXMSAMXMAXXAXASAMAAMXSAMXXXAMXXMAASMXSAMSAXMMMXMSAMXMAAMMMAXXXMAMSSXMSASASAMASXMXAXMSSMSMXMASASXMXMASMMMXMMMMSAMSMXM
|
||||
AAAXMMMAAAAAXAMMXMMMXMMAMMMMXMAXMMMSSMMSSSMMASAMMSSSMMAASMXMAXMSMSMAXAAMMXSAMXMXSMMMSSSSXXXMXSAMXMXMMMAMMMSMAMMAMMSAMMSAMXMASXSXMMAAMMSMXAMX
|
||||
SMMSXAMAMMXMMMAMASAMMXMASASXMSMMMAAAXMAMMMMMMSAMAMAASMMMMAMXSSXMAMSXMSXSAMXMMMMXMASAMXAMMMAMASASXMASXAMXAAAMMMSASXMASXXAMXMASMMMSSMSMAXMASMA
|
||||
AXXMASMSSSMSSSXXAMSSMASXSASMMASMSSSSMMMSXMAMXSMMMSMMAMMXMSAMXAAMSMSMMXAAAMAXXAMMXMMSSMMMXMAMAXSAMSMMAXXSMXMMAAMAAMSMMMSAMSMMSAXAAAMMMSMSXASX
|
||||
XMSAMXSXAAAAXAAMSSMXMASAMAMAMASXAMMXAMAMASMSMMSMAAXXMMSMMXAXMMMMMXXAXMMASMXSSXSASXMXXXXAMSMMXMMMAAASXSMSMASMMXSSMAXAAAMXMSAASMMMSSMXAXAXXMAS
|
||||
MXXMAMXMSMMMMMSMXAXAMXSMMASMMXSMMMSSMMAMMMMAAAXMSMXXXXAAXSXMAMSXMASXMASAAAXMAMXMAAMMMMMAXAXMMSSXMMXMAAAXMASAXMAMXSSMMMSAMMMMXAXMAMXMMMSMMMAS
|
||||
AMASXSSMMXAMSMAMXMMMSMMXXAXAAXXAXAAAASMMSASXMMMXAASXSSSSMMMXXAMAMMMSAMMMSMXMASXMSSMAAASXSXXXAAXXMSXMSMMMMAXXMAMSSXXAAASAMSSMSSMMASAMAAXAXMAM
|
||||
MSAMXXAAMXXMAMXSAMMAAAXMMSSMMXMSSMMSMMAXSAMXAASAMXMAAAAMAAMXSSSMMSASMXXMAASMMMAXMAMMSMSXSMSMMSSSMSAAAAAXMSSSSXMXMASMMXSSMAAAAMASASAXMMSAMMSM
|
||||
MAMASAMXMASMMSASMSMMSSMAXAAAXMSAAAAXMXSMMAMXMASAXMMMMMMXSASAMMAMMMAMAMMSMAMXAXXMSAMXMASASAAAMMAAASMMMSSMMXAAMAMXSXSXXAXXMXXMSSMMAXXMSXMAMAAA
|
||||
XXMAXMXAMMSAMMASAXXAMMMXMMXMAXMMSMMMSSMAXXXXSASXMXXAXXMMMAMAXSAMAMAMXXAAMXASXMXMMMMMMAMAMSMSSMSMMMXXAAAASMMMMAAMSASAASASMSMXAAMASMSXMAXAMSXS
|
||||
MMMMSAMXSXSXMSSMASMXXASXSSSSXSAAMASASASXMMMMMXSASASMSSXSXSSXMMASMSMSMMSSSMXAMSASASAMMAMSMXMAMAMMXSXMMSSMMAAAMSXSMAMAMMAXAASMSMMAAAXASAMMMXAM
|
||||
AMAXSAXXAXXAMXXMMMXXSAMXAAAAXSMXSAMMSAMXSAAAXASAMAMXXXAMAMAXMSAMXAAAAAAXXXXMASASASASXAMXSSMASMMSAMASAXXMAMSSXXSAMSMAMMMMSMMMXAMSSXMXMXMMAMXM
|
||||
SMMMMMMMMXSXMAXAMXAMMSMMMMMMMMSAMXMXMMMAXSMSSMMXMXSSMMMMAMAXXAASMSSSSMXSXMXXMMAMASAMXXSAMXXAXXAMASAMMSMAMMMXASXXMASXMAAAXXMASAMMMMMAXAMSSSSS
|
||||
AAMAAXXAXAXASMSSXMXXAAMAXXXXXMAXSAMMSXMAXAXMAMMXAXMASXASASXSASXMAXAAXMMSAMXMXMXMAMXMXXMASAMSSMMSXMAAXAAAMAMMXXSXXMMSSSSSSMMMMXMAAMSMMXXAAAAX
|
||||
SASXSMSMSMSXSAAMAMAMSSXSSMSMMXMXXASASXXMAMXMAMXMMMSAMSXSASASMMMMXMAMXXAMAAASASMMMSSXMASMMAAAXXASXSSXSSSMSSSMSAMXXXSAMXAAMXAAXMSMXMAXAMMMMMMM
|
||||
AMXAAAAAAAMAMMMXAMXXMAMMAAAAAAMXSAMAMMSSSSSSXMXAAMMAXMMMAMMSASXMXXAMXMSSMSMSASXMXAAXXAAMMMMMMMXSAAAMMAXXAAAAMASASXMMXAMXMSMMMXAMMSSSSMAXMAXM
|
||||
SAMXMMMSMSMXMAXSAMSSMXMSASMXMASAAMMSMAAAMXMAMSSMXSSMXAAMASMSAMXMASMMXAMXXAXMMMASMSSSMMSSXMMXAXMMXMAMMAMMMSMSMAMASXAAAXXAMXXAXXXMMSXAXSMSXMSS
|
||||
AXAMXSXMXAMXMAXXMMMAXXMXXMAXSASMSMAXMMMXMAAMAMAXXXAASMMSASXMMMMMMXAAASMMSMSSMSSMAAMXAAAMAMSSMSAASXXSMMSAAXAXMMMAMXMMSMASXAMSSMSSSSMSMMXMASAX
|
||||
XSSXMASXSMSXMASXMASAMXMASMXMMAMXAMXSXMSASASXSSSMMMMMMAAMXSMSASMAMMMMXXAAXXAAMMAMMMMSMMMSAMAAMAMMSAXXAXAXXMAMXXMAXAMAAASAMXSAAMSXAMAASMXSXMAS
|
||||
AAMAMXMMAAAXSASXSASAMASAXMAMMXMXMMASAMSAMAMAXAAAXAXXSAMXSMXSAXSAMAASMSMMSMSXMSSMMAMXXAMSXSMSMMSMXMMMMMMXMASMMMMXSASXSSXMAXXXMMMMSMSMXSAMMMMM
|
||||
MSSSMMMSMMMMMMXAMXSASXMASMXXSASMXMXMXMMAMAMAMSXSASXXSAMXMXAMMMSMSMMMMAMXMMAMXMMASXSMSMMXASXXAXXASXMASAXXAMMXAAAAXXMAMMMXSSMMXSAAXMXAXMMMAAAA
|
||||
MAAAXXAAAMXSAMSXSASMMASAMMMMMASAXSMSMSMSSXSXMMAAAXMXSAMAMMMXSAMAAXAASAMAAMMSAAMXMAAAXSAAXMASMMSSMASASMMAXXASXMSSSMMMMMSAMXASASMSSSMSAMXSSXSA
|
||||
MMSMMMXXSMXSAMAAMASXMASAMXAAMXMXMMAAAAAXXXMAMMMMMMXAMASXSAMAMASMMSSXSAXSSMASXSMMMSMMMMXMMMMMAXSASXMMSAMASXMXAAMAXAAXAMMMSMSMXSAMAXAXMAXAMXMM
|
||||
SMAXXMXSAMXSAMMMMAMAMXXMMSSXSXMAMMSMSMSMAXSSMSXAAXMXSAXASASMSAMAAAXMMMMMAMXSAXMAAAAMXMASXXASMMSAMMSAMAMAXAMXMXMASMMMSXMAXXAMXMAMXMMMXSMMMAAA
|
||||
XAMASAMAAMASMMMAMXSXMMMXMAMSSXMAXXXXXMMMSMAMASMMXAAMMMSMSAMAMXSMMMSMAXXSAMAMMMSMSMMSAXAXMAMXSAMXMAMMSSMMSAMXXXMASAMSMXMAMXSMSMSMSAXAXXAASXSS
|
||||
XSMAAXAMXMAXAASXSASAAXMAMMSAMASXXXXASXAAAMMMAMAXMXSAXXMXMAMMMAXXXAMMSSMSAMAMAAMXXAAXXXSMMMXMMSSXMAXXAMAASMXMXXMASASAMXMASAAMSAAAASMSASXMSAMX
|
||||
MXMXSXSASMAMSXSAMASMMASXMXMASXMMSSMAMSMSSSSMSMXMMAAXMAMASAMXMMSSMASAAMASMSAXMXSAMMMMSMMASAAMSASASXXMASMXSAAMSMMMSXMASMXMAMXAMSMMMMXMXAAMXMSA
|
||||
AAMAXAMAMXXMXAMXMXMASAMAXSMMMAAAAXMAMMMMAAAAAMXSMASASASASASXXMAXSMMMMMMMAXAMAAMAMMSASASAMSSMMASXMSMXXMMXMMXXAAAAMAMXXXAXXMMSAMXXXXASMSMMAMXA
|
||||
XAXXMAMMMMXSXMSXSMXAMAMXAXAAMMMMXMMAXAAMMSMMMSAAXMMASASMXMMXAMXXMXMXXXMMSMXAMSMSMXMASXMAXAMAMXMASAMSAMXSXAMSSSMXSAMSXSXMAXSMXSASMMMSAAXSASAM
|
||||
SXMSMSMXAXMAMXMAMXAMSXMXMSSMSSSSMSXSMSXSAXXMAMXSMXMXMAMAMSSSSMMSMSMSMAAAXAASMXAMXMMAMAXSMMSMASXXMASAAMAMAAMAAXAAMXMXAMASXXMXXMAAXMXMXMXSAXAS
|
||||
AMAAAAMMXMMSASMSMSMAAXSXAMXAXAAAAMAXXAASMMSMASAMMXMXSAMXMAAMXAMXAAAAXXMAMSMXAMAMMSMAMXMXAMXAAMMMAXSMSMASASMSXMMXSXMSAMMMMASXXMSMSAXMMXMMXXAM
|
||||
SASMSMSSSMAMMSAAXAAXMAMMXMMMMMSMMMAMMMMMAAXXSMMMAMSASAMXMMSMSXMMSMSMSXMXMXMMMMAMASXSSMASXMMMMSAAXXXAXMXMXMAXXXXAXAAMXMXASAMXAXMAXAMMASXXSAMX
|
||||
XAXXMASAXMAMXMXMSSSMXSMSXSAAXMAXAMASMMSSMMSMMASAMXMAXAMSXMAMMMMMMMXXMXMASASMSXXMASMXAMMMSMAAAXAMMAMMMASXMMAMAMSXXMMSSSSXMXSXSMMSXMASASMAMAXS
|
||||
MXMMSSMMMMAXAMXXMAAXXXMAASMMSMSSMSASAAAAAMXMSAMMXMXSMMMMASAXAAAASXMSMASXSASAMXXMMSMSMMXAAXMMXSMSAMAXAXSAMMAMAAMAXSMXMAMMSMSAAXAXAMMMAMXAXAXX
|
||||
MXMASAMXASMSSSXSASMMMSMMXMXSAMAAMMMSMMMSSMAMMAMXXAAAXMASAMXMXSSMSAAXSAMAMAMXMMXMMSASAMMSSSSSMAAAXXMSMMMAMSSSXSMMMMAAMAMAAAMSMMXSAXMMSSSSSMSX
|
||||
XAMXSMMMMSAAAAAAAMXSAAXSMSMSSSSSMMASXAXXXMAXXMMMMMXSXSAMXMSSMAMMSMMMMMMXMSMXAXSAAMMSAMAMMAAMMMMMXMMAAAMMMAAXMMAMSSSSSMSSMSMMMAASXMASAAXAAXSX
|
||||
SSSMSXSAXMMMMMMMMMXMSSSMASASAMXMAMASXMXSMXSXXXXXMMAMXMMXXAAXMAMMXMAXMAXAMXASASMMXSASXMASMMMMXXAXASMSSMSMMSSMASAMMAAXXMAMAAAAMMMSAAMMMMMMMMSA
|
||||
AAAAXAXXSMXASASAXXAXXMAMAMMMXMASMMMSASAMAAMAMSMAMMAXMSMSMMASMAMMASXSSSSMSXMMMMASAMXMASASAAMAXSXSMSAMAMXMAMAAASASMMMMMMAMMSSMXSXMAXAAAXXXMAXM
|
||||
MSMMMSMMMMMASAMXXXXSASMMSSXXSMXXSAXMAMMSSSMAMAAASMMSAAAXMMMAMMMSASXXAAMASMXAASXMXMASXMMMXMSMASXMMSMSAMAMXXAMXMAXXXAAMSMSMAXXAXMASMSMSXMAMMSS
|
||||
MAMXAMAAAAMMMAMXSMASAMXMXMMMAMSXSMSMAMXAAMAASXSMSXAAMMSMXASAMSAMAXMMMMMASAXMMSAMASMSAASXMMAMMMXSAMXSAMMXSAMXASXMSASMXAAAMXMMMXSAMXMXAASXMMAA
|
||||
MXXMAXSMSMSSSMSAAMMMMMMMAMAXMASAXAAXMMMMSMXMSXXAXMMMSXMMSXSAXMXMASXAAXMASMSSXSASXSMMMXMAXSXAAXAMASASXMXAMXXMXSAAXXMXSMSMSMMSAMXAMAMXSAMASMAS
|
||||
SAMXSXMAXASAMAMMXAMXAAASASAMXMMMMSMSXSMMAXAMXMMXMXAXXAMMSMMMMMMXMAXSSSMXSAXMASAMXXMXMXSMMMXSMMMSAMASMSMASXMMASMMMSMMXAXXSAAAXSSXMAMAMAMAXMAM
|
||||
XXSAMAMAMXMMMAMAMSXSXSXSXSASAXAAMAAAXAMMAMSMSAAMMSMSSXMASXMAXAASXMAXAXXAMAMMAMAMXMSASXASAMXXSSXMXMXMASAMMMSAAMAAAAASMSMAMMSMSMXMSSSXSMMSSMXS
|
||||
XMMXXAMSMSSXSASAMXASAMAMXMASAMSMSXXSAMXMSMXAMXSAAAXMASMASMSXSSMSAMXMMMMXSSXMXMSAMXSASXSAMXSMAMAXASMMMMSXMAXMSMMMSSMMAXMXMXMMMXAXAAMASMAXMXMA
|
||||
SAXASXSMXAAXMASAMMAMXMAMAXMXMMMAXAMAMXAMXAMAMSMMSSXXMAXAMXSAAAAXAMSMXXAMMAMMSMXAXMMMMMMXMMAMXMSMMSAAMAMMMXSAMXMXAMXMAMMSMXAAMSSMMSMAMMSMMSAM
|
||||
XMXMAMAXMMXSAASMMSMSASMSSSMAMXMXMMMAASMSMMMXSAMXMMXAMXSSMASMXMMMAMAMSMSMSAAAAASXMASAXAXASXSXSMXAXSXMMAMMAMXMSXMAASMMXSXMASXMXAASAMMXSXXAAXMX
|
||||
SSSXSMAMXAAXMXSXXXASXSAAAAMXMAMASMMMMMXAAAAMAMXMXAAMMAAMMAMXSSXMASMSAMMASXSSMMMXMSMAMXSAMMMAAMSAMXAXSAXMASXXSAMAMXAXAMAMASMMMSSMMSMMMASMMMSX
|
||||
AAAAXMXSMMXSMAXMMMXMAMMMSMMSMASAXMASASMSSMSSMAAMMMSXSMSMMSSMMAASXSXSASMAMXMAMSAMXAXAAXMASAMSMMSSMSMMMASXXMXAXXMASMMMMXMMAMAAAXAXAAMAMMMXMSAM
|
||||
MAMMMSMMMMMAMASAASAMXMAXAXXAMAXMMSASAMXAAAXMXSAMAAMASXAXAMXAMSMMASMSAMMAMXXAMXXSSSXSSXAAMAXXAAMAMXXMASAMMMMSMXSMXASAMASMSSSMSSSMSMSAMXXXMAMA
|
||||
AAXAXAAXAASAMMAMSSMSAMXSMMSMXMSMAMXMXMMXMMSSMMASMSMAMMSMMSSMMXAMXMAMXMXXMAXSMSMMAMAXXMASXXMSMMSMSAMXXMMMAXAXAASMXMAMSMSAAMXAAAAAXASXSXMAMMXS
|
||||
MXSMSSSMSXSAAXAXMXMXXXAMXAAMAXAMSSSMMSMMXMAMAMXAMXMXMAXAXMAAAXAMSMSMSSMASMXXAMXMAMXXMMAAMMMAAMAAAMXSXSXSSMMXSSMAASXMXAMMMXSMSSSMMMMXAXSAMAAM
|
||||
XAXMAAXXXASXMMMSXASMMMMSMSSSMMASAAASAAXXAMMSXMXSAAAAMXSSMSSMMSAMXAAAAMXAMAAMAMXMXSAMMMSSMAXMSMMMMXAMXMAXAASMMMMXMMAMMMXAXXSAMAAASXSMSASASMSS
|
||||
MXSMXXMXSMXSXAXMMMSAAMXSAAMAMSMMMSMMSSMMXSXXAMXMMMSXSAAAAAAXMAMXMSMMMAMSSMSSMMXMAXAMAAXAXSSXXMSMSMXXAMMMSMMAAMAASMSMAMSXSMMAMMMMAXXAMASAMAAA
|
||||
SMMMAXSXMMAMMMAAAXSMMMAXMSMAMMAMXMXMAMAMSMMSMMSSXMMAMMSMMMSMMAXXXAXMMXXXAMXAAAMMSSMMMMSAMXXXMAAAAMSSSSXAMAMSXMMMSAMSSXMAAASXMASXMSMMMAMXMMMS
|
||||
AXAAXMMAAMASAMXXSMSXSMMXXMMAXSAMASMMAMAMMAAAAAAXAAMAMXXXAXXMMMSMMMMSMSSSMMSMMMXXMAXXXAMXMASXMSMSMMAAXSMXSXMMSMXAMAMAXAMXSAMXSAMAXMAAMXSASXAX
|
||||
SMMMSASMMSASMXSAXAMASXSXASXAMSAMASASXSSSSMMSMMSSSMSMSMXSSSMAAAXAAAXAAAXAAAMAAMXMSMMMAMSSMXASAMXAAMMXMXMAMAAAAXMXMMMXXXMMXAAAMASXMMSMSASASMMS
|
||||
XAAAMMMXAMXSAAMMMAMSMAXMMMMXMSMMXSMMAMXAASAAXSAMXXAAAAXXMAXMMXSSSXSMMMXSMMSSMSAAAMMMSMAAXXMSMXMSMMXSAMXSSSMSSSMSMMXSXAXAMXMMMAMAAXAAXMMXSAAX
|
||||
MXMMSXXMXMXMMXSXSAMXMSMSAAMAAMASAMAMSMMSMMSASMMSMSMSMMMASMMMSMMAXAXMASMAXXXXMSXSMSAAAMSSMSXSMAMXSAMASXAMMXAAMMAMXSAMSSMMXASAMASXMSXSSXSAMMMS
|
||||
AAMXMXMXAAXMMMXASXSAAAAMSAXXMSAMMSAMAXMXAAMXSAASAAMAXXAXMXAAMAMAMSMSASASMSXAXSXMASMSMMAAXXAXXMXAMXSAMMMSAMMSXMAMMMAXAMAMSASXSASMAMXMMAMASMXX
|
||||
MMSAMMASMSMSSMMMMMMMMMXMMMSSMMMXMXXSXMXMMMSSXMMSXXMASXSMMSMMXMMSSMAMMMXAASXMMSAMMMXXMMXXMMSMASMMMAMAMMAMAXAMASXSASXMASXMAXXXMASMAMSMMAMXXXAS
|
||||
SMSASAMMMAAAMSASASXSSSSMSAMXAAAMSAMMXSAAXASMMSXMMSMAMXAAXXASXSAMAMMMASMMMMAMAMAMMMASMSSMMAXMAMAXSXSMSMMMSMXSAMASASASAMAAMSXMSAXXAMSXSXSMXMMM
|
||||
AMMAMXXXXMMMSSMMASMMMAAAMXMXMMXSMASAAMXSMMSAAMAAAMMSMSXMXMASAMXSAMAAMAXAASAMXSMMXMASXAAMMASMAXXMMASAAAAAXXMMAMXMAMMMASAMXMAMSASMSSMAMAAAXMAS
|
||||
MSXSAMMSASXXXMAMSMXAMSMMMAMSMSXAXSMMSSMXASMMMSMMMSAXXSASMSAMXMMXAMAMXMMSXSMSMAASMMASMSMMMMMXAMAXMAMXMSMASASMSMSMSMMMAMAXMSAMSAMMXAMAMSMMXSAX
|
||||
XAMMAAAMAMMMMMAMAAMMXAXXSXMAAXMXMMAMAAXSSMXMMAAMXMASAXAMMAMMMSSSSXSAAXAXAMAAMSMMAMASMXASAXMAXASAMMSAXAMXSXMAXSXMASXMASXMASMMMAMXSMMXXAAMXMMS
|
||||
AMAMSMSMAMXAASMSMSMSAMXXMAMMSMSSSMAMSSMMXMASMXSMXMXMAMSMMASAAMAAAAMSXSAMAMSMXXXSSMMSASAXMSMASXMASAAXMMSMSAMXMMMSAMXSMXAAMMXAXAMXSAAMSMSMAAAA
|
||||
SXSMXAXMAMMMMSAMAAAXXSXMMMAXAMAXAXXXXAASMMMAAXMMMSAMXMXASASMXSMMMMMAMMASXMXSAMXMAAXSXMAMSAMAAASXMXSMSXAAMSAMXXAMASXMSSXSASXXMAMXXMAMSAMMSMMX
|
||||
AAAXMXMSMMMSMMAMSMSMMMXSAAXSSSMSSMSASXMMAMSMSMSAAXXXSASMMMSMXSAMAXMAXSAMAAMSXMASMSMSAMMMSASMMXMMMSAAXSMSMAMASMSSMMAAAXXMAMAAMSSMMXSXSASAXMAM
|
||||
MXMXSAMMAAAAXSSMMAAAAXAMMXMAMXXXMAXASXMXAMAAAAXMMSSMSXSAAAMMAMASMMSAXMSSMMMMASXXAAASXMAAXXMXMMMSXSMSMXMMMXMAMSXAXSXMMSMMAMXMMAAAAXMAMAMXMMSA
|
||||
XAMAXASMMMSXMAAAXSSSSSXMASMSMMSMMSMASASXXSMXMMMMXXXASMSXMSSMASAMAAMAMMAMAMXSAMXMSMMMSSMSSXMASAAAASXXXAAAXAMXMXXAMXMXXXXMASAAMXSMMSMAMAMMXAAA
|
||||
SASASXMXAXXMMSSMMAAAAXMASXXMAMMAAXMXMAMAMXMASMMMSAMXMASMMXAXXSASMMSSMSASAMAMAMXAXAMXMMXXAASASMSMMMMXMSSXSSXMASXMXAMSSMMSAXMXSAMAXXMAMAMAMMSM
|
||||
SXMXSAAMMMSXMAMXMMMMMMMMMXASMMMMMMSXMAMAMASASAAAMAMMMMMAMSMMMMMMMMAAASASMMMSMSMSSMXMASMMSMMAXAXXSASAAMAMAAAMASAMSASAAXMASMXXMASXMSSMSSSXMMAM
|
||||
MXSASMMMXAASMMSXSAMXXASAMXXXXSXASXXASXSASXMASMMMSAMAAASAMXXAAMAAXMSSMMAMMAAAAAMAAXASAAAAMAMSMSMMSASMSMAXSSXMASAMSSMXSXMAMMXMSXMAAMMMAXXMASAS
|
||||
MSMMSAMAMMSSMXMXSXXMASMMSAMXAMSAMXSXMASXSAMXMMAMXXSSSMSASXSSSSMSSXMAXMXMSXSMSMMSSMMMSSMMSSMAXXMAMXXMAXXMMMMMASAMXMMMMXMASAMXMASXSSSMMSMMMMMS
|
||||
97
2024/cpp/day-04/main.cpp
Normal file
97
2024/cpp/day-04/main.cpp
Normal file
|
|
@ -0,0 +1,97 @@
|
|||
#include <iostream>
|
||||
#include <vector>
|
||||
|
||||
using namespace std;
|
||||
|
||||
vector<string> readInput()
|
||||
{
|
||||
vector<string> lines;
|
||||
string line;
|
||||
while (getline(cin, line)) {
|
||||
lines.push_back(line);
|
||||
}
|
||||
return lines;
|
||||
}
|
||||
|
||||
bool wordIsXmas(const string &word)
|
||||
{
|
||||
return word == "XMAS" || word == "SAMX";
|
||||
}
|
||||
|
||||
bool wordIsMas(const string &word)
|
||||
{
|
||||
return word == "MAS" || word == "SAM";
|
||||
}
|
||||
|
||||
int xmasCountAt(const vector<string> &matrix, const size_t rowIndex, const size_t colIndex)
|
||||
{
|
||||
const size_t numberOfRows = matrix.size();
|
||||
const size_t numberOfCols = matrix[0].size();
|
||||
|
||||
int xmasCount = 0;
|
||||
|
||||
if (colIndex + 3 < numberOfCols) {
|
||||
string horizontalWord = matrix[rowIndex].substr(colIndex, 4);
|
||||
xmasCount += wordIsXmas(horizontalWord);
|
||||
}
|
||||
|
||||
if (rowIndex + 3 < numberOfRows) {
|
||||
string verticalWord;
|
||||
for (size_t i = 0; i <= 3; i++) {
|
||||
verticalWord += matrix[rowIndex + i][colIndex];
|
||||
}
|
||||
xmasCount += wordIsXmas(verticalWord);
|
||||
}
|
||||
|
||||
if (rowIndex + 3 < numberOfRows && colIndex + 3 < numberOfCols) {
|
||||
string downDiagonalWord, upDiagonalWord;
|
||||
for (size_t i = 0; i <= 3; i++) {
|
||||
downDiagonalWord += matrix[rowIndex + i][colIndex + i];
|
||||
upDiagonalWord += matrix[rowIndex + (3 - i)][colIndex + i];
|
||||
}
|
||||
xmasCount += wordIsXmas(downDiagonalWord) + wordIsXmas(upDiagonalWord);
|
||||
}
|
||||
|
||||
return xmasCount;
|
||||
}
|
||||
|
||||
bool crossMasExistsAt(const vector<string> &matrix, const size_t rowIndex, const size_t colIndex)
|
||||
{
|
||||
const size_t numberOfRows = matrix.size();
|
||||
const size_t numberOfCols = matrix[0].size();
|
||||
|
||||
if (rowIndex + 2 >= numberOfRows || colIndex + 2 >= numberOfCols) {
|
||||
return false;
|
||||
}
|
||||
|
||||
string downDiagonalWord, upDiagonalWord;
|
||||
for (size_t i = 0; i <= 2; i++) {
|
||||
downDiagonalWord += matrix[rowIndex + i][colIndex + i];
|
||||
upDiagonalWord += matrix[rowIndex + (2 - i)][colIndex + i];
|
||||
}
|
||||
|
||||
return wordIsMas(downDiagonalWord) && wordIsMas(upDiagonalWord);
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
const vector<string> matrix = readInput();
|
||||
const size_t numberOfRows = matrix.size();
|
||||
const size_t numberOfCols = matrix[0].size();
|
||||
|
||||
int numberOfXmasOccurrences = 0;
|
||||
int numberOfCrossMasOccurrences = 0;
|
||||
|
||||
for (size_t rowIndex = 0; rowIndex < numberOfRows; rowIndex++) {
|
||||
for (size_t colIndex = 0; colIndex < numberOfCols; colIndex++) {
|
||||
numberOfXmasOccurrences += xmasCountAt(matrix, rowIndex, colIndex);
|
||||
numberOfCrossMasOccurrences += crossMasExistsAt(matrix, rowIndex, colIndex);
|
||||
}
|
||||
}
|
||||
|
||||
// Part one
|
||||
cout << "Number of XMAS occurrences: " << numberOfXmasOccurrences << endl;
|
||||
|
||||
// Part two
|
||||
cout << "Number of X-MAS occurrences: " << numberOfCrossMasOccurrences << endl;
|
||||
}
|
||||
7
2024/cpp/day-05/day-05.pro
Normal file
7
2024/cpp/day-05/day-05.pro
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
TEMPLATE = app
|
||||
CONFIG += console c++17
|
||||
CONFIG -= app_bundle
|
||||
CONFIG -= qt
|
||||
|
||||
SOURCES += \
|
||||
main.cpp
|
||||
1353
2024/cpp/day-05/input
Normal file
1353
2024/cpp/day-05/input
Normal file
File diff suppressed because it is too large
Load diff
97
2024/cpp/day-05/main.cpp
Normal file
97
2024/cpp/day-05/main.cpp
Normal file
|
|
@ -0,0 +1,97 @@
|
|||
#include <algorithm>
|
||||
#include <iostream>
|
||||
#include <sstream>
|
||||
#include <vector>
|
||||
|
||||
using namespace std;
|
||||
|
||||
vector<pair<int, int>> readRules()
|
||||
{
|
||||
vector<pair<int, int>> rules;
|
||||
string line;
|
||||
while (getline(cin, line)) {
|
||||
if (line == "") {
|
||||
break;
|
||||
}
|
||||
int number1 = stoi(line.substr(0, 2));
|
||||
int number2 = stoi(line.substr(3, 2));
|
||||
rules.push_back({number1, number2});
|
||||
}
|
||||
return rules;
|
||||
}
|
||||
|
||||
vector<vector<int>> readManuals()
|
||||
{
|
||||
vector<vector<int>> manuals;
|
||||
string line;
|
||||
while (getline(cin, line)) {
|
||||
stringstream inStream(line);
|
||||
vector<int> pages;
|
||||
string page;
|
||||
while (getline(inStream, page, ',')) {
|
||||
pages.push_back(stoi(page));
|
||||
}
|
||||
manuals.push_back(pages);
|
||||
}
|
||||
return manuals;
|
||||
}
|
||||
|
||||
bool isCorrectPageOrdering(const int firstPage,
|
||||
const int secondPage,
|
||||
const vector<pair<int, int>> &rules)
|
||||
{
|
||||
auto it = lower_bound(rules.begin(),
|
||||
rules.end(),
|
||||
secondPage,
|
||||
[](const pair<int, int> &a, int b) { return a.first < b; });
|
||||
|
||||
for (; it != rules.end() && it->first == secondPage; ++it) {
|
||||
if (it->second == firstPage) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
vector<int> getProperlyOrderedPages(vector<int> pages, const vector<pair<int, int>> &rules)
|
||||
{
|
||||
sort(pages.begin(), pages.end(), [&rules](int a, int b) {
|
||||
return isCorrectPageOrdering(a, b, rules);
|
||||
});
|
||||
return pages;
|
||||
}
|
||||
|
||||
int getMiddlePageNumber(const vector<int> &pages)
|
||||
{
|
||||
size_t middleIndex = pages.size() / 2;
|
||||
return pages[middleIndex];
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
vector<pair<int, int>> rules = readRules();
|
||||
vector<vector<int>> manuals = readManuals();
|
||||
sort(rules.begin(), rules.end());
|
||||
|
||||
int sumOfCorrectMiddlePages = 0;
|
||||
int sumOfCorrectedMiddlePages = 0;
|
||||
|
||||
for (const vector<int> &pages : manuals) {
|
||||
const vector<int> properlyOrderedPages = getProperlyOrderedPages(pages, rules);
|
||||
if (pages == properlyOrderedPages) {
|
||||
sumOfCorrectMiddlePages += getMiddlePageNumber(pages);
|
||||
} else {
|
||||
sumOfCorrectedMiddlePages += getMiddlePageNumber(properlyOrderedPages);
|
||||
}
|
||||
}
|
||||
|
||||
// Part one
|
||||
cout << "Sum of the middle page numbers of all correctly ordered manuals: "
|
||||
<< sumOfCorrectMiddlePages << endl;
|
||||
|
||||
// Part two
|
||||
cout
|
||||
<< "Sum of the middle page numbers of all incorrectly ordered manuals after ordering them: "
|
||||
<< sumOfCorrectedMiddlePages << endl;
|
||||
}
|
||||
7
2024/cpp/day-06/day-06.pro
Normal file
7
2024/cpp/day-06/day-06.pro
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
TEMPLATE = app
|
||||
CONFIG += console c++17
|
||||
CONFIG -= app_bundle
|
||||
CONFIG -= qt
|
||||
|
||||
SOURCES += \
|
||||
main.cpp
|
||||
130
2024/cpp/day-06/input
Normal file
130
2024/cpp/day-06/input
Normal file
|
|
@ -0,0 +1,130 @@
|
|||
............#...........................................#.......#.............#...........#.......................................
|
||||
..........#....................#.........................................#............#............#.....##...................#...
|
||||
.#.........#..........#.....#......##...............................................................#..................#..........
|
||||
...........#.#...................#..................#.......................#........#............#...............................
|
||||
...#..........................#............................#..................#..................#..........##..................#.
|
||||
..............................................................................#...................................#..........#.#..
|
||||
.#......##........#.........#...........#...............................#...................#........#..#............#.........##.
|
||||
.....................................#...................................................................#........................
|
||||
......................#......................#.............................................#......................................
|
||||
....................................................#...........#........................#...................#......#.#.........##
|
||||
..................#..#..........#...........................#.#..........#.......##....................#.#....#..#................
|
||||
............#...#..........................#.............................................................................#........
|
||||
...............................#.............#.........#..........................................................................
|
||||
.....#......#........#.#...............#.........................#.......#.......#.........................#......................
|
||||
...#....#........................##.................#..#...............................#..........#...............................
|
||||
..........#......#..............................................................#...................#..........#.........#.#......
|
||||
#.............#.........#.................................#....................#....................#......................#......
|
||||
....#.............................................#..................#.........#...#................#........#....#..........#....
|
||||
.......#......................................#.......#..........................................................#................
|
||||
...#..#..............#.........#......#...........................................#..............................###.....#........
|
||||
......................................................#........#..............................#..................#................
|
||||
.......................................#.....#.........................................................................#..........
|
||||
...........................#...........#....................................#.........#...........................................
|
||||
....#........#...................................................................#...................................#............
|
||||
....#..#.................................................#........................#...............................................
|
||||
............................................................##..#......................#.......#...........#..#........#..........
|
||||
........#.........................................................................................................................
|
||||
............#......#.........#...............##...............................#......#......................#......#..............
|
||||
.#......#...............................................#.#........................#....#.....#..#................##..............
|
||||
.........#.....#.............#.........#.............................#.................#.........##.......#.......................
|
||||
...#..............................................................................#....................#..........................
|
||||
.#...#.....#..............#.................................................#..............................................#......
|
||||
....................................................#...#..................................................................#......
|
||||
..............#................#.......................................................................#.........#................
|
||||
...........#..............................#.....#.........#..#............................#.......................................
|
||||
.........................#............#..................................#...#.....#......#.......................................
|
||||
..........#......................#...#....#......#.....................#..................................#.....#........#........
|
||||
.............#...#........#.........................................#..#........................................................#.
|
||||
.....#...............#......#.........##.....#.......................#..............#....................................#...#....
|
||||
.....................#..........................................................................................#.............#...
|
||||
.................#.............#..............##...................................................#..............................
|
||||
..................................#.......#.......................................#...........#...................................
|
||||
...#..............#............................#.#................................................................................
|
||||
..........#.......#...........................#...........................#..............................#....................#...
|
||||
.....#...#...#.................#..........................................................#............#.....................#.#..
|
||||
...#...#......#.............#...............................................................................#...##................
|
||||
..........#.....#.......#............#........................#..........................................#.............#..........
|
||||
..................................................#.................#.........................#.#.......#.........................
|
||||
.............................#...............................#.#............#................#...................#...............#
|
||||
..#...........#........................#............................................#...........#............#....................
|
||||
.......................#...#...........................#............#..#..#............#..#..............................#........
|
||||
.......#...........#...............#.............................................................................#................
|
||||
...........................#................................#....#....#...#..................#...................#.#..........##..
|
||||
...#.#.......................................................................................#.....#..........#..........#........
|
||||
....#......#.......................................................#.......#.#............................#.......................
|
||||
.#.................#...#........#...#...........................#...#.................^......#............#.......................
|
||||
...........#................##..........................................................................#.........................
|
||||
...........................................................#....#............................#........#...........................
|
||||
.#......#....#..#.......#....................#...............................................#........#...........................
|
||||
......................##..............##.......................#...#...............#........................#................#....
|
||||
#..................................................................................................#..........#...................
|
||||
.....................#...................................................................................#............#.....#.....
|
||||
..........................##.#............................................#........#.#.......#.#....#...#.........................
|
||||
....#...............#.................................................................................#..#...........##...........
|
||||
.................................................................#.#.....#.........#...............#..............................
|
||||
.......................................................#.......#.........#............#....#..........#.....................#.....
|
||||
#..............................................#..#..................#....................#.......................#....#....#.....
|
||||
................#...............#..............................................................#....#...........................#.
|
||||
.#...............#..#....................#...........................................#............................................
|
||||
................................#...........................................#.........................#..#........................
|
||||
.......#......#........................................#....................................................#.....................
|
||||
.#......................#........................#...............#......................#...........#.............................
|
||||
........#.......#..................#.......................#.........#.....................................................#.....#
|
||||
..................#.....................#...#..........................................................#.............#............
|
||||
....#........................#......#...#.....................#....##.........#...................................................
|
||||
......................#....................#....................................................#..........#..................#...
|
||||
.......#..........#.....................#.................................................#.......................................
|
||||
....................#.......................................................#....##...................................#...........
|
||||
................................#.............................................#.....#..............#..............................
|
||||
..#.....#.......#..................................#........................#.....................................................
|
||||
...##........#.#........#.........................................#..............#......................................#.........
|
||||
........................................................................................#.........................................
|
||||
.......................#......#...........................................................................#.......................
|
||||
.........#...................#.............................................................#.........#............................
|
||||
..........................#.................................................#................#...................................#
|
||||
...............................#......................................#.........................#....#......#................#....
|
||||
..........#.......................................................................................................................
|
||||
....#......#.#.................#.#.......#.........#...#................#...............#..............#.....................#....
|
||||
....#.........#....#................#..........#........#...................#.............#...............#..........#...#........
|
||||
................#...............#.....#.....#...........#....#....................#.....#...................#.....................
|
||||
.......................#.......................#...........................................................#.....................#
|
||||
#.................................................................................................#...............................
|
||||
.........................................##..#........#............................#............#........................#........
|
||||
....................#...............#............#................................................................................
|
||||
...#................#............#..............................................................#.#.................###...........
|
||||
......#...........................#.......#....#...............#....................................................#.....#.......
|
||||
..#.......##.....................#................#.....................................................#.#......................#
|
||||
.................................................................#.................................##.............................
|
||||
....#..............................................#................................................................#....#........
|
||||
................#................................................#..............................................#...#...........#.
|
||||
...................................##...............................................................................#.............
|
||||
............#.................#..#.........................#..........................#.......#...................................
|
||||
.......##........#.#...#......................................#..............#...............................#.............#......
|
||||
............#.............................................##..............................#............................#..........
|
||||
.................................................#..........................#.........#...#...............................#.......
|
||||
..#............#......................#.....................................#.....##.........................#....................
|
||||
...........#......#............#...................#.......................#..##........................................#.........
|
||||
.................................##......#.........#.......#..................##...............#..................................
|
||||
........#.........#...##.........#.#......#.........#.......#.....#.......................#.......................................
|
||||
..................................#..............#................#.....#..............##...............#.........................
|
||||
................#..........................................#..#.......#....................................#......................
|
||||
..................................................#...........#..........................#.................#......................
|
||||
.........#....................................................#..........#........................................#...............
|
||||
..........................#..............................................#.................................................#......
|
||||
...#....................................#.......................#.#.......#............##........#........................#.......
|
||||
...#..................................#.....#...........................................................#...#........#............
|
||||
................#...........#.........................................................#...............#....................#....#.
|
||||
.................#...........#..............................#..........#........#............................#..........#.........
|
||||
.........#.............................................#..........#....#.................#...................#...#................
|
||||
......#....................#.................#.......#..............#............................#..#.......................#...#.
|
||||
#.....#..........................#.....#...................................#...##.....#.....#...........#................#......#.
|
||||
.##................#.........#.........#...#.#....................................................................................
|
||||
.............................................................#..#...............#..#...............#.....#....#.............#..#..
|
||||
.............#.........#.......#....#.........#...#......#........#.............................#.................................
|
||||
#.....................................#.......#..................#..................#............#...#......#.........#...........
|
||||
.......##............#.............#..............#.....#........#.................#..#..........#......................#..#......
|
||||
......#......#.............#....#...............#.......#....................##.................................................##
|
||||
...............#........#........#........................#.#........#.............#...................................#...##.....
|
||||
................#........................#.......#......#..........................#................#............#...#....#.......
|
||||
#.................#.....................#..........#.....................#...................##..........................#........
|
||||
120
2024/cpp/day-06/main.cpp
Normal file
120
2024/cpp/day-06/main.cpp
Normal file
|
|
@ -0,0 +1,120 @@
|
|||
#include <iostream>
|
||||
#include <set>
|
||||
#include <vector>
|
||||
|
||||
using namespace std;
|
||||
|
||||
void readInput(vector<string> &mappedArea, pair<int, int> &startingPosition)
|
||||
{
|
||||
string line;
|
||||
for (size_t rowIndex = 0; getline(cin, line); rowIndex++) {
|
||||
for (size_t colIndex = 0; colIndex < line.size(); colIndex++) {
|
||||
if (line[colIndex] == '^') {
|
||||
startingPosition = {rowIndex, colIndex};
|
||||
}
|
||||
}
|
||||
mappedArea.push_back(line);
|
||||
}
|
||||
}
|
||||
|
||||
bool isOutOfBounds(const vector<string> &mappedArea, const pair<int, int> &position)
|
||||
{
|
||||
return (position.first < 0 || position.first >= mappedArea.size())
|
||||
|| (position.second < 0 || position.second >= mappedArea[0].size());
|
||||
}
|
||||
|
||||
bool isObstacle(const vector<string> &mappedArea, const pair<int, int> &position)
|
||||
{
|
||||
char cell = mappedArea[position.first][position.second];
|
||||
return cell == '#' || cell == 'O';
|
||||
}
|
||||
|
||||
enum Direction { UP = 0, RIGHT, DOWN, LEFT };
|
||||
|
||||
bool takeStep(vector<string> &mappedArea,
|
||||
pair<int, int> ¤tPosition,
|
||||
Direction ¤tDirection,
|
||||
set<pair<int, int>> *distinctPositions = nullptr)
|
||||
{
|
||||
const vector<pair<int, int>> directions = {{-1, 0}, {0, 1}, {1, 0}, {0, -1}};
|
||||
pair<int, int> nextPosition = {currentPosition.first + directions[currentDirection].first,
|
||||
currentPosition.second + directions[currentDirection].second};
|
||||
|
||||
if (isOutOfBounds(mappedArea, nextPosition)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (isObstacle(mappedArea, nextPosition)) {
|
||||
currentDirection = static_cast<Direction>((currentDirection + 1) % 4);
|
||||
return true;
|
||||
}
|
||||
|
||||
if (distinctPositions && mappedArea[nextPosition.first][nextPosition.second] != 'X') {
|
||||
distinctPositions->insert({nextPosition.first, nextPosition.second});
|
||||
}
|
||||
|
||||
mappedArea[currentPosition.first][currentPosition.second] = 'X';
|
||||
mappedArea[nextPosition.first][nextPosition.second] = '^';
|
||||
currentPosition = nextPosition;
|
||||
return true;
|
||||
}
|
||||
|
||||
bool isLoopCausingObstruction(const pair<int, int> &obstructionPosition,
|
||||
vector<string> mappedArea,
|
||||
pair<int, int> currentPosition,
|
||||
Direction currentDirection)
|
||||
{
|
||||
if (obstructionPosition == currentPosition) {
|
||||
return false;
|
||||
}
|
||||
|
||||
mappedArea[obstructionPosition.first][obstructionPosition.second] = 'O';
|
||||
|
||||
set<tuple<int, int, Direction>> states;
|
||||
states.insert({currentPosition.first, currentPosition.second, currentDirection});
|
||||
|
||||
while (takeStep(mappedArea, currentPosition, currentDirection)) {
|
||||
tuple<int, int, Direction> currentState = {currentPosition.first,
|
||||
currentPosition.second,
|
||||
currentDirection};
|
||||
|
||||
if (states.count(currentState)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
states.insert(currentState);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
vector<string> mappedArea;
|
||||
pair<int, int> startingPosition;
|
||||
Direction startingDirection = UP;
|
||||
readInput(mappedArea, startingPosition);
|
||||
|
||||
pair<int, int> currentPosition = startingPosition;
|
||||
Direction currentDirection = startingDirection;
|
||||
set<pair<int, int>> distinctPositions = {currentPosition};
|
||||
while (takeStep(mappedArea, currentPosition, currentDirection, &distinctPositions))
|
||||
;
|
||||
int numberOfDistinctPositions = distinctPositions.size();
|
||||
|
||||
int numberOfLoopCausingObstructions = 0;
|
||||
for (const pair<int, int> &obstructionPosition : distinctPositions) {
|
||||
numberOfLoopCausingObstructions += isLoopCausingObstruction(obstructionPosition,
|
||||
mappedArea,
|
||||
startingPosition,
|
||||
startingDirection);
|
||||
}
|
||||
|
||||
// Part one
|
||||
cout << "Number of distinct positions visited before leaving: " << numberOfDistinctPositions
|
||||
<< endl;
|
||||
|
||||
// Part two
|
||||
cout << "Number of potential obstructions to create a loop: " << numberOfLoopCausingObstructions
|
||||
<< endl;
|
||||
}
|
||||
10
2024/cpp/day-06/short-input
Normal file
10
2024/cpp/day-06/short-input
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
....#.....
|
||||
.........#
|
||||
..........
|
||||
..#.......
|
||||
.......#..
|
||||
..........
|
||||
.#..^.....
|
||||
........#.
|
||||
#.........
|
||||
......#...
|
||||
7
2024/cpp/day-07/day-07.pro
Normal file
7
2024/cpp/day-07/day-07.pro
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
TEMPLATE = app
|
||||
CONFIG += console c++17
|
||||
CONFIG -= app_bundle
|
||||
CONFIG -= qt
|
||||
|
||||
SOURCES += \
|
||||
main.cpp
|
||||
850
2024/cpp/day-07/input
Normal file
850
2024/cpp/day-07/input
Normal file
|
|
@ -0,0 +1,850 @@
|
|||
28690: 43 665 1 88 9
|
||||
292283: 36 5 3 9 8 8 4 4 184 770
|
||||
115932854: 67 2 8 7 3 6 49 1 631 4 2
|
||||
159: 8 8 3 96 15
|
||||
642859823521: 7 9 3 6 5 4 1 27 84 10 3
|
||||
140244: 7 7 30 3 3 13 640 156
|
||||
1810564: 656 23 6 20 4
|
||||
86166816424080: 83 39 80 5 6 8 4 80 861
|
||||
20133655: 872 569 576 4 998
|
||||
7795767: 41 63 789 1 95 6 441
|
||||
104811: 9 8 629 2 7 80 47 844
|
||||
6943025: 3 691 151 3 539 971 1
|
||||
264923: 71 466 1 27 2 4 19
|
||||
1877688115: 4 51 34 1 75 7 99 82 15
|
||||
28399327598721: 631 68 62 26 296 860
|
||||
48964452: 48 964 382 37 1 29
|
||||
9898: 78 17 4 97 295
|
||||
377130: 4 2 2 8 81 6 640 4 2 6 3
|
||||
1298: 2 5 40 9 713
|
||||
2574297726: 27 476 37 5 8 3 4 38 91
|
||||
481431045498: 88 47 194 4 4 3 15 499
|
||||
222567314: 918 95 99 8 2 73 12
|
||||
9638: 56 38 7 16 7
|
||||
161090: 3 7 281 2 5 2 7 5 39 7 91
|
||||
51044268006: 46 5 46 561 860 5
|
||||
39658: 62 325 79 60 819
|
||||
109951: 71 86 7 51 2
|
||||
12100422: 927 593 308 22 2
|
||||
71821: 346 13 20 2 3
|
||||
1556: 7 77 7 40 2 926
|
||||
892823481883: 9 920 259 75 115 98 9
|
||||
782: 4 6 9 28 698
|
||||
12585: 7 81 7 55 2 2
|
||||
8270: 2 3 74 6 75 3 1 3 3 5 3 2
|
||||
89690724: 996 5 622 14 9
|
||||
114302917: 369 7 74 13 46
|
||||
113961074: 379 87 30 7 6
|
||||
184626390: 407 51 5 59 6 806
|
||||
35111582: 171 27 6 41 5
|
||||
6574224: 7 298 6 60 9 82
|
||||
7916961: 4 170 72 521 160
|
||||
1537: 6 8 93 44
|
||||
3308049045315: 678 992 80 35 609
|
||||
27459: 1 1 6 35 72 27 9
|
||||
569674: 7 211 79 8
|
||||
10475928386: 6 569 6 182 48 35 82 6
|
||||
4851753: 966 4 7 993 5 940 8
|
||||
1295: 190 98 3 310 1 7 686
|
||||
2588200588: 93 369 4 6 462 819
|
||||
19444110: 7 68 28 814 80 5 565 6
|
||||
745867: 8 711 968 3 8 7 2 55 4
|
||||
13209: 254 9 50 8 51
|
||||
7769113: 17 4 157 43 803 88
|
||||
21625511: 81 2 7 689 1 9 67 118 3
|
||||
1077120: 1 4 130 61 7 9 76 44 85
|
||||
294905644: 823 651 5 2 558 6 5
|
||||
449156: 19 1 707 31 5
|
||||
482366646558: 482 366 646 538 19
|
||||
324165888: 1 7 574 2 960 6 9 648 6
|
||||
9481646353: 7 260 9 41 637 3 5 1 71
|
||||
3642387125: 4 7 6 44 269 72 7 1 19 4
|
||||
2659769139: 672 335 2 1 43 92 2 9 1
|
||||
89493: 991 9 29 831 3
|
||||
5601177: 70 80 303 766 108
|
||||
20549: 404 6 2 8 5
|
||||
82882800: 3 8 445 577 8 315
|
||||
600: 5 26 8 66 3 283
|
||||
6151659: 7 888 16 4 2 6 1 4 4 4 7 2
|
||||
3169221: 222 549 26 90 303
|
||||
552172: 5 52 12 6 46
|
||||
503: 1 496 7
|
||||
12734: 329 4 1 9 1 881
|
||||
545591: 5 80 425 4 66 826
|
||||
104954683399: 2 7 529 32 39 8 4 184 5
|
||||
305810: 265 948 4 918 53
|
||||
9625: 90 6 3 564 1
|
||||
11014: 31 5 31 18 5 3 8 5 5 7 1 2
|
||||
155239206: 587 1 82 43 5 89 75 6
|
||||
14077812: 7 8 1 3 3 73 49 8 9 6 958
|
||||
1838055318: 5 543 677 31 7
|
||||
1545156413: 9 4 60 509 6 5 549 866
|
||||
124275: 8 4 419 5 80
|
||||
420337: 417 9 4 4 7 1
|
||||
7418: 4 69 40 77 2
|
||||
530126106404: 51 28 9 113 38 371 1 9
|
||||
29436: 8 83 1 3 5 77 2 875 142
|
||||
142551104348: 103 297 890 3 35 1 46
|
||||
118832: 98 600 8 601 7 2
|
||||
507172365: 32 8 9 367 6 6 703 1 5 9
|
||||
23495253: 581 7 5 4 15 2 6 2 38 7 7
|
||||
40250395029995: 70 575 3 950 29 99 7 1
|
||||
372437: 52 4 3 2 1 5 5 672 2 5 4
|
||||
23594032362: 9 83 3 2 54 8 365
|
||||
136828510: 4 959 5 672 518 53
|
||||
159891: 26 541 5 48 5 5 1 44 6
|
||||
1651545: 23 9 7 689 4 8
|
||||
426888285: 5 220 36 77 7 8 4 4 1 8 5
|
||||
57786554168: 8 267 174 7 47 3 6 5 3
|
||||
437646968: 509 8 305 10 4 9 81
|
||||
9215: 8 1 15 5 57
|
||||
14720016: 5 32 80 1 575 8 2
|
||||
71695502: 724 11 3 84 99
|
||||
144052834877: 71 9 46 4 53 773 49
|
||||
127474128: 6 2 3 1 8 1 68 98 221 1
|
||||
24824: 1 6 74 348 58
|
||||
427443: 845 63 716 5 58 990
|
||||
7739520: 3 4 1 584 9 97 22 3 5 3
|
||||
14542953306: 5 9 1 49 6 7 7 8 1 4 706
|
||||
796979: 7 90 6 96 9 7
|
||||
1750051: 566 59 70 40 51
|
||||
2219: 1 56 4 56 5 9
|
||||
19309378: 4 33 17 425 496 20 5
|
||||
1358: 2 4 115 10 127 6 295
|
||||
19132434805: 33 550 71 21 7 6 961 5
|
||||
9367480: 48 160 66 2 95 4 34 2
|
||||
2351520: 1 1 3 6 6 345
|
||||
396543: 791 30 23 1 3 7
|
||||
2263572323: 2 202 739 13 3 7 5 4 80
|
||||
86374: 319 5 66 26 1 2
|
||||
460560727: 5 6 5 4 677 66 6 29 4 8 5
|
||||
27374821053: 6 3 1 3 74 81 6 4 5 5 56 1
|
||||
17759347: 7 1 7 9 71 5 443 4 5 7 88
|
||||
1317045161: 3 5 2 1 8 28 3 8 5 1 154 4
|
||||
24498: 64 43 6 1 9 7 3 1 7 4 9 9
|
||||
3292956: 329 2 638 5 313
|
||||
113246: 4 5 8 60 249
|
||||
1497554: 9 7 1 484 6 700 1 48 2
|
||||
31496: 785 5 3 9 8
|
||||
68460990: 267 88 26 9 30 247
|
||||
877: 8 74 6
|
||||
31283904316: 312 740 98 91 4 9 315
|
||||
487: 7 7 8 77 18
|
||||
316080: 3 430 6 90 8
|
||||
81252447: 92 99 8 8 9 82 2 9 9 699
|
||||
82720: 270 542 85 674 762
|
||||
5380344: 97 9 1 76 81
|
||||
6572: 10 54 1 57 15
|
||||
95276379: 84 5 68 139 4 2 65 8 3
|
||||
59337632: 3 1 5 27 9 84 35 8 4
|
||||
53335311: 3 4 8 51 638 92 7 1 559
|
||||
2569795: 83 387 9 8 44
|
||||
600018801: 89 741 35 828 693
|
||||
1696464: 5 7 600 36 77
|
||||
15929: 1 19 837 20 6
|
||||
1440994: 5 48 6 9 94
|
||||
3540681: 7 8 38 576 678
|
||||
129675194: 610 44 4 6 26 354 39
|
||||
1618: 798 2 9 4 7 3
|
||||
803095: 80 28 2 92 3
|
||||
3528527687: 35 278 7 276 8 6
|
||||
11982: 148 8 5 9 2
|
||||
2624004: 65 9 51 469 77
|
||||
9015108: 8 964 51 107
|
||||
38598859750: 88 7 33 87 95 50
|
||||
7871095: 631 77 3 3 18
|
||||
103577: 8 4 3 9 2 3 8 75 825 63 5
|
||||
259341: 42 6 4 8 8 9 3 4 8 6 6 63
|
||||
16175642625: 4 4 5 85 2 82 2 247 9 6 6
|
||||
16842488: 52 750 21 4 89
|
||||
254: 229 18 5
|
||||
73705155: 1 10 670 449 4 20 639
|
||||
6150654: 61 4 84 8 9 5 5 3
|
||||
26102032: 300 9 749 8 946
|
||||
14167: 91 20 3 4 79 41 31
|
||||
128269: 30 1 3 979 6 6
|
||||
27152670: 77 44 6 8 122 548
|
||||
933846: 2 474 824 527 3
|
||||
9448662229: 296 84 9 38 229
|
||||
70290954: 4 374 45 4 3 9 2 9 6 1 29
|
||||
9352: 9 3 43 7
|
||||
237870: 4 392 6 57 84 45 85
|
||||
82110: 85 321 85 3
|
||||
205797: 64 2 9 32 69
|
||||
2308880: 2 587 5 8 98
|
||||
13983109811: 1 63 63 6 8 3 2 8 37 7 46
|
||||
200698: 1 32 760 7 8 2
|
||||
415904: 8 320 6 3 81 3 8 2 3 8 3 5
|
||||
22302042: 65 113 89 30 4 1
|
||||
716804850: 8 878 9 37 9 54 606 8
|
||||
100746530: 3 6 7 3 74 2 83 1 2 4 97 2
|
||||
51688: 6 347 4 456 2
|
||||
3093750240: 2 9 6 29 43 760 7 42 7
|
||||
8676701: 55 6 429 671 61
|
||||
12754: 2 23 85 6 7
|
||||
51961695: 7 6 824 6 1 155 542
|
||||
33859420: 23 9 8 2 8 3 53 93 367
|
||||
5573575659: 8 80 4 6 1 550 649 914
|
||||
28515425: 8 7 274 8 5 3 6 8 3 685 5
|
||||
12901110: 9 917 6 9 914 3 5
|
||||
176851425: 348 66 456 302 9 25
|
||||
4829584: 9 532 41 58 4
|
||||
506182996: 58 181 87 82 93
|
||||
57543842: 268 60 84 356 1
|
||||
79446: 588 5 27 22 44
|
||||
3686759: 3 686 761
|
||||
453027: 8 608 14 4 266 88
|
||||
2032981: 273 95 55 89 79 2
|
||||
4624428: 6 11 33 5 8 674 9 2 6 83
|
||||
83328: 298 3 691 7 2 6
|
||||
3096378: 7 6 7 3 35 3 73 9 7 93 6 6
|
||||
1305324: 288 5 66 6 606
|
||||
10073457: 523 642 4 30 357
|
||||
24214852: 24 2 14 804 48
|
||||
7340086: 239 2 9 6 93 3 1 1 2 7 4
|
||||
195489: 6 735 29 30 2 78 64
|
||||
130810527: 7 8 749 9 441 7 3 5 1 1 6
|
||||
130202199288: 8 714 836 8 6 63 1 428
|
||||
12763359: 123 4 6 3 359
|
||||
57796204: 4 3 226 596 25 924 3 4
|
||||
181620: 522 9 43 7 288 3 6 4 9
|
||||
6763: 2 2 1 7 69 65
|
||||
33803993: 567 85 96 42 7
|
||||
27872: 2 18 1 53 67 133
|
||||
493611: 493 1 611
|
||||
54600: 3 13 91 60 7
|
||||
24148088073: 844 2 859 1 333
|
||||
418353409: 567 640 274 3 384
|
||||
2011: 6 9 1 3 438 4 3 53 4 8 4 7
|
||||
4596317498: 459 6 317 483 17
|
||||
496: 484 2 7 3
|
||||
6795323645: 90 28 1 995 271
|
||||
13042333: 1 7 844 101 9
|
||||
1806709901348: 486 983 8 53 478 7
|
||||
275168323: 4 9 3 75 2 394 7 265 1 2
|
||||
735264: 6 1 352 6 7
|
||||
64455: 92 5 510 58 62 719
|
||||
112688880: 3 3 17 20 7 52 2 4 1 4 8 6
|
||||
1028461654: 17 141 6 165 7
|
||||
2069307524: 10 67 709 5 2 69 3 525
|
||||
17587502: 14 173 1 94 99
|
||||
4424222: 6 16 449 8 8 222
|
||||
1674127: 102 7 7 4 4 752 3 7 1 91
|
||||
6121750272683: 55 652 268 7 2 11 6 8 4
|
||||
335240: 220 8 77 18 96 3 4 20
|
||||
227: 2 8 8
|
||||
1644222: 68 9 37 918 223
|
||||
2347714: 332 705 705 5 8 3
|
||||
288708120: 8 196 29 3 39 9 9 2
|
||||
720872370: 2 816 71 16 289 54 21
|
||||
28647: 83 69 5 4 8
|
||||
9243611142: 9 71 1 8 502 64 1 74 1 6
|
||||
2384668: 8 290 8 6 14 54
|
||||
106: 3 9 39 3 48 4
|
||||
6952347: 2 20 213 272 3 1 27
|
||||
78720: 86 2 35 80 8
|
||||
8828365486: 67 9 2 21 65 48 9
|
||||
2516238418329: 8 62 91 9 91 40 1 3 887
|
||||
11139: 6 854 2 6 775 44
|
||||
617: 34 6 8 2 3 4 325
|
||||
80389: 983 40 5 402 466 2
|
||||
426400: 85 5 5 43 854
|
||||
523644: 1 36 6 189 8 70 91 3 7 3
|
||||
6272: 6 76 30 7 8
|
||||
446760: 1 247 2 60 3
|
||||
1725: 53 4 9 4 9 483 612
|
||||
2027266768809: 7 68 75 468 42 321 9 9
|
||||
16062: 1 610 459 1 5 4 3
|
||||
1054640556: 8 98 196 1 5 6 282 5 6 6
|
||||
266040747: 98 22 23 4 8 19 9 69 49
|
||||
2650266: 4 2 4 5 6 7 1 7 179 263 5
|
||||
1440996: 76 474 9 4
|
||||
94431: 869 7 529 93 9 6 7 9 6
|
||||
35076: 7 61 1 520 37
|
||||
705582: 36 7 32 8 5 134 6 62
|
||||
484703: 69 877 75 8
|
||||
252216: 571 44 96 9 7
|
||||
209472780: 1 366 8 8 75 630 946
|
||||
8193489: 80 1 92 812 2 8 665 4
|
||||
13724934598: 72 2 644 9 206 32 4
|
||||
82375963: 80 2 307 68 898 65
|
||||
84596760: 86 5 948 5 920
|
||||
85224810529: 1 3 81 3 9 67 9 3 416 9 3
|
||||
266934: 3 593 68 4 5 117 9 1 22
|
||||
164816: 2 158 95 644 67 529
|
||||
1796: 3 297 2 1 14
|
||||
60345493396: 60 3 385 69 87 6 395
|
||||
6290660: 4 650 8 30 302
|
||||
314847: 9 4 1 6 42 94 29 54 39
|
||||
8448504910: 44 192 50 49 11
|
||||
4594105: 86 84 67 7 30 258 3 1
|
||||
526152727: 61 9 85 272 7
|
||||
2485: 67 2 2 7 5
|
||||
80888199: 668 6 12 819 9
|
||||
2943040: 827 7 50 9 7 23 8
|
||||
118831268: 72 99 692 499 2 68
|
||||
4516687: 6 1 98 2 283 7
|
||||
89820: 99 336 8 1 454 14 6
|
||||
27421595: 334 821 96 99
|
||||
4966069: 7 69 4 65 72
|
||||
46913588: 4 733 8 724 57 2 5 21 3
|
||||
1372980: 20 8 65 61 7 41 3
|
||||
25613: 2 61 203 255 48 605 1
|
||||
2290057: 325 77 7 966 4
|
||||
2539150720: 253 91 153 354 20
|
||||
461181686: 2 5 436 181 683
|
||||
5133083942: 34 22 15 3 91 1 448 41
|
||||
154998461: 3 7 8 711 459
|
||||
41700: 27 367 1 516 4
|
||||
734737920: 336 10 79 420 64
|
||||
4592955: 590 8 3 60 9 457 7 15
|
||||
1607096752: 845 84 19 75 2
|
||||
10675518320: 8 58 5 2 2 19 8 2 7 5 16 1
|
||||
2746634119884: 1 338 920 2 941 218 7
|
||||
3797011: 7 9 955 464 98 27
|
||||
693355211: 47 2 810 16 87 7 1
|
||||
130528507: 91 39 528 443 64
|
||||
5005084: 52 5 5 7 550 84 1
|
||||
10190323544727: 53 1 5 986 347 3 39 24
|
||||
8283: 9 6 69 8 3
|
||||
271057803516: 60 767 589 35 16
|
||||
51436: 841 1 444 8 5 36
|
||||
58: 4 5 15
|
||||
3704: 8 64 6 6 594
|
||||
3655413: 2 25 32 223 6
|
||||
697256: 4 2 530 24 9 6 6
|
||||
363819106: 209 310 74 158 7 2
|
||||
17534328395: 812 366 59 395
|
||||
88574: 56 55 683 167 1 92 70
|
||||
1680393: 6 7 4 99 1 7 114 4 860 5
|
||||
40839820: 82 16 71 90 70
|
||||
690775: 76 9 54 623 5
|
||||
69828: 67 65 529
|
||||
3132811200477: 2 8 91 9 523 3 822 80
|
||||
3882285509: 5 99 11 31 23 511
|
||||
278665835010: 790 57 94 8 5 4 9 9 5 6 7
|
||||
8171522: 7 60 8 48 28
|
||||
1031448: 63 7 85 5 70 5 2 514 88
|
||||
47536770722: 56 93 4 6 1 5 703 71 49
|
||||
445217: 4 4 52 1 7
|
||||
22061822199: 8 41 65 8 8 38 5 47 5 22
|
||||
3074: 4 80 4 9 50
|
||||
124022658484: 1 2 9 2 52 9 2 6 2 640 7 4
|
||||
82992865844: 3 8 6 43 573 5 842
|
||||
3035565: 5 4 5 97 9 694 6
|
||||
716: 4 73 8 98
|
||||
24427949152: 909 7 2 2 7 4 959 7 9 2 8
|
||||
725974: 7 2 314 331 8 80 1 75
|
||||
16229351: 2 9 13 4 43 9 62 92 96
|
||||
170441317: 9 139 36 4 534 2 43 31
|
||||
230345511: 5 355 39 704 919 17
|
||||
72829: 128 564 350 71 216
|
||||
33939936: 353 49 5 3 3 32
|
||||
138960: 29 9 511 3 60
|
||||
128293483: 8 16 293 396 87
|
||||
117440137: 903 4 83 6 39 4 839
|
||||
26292000: 3 8 5 4 65 9 7 96 6 875
|
||||
93688783177: 2 8 2 3 9 33 7 54 8 865 2
|
||||
17109343573: 4 421 9 1 711 43
|
||||
28538702: 828 70 43 4 739
|
||||
138438180771: 10 48 6 8 73 40 3 9 771
|
||||
13126807879: 6 2 30 5 75 602 6 3 71 9
|
||||
87: 78 4 2
|
||||
254158884: 30 63 7 693 3 45 8 98
|
||||
868246590: 5 788 31 15 90
|
||||
7669256: 6 504 716 3 6 7 3 6 845
|
||||
457988: 228 47 52 2 7
|
||||
2227414: 128 249 5 27 7 778
|
||||
211991: 2 5 23 50 8 41 6 4 139 4
|
||||
4026392814367: 1 868 80 641 42 723
|
||||
353961368: 416 6 98 590 83 400
|
||||
2758349: 1 1 3 2 317 8 6 8 138 6
|
||||
23591: 32 1 7 7 4
|
||||
84824088480: 1 5 1 2 5 1 8 602 2 4 4 79
|
||||
151554853439: 26 640 93 164 373 2
|
||||
6326: 6 81 72 58 4
|
||||
144710: 7 6 4 38 16 4 966 1 3 5
|
||||
8082900: 4 5 9 1 1 142 9 1 50 9 7 1
|
||||
10836538: 637 14 9 8 5 3 9 88
|
||||
16425806: 1 7 8 8 594 9 60 6 8 8 1 6
|
||||
2622: 1 4 5 54 787 1 2 5 2 3 9
|
||||
1774798: 15 7 7 5 77 6 6 2 2 7 4 2
|
||||
341021579: 773 11 85 953 392
|
||||
5002482: 61 35 393 50 76 320 1
|
||||
14138748: 2 1 511 5 8 53 9 27 13
|
||||
2558673224: 513 411 3 1 14 13 923
|
||||
563: 26 1 127 361 50
|
||||
104773227: 6 9 839 2 96 25 2 9 3 2
|
||||
3318: 682 83 1 4 61 4
|
||||
852: 8 6 9 15
|
||||
3857931: 7 574 9 7 2 5 2 684 1 3 7
|
||||
222495: 72 3 6 49 6
|
||||
38589184: 7 5 8 7 776 74 256
|
||||
606648: 591 5 522 10 756 322
|
||||
597: 3 90 504
|
||||
1630770: 6 724 75 354 5
|
||||
1023697654363: 2 2 40 3 465 3 5 436 4
|
||||
925270: 53 6 8 4 3 49 5
|
||||
160112022: 95 8 3 13 8 382 21
|
||||
747807555: 963 4 19 65 407
|
||||
792285: 9 92 65 4 2 3 897 5
|
||||
92613: 307 993 12 9 2 70
|
||||
149289204229: 36 40 1 2 820 5 4 22 8
|
||||
14895: 9 331 5
|
||||
833634664: 118 47 7 8 47 7 46 6 6
|
||||
65472: 11 2 744 2 2
|
||||
14688: 104 4 68 2
|
||||
116307: 7 3 4 5 237 5 3 6 57 2 9 3
|
||||
5434562863: 7 548 72 286 4
|
||||
19195597915: 27 4 98 8 9 2 9 274 7 1
|
||||
51289: 96 41 74 5 599
|
||||
2100: 1 5 3 411 5
|
||||
363904113: 10 83 87 928 426 463
|
||||
7194135: 458 3 6 195 79
|
||||
2229: 6 12 5 6 69
|
||||
5917453: 188 13 736 3 4
|
||||
880490: 6 7 9 5 885 37 1 5 8 9 9 4
|
||||
769176: 76 84 7 7 6
|
||||
753216: 6 2 368 90 4 93
|
||||
101420469: 260 71 1 1 389
|
||||
22896614: 5 487 76 5 94
|
||||
356: 85 4 4
|
||||
11123046521: 11 497 41 430 1 964
|
||||
104046540: 743 112 2 6 1 676 3 5
|
||||
262891155: 648 4 1 8 2 9 6 7 67 9 9 4
|
||||
14410: 4 5 1 98 1 3
|
||||
350068: 199 348 639 4 531
|
||||
23695: 180 6 998 9 2
|
||||
41927: 1 9 22 131 6
|
||||
6227336637: 7 44 407 78 846 3 94 4
|
||||
266366871187: 934 620 60 3 2 95
|
||||
551981: 5 452 67 1 84
|
||||
38194845319: 54 5 55 9 7 4 53 14 3 2
|
||||
2679973302: 6 1 5 923 4 19 21 1 219
|
||||
1002684: 54 8 525 4 931
|
||||
51253312655: 309 8 188 88 6 5 3
|
||||
1354321: 202 634 60 9 3
|
||||
1295: 170 2 579 8 536
|
||||
26013: 2 1 2 635 6 1 4 8 5 4 7 2
|
||||
18481269696: 3 82 9 56 55 6 961 9 8
|
||||
631953744: 8 7 761 5 8 7 421 2 9 5
|
||||
2679000: 5 6 3 2 8 2 5 1 3 6 570 47
|
||||
592859: 19 3 9 13 859
|
||||
3729880: 856 9 8 49 11
|
||||
497: 5 61 6 8 8 85
|
||||
1097: 3 41 12 92 478
|
||||
1127538: 663 746 35 1 8 50
|
||||
2082: 81 5 228 715 37 697
|
||||
228359936: 2 9 4 1 7 988 6 20 55 1
|
||||
507339: 5 58 5 7 1 9
|
||||
3572622: 7 9 554 824 17 8
|
||||
1248: 75 274 7 837 1 54
|
||||
15672362: 83 65 61 186 4
|
||||
405801: 8 926 4 3 2 8 4 2 9 6 2
|
||||
1763746501: 8 2 8 8 1 3 2 5 4 6 452 52
|
||||
6290164656: 2 74 8 7 7 82 925 6
|
||||
443962004: 81 783 7 981 9 14
|
||||
577891583: 4 1 778 91 57 1 1
|
||||
843426: 4 5 31 5 41 39 6 9
|
||||
1597: 26 5 5 2 900 429
|
||||
74691339: 7 4 599 92 339
|
||||
9853112835: 162 89 9 37 49 3 89
|
||||
28204194340: 39 8 124 9 7 4 4 49 81 9
|
||||
9660789005: 4 9 298 6 15 6 54 5 3 6 8
|
||||
2556174348: 9 4 7 3 756 9 741 9 9 4 7
|
||||
14630: 9 8 8 52 978
|
||||
6672215: 665 7 15 128 67 3 13 2
|
||||
8985607536: 24 720 52 753 4
|
||||
1459218: 69 1 3 3 63 7 307 6
|
||||
368507286: 6 6 1 70 4 661 63 2
|
||||
23430: 7 137 1 44 13 7 4 22 5
|
||||
741391: 8 6 438 7 3 4 5 5 1 3 3 1
|
||||
181270: 166 26 42
|
||||
4252215576: 773 1 3 55 564 5 3 5 1
|
||||
898898694: 4 29 29 86 143 616 76
|
||||
23113822: 5 6 9 2 2 4 8 8 7 3 82 2
|
||||
174619734: 18 7 95 5 131 3 7 2 4
|
||||
4276: 8 34 76
|
||||
1170: 4 18 3 519 2
|
||||
7964328: 8 9 93 2 170 53 8 8 7 5 8
|
||||
1067: 960 80 27
|
||||
492778: 84 85 69 5 27 7 5 74
|
||||
26142757536: 830 9 288 1 12 184 7 7
|
||||
4518650: 9 502 5 7 7 8 2
|
||||
103636870: 8 41 3 9 73 91 60 72
|
||||
9365852: 4 5 365 8 55
|
||||
46863306: 3 665 91 4 78 3 8 354 9
|
||||
12771378: 3 9 467 31 83 7
|
||||
138279: 3 2 7 8 1 4 61 1 310 4 8 7
|
||||
3082845737: 48 892 8 5 150 8 6 135
|
||||
489677974: 612 8 304 9 461 4 9 8 2
|
||||
10851: 4 8 893 126 9
|
||||
682194487: 903 9 1 22 3 5 763 2
|
||||
53655: 47 93 162 49 783 5
|
||||
99719: 9 43 9 38 721
|
||||
5458: 2 37 60 8 2 762
|
||||
741494320: 3 2 2 7 513 2 19 3 2 3
|
||||
324082818: 634 511 9 99 1 733 88
|
||||
406454159: 7 8 3 7 527 7 8 8 2 7 268
|
||||
5612814963: 38 3 39 9 9 92 54 9 961
|
||||
616977: 565 26 42
|
||||
721304: 36 5 4 515 95 696
|
||||
155010990: 7 24 3 73 814 722 69 3
|
||||
33888340: 84 40 6 4 84 12 629 5 4
|
||||
573: 45 3 3 90
|
||||
6126: 30 60 2 2 1
|
||||
36127: 7 5 531 596 1
|
||||
10725: 41 3 87 24
|
||||
282744: 589 80 4 6 1
|
||||
34940: 96 8 6 956 18 45 155
|
||||
1158910204: 2 1 9 16 70 713 5 2 9 6 4
|
||||
811460: 80 576 26 209 47 5
|
||||
601470: 476 41 9 3 80 127
|
||||
295568: 596 4 632 98
|
||||
5159: 34 1 17 98 1 162
|
||||
574699: 4 23 664 831 481
|
||||
24805: 950 2 26 5 48
|
||||
1014779540: 3 8 5 107 6 9 7 8 2 64 2
|
||||
11414800529: 20 6 79 5 71 2 9 3 945
|
||||
73653: 90 808 927 5 1
|
||||
1506435960995: 2 27 6 8 6 8 8 795 98 1 5
|
||||
12394: 24 57 42 9 4
|
||||
69841259: 16 55 422 2 62
|
||||
51640931715215: 64 23 536 781 15 214
|
||||
75151: 7 515 1
|
||||
41133271: 498 83 1 5 14 393 2 72
|
||||
255016983: 408 601 52 20 663
|
||||
15449832: 9 331 54 67 2 3 4 1 9 8
|
||||
384072: 5 552 52 53 975 64 8
|
||||
73353263864622: 5 4 335 751 75 8 2 25 9
|
||||
193: 26 89 8 70 1
|
||||
354746880: 32 9 157 768 2 519
|
||||
294615321: 48 376 9 203 3
|
||||
1085: 678 5 405
|
||||
6804: 97 7 95 53 27
|
||||
31486398: 85 7 94 1 367
|
||||
8677076: 7 775 4 73 38 4
|
||||
969: 4 38 811 6
|
||||
379686195: 2 339 28 1 1 61 2 2 95 5
|
||||
934642033: 93 464 1 97 6 57
|
||||
80834113: 853 89 54 76 14 969 1
|
||||
149661389: 2 748 41 20 38 6
|
||||
8889: 987 9 6
|
||||
154503: 2 6 7 4 50 6
|
||||
568127: 3 8 138 51 21 67
|
||||
655214: 60 8 9 32 6 214
|
||||
208492350: 32 9 4 74 17 7 56 8 68
|
||||
108931747: 141 34 9 3 64 1 80 69
|
||||
211049832: 315 29 453 77 51
|
||||
850953708: 7 7 7 134 96 175 6 18
|
||||
1623: 77 21 4
|
||||
512647246: 570 498 2 30 906 8
|
||||
59854: 592 28 1 9 615
|
||||
2618: 978 44 818 715 61 2
|
||||
59430: 87 542 4 6 93 3
|
||||
39163791: 7 559 3 37 92
|
||||
169855479: 999 14 93 17 97
|
||||
60: 4 7 32
|
||||
67984: 6 77 818 87 3
|
||||
3597: 5 7 9 1 7
|
||||
41945296: 13 45 99 5 63 985 489
|
||||
22456681: 8 29 5 371 1 53
|
||||
286540898174: 580 74 2 78 56 9 817 7
|
||||
852: 583 4 4 1 2 258
|
||||
283860837: 4 1 3 41 8 1 60 415 840
|
||||
2965053: 9 26 58 8 4
|
||||
2175168088: 804 8 1 3 5 6 1 9 9 6 5 85
|
||||
577578802818: 5 7 7 578 798 2 46 17
|
||||
587931: 587 9 33
|
||||
112731862277: 630 64 42 383 73
|
||||
8064588196297: 3 5 9 8 183 8 8 90 7 4 4
|
||||
20599396: 6 658 473 31 732
|
||||
45071047476: 4 1 20 636 9 548 431 3
|
||||
1683: 8 97 907
|
||||
43: 1 4 1
|
||||
4597: 4 1 2 7 467
|
||||
1787362285: 29 651 11 548 5
|
||||
10560094995: 366 34 3 88 9 4 9 9 5
|
||||
140547692: 7 6 335 4 591 76 8 881
|
||||
37010325: 5 46 9 16 66 17 15 4 4
|
||||
1001414: 91 9 1 416
|
||||
6063: 2 7 8 49 1 5 4 587 8 1 1 6
|
||||
24466666: 27 185 900 63 103
|
||||
604586056266: 60 458 60 1 1 5 6 268
|
||||
74336: 65 5 3 670 39
|
||||
133721916: 52 64 9 103 39
|
||||
207068460628904: 567 5 913 7 57 8 613 8
|
||||
177218494: 7 52 265 8 483 72 8
|
||||
829486: 1 2 8 8 23 2 8 4 466 1 5
|
||||
70276995833: 9 8 98 71 7 2 43 4 5 8 3 4
|
||||
3717098250: 7 590 9 98 253
|
||||
269277696: 36 6 363 8 7 5 3 8 604 4
|
||||
171851: 2 71 98 842 6
|
||||
519752083: 2 28 3 1 6 5 25 6 4 5 8 6
|
||||
454553: 45 409 5 5 3
|
||||
8107742: 433 604 4 31 67 59
|
||||
19212: 3 6 9 6 577 171
|
||||
30728092030: 5 2 60 466 331 157 65
|
||||
8477565490: 934 7 9 9 4 1 9 46 493 1
|
||||
5746813: 89 744 50 8 8
|
||||
210863073: 843 45 25 82 434 57
|
||||
609362459: 72 57 978 483 2
|
||||
11875359702: 1 266 563 79 699
|
||||
4212811716: 6 702 7 9 4 9 80 790 7 7
|
||||
36216701433: 8 895 4 1 9 6 700 6 8 3 3
|
||||
1035028: 3 5 8 5 8 403 88 6 9 29 1
|
||||
266586242: 4 1 695 2 7 811 7
|
||||
535764165: 4 6 1 5 7 8 523 282 3 3 9
|
||||
300760284: 824 73 5 2 84
|
||||
477114074: 4 6 8 6 857 12 18 4 958
|
||||
32079569825: 71 779 603 58 4 7 8 67
|
||||
59675079: 85 7 1 5 2 7 452 7 554
|
||||
767331014338: 87 20 93 7 83 20 57
|
||||
1342: 4 33 966 297 44
|
||||
452895: 482 6 464 15 2
|
||||
62613601318: 626 13 601 276 42
|
||||
100121433122: 1 791 321 46 9 3 3 1 23
|
||||
93305992: 26 801 4 4 8 7 5 2 6 1 8
|
||||
23753423880: 18 8 87 7 3 4 31 849 6
|
||||
40520808356: 7 52 709 53 1 76
|
||||
100193: 6 93 6 86 510
|
||||
196735266: 6 5 734 5 9 74 3 1 546 1
|
||||
1011: 335 3 6
|
||||
6297024: 9 60 514 933 173
|
||||
92033659: 920 275 9 52 6 2
|
||||
2595879507221: 4 91 6 959 592 92 20
|
||||
23108: 1 403 55 37 906
|
||||
63840932: 7 98 40 46 6 2
|
||||
217986: 25 83 3 303 5 518 944
|
||||
186542500: 9 2 654 2 497
|
||||
75368: 6 9 8 628 8
|
||||
633: 3 55 5 64 199 7
|
||||
51806907: 5 9 8 8 3 4 9 2 1 85 3 82
|
||||
272251: 5 7 43 75 66
|
||||
624026357: 64 800 963 5 230 6
|
||||
4374721668802: 6 560 93 1 2 3 84 70 5
|
||||
220573: 371 18 6 33 1
|
||||
30428064650: 42 26 12 8 9 647
|
||||
809617204: 230 7 42 44 341
|
||||
508531: 5 63 1 39 7 9 6 7 6 497
|
||||
353239643: 5 2 1 5 89 1 8 1 61 8 41 2
|
||||
1674273: 3 1 1 5 4 576 62 6 5 9 2 1
|
||||
681366292: 904 42 3 72 30 289
|
||||
5980228: 6 11 18 339 7 3 9 6 252
|
||||
41271: 4 8 1 8 268
|
||||
24764: 54 20 4 4 450 9 8 4 92
|
||||
15758608327: 8 9 65 8 9 7 9 524 6 6 3
|
||||
6979213110580: 8 8 3 5 727 131 10 578
|
||||
141008010153: 440 64 1 1 32 101 56
|
||||
945: 3 6 7 30 9 8
|
||||
94823641: 19 98 9 59 38 3 4 15 9
|
||||
1819: 194 3 36 605 26 5 2 81
|
||||
115112: 868 558 12 9 8
|
||||
7930: 89 4 10 5 278 2
|
||||
18653856: 6 5 6 586 6 8 2
|
||||
19508800: 290 64 1 84 3 656 16
|
||||
567: 8 3 513 7 36
|
||||
5852476824: 499 1 2 7 674 240 6 4 6
|
||||
439380438: 93 480 5 50 8 2 2 47
|
||||
61738728: 8 7 66 46 949 786 73
|
||||
7376496: 787 4 8 764 130 93 9 8
|
||||
130551619: 187 79 8 869 9
|
||||
9887953920: 8 3 1 91 4 955 440 368
|
||||
2151: 25 2 48 59 6
|
||||
2261: 6 9 5 1 530 7 180 3 8 42
|
||||
1491316: 953 56 1 492 1 3 556
|
||||
16271778: 1 1 9 8 234 2 9 42 37 62
|
||||
14496899307: 483 3 6 89 9 2 5 8 41 6 3
|
||||
4918664: 7 927 758
|
||||
54859: 271 85 233 2 23
|
||||
22972: 8 35 667 8 3 1 61 6 8 3 7
|
||||
32815640772: 54 51 8 839 26 49 228
|
||||
16673677: 445 5 36 15 40 37
|
||||
30479387928361: 5 4 59 884 73 773 840
|
||||
134569: 7 3 2 6 3 53 82 55 7 1 7
|
||||
58970677: 93 2 8 896 4 90 4 9 59 1
|
||||
43121775: 76 938 581 6 1 9 4 272
|
||||
4917315682: 99 1 15 7 932 8 4 3 6 8 2
|
||||
13894928: 7 96 747 831 49 9 5
|
||||
13250: 5 8 2 41 9
|
||||
523847: 517 55 553 17 59 2 8 1
|
||||
224505: 5 2 7 5 9 2 6 111 16 5 9 3
|
||||
8087096159: 360 4 3 942 10 792 78
|
||||
2357: 689 43 752 47 763 63
|
||||
391638: 1 9 9 416 788
|
||||
1974200: 3 5 4 58 2 9 736 18 248
|
||||
21725: 2 52 3 4 3
|
||||
2687326108: 9 99 7 3 384 741 70
|
||||
245761: 2 58 7 454 197 63
|
||||
30953583002: 526 3 4 2 6 635 6 45 85
|
||||
732348540: 9 246 9 1 195 4 9 77 3
|
||||
2246405: 2 934 40 6 3
|
||||
3524: 788 67 4 92 6 6
|
||||
53303537: 4 921 11 1 54 71 97
|
||||
3360049: 698 99 93 9 48
|
||||
1618: 6 255 3 3 82
|
||||
1909900127: 9 212 47 61 141 86
|
||||
243: 1 2 5 13 48
|
||||
32995: 32 9 82 1 13
|
||||
675556316638: 7 7 8 9 1 2 3 65 7 4 27 80
|
||||
2410548942914: 365 8 2 52 3 5 4 6 6 8 44
|
||||
280724: 30 6 159 5 49
|
||||
1758081992469: 64 2 589 5 8 11 893 33
|
||||
774996: 773 4 6 96 886 13 1
|
||||
31561010: 1 8 149 805 4 5 9
|
||||
211421664040: 57 12 8 810 477 41
|
||||
18145662: 355 10 73 7 53
|
||||
57939896229131: 579 398 962 291 31
|
||||
2468151: 6 3 6 68 154
|
||||
1647031320686: 8 5 733 6 60 6 37 9 684
|
||||
5499423886545: 54 99 1 4 238 8 650 4 6
|
||||
2665606: 82 751 40 8 5
|
||||
38799191: 431 9 816 7 5 4 9 859
|
||||
89572560: 65 50 6 7 5 786
|
||||
89792219: 88 9 6 92 221
|
||||
33379385886: 5 5 1 63 14 1 9 6 588 6
|
||||
16121194: 48 1 76 441
|
||||
1364880: 5 8 589 311 33 22 2
|
||||
889954: 889 933 8 6 9
|
||||
4763542: 2 96 643 4 811 4 73 7
|
||||
38469: 20 11 58 28 35 3
|
||||
10576444743: 354 137 290 94 8 903
|
||||
135936: 4 6 1 6 59 16
|
||||
9062652223: 2 2 543 911 402
|
||||
6911190: 5 5 5 86 5 3 4 7 731 702
|
||||
888725003: 888 667 8 49 6 3 97 3
|
||||
36644159: 611 5 204 76 588
|
||||
4095968: 19 21 801 487 3 26 8
|
||||
22371212446: 23 76 8 4 4 26 164 3 1
|
||||
111106877: 9 9 151 996 1 84 2 5 5
|
||||
12136: 6 108 2 9 786 72 8
|
||||
1028902: 4 808 550 755 589
|
||||
16283: 8 8 2 81 1
|
||||
318876267: 1 3 28 651 1 24
|
||||
546122570: 473 5 7 57 9 3 6 7 5 9 5
|
||||
818: 9 9 9
|
||||
933925: 2 954 4 79 461
|
||||
1010417: 9 1 10 405 1 11
|
||||
778662443: 2 5 581 14 84 941
|
||||
4567: 334 35 12 23 116
|
||||
1389408: 483 1 7 71 41
|
||||
10898985: 2 22 45 9 8 982
|
||||
19178168: 69 330 5 45 6 8 5
|
||||
111403052: 275 135 7 2 350 3
|
||||
6231: 18 594 5 5 53
|
||||
293664: 799 6 23 5 41 48 7
|
||||
88998: 2 68 536 66 4 2 286
|
||||
6582556818: 8 747 8 11 8 7 673 8 1 7
|
||||
5149437: 4 39 9 2 5 99 9 31 7 498
|
||||
46539232: 6 2 4 4 9 37 27 6 7 51
|
||||
93957670868: 3 42 2 9 531 4 31 944 1
|
||||
980986: 9 7 4 6 984
|
||||
20958: 8 2 17 8 62
|
||||
294329746728: 58 9 895 5 5 6 8 3 7 8 8 6
|
||||
3849205: 6 4 2 72 1 3 8 30 9 4 6 61
|
||||
3727138: 4 4 7 7 5 1 60 5 66 9 5 14
|
||||
1700261627: 943 6 4 4 3 904 3 8 629
|
||||
1568899629: 152 4 8 78 4 4 75 630
|
||||
4891: 97 2 2 4 839 3
|
||||
13637089: 28 2 55 6 65 3 7 5 3 7 7
|
||||
539480135459: 338 6 7 845 60 7 190 2
|
||||
6660670: 66 60 66 9
|
||||
1377624: 1 3 4 2 6 2 1 42 6 6 4 941
|
||||
3159004: 242 9 145 90 6
|
||||
52560043: 801 504 604 13 1
|
||||
6298225: 8 82 3 32 955
|
||||
2931: 1 6 455 6 65 58 67 5
|
||||
6280200: 4 798 29 2 270
|
||||
49532564: 448 8 124 876 20
|
||||
13168381444: 431 7 5 61 339 949 1 5
|
||||
33844498: 33 23 61 392 57 8
|
||||
696970913906: 1 3 20 11 227 373 48
|
||||
270249841: 172 70 9 43 29 2 1
|
||||
1934903247: 7 739 521 92 5 50
|
||||
8725453: 2 906 1 3 2 1 7 34 722
|
||||
2229689: 1 4 7 6 442 1 82 4 6 8 9
|
||||
7225344: 12 5 1 9 1 91 3 9 4 784
|
||||
46644: 565 2 31 3 26
|
||||
32902200: 6 226 4 2 768 3 3 2 30 3
|
||||
335326: 16 3 2 5 7 8 732 4 8 716
|
||||
429867267: 9 530 1 45 483 3 6 89 3
|
||||
2341: 8 9 49 585 5
|
||||
519757625: 55 15 63 7 627
|
||||
7858: 72 1 7 7 582
|
||||
14980143269: 9 247 810 1 55 6 80 2
|
||||
39707833: 83 763 627 231 5 314
|
||||
68663: 673 6 6 84 75 1
|
||||
97738578: 2 345 7 6 728 9 2 2 5 9 7
|
||||
5267: 2 35 67 579 1
|
||||
222416: 6 1 1 3 4 7 2 4 4 640 4
|
||||
855748009262: 370 1 33 222 34 68
|
||||
642616: 39 1 1 44 7 3 1 160 334
|
||||
392878: 651 3 6 1 1 1 5 8 9 299
|
||||
665029144219: 14 475 2 914 420 6 14
|
||||
6157828: 4 7 6 29 1 8 6 8 4 6 5 1
|
||||
39566133: 681 7 83 33
|
||||
216262800: 38 3 7 94 106 3 520 90
|
||||
3581755: 1 75 37 67 7
|
||||
44967: 1 1 2 4 78 7 68 4 960 3
|
||||
32514046: 9 605 12 8 4 72 72
|
||||
114: 7 7 1 9 91
|
||||
18533253: 44 5 6 34 84
|
||||
249786: 77 47 69 1 75
|
||||
1011970: 37 6 7 491 2 9
|
||||
746466: 5 381 634 3 98
|
||||
2296902: 423 543 4 5
|
||||
2884856760: 811 9 9 482 811
|
||||
7619775368: 1 9 5 29 336 3 799 48 7
|
||||
50721403: 9 2 90 3 8 483 6 7 9 4 4 3
|
||||
610038009: 450 220 79 78 9
|
||||
80007914: 313 87 4 1 5 5 2 905 9
|
||||
46800: 1 2 22 3 2 81 3 120
|
||||
20483578: 667 83 5 74 8
|
||||
5947620: 29 328 17 98 3
|
||||
3878550: 48 1 752 1 42 2 34 5 3 9
|
||||
173586586405: 789 22 658 640 5
|
||||
12950: 754 4 4 6 882
|
||||
1163009: 57 62 4 2 944
|
||||
117810: 87 23 59 722 3
|
||||
50460241880: 20 6 8 4 86 6 51 89 8 82
|
||||
8476174807: 8 4 76 174 73 3 69 2
|
||||
44781: 7 71 6 9
|
||||
84519915: 426 2 21 53 4 9 8 6 47 2
|
||||
3018426: 34 98 9 65 19 112 23
|
||||
40138519: 4 10 138 5 17
|
||||
114452: 7 4 57 16 71
|
||||
317375420622: 3 9 7 46 830 6 8 7 3 2 7
|
||||
13865781: 14 99 55 17 264
|
||||
1185316293395: 49 38 810 5 2 889 6 8 4
|
||||
165520: 1 907 5 9 46 4 2 9 3 6 5 2
|
||||
29250: 72 2 97 734 6 5
|
||||
1969163: 7 4 7 4 5 165
|
||||
1071: 1 531 2 3 1 5
|
||||
4703440: 4 7 9 5 56 454
|
||||
4417077: 9 7 3 5 8 1 4 5 222 5 51 9
|
||||
306782604629: 7 669 565 1 155 2 4
|
||||
30: 4 14 5 9 1
|
||||
37003: 55 656 837 7 11 68
|
||||
11522587: 32 30 2 2 31 6
|
||||
875599671656: 2 8 98 344 5 4 3 773 5 6
|
||||
641: 61 6 25 2
|
||||
10121133615137: 55 126 9 34 60 1 513 9
|
||||
182654704: 48 23 9 11 3 254
|
||||
2410589726: 9 3 6 2 2 2 3 7 7 38 4 568
|
||||
3039121: 4 599 8 63 1
|
||||
914129: 5 4 14 121 5
|
||||
123846286: 21 9 9 48 652 98 81 9 3
|
||||
1013001: 1 3 204 4 49 509 4 33
|
||||
34048: 5 8 72 304
|
||||
708: 84 56 567 1
|
||||
20108586700961: 41 7 265 5 242 994 7
|
||||
449981: 488 922 17 7 6 15
|
||||
224: 70 72 73 1 8
|
||||
1704872581: 8 779 9 2 97 581
|
||||
869: 9 2 3 43 553
|
||||
2524323977: 2 7 4 74 1 4 3 399 11 8 8
|
||||
3620512: 3 61 4 6 5 14
|
||||
7304: 33 63 8 3 7
|
||||
1544: 60 3 5 596 341
|
||||
1876436: 3 118 98 46 3 27 212 2
|
||||
396657148: 66 6 648 8 73 90 960
|
||||
99
2024/cpp/day-07/main.cpp
Normal file
99
2024/cpp/day-07/main.cpp
Normal file
|
|
@ -0,0 +1,99 @@
|
|||
#include <cmath>
|
||||
#include <iostream>
|
||||
#include <sstream>
|
||||
#include <vector>
|
||||
|
||||
using namespace std;
|
||||
|
||||
struct Equation
|
||||
{
|
||||
long result;
|
||||
vector<int> numbers;
|
||||
};
|
||||
|
||||
void readInput(vector<Equation> &equations)
|
||||
{
|
||||
string line;
|
||||
while (getline(cin, line)) {
|
||||
stringstream stream(line);
|
||||
Equation equation;
|
||||
|
||||
string result;
|
||||
getline(stream, result, ':');
|
||||
equation.result = stol(result);
|
||||
|
||||
int number;
|
||||
while (stream >> number) {
|
||||
equation.numbers.push_back(number);
|
||||
}
|
||||
|
||||
equations.push_back(equation);
|
||||
}
|
||||
}
|
||||
|
||||
long computeEquationResult(const vector<int> &numbers,
|
||||
size_t operatorMask,
|
||||
const size_t operatorSpace)
|
||||
{
|
||||
long currentResult = numbers[0];
|
||||
|
||||
for (size_t operatorIndex = 0; operatorIndex < numbers.size() - 1; operatorIndex++) {
|
||||
size_t numberIndex = operatorIndex + 1;
|
||||
|
||||
int currentOperator = (operatorMask / static_cast<int>(pow(operatorSpace, operatorIndex)))
|
||||
% operatorSpace;
|
||||
|
||||
switch (currentOperator) {
|
||||
case 0:
|
||||
currentResult += numbers[numberIndex];
|
||||
break;
|
||||
case 1:
|
||||
currentResult *= numbers[numberIndex];
|
||||
break;
|
||||
case 2:
|
||||
currentResult = stol(to_string(currentResult) + to_string(numbers[numberIndex]));
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return currentResult;
|
||||
}
|
||||
|
||||
bool isValidEquation(const Equation &equation, const size_t operatorSpace)
|
||||
{
|
||||
const size_t operatorCount = equation.numbers.size() - 1;
|
||||
const size_t maxOperatorMask = pow(operatorSpace, operatorCount) - 1;
|
||||
|
||||
for (size_t operatorMask = 0; operatorMask <= maxOperatorMask; operatorMask++) {
|
||||
if (computeEquationResult(equation.numbers, operatorMask, operatorSpace)
|
||||
== equation.result) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
vector<Equation> equations;
|
||||
readInput(equations);
|
||||
|
||||
long totalResult = 0;
|
||||
long totalResultWithConcatenation = 0;
|
||||
for (const Equation &equation : equations) {
|
||||
if (isValidEquation(equation, 2)) {
|
||||
totalResult += equation.result;
|
||||
totalResultWithConcatenation += equation.result;
|
||||
} else if (isValidEquation(equation, 3)) {
|
||||
totalResultWithConcatenation += equation.result;
|
||||
}
|
||||
}
|
||||
|
||||
// Part one
|
||||
cout << "Total calibration result: " << totalResult << endl;
|
||||
|
||||
// Part one
|
||||
cout << "Total calibration result with concatenation: " << totalResultWithConcatenation << endl;
|
||||
}
|
||||
9
2024/cpp/day-07/short-input
Normal file
9
2024/cpp/day-07/short-input
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
190: 10 19
|
||||
3267: 81 40 27
|
||||
83: 17 5
|
||||
156: 15 6
|
||||
7290: 6 8 6 15
|
||||
161011: 16 10 13
|
||||
192: 17 8 14
|
||||
21037: 9 7 18 13
|
||||
292: 11 6 16 20
|
||||
7
2024/cpp/day-08/day-08.pro
Normal file
7
2024/cpp/day-08/day-08.pro
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
TEMPLATE = app
|
||||
CONFIG += console c++20
|
||||
CONFIG -= app_bundle
|
||||
CONFIG -= qt
|
||||
|
||||
SOURCES += \
|
||||
main.cpp
|
||||
50
2024/cpp/day-08/input
Normal file
50
2024/cpp/day-08/input
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
........................E...j......W..........L...
|
||||
............................O........E.........L..
|
||||
..q......O...........l....................K.......
|
||||
............q...................HM......W.........
|
||||
................................1..H...........IW.
|
||||
....................5.............................
|
||||
..........k........M...wl............6............
|
||||
.....O.......w...k.....5.8..l......K.........o.6..
|
||||
.......k....w.........5.........R.....o........K..
|
||||
.....q..X..............j........E...I.........K...
|
||||
............O..........E........................H.
|
||||
................Mn.h2.w.p....................H....
|
||||
..................p.......a............j.....L....
|
||||
.....X...l.p.....................m.........W..6...
|
||||
..Xq................A..................R..m.......
|
||||
.........................i..........a..........R..
|
||||
...........u.....................a........I.....2.
|
||||
k..............A..n.........R.................o...
|
||||
................n.................Qo..............
|
||||
..........u.A.........h........2..................
|
||||
...5.......Y.....p...............iN...............
|
||||
1...x.....................i.......................
|
||||
........M..............2.....Qi...................
|
||||
...............................I..e...............
|
||||
......u......A...........m..........h.............
|
||||
.......1...........U.............Qm.......j.......
|
||||
.......X.......................................9..
|
||||
.....u........U.......Y...........................
|
||||
.............................h.e..................
|
||||
..................4....e......Q.....L....N........
|
||||
.1..................4.......................y8....
|
||||
.........Y................................8.N.....
|
||||
............P.0J...........3..........8y..........
|
||||
....V3P..........J................................
|
||||
............U..P...7x...........e.................
|
||||
....................J...............r...9.........
|
||||
.........0.V......Y...............................
|
||||
...............V.4................................
|
||||
..........V..........................n............
|
||||
..............v........7..........................
|
||||
...........U..........J.......7...................
|
||||
.....v........7..........................a........
|
||||
.......................................r..........
|
||||
...........0.......x................y.............
|
||||
............6..v.x.....................N..........
|
||||
...........P......................................
|
||||
........3.......................r......4..........
|
||||
..............3......................y............
|
||||
................................................9.
|
||||
.................................................9
|
||||
131
2024/cpp/day-08/main.cpp
Normal file
131
2024/cpp/day-08/main.cpp
Normal file
|
|
@ -0,0 +1,131 @@
|
|||
#include <iostream>
|
||||
#include <map>
|
||||
#include <set>
|
||||
#include <utility>
|
||||
#include <vector>
|
||||
|
||||
using namespace std;
|
||||
|
||||
void readInput(vector<string> &antennaMap, map<char, set<pair<int, int>>> &antennas)
|
||||
{
|
||||
string line;
|
||||
for (size_t row = 0; getline(cin, line); row++) {
|
||||
for (size_t col = 0; col < line.size(); col++) {
|
||||
char frequency = line[col];
|
||||
if (frequency != '.') {
|
||||
if (antennas.count(frequency)) {
|
||||
antennas.at(frequency).insert({row, col});
|
||||
} else {
|
||||
antennas.insert({frequency, {{row, col}}});
|
||||
}
|
||||
}
|
||||
}
|
||||
antennaMap.push_back(line);
|
||||
}
|
||||
}
|
||||
|
||||
pair<int, int> getDirectionVector(const pair<int, int> &antenna1, const pair<int, int> &antenna2)
|
||||
{
|
||||
return {antenna2.first - antenna1.first, antenna2.second - antenna1.second};
|
||||
}
|
||||
|
||||
bool isInBounds(const pair<int, int> &location, const vector<string> &map)
|
||||
{
|
||||
return (location.first >= 0 && cmp_less(location.first, map.size()))
|
||||
&& (location.second >= 0 && cmp_less(location.second, map[0].size()));
|
||||
}
|
||||
|
||||
vector<pair<int, int>> getAntinodes(const pair<int, int> &antenna1,
|
||||
const pair<int, int> &antenna2,
|
||||
const vector<string> &antennaMap)
|
||||
{
|
||||
if (antenna1 == antenna2) {
|
||||
return {};
|
||||
}
|
||||
|
||||
const pair<int, int> directionVector = getDirectionVector(antenna1, antenna2);
|
||||
|
||||
const pair<int, int> antinode1 = {antenna1.first - directionVector.first,
|
||||
antenna1.second - directionVector.second};
|
||||
const pair<int, int> antinode2 = {antenna2.first + directionVector.first,
|
||||
antenna2.second + directionVector.second};
|
||||
|
||||
vector<pair<int, int>> antinodes;
|
||||
if (isInBounds(antinode1, antennaMap)) {
|
||||
antinodes.push_back(antinode1);
|
||||
}
|
||||
if (isInBounds(antinode2, antennaMap)) {
|
||||
antinodes.push_back(antinode2);
|
||||
}
|
||||
return antinodes;
|
||||
}
|
||||
|
||||
vector<pair<int, int>> getResonantHarmonicsAntinodes(const pair<int, int> &antenna1,
|
||||
const pair<int, int> &antenna2,
|
||||
const vector<string> &antennaMap)
|
||||
{
|
||||
if (antenna1 == antenna2) {
|
||||
return {};
|
||||
}
|
||||
|
||||
const pair<int, int> directionVector = getDirectionVector(antenna1, antenna2);
|
||||
vector<pair<int, int>> antinodes;
|
||||
|
||||
pair<int, int> antinode1 = antenna1;
|
||||
do {
|
||||
antinodes.push_back(antinode1);
|
||||
antinode1.first -= directionVector.first;
|
||||
antinode1.second -= directionVector.second;
|
||||
} while (isInBounds(antinode1, antennaMap));
|
||||
|
||||
pair<int, int> antinode2 = antenna2;
|
||||
do {
|
||||
antinodes.push_back(antinode2);
|
||||
antinode2.first += directionVector.first;
|
||||
antinode2.second += directionVector.second;
|
||||
} while (isInBounds(antinode2, antennaMap));
|
||||
|
||||
return antinodes;
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
vector<string> antennaMap;
|
||||
map<char, set<pair<int, int>>> antennas;
|
||||
readInput(antennaMap, antennas);
|
||||
|
||||
set<pair<int, int>> uniqueAntinodes;
|
||||
set<pair<int, int>> uniqueResonantHarmonicsAntinodes;
|
||||
set<pair<pair<int, int>, pair<int, int>>> consideredAntennaCombinations;
|
||||
|
||||
for (const auto &antennasWithSameFrequency : antennas) {
|
||||
for (const auto &antenna1 : antennasWithSameFrequency.second) {
|
||||
for (const auto &antenna2 : antennasWithSameFrequency.second) {
|
||||
const auto orderedPair = make_pair(min(antenna1, antenna2), max(antenna1, antenna2));
|
||||
if (consideredAntennaCombinations.contains(orderedPair)) {
|
||||
continue;
|
||||
}
|
||||
consideredAntennaCombinations.insert(orderedPair);
|
||||
|
||||
const vector<pair<int, int>> foundAntinodes = getAntinodes(antenna1,
|
||||
antenna2,
|
||||
antennaMap);
|
||||
for (pair<int, int> antinode : foundAntinodes) {
|
||||
uniqueAntinodes.insert(antinode);
|
||||
}
|
||||
const vector<pair<int, int>> foundResonantHarmonicsAntinodes
|
||||
= getResonantHarmonicsAntinodes(antenna1, antenna2, antennaMap);
|
||||
for (pair<int, int> antinode : foundResonantHarmonicsAntinodes) {
|
||||
uniqueResonantHarmonicsAntinodes.insert(antinode);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Part one
|
||||
cout << "Number of unique antinodes: " << uniqueAntinodes.size() << endl;
|
||||
|
||||
// Part two
|
||||
cout << "Number of unique antinodes when taking resonant harmonics into account: "
|
||||
<< uniqueResonantHarmonicsAntinodes.size() << endl;
|
||||
}
|
||||
12
2024/cpp/day-08/short-input
Normal file
12
2024/cpp/day-08/short-input
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
............
|
||||
........0...
|
||||
.....0......
|
||||
.......0....
|
||||
....0.......
|
||||
......A.....
|
||||
............
|
||||
............
|
||||
........A...
|
||||
.........A..
|
||||
............
|
||||
............
|
||||
Loading…
Add table
Add a link
Reference in a new issue