1
0
Fork 0

Compare commits

...

7 commits

Author SHA1 Message Date
c81ea4f786
Day seven 2024-12-07 18:41:33 -05:00
eafc6ef723
Day six 2024-12-07 15:59:32 -05:00
8b74765fe1
Day five 2024-12-06 15:16:07 -05:00
9a3c7d078c
Day four 2024-12-05 22:58:54 -05:00
f0c4e6341d
Day three 2024-12-03 09:43:05 -05:00
796c396af8
Day two 2024-12-02 21:38:24 -05:00
79a6b87c53
Add template for now 2024-12-02 19:11:11 -05:00
19 changed files with 4128 additions and 0 deletions

1000
2.input Normal file

File diff suppressed because it is too large Load diff

84
2.rb Executable file
View file

@ -0,0 +1,84 @@
#!/usr/bin/env ruby
result = File.readlines("2.input").map(&:split).map { _1.map(&:to_i) }
.select do |v|
(v == v.sort || v == v.sort.reverse) &&
v.each_cons(2).map { _1.sort.inject(:-).abs }.all? { 1 <= _1 && _1 <= 3 }
end.size
puts result
require "rspec/autorun"
class Report < Array
def self.from_line(line)
new(line.split.map(&:to_i))
end
def safe?
(increasing? || decreasing?) && within_limit?
end
def safe_with_dampener?
dampened.any?(&:safe?)
end
private
def dampened
size.times.map { Report.new(except(_1)) }
end
def except(v)
reject.with_index { |_, i| i == v }
end
def increasing?
self == sort
end
def decreasing?
self == sort.reverse
end
def within_limit?
each_cons(2)
.map { _1.sort.inject(:-).abs }
.all? { 1 <= _1 && _1 <= 3 }
end
end
input = File.readlines("2.input")
puts "2-1"
puts input
.map { Report.from_line(_1) }
.select(&:safe?)
.size
puts "2-2"
puts input
.map { Report.from_line(_1) }
.select(&:safe_with_dampener?)
.size
describe Report do
[
"48 51 52 53 52",
"86 87 88 91 91",
"22 25 28 31 32 36",
"65 66 68 69 71 72 75 82"
].each do |line|
it "returns safe? as false for #{line}" do
expect(Report.from_line(line).safe?).to eq(false)
end
end
[
"1 2 3 4 5 6 7",
"1 3 5 7 9",
"9 8 7",
"1 4 5 8"
].each do |line|
it "returns safe? as true for #{line}" do
expect(Report.from_line(line).safe?).to eq(true)
end
end
end

11
3-1.rb Executable file
View file

@ -0,0 +1,11 @@
#!/usr/bin/env ruby
problem = 3
input = File.readlines("#{problem}.input").join
result = input
.scan(/mul\((\d{1,3}),(\d{1,3})\)/)
.map { _1.map(&:to_i).inject(1, :*) }
.sum
puts result

21
3-2.rb Executable file
View file

@ -0,0 +1,21 @@
#!/usr/bin/env ruby
problem = 3
input = File.readlines("#{problem}.input").join
enabled = true
result = input
.scan(/mul\(\d{1,3},\d{1,3}\)|do\(\)|don't\(\)/)
.map do |cmd|
case cmd
when "do()"
enabled = true; nil
when "don't()"
enabled = false; nil
when /mul/
if enabled
cmd.scan(/(\d{1,3}),(\d{1,3})/).flatten.map(&:to_i).inject(1, :*)
end
end
end.compact.sum
puts result

6
3.input Normal file
View file

@ -0,0 +1,6 @@
select(){,(where()+-mul(514,727);:]]what():^*from(764,547) mul(550,305)$^^%>select(587,376)mul(94,564)select()when(633,175)<where()mul(260,379)mul(790,810)&!$%mul(557,683) why(){/mul(220,10)!+{+mul(654,746){who()what() !%mul(89,191)who()select()*#&>[[mul(302,490)$-}&**+mul(335,535)@select()>select()mul(241,166)when(800,629)mul(758,530)',^ &!~%/#mul(938,70)?&!from();mul(412,287)}/mul(230,620)(~select()what()select()'@mul(410,577)$mul(720,516)-mul(373,78)when()!^:@{)mul(793,973)who()when()mul(85,246)>what()}[#[@!^/mul(396,22)@when()-;:':>}mul(515,670)<[mul(38,415)?~<?mul(200,147):mul(328,235)*<what() (] ::what()mul(571,33)mul(679,122)>select()why()^when()*#+($do()']select()>:^/when()^mul(440,923)<what():mul(971,274)(mul(833,181))don't()why();{#mul(468,401)$+?mul(446,956)where()mul(391,995)who(813,746),^who()%how()^when()mul(284,629);[why()mul(922,806)%}mul(183,352)where() [{,why(475,275)mul(547,62)$mul(753,602)*!%where()-mul(956,732)$;what()<;'{:*mul(481,556)from()*{select():what()'#mul(905,420)what()mul(327,771), who()}mul(45,757)mul(366,653)where(459,755))don't();when()mul(807,855)where()$)>@mul(48,816)mul(370,665)@*>who()^,when()mul(155,426) mul(132,914)^%select()&when()/from()(+}mul(296,176)mul(361,479)%{;!,'who()where():mul(506,495)#who()&%< ^mul(481,87))&!;mul(541,563)%don't(){}'-),from()$mul(495,427)^when()mul(640,499)select()}:] )%+()mul(967,918)?when()select()<{/who()what()mul(505,225)(mul(90,482)>!from()when()#do()mul(620,841):who()!mul(719,850)where()-)mul(931,185)?;select()]@,why()%]mul(39,103)mul(687,103)$%];how(337,314)[}$-when()mul(282,494):;!where(188,779);who()mul(342,554)<^who()(why()where()who(345,491)%mul(407,74)why()&}'%'mul(324,781)mul(90,925):from()mul(828,16)mul(438,549){what()>$why()*what(35,607)mulwho()mul(91,548)>,what()select()]&how()@mul(384,93!select(),where()$mul(835,662)@{don't():#<^/-+mul(489,462)>>where(){why()where()---when()mul(53,461)/~?mul(273,777)mul(119,879)+@'when()-mul(585,949)?['when()from(946,632)mul(22,105)>-:how())from();mul(439,876)?mulwho()@who()when()<@{-mul(111,687)$&mul(432,628)%*,{when()mul(287,508)'-select()}don't()/#~-@from()[:#mul(111,655)%: &;mul(518,391)don't()<from()%-~-!@mul(301,138)(,how()mul(654,521)!*when()--({who()how()don't() ~where()!~mul(910,877)?+select()+-[#&do()*< +-what()&how()%$mul(123,641)*?&mul(488,741)<}@@&?what()how()what())mul(301,649);why()%mul(259,148)$~')&[{mul(83,94)~select()~^when()mul(232,572)mul(889,281)why()%*#$}<[mul(256,607)}({mul(382,953)what()how()why() who()from()!?%mul(433,147)+>&mul(197,749)@who()*mul(935,21)+> who()why()mul(299,881)who()]@+%/from()[?do();{+[why()$select()#mul(264,731)]'select()what();+who()mul(713,161)where(931,649))mul(360,529)}where()!;]how()<mul;$-:]]how()#where()select()when()mul(971,836)when():[how(){mul(567,429)!}{{',mul(522,696),why(){mul(833;#-&#,select()~mul(80,121)+*,#how()select()${>how()mul(619,728)how()<%}+}mul(420,324);{!from();mul;)>mul(144,181)who()}?~where():who()${ mul(261,691),why() /+mul(189,450)
+when()%^]]/when()~@mul(533,22)mul(231,586)mul(107,724)!@mul(504who()@}when(291,528)mul(691,859)/}#mul(726,544)from()[>>what()^<mul(316,707)@&why(),what()mul(798,459) why()~)]mul(612,148)[??when()]*~mul(634,978)mul(477,947)<?(&!;what(724,289)@~^do()who()mul(828,259)mul(595,267)who(671,135)}why()&how()mul(351,552)when()how()^>?^from(762,977)mul(67,280)(who()^mul(586,844)}how()<from()mul(521,525)'select()mul(379,96), mul(478,481)where(465,218)mul-&*: ~mul(123,281)when()mul(249,626) <}mul(190,620)mul(21,142):from(278,629)}how(997,873)when()'from()#mul(117,186)^:]when(128,617)mul(940,708);mul(960,867);[,~when()when() mul(135,71)where(972,23)mul(79,533)how()* )%<&do()@>how()+where(),mul(886,320)#from(691,802)mul(376,296)'why()[@}how()#why(530,714)?>mul(791,363)?what()$${@why()>+mul(133,626))why()&}what(){%(mul(474,459)what()where()(^mul(311,372)mul(243,118)where()@mul(302,760):{who()-'{+mul(145,293)}why();how());$]mul(652,761%? ;]:@mul(259,51)@<mul(369,322 +#!mul(99,991):from()/}mul(137,230)why()}^%^{}select()where()mul(226,287)mul(590,394)[>>'mul(474,995){don't():}*mul(309,511)?select();(mul(553,164)]how(){when()mul(556,560/~when(464,361),^<#[/&do()when()&who()<mul(618,347)]/what()&mul(210,454)@,'^/%who()mul(297,766)who()&:{mul(961,326))&:#')what(663,984)mul(340,326)mul(329,543)%^#/{!mul(28,451)}@@mul(428,233)^%<-how()mul(710,863)[mul(944,973)[where()~[]where()'%~why()don't()!,@#%mul(582,87)$[[@ mul(569,58),]mul(746,840)[(mul(74,146)'where()(#+;mul(517,818)mul?*[->*mul(22,727)from()):who()when()}mul(367,34/when()where()mul(226,816)mul(421,33'(,(#, <who())what()mul(247,12)+when(199,246)who()what(912,935)~?select()how()&how()mul(620,264))how(726,381)/!mul(586,607)#when()[mul(684,722)&%-from()mul(11,63)&where()<select()^)<%select(127,191)mul(662,331)}% mul(631,2)~]mul(987,288)mul(261,47)]{when()>?who()do()%;+-<what()#*+mul@]@?[^mul(650,139)<who()[#don't())}-from()?:who()[mul(561,710){~+how()don't()mul(788,270)mul(151,849)+{;%[#~mul(531,530)how()>:-mul(99,868)#{[why()who(504,690)?mul(119,337)+,mul(250,122))%#%mul(708,536)>select();from()mul(480,332)}&what(423,278)mul(891,459)}mul(852,128)mul(418,844)~select()[{when()(mul(69,312);!)where(419,852)<:*@-don't()what()!$-;{mul(91,636)-when()select()~from()(&mul(894,19)how()]@,[do()#,what()'@mul(116,57)why()from(),@-?mul(651,74)]what(704,54)how()<$mul(169,494) )from()$~-mul(44,491)$mul(29,368)'why()+-+mul(961,385)>who()select(137,499)mul(586,30)$%when(765,538)?why()(mul(378,568)}select()[:[%?$from()don't();mul(375,803)#']/@/^}*where(184,703)mul(21,508)>;+,mul(921,355)};mul(594,553@<?when()what()%%when()*don't()-<,from(342,971))mul(983,69!!!mul(980,691)why()mul(200,735)select(435,520){?mul(489,554?~!mul(212,991)/#<$!<*mul(751,323)mul(102,317)when()},^;why()mul(51,80)}+what()$~[mul(454,897)'/);(>%])mul(793,439)]from(599,582)mul(982,538)}//^;how()~)'from()don't()~&who()<+#+mul(386,116)>/~who()mul(373,106)+#!do()(&-select(),+~;~mul(59,223)mul(233,653)mul(547,404)?where()~%don't()}}select() from()@] from()mul(150,196) ]}(>mul(514,824)where()+mul(332,418)
/>'^')what()mul(590,783)?$when()mul(55,422)from()~]select(198,113)from():}don't()mul(436,985)^:select()from()@//don't()/mul(675,976)$from(),!&]#*&don't()*[#how()~/*mul(172,297)<-{,select()};mul(866,305)$mul(938,509)+>mul(100,651)%where()how(223,719)/){!!;(mul(163,66)+''when()mul(217,127)^},(why()how()what()]who()mul(39,897)>/(mul(966,889)-]'}{,<mul(488,570)$@select(){do()~$@mul(878,77)why()-^mul(670,359)-]select()#{:}[mul(56,569);do()}}what()why()/what()[$mul(614,976)when()who()^'where()(mul(852,588)who(){how()}@when() $mul(532,868)}mul(603,823)#>+,!$$<mul(517,713)/&(select():where(910,84)[select()mul 'select(899,120)from()from()>why()from()mul(338,824)where()/&;mul(230,684)@'where(354,854)- )%when()mul(288,730){from()){}where()mul(124^}'(&don't()mul(688,399)from()++[how()why()mul(136,861who()!?#select()!]where()!do()&how()where()when()mul(968,380)'-$select()why()&:;mul(906>select()^~who())>:*mul(433,704)&why()#who()%@;what()>;mul(848,947) from(497,742)?select()~mul(590,692)why()* ,(<<)where()*mul(102,487)when()]where()>*when()!mul(406,710)mul(962,153)who()who()what()+&from()mul(419,854)$/mul(201,493)from()-)select()'^:[!;mul(779,883)why()why()}?why()(don't()what()]%~{mul(966,261)how()[when())^when()]mul(513,694)/*:when()select()who()'mul$?++~?:$mul(657,498)$ &why()mul(310,762)^+what()~,what()why()why()#}mul(320,448)%mul(886,159)(]what()?'@why():[mul(415@who()$what(){select()who())mul(912,558)select()<mul(614,536)don't()!%{mul(224,83)#why()who()where()+$mul(266,718)[where(437,374)?+who()};<+mul(939,819)'$mul(24,251))mul(101select()why(){how()when(),%mul(86,947)[<}^()%where(526,396)mul(694,25)^;do()what(); (how(307,882)mul(285,650)*%who()[#{what())/~mul(95,593)where()who(){/when()why()mul(931,886)&mul(110,763)}>where()%'why():mul(784,109)-&:-]mul(354,211):*#~mul(637,881),$from()mul(947,709)what():,'mul(284,267)&from()mul(259,860)/^],&(when()when()^mul@select() how()!mul(462,151)~,)where()mul(7,166)**what()<~<do()who()(how())why()}@[([mul(478,668)+!how()mul(118,569)^&;when()-@ mul(181,739^who(432,515)$mul(105,134)where()<from(880,223)who()select()%]mul(489{&>mul(137,598)^]~>mul(561,283)*@ ;select()mul(262,658)who()<,-what()/-why()mul'$;;-]<mul(7,931)?& ^+)where()mul(345,667)/^'mul(3,959)@%when()mul(522,907)~~ ]&%*how(106,70)mul(986,967)!where()when()mul(754,736)where(515,293)why()how()-:!mul(750,438)why()/~ mul[@'['>#why()>mul(510,757)$what()who()>mul(139,401)where()^#&/*mul(332,919)>?how()]when()/mul(218,127)[+mul(504,583)why()$>^mul(649,222)@?don't()from()&what())&'^mul(878,444),,mul(340,684)when()'why()when()?why()mul(852,617)mul(569,36)~(select():>~&/when()@do()<why(444,49)[#[?##^mul(298,203)([why()?,++:}mul(263,671),mul(197,758),';mul(893,114)who()^(,(#why()[*mul(917what()select()[where()from()&'@ [:don't()'+ ($]<where()*{mul(269,55)from()%!select()how()who()where()@mul(81,174)from())^who()mul(872,888&when()>why()from()>who()where()mul(93,146)(;why(863,117)mul(681,428);#mul)$from()how())?{] mul(793,537)where() @~?++?when()why()mul(163,958)select()}who()mul(540,501)$when()#who()/mul(331,537)[>~why()what(395,317)[)[mul(928,496):mul(127,943)$>mul(18,669)?&mul(443,860)when()!;;&select()*mul(624,669)[}:,*>]mul(941,338)?%where()((how();<~when()mul(483,529){)/'+'~$mul(254,159)when():when()'*!??%mul(731,125)when(670,595)]^^from()'?]mul(912,606) ):[^do()#{;?-mul(851,526)>'!'mul(689,174) >?{)how()/;what()mul(919,455)]mul(320,219){#+) {mul(267,831)((from()&:[-from()mul(84,102)mul(291,186)/+}*mulhow()?who()-*mul(973,390)
(~{$where()why(250,398)/how()&#!/usr/bin/perlwhy()-{{#^%>mul(772,422) 'how()}&)mul(184,89)$<how()what()%*~mul(197,267)*)[^mul(703,592)when(), ;why()select(151,652){{>what()mul(376,816)when(),@#mul(949,642)'/+select() [mul(399,146)[~who(){;~ mul(526,131)when()mul(787,620)@~+?from()@-mul(310,482)}:$?what() ,mul(360,720)/why()why()#)^mul(561,462)+@:-{who()mul(403,894)from(),}{(('?!mul(555,514)?-:#&]$-mul(18,725)??mul(901,195)how()mul(814,623)$;~)select()/mul(4,986)#,{-]{!*~mul(833,296)/?mul(496,21why():@/#[what();mul(162,231))>~do()select();+*^?}?mul(38,18)?*who()&why()/who(479,558)from()%,mul(225,613)mul(494,841)'who()%@+{>&~mul(586,498) select()*!/]};<mul(818,498)(}#@+mul(795,500)mul(285,406);;: ,mul(404,65)]] ;!when()+what()''mul(201,457how()%mul(489,759)!who():where()?mul(381,280when()mul(312,151)who()^-mul(236who();who();(&?&]&]mul(393,302)&>-; /what()where()mul(614,161){select()where()+!what()/-mul(927,228)mul(432,16)when()?&+'^mul(539,745)]^when()what()mul(970,413)+<&:don't()$%mul(533,997))-mul(574,681)mul(978,225)&![who()why()(>mul(453,460)why()*+how()~!why()where()*-mul(840,804)>+mul(570,880)/>how()'-~*;+mul(367,248)$@what()mul(303,242)when()?>!!!-what()>%mul(547,184);when(300,185),^mul(196,377)~<{,[@from()when()from()'mul(727,421)>mul(199,873)],select()-+<&where()mul(962,772):what()/[${how()<*where()mul(534,770)select()/how()>*mul(356,156)((%where()}~how()#who()mul(801,644)from()mul#select(458,914)how()where()~}(}what()mul(273,584)who()mul(692,224)(>what()where();%,-mul(779,81)<[~who()!mul(786,30)]':mul(328,225)/when()#])(>:?:don't())*/mul(914,292)why()mul(83,290)[~mul(257,792),;+]*mul(949,612)*{;[-:]$^]mul(813,824)]/mul(5,572)}+don't():)from()*[>+(#who(422,860)mul(243,781)<-mul#<*<#&{?/'mul(579,115)(:mul(861,206)?)<why()how()why()when()/&mul(919?''/?',mul(859,273) '/&~why()[who()]/mul(865,638)-<$(when(534,151)what()mul(756,102)''<% ]mul(521,726)how()*;*-~'~mul(830,632)><&{>;mul(331,573)mul,^->,~>?who():<mul(294,77)/,:/}},mul(477/who()what()@<}why()mul(113,420)?+,mul?why()(*+[>from()mul(463,386)['{*>],when()?mul(740,88)]<[where()from()-]mul(685,334)+how()}how()^mul(973,106)select()$+mul(867,634)do()@-?mul(535,483)how()$<mul(478,385))[#&mul$@/select()#$[}:#]mul(965,153)why(110,391))}how()mul(484,578)who()-<mul(847,771)/mul(921,939), ~when()%mul(981,816)$[how()$*who(578,752)>[mul(161,41)]where(),#,mul(129,507)don't()who()what()<how()mul(554,49)(^:mul(618,748)$%<:<> mul(214,987)[ *^*[&mul(870,285)when()how())(+)+who()^<mul(581,483)]mul(921,982:]*%how()<mul(434,655):+mul(242,610)mul(614,631)what())where()how()what(932,531)what()where()}why()%mul(494[<;what()% %how()+mul(357,150)who()?mul(949,239)mul(802,54)where()!where()*?+/mul(209,916)&&&select()mul(637,422)-,~why()?)where()^mul(502,914)(how(913,389)^how()what()what()@ from(382,173)where()mul(860,112)/don't()'['#when()mul(110,847-mul(828,62)mul(370,262)@[!][^#why()@mul(693,119)who()$what()$&mul(399,511)from()}-who()(when() *do(),&*(#}mul(395,383)why()how()>how()how()'why(990,834)<@from(535,913)mul(741,712)why()when()who()@>-*!mul(296,759)$@where()mul(585,923)where()who()/why()]}>mul(163,233) ;;what(771,674)when()mul(553,949)select()when()'mul(545,530)
( !>{!-*}mul(646,888)]-?<mul(908,145)mul(872,423)<why(523,766)$;what() &mul(724,993)]}from();>why()+mul(359,478)why()mul(186,893)]where()what()when() >select()mul(592,52)where()select()from()[select()from():~'/mul(164,308)what():>^)why()how()$&who()mul(377,499)why()((where()@~who(),mul(658,47)#how()+%from()'/select(287,448)]~mul(759,688)!<?%;}*mul(623,353)&#;~{mul(830,695)do()mul(755,160)-?{mul(138,691)mul(161,105)do())*&:who(592,695)![/mul(542,698)why()%/*do()[$from()~[mul(274,212)>@?]{(~mul(196,596)who()+mul(759,422)/@[#>where()mul)-how()>$&:$@},mul(861,458))mul(126,262)@;<how()(mul(986,49<)^[///[mul(615,656)-}): when()/mul(266,494)/)who()who()>what(){};:don't()#mul(695,332)>what(),why()#++%select(){mul(471,679)^select()/mul(387,568)when()%(]*how()>do()' ^]?mul(777,56)>where()(why()select(14,295)mul(874,481)!from(){;~how()@mul(22,505))~who())when():&mul(395,566)-(~what(231,98)$$;$mul(326,815)>from() select()^who()#mul(189,720)what(),from()don't()>%+/mul(418,532)-;):<when()[<%mul(561,959)/<*~/{mul(518,185)? ,select() <do()who()who()select()from():where()?when()mul(327,206)mul(501,728)',what(675,175):from();what()/{:don't()mul(219,962)when()'mul(7,809)/$;mul(768,798)mul(353,892)?from()! when()what()->don't())@:#<mul(899when()*;}^ &mul(506,552)mul(703,677):#}mul(13;when()don't()&/+><from()what()-{mul(801,431)(/mul(330,809)>!when():$[:<['mul(764,131)$:@&[from()%+~ mul(258,284)from(810,941)&how(232,473)mul(338,578);/select():mul(990,919)from()how()>[{!}mul(69,711),when()+do()}/[#who()*mul(907,255)?!}{]*mul(781,224)#select()<mul(400,377)mul(224,640)/@{why()mul(97,222)'~:select()mul(723,191)<~how()&->mul(755,122))<why()^]why()]mul(348,579)]where(758,732)mul(939,550)^]when()what()@*{don't()'+/:how()]}@@mul(21,125)mul(138,133)mul(482,114)where(),from(),*from()!/;[don't()why()what()how()mul(732,224)?!#?***!mul(823,749)%#/@*<what()mul(980,685)!;:/~} <$mul(51,373)$-!who()mul(523,713)!)~{%mul(16?;[who()!$how()&how()mul(461,976)#mul(108,138)when()@'} ;(;mul(194,793)~%' ?from()select()[when()mul(79,491$*#%:mul(914,754)$' where()$who(){why()mul(692,138)+;*}mul(853,262)why()$mul(15,398why()*>-:[',mul(863,596):how() who()%select()select()[what()do()+where()^+mul(722,58)^[,how()?#^ !:mul}&select()~{}mul(885,728)when()?mul(468,630)?where()from()select()>*~:don't()%#}$@-)mul(200,579)why() mul(10,435):)/;@{;mul(298,190)where()why()$ mul(9,631);where(7,826)@-don't():':;[,!@+mul(273,471)mul(325,690)mul(267,174)mul(339,952)}what()>)>@mul(307,862)do()why(335,510)]&>( mul(636,749)(-mul(592,773)!mul(2,50+'#mul(338,514)#;why()where()mul(127,711)@mul(146,911)mul(860,601)%select()mul(806,306)mul(410,847),:[mul(73,481)+don't()>}<what()mul(826,657<+ {*^? what()mul(172,949){'~+#mul(732,513)how()'/why()*+/#&)mul(11,422)+'%@+when()$why(383,170)how()mul(190,688)]!{select();who()what()mul(450,687)from()what()mul(171,95)how()how()where()mul(631,790)~how() @$why())[mul(893,598)mul(39,888)#([/what()!]*}mul(290,685)!#who()[$do()^+@what());{$mul(463,742):$mul(118,146)@mul(39,34)what() <,when()@@mul(489,439)mul(874,442)how()~where()^who()select()-don't()/:how();when():$)mul(975,618)why()mul(732,833)where()mul(17,484)
(>&)]mul(509,882)*/@~*<!&mul(813,280)::$+-*^mul(741,365)]()what()from(804,684)mul(734,644)*<]]%who()}[^don't()when()!;)mul(55,766+!select(797,794)@where()mul(595,285)why(807,706)/when(298,410)what()select()mul(439,186):mul(976,645)>where()-!mul)$do()where()?mul(308,113)/@?why()<where(35,826)&mul(127,972)^%<~??[!%;mul(781,845)/?#(select()mul(949,130)#{-#,mul(612,396)*{@@%'/mul(343,689)>where()>%mul(970,425)~[$@'[mul(83,136)+<%who()who()who()^~where()mul(960,152)when()mul(714,401)how()?]from()*!what(313,652)mul(455,389)select()why()<-[)%:(%mul(929,53[-@%~;%]where()why()mul(293,806)from(258,940)[mul(959,603)!@)why()?{{$mul(744,798) '{}&<&?,mul(389,91)#'select()@,who()/$<mul'who()where(634,260)^*$mul(625,376)@what()&mul(7,35)#)?!how(714,530)don't()from()who()>($-@,mul(792,652)how()mul&)!do())-}?~select()>mul(527,656)mul(220,657)who(453,708)mul&when()/when()+ how()how()%%@mul(62,191)'{%,mul(13,233)mul(780,237){from(817,212) when()mul(216,970)@what()}<: - ;mul(954,521)+mul(645,579)mul(695,53)%{},mul(927,488)$/$$what()&what()mul(815,350)](select(){;mul(650,656)&<:what(70,971)* mul(452,286)select()#&)when()+mul(438,390)>what()/mul(353,213) &from()~mul(920,652)~mul(971,287)don't()select()}/mul(4,595)where()-mul(332,353);>+mul(64,192)mul(33,846)}'where()(:mul(13,41)[@!^][(^$mul(728,587)what()>^&what()>who(73,62)why()where()mul(501,624)(%!mul(187,871),;>from()(, mul(563,884)]]/[who()mul(685,629){where()from()@@',who()why()<mul(741,377)'+{+'$+^/mul(69,647)!-mul(338,68)!why()mul(752,772)-'from()'what(){[&-mul(193,86)don't()from(899,805)how()what()+'+^mul(492,628)};from()*when()#?select()mul(20,602))-:where()mul(34,881),how()}mul(777,504){;mul(425,245):how()</:&}%mul(504,651)mul(193,8)+&who()+!^*{mul(247,144)}[#;when()where()mul(857,787); % (>;mul(57,598)mul(799,387)why()?mul(963,99)*-!''when()mul(606,12)who()]how(), mul(615,921)/what()from(858,351){how()#who()@mul(379,934)~/{mul(871,792)<[+&mul(206,542)mul(154,161)-when():why()[mul(663,226)>from()from()?#mul(320,293)>select()!@;from()where()<^~mul(865,92)mul(834,118)select()#>mul(36,886) why()[>,,))select()mul(777,447)what()};<>how()from()*mul(942,312)how()]mul(810,261)select()@+>)'){mul(356,987){mul(33,198)[select()from()where()({mul(752,594)$why()who()>,?^where()->mul(478,705)why();select()from()when();]/]from()mul(878,617)@who()<how()%;mul(951,929)<& ~mul(193,497) (mul(670,912)&from()*from(57,764)mul(872,457)]mul(411,192)@from(247,487)@*'select()mul(830,878)when()<?@!~why()mul(103,203)([- ;who(37,653)who()+{mul(574,907)$mul(288,478)'who()@select(453,494);-where()why()#mul(418,593)+^%>-who()[&&mul(554,90)#+:^do(), <{mul(978,459)/##[^ ]how(); mul(470,763)mul(342,6):&mul(192,104)from(220,224)[mul(309,253)$}mul(98,92)[mul(690,632)how()why()!>@mul(880,975)~/<what()}mul(233,433),>what()why()/*[mul(663,3)when()[@! )&,~^mul(965,150)#~},%^(]from()mul(503,640)::where()mul(146,66)&)~[mul(37,741)mul(714,547)/;

123
4-1.rb Executable file
View file

@ -0,0 +1,123 @@
#!/usr/bin/env ruby
problem = 4
@input = File.readlines("#{problem}.input").map { _1.chomp.chars }.reject { _1.empty? }
#@input = DATA.read.split("\n").map(&:chars)
def diagnal?(x, y, dx, dy)
if dx == -1 && dy == -1
return false unless x >= 3 && y >= 3
return @input[y][x] + @input[y-1][x-1] + @input[y-2][x-2] + @input[y-3][x-3] == "XMAS"
elsif dx == -1 && dy == 1
return false unless x >= 3 && y <= @input.size - 4
return @input[y][x] + @input[y+1][x-1] + @input[y+2][x-2] + @input[y+3][x-3] == "XMAS"
elsif dx = 1 && dy == -1
return false unless x <= @input.first.size - 4 && y >= 3
return @input[y][x] + @input[y-1][x+1] + @input[y-2][x+2] + @input[y-3][x+3] == "XMAS"
#elsif dx == 1 && dy == 1 -- SHRUG
else
return false unless x <= @input.first.size - 4 && y <= @input.size - 4
return @input[y][x] + @input[y+1][x+1] + @input[y+2][x+2] + @input[y+3][x+3] == "XMAS"
end
end
def horizontal?(x, y, dx)
row = @input[y]
if dx == -1
return false unless x >= 3
return row[x] + row[x-1] + row[x-2] + row[x-3] == "XMAS"
end
if dx == 1
return false unless x <= @input.first.size - 4
return row[x] + row[x+1] + row[x+2] + row[x+3] == "XMAS"
end
end
def vertical?(x, y, dy)
col = @input.transpose[x]
if dy == -1
return false unless y >= 3
return col[y] + col[y-1] + col[y-2] + col[y-3] == "XMAS"
end
if dy == 1
return false unless y <= @input.size - 4
return col[y] + col[y+1] + col[y+2] + col[y+3] == "XMAS"
end
end
xmas = 0
h = 0
d = 0
v = 0
puts "Scanning"
puts " - x: #{@input.first.size}"
puts " - y: #{@input.size}"
(0...@input.size).each do |y|
(0...@input.first.size) .each do |x|
next unless @input[y][x] == "X"
if diagnal?(x, y, -1, -1)
xmas += 1
d += 1
puts "Diag LU at #{x}, #{y}"
end
if diagnal?(x, y, 1, -1)
xmas += 1
d += 1
puts "Diag RU at #{x}, #{y}"
end
if diagnal?(x, y, -1, 1)
xmas += 1
d += 1
puts "Diag LD at #{x}, #{y}"
end
if diagnal?(x, y, 1, 1)
xmas += 1
d += 1
puts "Diag RD at #{x}, #{y}"
end
if horizontal?(x, y, -1)
xmas += 1
h += 1
end
if horizontal?(x, y, 1)
xmas += 1
h += 1
end
if vertical?(x, y, -1)
xmas += 1
v += 1
end
if vertical?(x, y, 1)
xmas += 1
v += 1
end
end
end
puts "Diag: #{d}"
puts "Hor: #{h}"
puts "Vert: #{v}"
p xmas
__END__
MMMSXXMASM
MSAMXMSMSA
AMXSXMAAMM
MSAMASMSMX
XMASAMXAMM
XXAMMXXAMA
SMSMSASXSS
SAXAMASAAA
MAMMMXMMMM
MXMXAXMASX

66
4-2.rb Executable file
View file

@ -0,0 +1,66 @@
#!/usr/bin/env ruby
problem = 4
input = File.readlines("#{problem}.input").map { _1.chomp.chars }.reject { _1.empty? }
#input = DATA.read.split("\n").map(&:chars)
mas = [["M", "M", "S", "S"], ["M", "S", "M", "S"],
["S", "M", "S", "M"], ["S", "S", "M", "M"]]
x_mas = 0
matches = []
(1...input.size-1).each do |y|
(1...input.first.size-1).each do |x|
next unless input[y][x] == "A"
corners = [
input.dig(y-1, x-1),
input.dig(y-1, x+1),
input.dig(y+1, x-1),
input.dig(y+1, x+1)
]
if match = mas.find { corners == _1 }
matches << [y,x]
x_mas += 1
end
end
end
relevant = matches.map do |match|
[
match,
[match[0] - 1, match[1] - 1],
[match[0] - 1, match[1] + 1],
[match[0] + 1, match[1] - 1],
[match[0] + 1, match[1] + 1]
]
end.flatten(1)
# input.each_with_index do |_, y|
# input[y].each_with_index do |v, x|
# if relevant.include?([y,x])
# print v
# else
# print "."
# end
# end
# puts
# end
p x_mas
# wrong
# - 1968
__END__
MMMSXXMASM
MSAMXMSMSA
AMXSXMAAMM
MSAMASMSMX
XMASAMXAMM
XXAMMXXAMA
SMSMSASXSS
SAXAMASAAA
MAMMMXMMMM
MXMXAXMASX

140
4.input Normal file
View file

@ -0,0 +1,140 @@
MMSMXMSASXMXAXMAXSASXXXMASAMXSMMMXMMXMXMASMXMASMSMXSSXMASXSMMSASMSAXAMXMAMMMSAMXXXMAMSMXMMMXMASXMAXXMMMXMMSAMXAMMSMSSMSMMMSMMXSXXAXMXSAXMASX
XAXMASMXMASASXSXAMAMXMXMAXAMXSASAMXMAMAMSAMSSXMMAXASXAMAMSMAXMXMASMSASASASAAMAMXSMSMSAXAAXXAMSSMXMXSMAMXXAXAXXASXAMAAXAAXXMAXAXXMMSSMSSXSASA
XMASXXXASAMAMASMMMAMMSASXSXMASAMMAXSAXXXMASXMASMSMMMMXMAXAXXMSAMXMAAXSASASMXSAMAAAAXSASMMMMMSAXMASAMSAMSMMSAMSAMAMMXSMSXMASXMASAASAAXMAMMAMM
SSMSMSSXMMMAMSMAXMAXXMAMMAMSXMSMMMXMAMSXSSMXSAMXXAASXMSMSMSMMSXSAMMMMMAMXMXAMASXMSMMMXMAAAXMMMSMAMAMMMMAAXMAMSAMXXXMAMAASXMAAXXMXMSMMMSMMAMX
XXAXAAAMMSSMMXASXSMSSMAMSAMXAXXXASMMSMSASAMXMASMSXMXAAXXAAAAASASAMAXSMSMSSMSSMAAXAXAMXMMMSXXAXAMSSSMMSSMSMSAMSMMSMXMMXSMSASXSXMMSMAMAAMAMASX
MMMMSMMAAAAMASXMAAXAAMSMXAMSAMXSMXAAAAMMMAMASMMMASXSMMSSSSSSMMMMMSAMSXASAAAAAMMXSXSMXSSXSAXAMMMSMAXAAXAMXAASAMXMXAMXMAMXSAMMMXXAAMXMMXSAMAAX
XAAAXAXMMSSMASAMXMMSSMMASMMSASXMXAXMMMMAMMSAMAAMAMXAXMMAXAMAMXSAMMMMMMMMSSMSMMXMAMMMAMXMMAAXMASAMXMMMSAMSSMXMASMASMAMXSAMXMAAMMMMSSXSASASXMS
SSSSSSMMAMXMASXMAMXXXAMAMMASXMASMSMSAMXSSXMASXMMSSSMMAMMMSMMSSMASAAXAAAAXXAMXSASMXMMXSAXMSMMSMSASXSSMMAMAXXXXAXSAMXXSAMASASMSSSXSAMAMXSXMAXS
MAMMMAAMSSSMASXSSSSMMMMAMMAMASAMAAASXMAMMMMMXMASXAAXMXMXAMAXSAMAMXSSSSMSAMXMASASXMMAMSAMXXXAAAMAMXMAMSSSMMMXMSXMMSXXMASAMMXAXAAXMAMASAMASMMS
MAMMSSMMAAXMXSAMMAAXAAXMMMXSASAMMMXMSMMSAAXXAMXSMXMMMASMSSSMSAMXSXXMAXAXXMAMXMAMXAMAXMASXMMSMSMSMMSMMAAMXMMAXMASAMXXMAXAMXMXMMMMSXSAMASAMXAX
SMSXAMMSMSMSAMAMMSMMSMMAAAXXASXMAXSAMXAMXMSXSAMMMSAXSASAAAAASMMASMMMMMXMXSSMSAXXMSSMXMAMAMXAAAAASAMXMMSMSXMASMMMXASMMMSAMSSMSSSXSAMXSAMASMSS
SXMMXXAXXMAXXMAMXAXAAMSSMSXMMMAXMSMSMMMMSXXMAAMAAMMXMASMMSMMXASAMAASAMXSAAMAMAMSAMXMAMSSSMMSSMXMAMMXAXMASXSAXAAMSAMXAAMAMXAAAAAMMAMAMMSMMAMS
SAXMXMMSMMSMMSMSSMXMSAMXAMXSMMSMMAMAMMMASAMMSMMMXXSASXXXMXXMXMMASMMXAMAMMSMMMAMAAMAMASAAAAAMXMXSMMSSMMMSMMMMSSMXXAXMMXXAMSMMMSMASXMMSMAXMMMM
SXMMAMMAXMAXAAXMASAMXAMSASAXAAMMSMSASAMXSAMXXXXMAASXXMXMXAXXAXSXMAXMSMSMMXMXSASXMSSSMSMSMMMSAMXSAMAAAXMAXXAAMXMASMXMASXMMXAMXXXXASXMAMXMXXXX
XMASXSSMSSXSSMXSAMMSXSXSAMAMMMSAAASASXSMSAMXSMAMMXMMSXSAMSMSSXSXSXMAXMXAAXSAXAMAXAXAXXXMASAMAMASAMXSMMSMSSMSSMSAMMASAMASXXXAMXXMAAXSAMXMSMMM
MSXSAAXAAAXXXXAMXMXMAMAMXMXXAAMMMMMAMAXAMAMAXMMXSAXSAAXSAXMAMMXAMSSXMASMMMMASAMSMMSSMMMSXMASAMXXAMXMXMSAMXAAXXMAXSAMAMAMXSSSMSXMXMMMXSAAAAAS
ASAMMMMMMSMMAMXXMMAMAMAMXSMSMXXAXAMMMSMASMMSXSMASXXMMSMMMMSSSSMMMAMMMAMAMSSMAXXXAAAAAMAMASMMMMSSMMXMASXMSMMMSMSMMMMSAMSSMMAMAAMMMXMAAMMSMSMS
MMAMXXAAXAAMMMSAMSASASAXAXAAMXSSSMSXAXMAMMAXAAMMMMXAAMXXMASAAASXAASAMXXAMAAMASMMMMSXXMASMMXASAMAAAAMSMAXXAAAAMAMMMMMXSXAMMAMSMSAAXMMMSAMAMXX
MSSMXSSMSSMMAAXAXSXSMSXSMMSMMAMXAXMMMXMAXMAMSMXSAMSMMSASMSSMSMMMSSMXMMMSMSSMAXMAAMXMSMMSMASAMASXMXMSASXMSSMSMSASAAMMMMMMMMXMAASMSMXXAMXSAXMX
XAAXAMAXAAMSMSSMMMMSAMMAMMMMMAMSAMXAXXSMSMSMXXAMMXAAAXAMMMMMMAMAXAAASASAAMXMASASXSAXMASMMAMXSMMXSAMAXMMMMXMAASASXMMAASASXSMSMXMAMXSMSSMMMMSM
MMMMMSAMSSMXMAAASAAMAMSAMAAMSSMMASXXMAAAAXXAMMMXSMSXMMXMXAAAMAMXMSMMSSSMSMMMASMXAMMMXMMAMXXXXASASASAMXXSAMXMMMAMAMSSMSASAAAAMAMAMXSAMXAXAXXA
SXSAMXMMXXAAMXXMMMMXXMMASMMMAAAXAMAASMMMMMXAXAMAMXXASXXXMXSSMMXSAMXXXXMXMXAMXSXMMSMSAMMXMASMSAMMSMMMMMMMASMXSMSMSMAMAMXMMMSMMAXAXXMMMSSMSXSM
AAMSMASXAMSSSSXSXXSSSSSXMAMMSMMMMMSMMAAXXASXMMMASXSAMAMSMXMXAAAMSMSSSMMASXSMASAMXAASASXMXAAMMXMASAAAAAXMSMMAAAAAAMSMXMSXMMMMSMSMMMXMASXAMASM
MMMXMXSMXMAAAMASXMXAAAMSMXMXMXSAXMAXXXMMMMXMAMSAMXMAMAMAASASMMMMXMAXMASASMAMAMAMMMXMXSASMXMXMSMASXSMSXSXXAMXMMMMMSXMASMMMAAXXMAMAMAMXSMSMAMX
SXMASMXAAMSSSMAMAAMMMMSAMAMMSASXSMSSSMAAXSAMAMMASXSSSMAMMMAMXSAMAMASXXMAXMAMMSSMSXXMAXXXAASAMXMAMXMAMAMXSAMMSXASMXMMSAMXSMSMMSSSMSASAXAAMAMA
AAXASASXMMAAAMSSXXSXSXSAMMMAMXSXXMAAAAXSXXAMXMXAMXXMAMXXXSAMXSASMXSMAXMSSSMMMAMXSXAMSXMMSMSASMSSMMMXMAMASAMAXMMMSASXMASAMXAAXXXAASAMMSXSXSSS
SSMAMASAMXMSMMXMXMXAAASMMSMSSXMASMMSMSSMMSMMASMXSSSSMMSXMSAXASAMXXMASXXAXAAXMAMMMSMAMXSAMXSAMXAAAAXMSXMAMAMSXSXAMMMXMAXAMSSMMAMMMMXAXMAMAMAA
AMMSMAMXMMMAMXAMAAXAMXMAAXAAAASMASAMAXAXAAAXAXMMMXAMAAAXMXXMXSXSMXMAMXMMSMMMSAXAAXMAXMMASAMAMMXXMMXASMMMSMMMASMMSASAMXSXMAAAMXMAXXMXXMAMAMSM
MXAMMSMMAXSAMSASMSAAXXSMMXMMSMMXMMMSXMAMSMSMMMXAMXMMMMSSMAMSAMXXASMAMXAXXAMAXMSXMXMMSAMXMXMAXMMSMSXSXASAAMAMMMAXSASASAMAMSSMMASMSSMMSMXMAMXX
XMASXMAXAAMAMSAXAMMMMMSASAMXXMXAXAAMAMAMXAXMSMSSSMSAASAAMAMAAXAXAXAASXMMSAMSSMSAMSAMMMMAMMSXMSMAASXMSMMSSMXSMMSMMXMXMASAMMAASXSAAXXAAAXMSMSM
AAMMMXAMXSMSMMAMMMAMAASAMXMSMSSXSMSSXSASXMMAMAAAAAXMSMMSSSSMSAMSXXXMSAMXMAXXAASAASMSASMAAXXXSASMSMMMAXMMMAMXMAAAMSMMSXSMSSSMMAMMMSMSSSMAAAAA
SMSASMMMMMMXAXXMAMAXSAMXMAXXAMXXSMMAASASMXMXMMMSMXMXXAAAXAAAMXMAMSSMXASXSMMSMMMAXMASASMSMMXXSMXXAMXSAXSAMXMAMSXSAAAXXAXAAAASMMMAXAAAAAMSMMMS
MAMAXXAAAAMSAMXMSXXXXAMXSXMMAMSMSASMMMMMAMMMMAXAXMSMXMMSMMMMMMMASAAMXMXMASAXAAXXMMAMXSXMAMSAMXSAMXMMMXMSSMSXXAMXMSSMMMMMMSMMMMSXSXSMSMMMSMAX
MXMMMSSSSSXXAMXMAASASAMXMAXSAMAAXAMXXAMAMXAAXMSMXMAAASAMXSXAXAXSMMSMASMSMMSXSMSXMSXMMSASAMMMMAXMMXMAMAMXMMXXXXXMAXAAASXMXAMXAASAMXMAMXAAAMXS
SSSSMAXMAXXSMMXMSSMAMMSAXAMSASMSMAMMSMMSMSSSXMSXSSMSMXAMXSSMXXXAAXMXAXAXMAMMMSMAMSAMAMAMMMAXMMSMMMSASMSAMMSMSMMXSXSSMSASMMSSMMSAMXXAMSMSXSAS
AAAXMMSMAMXMMAMXMAMXMASMMMXSAMAXMSXXAAAXAXAMXAMAMXMXMMAMAXAMASXMMMMMSSSXMASMMAXAMXAMSSXSXSXSAAXAAXXXAXSASAAMAAMAMXXAASAMAAAAXASAMXSSXXXMAMAS
MMMMAAAMMXXAASMSSMMXMAXXAXMMXMXMMAAMMMMSMMAMMMMSSMXAASXMMXXMAMAXAAAMAAASMAXAMSXXXMAMAMMSAAMSMMSMMSMMMXSAMXMMMMMAXXXMMMSMMMMSMXMMMXXMAMMMXMAM
MAAXMSMSAMXSXMAAAASXMSSSSSSMSMMAMMMMAAMXXMAMAXAAAAMSMSAAMMSMMSSXSSSSMAMMMAMSMXAASXSMSXAMMMXXAXXMXXAAXAMXMXSSSSSSSMSAXMASXSXMMSMXSSMSAASMSMAM
SSXSAXAMXSMMAMSMMXSASAAXMAMAAAMXMAASXSSMMSMXSMMSSMAXAMXMMAAAMAXAAXMAXMXXXSXMAMAMXAMAMAXXXXMSSMSAXSSSMMSASXAXAAAASAAXMASAMXAMAAXMXAAMSXMAMXAM
MAAMXMAMAMAMSMAXXAMMMMMMMSMXSSMAMSXSAAXAMAMAMXMXMAXMXMAMMSSSMASMMMSXMMSMMMAMXMMXMMMAMMMSMMAMAAAMMMAXAASAXMMMMMMMMSMMMMMAMMMMXMMAMMMMMMMAMXSS
MMMMXMAMASMMMSXSMMXAXXXAAXMAXAMMXMAMMMSSMXMAXAXMASMSMMAMAXMAMXSAAXXASAAAAMAMAMMMAASXMXAXAMSMMSMXMMSMSMMMSMXAXMASAXXSAAXAMAASASXSMSAMXASAMMAA
XXAXASXSXSAAMAMMAMSMSMSMSMMMSAMXAMXXXMAMAXMMSAMMSAXAASMSXSSXMASMMMSAMXSSMSAXAXAMXMMASMSSSMAAXAMAXMMAMXXAAMASAMXMASASXXMXMXXSAMAXASMSXMSASMSM
ASMSASASASMMSMMSAMAMAMAMMASMMMMXSMMSMMASMMMAAAMXXAMMMMAAAXMSMASAMAXASAMXXSAMXSMSAMSAMMAAASMSSMSSSXMAMMSSMSAXMAXSAMXMASMMSSMMXMXMXSAMXXXAAAAX
AAAMAMAMAMXMAXAXAMXSASMXSAMAAAXSMAMMASAMAASAMXMXSXMAAMMMMMAXMASAMXXAMMSSMMXMXAAXAMMXXMASXMMAAXAXMAMASAMXXMXMAAXASMXMAXAAAAXAMXXMMMAMASAMMSMX
SSXSAMAMAAAAXMMMSMASASAAMXSMMMMMXAMSMMXSAMXMSMMAMASXSXSAXMMMMMXXMMMSXAXAAAAXMMMMSXMMSSXMAMMMMMMXSAMXMASMXSMSMSXSXSXMMSMSMMMMSMAXAXAMSMAXAXXS
XMAXMSSSMSSMSASAAMXMMMMMSMXXAXAMSMXXXXXAMMAAAAMMSAMXMAMAMMAAMMMSSMAMMMSSMMXSASXAMAAAAMASXXSMSSXASAMMSAMXAAXAAXXXAMXMAAXAXAAXAMMMMSASAXMMMXXA
SMSMXAMAAXAAXAMMSMAAXASXSAMSMSMMAMXMMMMXMSXSSMMXMAMAMAMAAXSMXAMSAMASAXMAXAXSAMMMXSMMXSAAAASAMXMASAMMAMXMAMSMSMAMSMAMSSSSSSSSMSAAMMMSASXASXSM
XAXAMXSMMMMSMXMAXAXMSMSMSAMXMAXXMMAXAAMXXMAXAASXSMSXSASMSMXMSAXMAMXSAMXMMMXMAMXSAMXSMMMSMMMMMAMMMMMSAMMXSAMXMMMMAXXMXXXAAMAMXSXMXAMXMAMASAAX
MSMAMAAAAAXMAMXMXAXMAMXAMMMXMXSMASAMSSMXMMXMSMMAAAAXMASAAXAXSMMSMMMSAMMSAMXSXMAMAXAAAAXAMMXSSMMSAMXSAMAAMAAAXAXSSSMSMMMMMMAMMMMMSXSAXMAXMXMM
MAMAMMSSSSSXSSXMMSXSSSMSMMSXSAAMAMMXMAXMXXSAMXMMMMMXMXMXMMMMXSAAAAAXAMXMASAMXMXSAMXSSMSMSMAAAXMXSAAMAMMSSXMXSAMMAAAAAXMASXXSAAAMXMSASXSMSASX
SMSXSMMMMAMMMMAMAMMMASAMXXAAXSSMSASMSAMMMMMMMMSAXSMXXASASMXAXMSMSMSMMSSSMMXXAXAMASXAAAAXXMMXAMMMXMMSAXAMAMXXXXSSMMSSMMAMAXASXMXSXAXAXAMASASA
SAAXXXAAMAMAAMXMXSAMMMMMAMMSMXXAMAAAMXMAAXAXMASAXSAXSAXASAMXSXXMAAAAXAMAMAMXMXMSAMMSMMMMSXSSSXXAXAAMMMMMSAAXAMAAXXXAMSAMXMAMXMASMSMMMAMMMMMM
MSMXMSSXSASMSMSAAMMSXSASMAAAMXMXMXMXMASXSSMSMAMSAMAMMSMMMMMXMASXMMMSMASMMASASAMXAXAMXMAXAAAAAASMMMMSMAMAMSMMMMSAMXXMMXXSASASAMMSAAASXSMSAMSM
MAXAMXXMSXSAAAXMMMAMASAAXMXSMAMSMMXSXMAMMAMXMXSAXMMMAAXMAMMAMXMXMXAMMAMXSXSAMAXSXMXMASMSMXMMMMMAAMMAXAXAMASAXXMAMMSSXSASASAMXSAMXMSMAAASAMAM
SASXSASMXAMXMMSASAMXAMMMSMAMXAXAAAAAAMMSSMMASXAMXXSMMMMSSMSASAMXSMMXMXMAMXSMSSMSXMAMXMAAXAMASXSSMMSSSSSXSAMSAMXSMAAAAMAMMMMMXXXSXXMMSMMMMSXM
MAMXMMSAMXXXXXAAMXXMAMAAMXAMSMSSSMSSXMXMAXSASMAXSAXASXAAAMSASMMXSAMSXMMSSMMAAXMXASAXSMSMSXSASXMAMAXMAAXMMMMMXMAMMMMSMMMMXAASMSMMMMMAAAXSASXS
MAMXMASAMXMXAAMMMXMAMSMSSMMMAAAXAXAMXMXMXMMASASXMASAMMMMSAMMMXAAMAMAAXAAAMMMMSMSMMMSMAMAMXMMSAMXMAMMSMSMMAAXMXSMSAMXMASMMMXAAXMAAAMSSSMMXSAA
SMMMXASXMXSXMXMAXAAAAAAXAAXSMMMSMMSSSMXSAXMAMXXXSAMAMSMAXMXSAXMXSAMSSMASXMXSAXAAMAMAMAMAMAMASMMSMSXAAMAAMXXMSAMXSAMXSASAMSSMSMSMSSXMMXASXMMM
XMASMMSAMXXMMAAXMASXSMSMMSXMAMMAMXMAXMAMMMMMSXSAMXSAMMMMXXAMMMMASAXAMMXMAMMSAMSXSASASMSMXAMAMXXAAMMMMSSSMSSXMASASAMAMXMAMXAAXAXMAXAAASMMXAMS
MSASAXMAMXMAMASMSMAAAAAXAMASMMSASMMMMMAXAAMXMAMXMASASMASAMXSSXMASXMASXXSXMXMAMAAXAXAMAAXXXMMSXMMMMAXXXMAAAAXSAMAMAMSSMSAMXMMMMXMAXXMMSXSMMMM
AMASXMSSMAMSXXXAAXMMMXMMXSAMAAMAMXMXAMMMSMSAMAXAMXSAMXAMAASAMXSASAASAMXSMMASAMMSMMMSMMMSXXAXAXSAMXSMMXXXMMSMSMMSMSSMAASMMMSAAMSSMSSSMSMMASMM
MMMMAMAMXMAMAMMSMMXSMMXXMMMSMMMSMMMSSMSAMASXMMXMSAMAMMMXMMMXSAMAXXMMSMAMAXXMAXAAMAAAAAXAASXMSXSASAXASXMMMXXAXSAAMXAMMMMAAASMSMAASXAAXMAMAMAX
XSASAMASAXMMAMAAASAMAXMSSXMAMAMAAAXMAAMAMMMSAAASMMSAMXMASAMSMMSAMSSMAMASXSXSXMSSSXSSXMMXXSAAMASMMASAMMMASAMXAMSSMSAMSSSMMMXAAMXXMMSMMSSMSSSM
ASASMXASAXMAAXSMMMMSSMAAAASMSMSSSMSMXMMSMSASMSMSAXMASAMASASXAAMAXMASAMXSAAAAAXMAXAAMMSXMMMMAMAMAMAMAMMSASXSMAXAMMSAMMASXMAMSMSSMMAAAAAAAAAXA
XMMMXMASASASMXMMSAMAMMMMSXMMMMAXAMMMMMXXAMAXMMASMMXXMXMASXMMMMSXMSMMSMAMMMMSSMMAMSMMASMMASXSMSSXMXXXMXMASAXMMMMMASAMMAMXMAXAAAASASMSMSMMMSMS
XMXAAMXMAXMAXXAASXMASXMXXMXAAMSSXMAAAMXMXMMMSMAMAMXSMXMASAMXXAAAXXXAAMXSXXXXXMAMAXAMXSASXMAMXMAMXXMASMMXMAMAAAXMAMAMMSSMSMSMSMAMMXAAAXMAXAAX
MSMMMMMMXMXMSMMMSMMXSXMAMAXSSMXXXSXXXSMSASAAXMMMXMAMAAMMSXMMMMMMMAMSMSXMMSMSMMSSSSXMASMMMMSMMMAMAXSAMAMMMMSSSSSMASAMAMSAAAXMAXXAXMMMMSSMSMSM
AAAMASMMAMXXXAAAMAMXMMMMSSMMMMSXMAXSAAASAMMSSXMMXMASMSSMSMMXXMASXMMMXMAAAXMMAMAAMMAMAMAMAXMAMMAMMMMAMAMAAMAMXAAMXAMMAMMXMXMSMSSMXSXAMXMXAAAM
MAXSASAXAXMXSSMSSSXAXAAXAMSXMASAXAAMXMMMSMSAMAASXSASXMAXMAMMMMAMAAAXASXMSSMSSMMSMSAMAMAMSMSAMMMASXMASMSSXSAXMXMMXMASMSMSSXMAMXAXAXMXSAMMMMMS
ASAMMSXSMMSAAMXMAXMASXMSAMXSMAMAMMSMMSAMXMXAMMMMAMASMSMMXSMAAMASXMMSXMMSMMAAMMMMMXMSMSSMMASXMASASASAXMAMAXXMASMXMXAMAAAAXXSASMMMSSMMMASAAAXX
AMAMXXXMAAXMXMAMXMXMAMXSAMXSMMXAXXAAAAXXAAMXMASMSMXMMAXAAXSSSMASAAAXXSXSAMMMSMSMAAMXMAMAMAMAXAAASAMXSMSMSMAXMASASMMMSMMMSMMXSAXAAAXAMAMMSXSM
XSSMMAXMMMSMMSAMSAMXXMASAMXMAMASMSMSMMMSASAMXMXAXMSMSASMXMAXXMAMXMMSASASXMASXAAMSMSXMASXMMSSMSMXMXMXMMAAMSAMXXSMMAMXAAAXSAMASMMMSSSSSMSAMAAM
MAXAXXMASXXXASXSAMASXMXXAMXMAMMXAXMAAAASXXAAMXMAMAAMXAXAAMSMMSMSMSAXAMMMASMMMSMMMAXAMAAAMAAAAMXSAMSMSAMMMMXMAMMXMAXSMSSXSAMXMXXMAMXXAAMAMSMM
XMSMMMSAMXAMMSMAASXSMSMSSSXSASXMASXSSMXMASMMSAMAMSMSXMMSXSAAMAAAAAXMXMASASAAAXMASMMXMMSMMSXMMMAMXMAASMSAAXSSMXSASXXXXAXMXAMAMSSMSSSSMMMAMAXX
MXAXXXAMMMXMASMXMMAXAAAXAAAXASXMASAMXMAMAMXAMXMXXXMAMMAXMXMSSMSMMMMMSSMMASAMASMMMMXXXXAAXXAMMMMSMSMMMAMXSXMAAXSASMMSMSASXSMSMAAMAAMMAAMSSMMS
SSMXMSASASASMSAXSMSMSMSMMMMMMMMMXSXMASXMSSMSMSASMMMSMSASAMXXXAMXMAXXAAXMMMAMAXMAAMAMXSMSASAMXASAMASXMXMAMASMMMMAMXAAMAAMAXAXMAXMMSMSSMSMAMAA
XASAASAMMSASXXMMSAXMAXXXSAXAXAXMXMASXMXAXMAMAMASAASMAAXMXAMAMXMXSXXMSSMMASAMXSSSXSAMXXXMMMMMSXSAXAMXAMMMSXMAMXMMMMMSSMSMMMMMAXMXXAXMAMAMAMSM
SAAMMMAXMMAMMSXMMAMSMSMAMMSMXMSMXSAMMXMAXMXMXMAMMMMMMMMXXXAAMASXMXXMAMASXSASXAAAASMSAMXMXMSAMASAMSSSMXAASASAMMXXAASAMXAAAAAMXMMSAMSMSSSMMXXX
MMMMXSXMSMSMASMSMSMXXAMAMAXXASAXXMAMAXAMMSMMXMXSXSASXMAXSXSMSXXAMXXMASMMASXMMMAMXMASXSAMAMMASAMXMXAAAMMMSASMSXMSSSSXMMMSSSXSAMXAAMMAAAAASMMM
XMXSXXXXAAAMMSAXAMSSMSSMSXMAMSASXSSMSMSXAAASAMXMAAASMXSASAXXSASMMMMSXMXXMMAMXXMASMXMASMSAXSAMMSMMMSMXXXAMMMXAAXAMXMAMSAAAMASXSSSSMXSMSMMXAMX
MMAMMXMMMSMSXMMMSMMSMASAXMAXXMAMXAXAAAMMXSSMXSMSXMXMASMAMAMAMAMAAAAMAMXMXSAMMMSAMXMMAMMSAMMAMXAAXAMXSAMXSASMSMSAMXSAMMMMSMXMAXAXXMXMAXXMXSSS
AMASMAMSAXXXMASAXAAMMAMXMMSMMMXMAMMSMSMSMMMMAMAXMASMXXMSMMMAMMMSSMMMAMXAXSMXAAMAMSAMMSAMXXSMMSXSMXMAAXASMMAXMASAMXMSSSXMXXAMMMMMAXSMMMSAMXAM
XSAMXAASASMXMXMASMMSMXSAAMAMAAAXXMAXAMAXAMAAAMSMXAXAXAAXMASMMSAXXAASXMSSXSMSSMXAMSXXMXAXMASAAMAMXSMASXSAMXMSMXMAMSAXXAASMSXSAAAAMMMAAXMASMSM
MMMXXMXXAMXAMXMAMAMXAXSXXXAXMSMSAASMSMMMMSASMSXMMXMXMASMSMSAAMAMMMMSAAMMMSAAAMSMMMMMMSMMSASMMMAMASAMXMMMMAMXMASXMMMMMXMMAMXSMSSXSASMMSMMSAAX
SASAXSSXSMSSSXMSSSMMSMMASXMSAAAMXMXAAAXAXAAMMMAXSASXAXMAAXMMMMSSXMASMMMAAMMMXMAMMAAMMASXSAMXXMASXMXMAAAXSXSAMAMMMMSSSMXMAMXSAMAAMXMXMXMAMMMS
SAMMSXAAMAMXMASAAAMAMAXXMAAMMMMAMXMSSSMSSMSSXSMMMAAASMXSMMAMXAAMAMAMAXSMSSXAASASMMSMSASXMAMXSAMXAAXSXSXMAXSXSXSAMXAAXAASASXMAMMMMSMXAAMXSAMM
MAMXMMMMMSMASXMMSMMASXSMMXMXMXMASXMAAMMXSAAMAAXXMXMAXMMXMASMMMMSAMSSMMMAMMMSXSASAAMAMAMASXMXAAMXMMMSAMXMMXMASMSXMMMSMXMSAXMMXMAXAAASXSSMXASX
SASAMSAMXXSAMXSAMXSMMAAXAMXASXMXAMXMMAMAXMAMSMMXMASXSMMASXMASAAXAXMAAAMMMMAMASXSMMMAMAMXMAMMSMMSXMASAMXMSAMXMAMMSSMMAXMMMSASXSSMXXMAMXAXXAMX
SASAXMAMSXMXXMXASASMMMMMMASXSASMSMXMMXMASXXMAXSASMMXMASAMASAMMSMMMSAMSMSMMXSAMXXMAMMSXMAMAMAAAMAAMASAMMXAXSAMSMAAAXMSMXAAMAMAAXAASXMXSAMSSMX
MXMMMXSMSAAMSMSXMASXXAAMXXXAXAMAAXMASMMMSAASAMSMSASMSAMASXMASAXAXAXAMXMAAXAMAMMMXMSMAAXSXSSSMSAMAMAXAMAAMMSASMMMMXMMAAMXMMMMMMMSXMAXXMAMAMAM
SMMMAAMASMMMAASAMXMAXSSSXMMMMSMSMMSMMMAAMXMMMXSXSAMXMASXSASXMASXMXSSMXXSSMMSMMMSAMAMMSMXAAAAAAMXMMSSXMXAXAMXMAAAMSXSASMSXMAMAMXMASAMASMMASMA
SASMMSMAMMXMXSMMSAMXMXAXXMAXAXAXAAAAASMMSAMAMAMAMXMASMMASAMXMAMASMXMASXMAXXAAAASASMSAMAMSMMMMMMASAMXMSXMMSSMSSMXXAASAXAXXXASASMSAMXMXMXMASXS
MAMXAAMXMMAASMMXMAXMSMAMMSAMSSMMMMXSMSAASASASAMSMMSMSAMXMAMXMAXAMAXSASASXMSSMMXSXMXSXMAMAAAXXXSAMAMXXMAXSAAAXXSXMMXMAMSMMMMXXXAMMSMMAXAMXXMA
MXMAXXXAAMMXAAXSMSMAAMAMAAAMXAMSMSMAAMMMSMMMMMSMAXXXSXMAMAMXMAMSSSXMXSAMXAMMASMMXMAXXMXMSSMSMMMMSMMAMSXMMMSMMAASMSSMMXMASXSSSMXMAAMSSSXSXMAS
MSSSMASXSMSXSAMXAAAMXMAXSMXXMAMMAASMMMAAXMXMAMAMMMMXMASMSXSAMAMXAAXMAMMMMXMSAMAMXMASMSAMXMAAMSAAAAMXMASMAMAAMXMAMAAASMMSMMAAMXXMMXMAAMASXAXX
AAAAAMAXMAAMXASMSMSAASMMXXMMMAMMXMXXAMMSAMXSXSSXMAXMSAXMAAMMMAXMMMMMAMMAXSAMXXASAMXSAAASAMMMSSMSSSMASXXMASXSMMXSXSMMMAMXAMMMMMASAMMMSMAMMSMM
MMSMMXMXMMMXASMAMAXAMAMXMAAXMMMAXSMSXSAMXMAMAXMASXSAMXMMMXMXSSXSAMMSSSSMXSMSMSASAXXMAMXMASAMXXXMAMXAMSXSMSAMXMAMAMASMMMSAMXAAXMMAXAXXMASAAAX
XMXAMXXMMASXMAMXMAMAXMSXSSSMASMMSAAAAMXMAMASMSMAMSAMXMXSAXSAXMASASAAMAAMXXAAAMMXAMSASXASAMAMXMMMMMMAXXMAAMXMAMAXASAXAAAMASMSXSMSAMMXMSAMXSMM
SXSXMXMASASAMXSMMASXMMSAAAAXAMAMXMMMSMSSMSAMMAMMSXMXAMASASMAMMXMAMMSMSASMSMMSMSMAMSAMMAMASXMMAAAAMXMSMAMXMASXSMSASMXMMASAMXAASAMXXSAXMASAMMM
XXXXXMAMMASMMAAASXSAAAMMMMMMMSAMAXMXMXMAMMAXXAMXSMMSMSAMMMMASMMMAMXXAMAAAAXAXAXSMMMAMAXSXMAXMXSSSMSAAMXSAMXAAAAMMMXMMSXMXMMMMMAMAAMAMXMMMSAX
SAMMMSXMMAMMSSSXMMSXMMSXMASXXSAXSXSAMASXMSAMSMSMSAXAXMMSXMMAAAAMMSSXAMSMSMSMMAMASXSAMSMMASMMSAAAAAMSMMMSMSMMMMSMAAAXXMAMAMSXSXXMMXSASAMMXSMM
MAMXAAAMSMMMAXMAXAMAXAXMMASMASAMXAMMSMMMXMMXAMAXXSMMMSXSAXMSSSMSAXXMAMXAAAAMXXAMMMMAXMAXAMXAMMSMMMMASAAXMAMXSAMXMMMXAMAMAXSASMXXAAMAXASXMXAA
SAMMMSAMAAMMMSSSMMMAMSSSMAXMAMMMMAMXSMAMAMXSASMSMMXSAXAMXMXAMMAMXSMXMMMSMSMSASMXXAXSMSSMSSMXSXMASXSASMSMMSSXMASXSAAASXMSMSMAMAMMMMSSSMMASXMM
SASAAXXSSSMAXMAMASMAMAAMMSSMASMSSMMMMMAMAXAXXMAMAAAMMMSMMMMMSMAMSXMASXAMAMXMXMSASXSMAXMMAAMXAMSMMMMMSAMAXXXMXAMAMMSMXAMXXAMMMMXAMXAXAXSXMASM
SMSMMSAMAXMMMMAMAMXSMMMMAXAMASAAMXAAMSMSXSASXSSSMMSXSAAXAMAMAXAXMASASMMMMMAMMMMXMMAMSMXMMSMSMMAMAMSAMXSMXMAMAAMXXAAXXAMSSSMXAXXXSMXSMMMASAMX
MXXAXXXMMMSMMSXMASAMAXXMMSAMXMMSMSSMXAAAAMXMAAXAXAXXMMMXMSASMSMXSAMXXXXAXSASAAXMASAMXMMXXAXXXMASASMXSAMMASAMSXMSMMSMSAMXAXAMSMSAXMAMMASMMSMX
MSMSMMMMXXXAAMASAMMSAMSAMXAXXAXAAMAMSMMSSMSMMSSSMSSMMMSAASXSXAXAMXSMSMSMMSASMXMMAMAMXAASXMMXSMMSXSXAMAXSAMAXMAMSAAAMMMSXSMXMAAMMMMSMSXSXAAXX
XAAAXAAAXMXMMXAMASXXXSSXMMMMMSSMSMAMAXAAAAXAXAAAAAXAAAMMMMMSMMSMXMAAAAAMXMMMASXSSSSMMMMXAASXSAASASMXMSMMASMMSSMSSMXSAAAAXXSMMMMXAAAMAMXMSSMM
SMSMMSSXSASXMMSMMMMSSXMASAMXMAAMMMMSXMSSSMSMMMSMMSMMMSSMSMAXMMAMASMSMSMSASXMMMAAAAMXMASMSMMASMMMMMAAXXASAMAAXXAMMMMSMSMMSAMXSSXSMSSXMAAMMMAM
XMAMXXXMAMAASAMAAAAMAXXAMASAMSSMASMMAXMAMXSMSMXXAXASAAMXAMSSMMAXMMAAAAASAXAAXMMMMAMSXAXXXAMXMXAAMXSMMSAMXMMMSMMMAAMXMMMXMAMASMAXXAMAXSXSXSAM
XMAMMMASMMMXMASXSMSSMMMSSMSMXMMMMSASXMMMMMXAAAXMAXAMXXSMMMMAMSSSSMSMSMXMSMSMMMXMMXAXMASMSMMAMSSSSMAMAXMXSXMASASMSXSAXMAXSAMXSMMMSSSMMMMMMSAS
AMSSMSAMXSXMMAMAXMAXAAAAAAMXAAASMSMMXSAMAAMSMSSSSMAMSXSASXMAMXMAXAAMXMXAAMAMXMAXSMXSAMAAAASXMAAMXXAMSMSAXAMAMMMMAASMSMXMMAMAMAAAAMAXAMASAMXX
XAAAXMASAAAXMSXMXMASXMSMMMMMSXMXAMXAXMASASAXAXAAAXSMMASAMASMSMMAMMMMASMMMXAXAMXMXAAAMAMXMXSMMMSMMMMMXAMXSSMAMAAXMMMMAMAMXMMASMMMSSSMXSASXXXA
XSMSMSAMXSSMSMSMAMASAAMXSAXXMMSSXMMSMSAMAMMMSMMMMSMAMAMAMMMXAMMXSXXSASAMSSSSSSSXMMMSMXMXMAMASAMXAASAMAMAXXSAMSSSXMASMSXSAMSAMAAMAAASXMASXMSS
XMAXAMXMXAMXAAAMSMMMMMSASAMAAAAAAXXAAXAMXMXAMAMXXAXAMMSXXMXMAMSAMXXMAMAMAAXAAAXAMXAXAMMSMASASMXSXXXAXMMSSMMXXAAXMMMMAAAXAMMASMMMMSSMMMAMAMAA
MMAMAMXSXMXSMMSAMAXXSSMASMSSMMSSMMMMSMSSSMMMSMMMSMMSAMXMXMMSMSXSXMASXSSMMMMMMMMSAMXSMSAAMMMXSAXSSSSSMXAAXMAMMMMMMASMMMSXSMSAMMAXAMAAAMASMMMA
ASAXAMXXAMMXMMXASAMXMAMAMXAAXAAAMAMAAAXAAXAXAXAMAAXMXSAMAXMAMXAXSAXMAXXAXXAAXXAXAMXXAMMSSSMMMXMXAXAMXMMSMMSMSAMASASAMAMAMXMAXSSMMMMMMSASXMXM
MSMSXXASMMAAMAMXMXXXXXMAXMXSMMSMSAXSXSMXMSSSMXSSMXMAAXASAMSMSMSMXMSMSMSXMASMSMASMMXMMMAMAAASXSMMXMXMSMAAAXAMXASMSASMMAXMASMSMAAASMSSXMXXAMMX
ASAAAXXMAMXSSSXXXMMSMXXXSSXXXXMMSAXMAMXMXXMAMAXAMXSMMSAMMMXXXAMSMASAMXAXAXMAAXMXMASAXMXSSSXMAMMAASMMMMSSSMASXXMMMAMXMASMXMAMMSMMSAAMXMAXSMSX
MMMMSAMMAXXAAASMASASXAXSAMXSSSMMMSAMXSXSMMMSMMSAMAAAMMXMMAMSMSAAMMMAMAMXSXMSAMXMXMAMMXXMAMMMSMASXXAAXXAAXMAMXXSAMXMAMSMMAMXMAXMAMMMMAMMSMAMX
XAXAXMASASMMMMAMAMSMMMMSAMASASXXAMXSAMMAAMAAMXSAMMMSMAXXMAMXAMXMSXSAMAXAXXMASMXMAMAXSXSMMMAMAXMXASXMMMMMMSSMMMSXSAMAXMASXMAMXSMSSMXSXXMAMAMM
SAMXSXMMASXSXXMMSMXXASASXMXMAMXMMMXMASMSMMXMSASAMXXAAXMXSSSMXMMSMMSMSAMXAXMAMMMSSSSMXAAXXSSSMXXMMMAAXAAXMAMAAAMXSASMXSAMMSMSMAAAAXAMMSSXSMSS
MXMASMSMMMAXMXXXMASMMMMSAMXMAMMSAMMMXMAMASXSMASMSSXMASMXXAAXAXXAAMXMXXXXSAMASAAMXAAMMMMXXXMAXSMSXSSMMSASMASMSMSAXAMXMMASAAXAASMSSMXSAXMASAAM
MAMMMXAAXMSMSMSXMAMAAXXSXMASAXASASAAMMMMAMMAMXMAMXAXMAMMMSMMMMSSSMAMMSMMAMSASMSSMSMMXAXMMMSMMSAAAAXAXXAXXMMAAAMAMSSSXMSMMXSMXMAMXAXMAMMSSMMS
SXSSSSSSMAMAAXSAMXSSMMMMXSAXMMXXAMMAAAAMASAMSSMXMSXMMMAXMAXAAAXMAXASMSXAAXMMSAAXAAAMSMMASASAAXXXSMMMMMSMSMMSMMMAMAAAAMMAXMAXAMAMMMMXMAMAMAAX
AAAAAAAAMAMSMMSAMAMXMXMXAMSMSXSMXMXMSXMSAXMXAAXMMSMSXMMXSASXXMMSAMXXXMASXSXAMMMSSSSMXAASMASMMSMMAXXAAXAAXXAMAXSXSMSMMMMAMSAMMSXMAXSSMMSASMMS
MMMAMMMSMMMXSAMAMASAMAMMMSXXSAAMXMAXAXMMMSMMSSMMMMAMAASXSASMMSAMXSMMAXXMASMMSMAXAMXMSAMMMAMASAXSAMSMSSMSMMMSMMSXMAXXXXMAMXMMXAMMSMXAAXSAMMSM
XXAMXXXMAXSSMMSSMXSASASASAMAMSMMASASMMMAMXXAAAXSAMAMSMAAMSMAAMASAAASASAMXMASAMMSSMAMXMASMXSMMAMSAMXAAMMAASAAAAMAXSSMMMSASAMXXXSAMSSMMMMAMMXM
MSMMMMMXSMMAAMAMSAXMMMMXSAMSMMMSMAASXAMSMMMSSMMSXSAMAMMXMAXMMMAMXSMMMXXMASXSASAAAMXMAXSXSAAXMXMXMXMMMSSSSMASMMMMMXAXAAMXSASMSMMMSAXAASXMMMAX
XAASMMSAAASXMMAXMMMMSSMMSXMAAAMAAMAMXXXMASAMAXAXMMMSASXMMMSMSMMMAXAXXMASASXSMMMXSMSSSMMAMXMSXMMMMMXAXXXMAMAMASAASMMMSSSMSMMAMAASMMSSXXAAMXMX
MSSMAAMSSMMXXSMXSXSAAAXAMMMMXMMMSMSXSMMSAMASXMSSMSXSMMAMAMSASXSMSSSMXSAMASMSMAXMAAAAAAMMMMXMAMSAAAXMMMMSMMMSAMAMXAAAAXAASXMSMSMSXMAXAMSMMASM
AXMAMMMXMASXMASASAAMSXMAXSASMSSXXAXMMAAMASAMAAAAXSASXSXMAMMAMMSAAAAAXMAMSMMXSASXMMMSMSMAAXAXXMAXSXMAAAAAXAXMMMSSSSMMSSMMMAXMAXAXXMASMMXAMAXA
MMAAMXMAMAXXSASMMSMXMXSXMMAXAAAXMSXAMMMMMMMMMMMSMMAMASMSSMMSMAMXMXMXMMAMMASMMMMXAAAXXMXSSSSSMXMMMASMSSSSSMSAMXMAAXAMXXAASXMMMMSMMSAMXASXMXSS
AMSMSXSAMXSMMASXAAXAAAXSXMSMMMMXXXMSXSMXSASXAMXMXMAMAMMMMAXAXMMMMSMSSSSXSAMAAXXSSMSSMSMMAAXXXASMMAMAAAAXAMSAMXMMMMXXASXMSMSXMAXSAMXSMMSASAAM
SMAAXASXSAAAMXMMMSMMMMSMSAMXXAXMMXAXAMXXMAMMMMAMASAMASAAXMMMMXMAMAMAAAAAMMMSMMAMAAAAMAAMMMMMSMSAMXMMMMMSMMSXMXAAAMMMMSASMMAXMASMXSAMXXSAMMSM
ASMMMMMAMMSMMASMAAAXXXAMSMSSSMXMAMSMMMSSMAMAAMXSASASASMSSXSXAASMSMSSMMMMMXXASXMSSMMSSSMMXXAASXSAMXXXAXXXAAXAMMSMSAAMXMMXAASMSMMAAMXSAXMASXMA
MAMSSXMAMXXAMAXMMSSMAMXXXAXMAMAMXAXAAAAAXAMMXXXMAMAMAXAMMAMASXMAAXAXSXXXAXMAXSAAXXAXAAASMMSXSASXSSXSMSMSMMXAMXAAXXMXAMXSSMMMAAMMMSXMMXSSMASX
XMSAAMSMSSSSMSMSAAAXXSMMMSMXAMMSMAMSMMSSSMSMSAMXSMSMSMASMMMAMMMSMMMSXSMMSSMMMMMMSMMMMSMMAAXAMAMAMAASAAXMAXSASXXSMAMSMMAAAASXSSMMMSAXAASASAMM
SXMMSMAAAAAMAAAMMSMMSXAAAAASMSAXMAMAAMAAAAAASMAAXAXAXSAMAAMASXXMASXSAMXAAAAAXXSAMXSAMXXMMMMAMAMAMMSMSMMSAMSAMAXXMXMASMXSSMMMXAAAASMMMSSMMMSA
XXXXXXMSMMMMMMSMXAXMASXMSXMAAMMSSMSSSMXSMMMMMMSAMSMMMMMSSMSXSASXMMSMAMMMSSMMAMXXMASXSAXMAMSXSXSXSXXMAMXMXXMMMAMXAXMAMSAAXMXMASXMMSXXMAMXXMAX

47
5-1.rb Executable file
View file

@ -0,0 +1,47 @@
#!/usr/bin/env ruby
problem = 5
input = File.readlines("#{problem}.input").map(&:strip)
#input = DATA.read.split("\n")
split = input.index("")
rules = input[0...split].map { _1.split("|").map(&:to_i) }
page_sets = input[split+1..].map { _1.split(",").map(&:to_i) }
result = page_sets.select do |page_set|
rules
.select { |a| (page_set & a).sort == a.sort }
.all? { |(a, b)| page_set.index(a) < page_set.index(b) }
end.map { _1[_1.size / 2] }.sum
p result
__END__
47|53
97|13
97|61
97|47
75|29
61|13
75|53
29|13
97|29
53|29
61|53
97|53
61|29
47|13
75|47
97|75
47|61
75|61
47|29
75|13
53|13
75,47,61,53,29
97,61,53,29,13
75,29,13
75,97,47,61,53
61,13,29
97,13,75,29,47

61
5-2.rb Executable file
View file

@ -0,0 +1,61 @@
#!/usr/bin/env ruby
problem = 5
input = File.readlines("#{problem}.input").map(&:strip)
#input = DATA.read.split("\n")
split = input.index("")
rules = input[0...split].map { _1.split("|").map(&:to_i) }
page_sets = input[split+1..].map { _1.split(",").map(&:to_i) }
result = page_sets.select do |page_set|
rules
.select { |a| (page_set & a).sort == a.sort }
.any? { |(a, b)| page_set.index(a) > page_set.index(b) }
end.map do |page_set|
matched_rules = rules
.select { |a| (page_set & a).sort == a.sort }
.reduce(Hash.new { |h, k| h[k] = Array.new }) { |a, (k, v)| a[k] << v; a }
page_set.sort do |a, b|
if matched_rules[a].include?(b)
-1
elsif matched_rules[b].include?(a)
1
else
0
end
end
end.map { _1[_1.size / 2] }.sum
p result
__END__
47|53
97|13
97|61
97|47
75|29
61|13
75|53
29|13
97|29
53|29
61|53
97|53
61|29
47|13
75|47
97|75
47|61
75|61
47|29
75|13
53|13
75,47,61,53,29
97,61,53,29,13
75,29,13
75,97,47,61,53
61,13,29
97,13,75,29,47

1351
5.input Normal file

File diff suppressed because it is too large Load diff

130
6.input Normal file
View file

@ -0,0 +1,130 @@
....#.......#.............#..##...................#..#..#..................................#....#.................................
................................#..#.............##.....#....#....................#.............................................#.
.#....#.........................................................................................#.#...............................
.......#.......#..................#........#..................................#...............#...........#.......................
..#......................#.....#...........#..........................................................................#...........
.#.............#.............#....#...............#..#................................................#..........#................
.#............................................#........#........................................#...............................#.
...............#...........#....#............................................#.......#...................................#........
.#.........................#................#.........#..##.....#........................................#........................
.........#...#......#..................#...........................................................#...#..............#...........
..................#..#....................#...................#.....................#......#....#...........#..#.........#........
.........................................................................................#..........#.............................
...........#...........#.....#..................#....................#............................................................
........#...........................................#............#...........................#.........................#..........
....##....##..............................#.................................................................#....#....#.......#...
..#............#.........##....................................................#.....................#.....................#......
......#.......#.##.......##...........................................#........#................#.................................
..#...#.........................................#....................#.....#........#....#......#......#................#.........
.#...................##............................................................#....................#.......................#.
......#....#.....#............#............#.................................................#..#.......#..........#..............
...............#....#.........#.............................................................................................#.....
...........#..........................#..............................................#.........#...............#..#..............#
...........#...#.................#........................................#...................#....#..............................
........#................................#...........................................................#.......#....................
...........#....................#.....#.........................................................#..............#....#...#.........
..........#........................................................#..............#..............................#................
..............................##...........................................#.....................................................#
...#..#........................................................................................................#........#.....##..
.......#........#........#.#.....................#................................................#.......................#...#...
...............#.......................................................................#.........#......#.#.##....................
......#..................#.....#..................#..#..................#.................#..#.....#...................#....#.....
.....#........#.............#....#...............................#.................#..............................................
....................................................#.......#......................................#....#.........................
...#.............#...............#.............#......#.#..............#......#.............#.....................................
..............#..................#............................................#..#.........................#......................
.............#............#........#........................................#.....................................................
...#.........#.............#.........#............#..........................................#................#...#...............
...........#.................#...................................................................#................................
...#..............................................................................................................#...............
..........#...............#...#......#...............##..............................................#....#...................#...
.........................................#...................................................#..#.....................#...........
......#..#.........#....................................#....................#..........#......#..................................
........#.........................................#................#.#.......#.......................#............#..............#
..........................#...............#....................#.............................#..............#.....................
..........................#...........#............................................#....#...#.....................................
...........#........#..........#..............................................................#...##......#.......#......#........
....#..........#...#...................##..........#.........................................#....#...............................
...............................................................#................................................#..........#......
................................................................................................................#.....#...........
...#.....................#......................................................................#....................#............
......................##...........#.......#.......#.......................................#......................................
......#......#........#....................................................................................#......................
.......#......................#.........................................................#.......#.................................
...............#..........#...#.#..........#.....#..............##.......#.....#....................................#.............
.......##....................................................................................#.#...#..........................#...
......#.............#.#.........................#....#......#......#...............#.........#..#.................................
.........................#........#.........................#....#..................#.................#............#......#.#.....
............#............#......................#.#................##........#....................................................
......#..............................#...........#.......#........#.................#.............................................
............................................#.....................................................#.................#...#.........
.................#.......................................#..................##...#..............................#......#.......#..
.#..#................#.#......................................#..........#..........#...........................#.......#.........
.........................................................................#.....##.............................#.............#.....
.#.......................#.....................#....##....#........................................#..............................
......#...........................................##..........#......#.........................#..#..........#....#...#...........
........#.#....................................................................................#..................................
..........#..............................#.....#......#.........#............................#........................#...........
....................#................................................................#...............................#........#...
....................................#.......#...................................##.........................#......................
.....................#.....................................#.........#..........................#.................................
.......#.................................#.....................#........................................#....................#....
......................................................................#.....#........................#.......................#....
..#............................#..................#...#.........#..........#..#.........................................#.#.......
....#............................................................................#.............................#..#.....#.........
......#..................................#.............................................................................#.........#
....#......................................................................#................#.....#...........................#...
.............#.........................#.#....................#........................#......................................#...
....#......................................................................#...#..................#..........#....#...............
.......#....#.#..#..#....#........#.....................................................#..................#..#...................
#..............#....................................#.......................................#.....................#...........#...
#.........#....#..#.........#.................#..................#.#..............................##......................#.......
................#.........#......................................................................................................#
...............................#.........#.................................................................#.....#.#..............
..........#................#.............................#.............#.......#..........................................#.......
.....#.........#........#..............#.......................................#.........^........................................
........................#................#........#.......................................#............................#...#......
......#.....#.......#.................................................#...............#.....#.....................................
..................................................#......#.....................................#....#....#.##....................#
.........................................................................#...#..............#...............#.....................
..........#.................#...................#.........................................................................#....#..
...........#.....................#.....#.......................................#....................#............#........#.......
......................#...........#........................................................................................#......
..........#.......#.................................................................................#.......#.....................
........#.....................................#..................................................##...............................
.......#................................#.........#..#..................................................................#.........
...........#...................##.............#...............................#..........#....................#.....#...#.........
....................................##..#..........................................#..............................................
...............#..#............#..............................#.#.#........#......#...............................................
..#..................................#....#.......................................................................................
........................#.................##.........#......................#........................#.#.#........................
.......................................#.##....................................................................#..................
..................................##............#..............................................................................#..
..#.................................................#.....................................................................#.......
................#..#..#...#.........#...#.................................................................#.....................##
.....#......................#...........#.............#...........................................................................
........#.....................#..............................................#................#..............................#....
........#.............#.........................#.............................................#................#..........#......#
#........#...................................#....#......#...............................#........................................
...........#........#..................................................#.............#..........................#.............#...
....................#..#.#.................................................#.#...........#................................#.#.....
.......................#...................................................#....................................................#.
......#......................................#..........##.......................#...........#.........#..........................
.......#..................#..................#......................#............................#.............#...#..............
.....................................................................................#........#................#.........#........
............................#..............................................................#.....#........#......#................
..#..........................#.........#.................#...........#...#....#........................#.......#.............#....
.#.....#.....#.....................#........#...............#............#.##........#..................................#.........
............#.#..................................#..#.........#.................#............................#........#.....#.....
............#.........................#..................................#........................................................
....................#................#...........#..........................................................................#.....
....................#.....................................................#.........#......#...........#...#.#..................#.
........#..........#.......................................#...............#....#............#.....................#..............
.......#...#......#...................#.......#..........................#.........................#...................#..........
.#............#....###...............###................................#.............................#...........................
.............................#.......#..............................#.#.........................................#..#..............
...............#.........#...................#...................................#..#..................#..........................
........#.......#..#..................#........................................................................#...............#..
.#.............#.....................#........#..........................#.........#..........................#...........#.......
.....#.............#.....#..........#.....#.............#............#.............................#..........................#...
...................#.......................#......#.#..............#..###.....#......................#...........#.......#.#......

104
6.rb Executable file
View file

@ -0,0 +1,104 @@
#!/usr/bin/env ruby
problem = 6
input = File.readlines("#{problem}.input").map(&:strip).map(&:chars)
#input = DATA.read.split("\n").map(&:chars)
DIRECTIONS = ["^", ">", "v", "<"]
def find_start(input)
input.each_with_index do |row, x|
y = row.index { DIRECTIONS.include?(_1) }
return [x,y] unless y.nil?
end
end
def movement(direction)
[[-1, 0], [0, 1], [1, 0], [0, -1]][direction]
end
def out_of_bounds?(input, location)
location.first >= input.size ||
location.last >= input.first.size ||
location.first < 0 ||
location.last < 0
end
def obstructed?(input, location)
["O", "#"].include?(input[location.first][location.last])
end
def traverse(input, starting_location, starting_direction)
location = starting_location.dup
direction = starting_direction.dup
visited = Hash.new { |h, k| h[k] = 0 }
while
visited[location] += 1
next_location = []
loop do
movement = movement(direction)
next_location = [
location.first + movement.first,
location.last + movement.last
]
break if out_of_bounds?(input, next_location)
break unless obstructed?(input, next_location)
direction = (direction + 1) % 4
end
if out_of_bounds?(input, next_location)
return visited.keys
elsif visited[location] > 5
return :loop
else
location = next_location
end
end
end
def find_obstructions(input, nodes, start_location, start_direction)
last_value = "."
nodes.select.with_index do |node, i|
# undo last mark
if i > 0
last_location = nodes[i - 1]
input[last_location.first][last_location.last] = last_value
end
# mark node a barrier
last_value = input[node.first][node.last]
input[node.first][node.last] = "O"
# traverse
traverse(input, start_location, start_direction) == :loop
end
end
path = []
location = find_start(input)
direction = DIRECTIONS.index(input[location.first][location.last])
visited = traverse(input, location, direction)
start = Time.now
result_2 = find_obstructions(input, visited, location, direction)
finish = Time.now
puts "Finished in #{finish - start}"
result_1 = visited.uniq.size
p result_1
p result_2.uniq.size
__END__
....#.....
.........#
..........
..#.......
.......#..
..........
.#..^.....
........#.
#.........
......#...

45
7-1.rb Executable file
View file

@ -0,0 +1,45 @@
#!/usr/bin/env ruby
problem = 7
input = File.readlines("#{problem}.input").map(&:strip)
#input = DATA.read.split("\n")
.map do |line|
solution, expression = line.split(": ")
[
solution.to_i,
expression.split(" ").map { _1.strip.to_i }
]
end
OPERATIONS = [:+, :*]
def solve(equation)
equation[1..].each_slice(2).to_a
.reduce(equation[0]) do |acc, (operation, number)|
acc = acc.public_send(operation, number); acc
end
end
def possibilities(solution, numbers)
OPERATIONS.repeated_permutation(numbers.size - 1)
.map { numbers.zip(_1).flatten.compact }
.any? { solve(_1) == solution }
end
result = input
.select { possibilities(_1.first, _1.last) }
.map { _1.first }
.sum
p result
__END__
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

51
7-2.rb Executable file
View file

@ -0,0 +1,51 @@
#!/usr/bin/env ruby
class Integer
define_method(:"||") do |v|
to_s.concat(v.to_s).to_i
end
end
problem = 7
input = File.readlines("#{problem}.input").map(&:strip)
#input = DATA.read.split("\n")
.map do |line|
solution, expression = line.split(": ")
[
solution.to_i,
expression.split(" ").map { _1.strip.to_i }
]
end
OPERATIONS = [:+, :*, :"||"]
def solve(equation)
equation[1..].each_slice(2).to_a
.reduce(equation[0]) do |acc, (operation, number)|
acc = acc.public_send(operation, number); acc
end
end
def possibilities(solution, numbers)
OPERATIONS.repeated_permutation(numbers.size - 1)
.map { numbers.zip(_1).flatten.compact }
.any? { solve(_1) == solution }
end
result = input
.select { possibilities(_1.first, _1.last) }
.map { _1.first }
.sum
p result
__END__
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

850
7.input Normal file
View file

@ -0,0 +1,850 @@
426048: 425 608 69 88 1 282
1234: 8 53 21 2 611 1 538
3493064: 42 823 101 932 966
7851123: 81 52 937 7 9
109137611815: 9 4 9 1 9 5 13 97 18 1 4
143516213: 2 906 6 5 12 22 578 3 3
629453: 7 492 3 28 6 6 9 104
5423661: 5 2 8 8 91 4 6 7 3 40 8 6
18682395: 93 37 3 1 431 765 2
556488358421: 794 98 33 6 917 7
14604120: 89 13 65 703 17
51347: 24 9 908 8 9 3 6 36 41 6
1200264: 1 324 69 614 9 34 52
84467: 99 1 694 50 64
832680: 3 58 68 45 3
13238: 4 3 58 9 652
1505251: 3 24 97 1 29 669 5
28869324: 99 749 1 46 74
125890: 6 894 7 6 87 9 2
265251: 8 9 8 87 251
928664914: 4 7 6 8 664 8 2 9 1
103228624: 7 2 73 7 94 91 95 26
5765376: 442 85 4 41 8 742 8 4 8
101551004: 2 78 991 38 75 8 4
11531: 4 42 589 122 1
230639: 88 6 3 722 3 9 1
533796498: 66 80 3 2 101 4 5 2 501
8494148: 32 35 79 2 8 3 30 2 8
222246692: 23 41 13 94 970 689
9841934: 2 998 419 815 5 809
2186556: 51 9 9 660 4 2 9 8 69 7 3
11207789126: 1 9 425 1 68 5 9 2 293 9
33355203: 7 199 5 84 119 57
60424: 989 61 79 8 8
651253: 3 4 904 8 2 8 72 87 493
2099106644: 277 842 9 624 22
29145931: 3 6 15 3 7 9 70 6 1 1 6 5
63140: 8 79 61 77 82
720845730: 9 3 43 1 53 45 650 81
3030: 45 57 85 280 5 94
64316066: 7 6 7 422 14 953 37 4 2
31898201: 77 74 3 622 3 797
99024982725: 48 77 1 3 47 8 1 30 846
3086415: 5 139 1 6 1 8 2 24 2 3 6 9
1604915280: 2 7 652 74 321 7 18 4
1040: 316 22 7 3 4
792201: 748 7 22 488 99 493 4
1449102: 23 525 6 4 4 5 82
6672: 8 1 563 7 9 593 863 1 4
641235: 18 5 76 3 87 8 8 93 15
836: 399 2 31 7
2589888404878: 4 8 94 21 41 40 4 8 77
79158297957: 221 570 58 29 795 6
94656: 64 547 254 223 87
158670130: 2 9 3 4 32 2 645 2 6 5
1172900: 5 624 9 5 3 69 38
18570144924: 6 3 570 144 926
11809188: 63 26 801 77 7 9 90
17569711116: 9 9 2 2 156 793 3 109 4
72864: 8 2 3 1 5 3 99 8 4 72
30090677155977: 38 89 11 5 217 41 9 79
54186: 5 418 6
536456640: 1 53 273 27 3 1 35 52
1324: 568 47 2 45 5 2 40
255466537: 98 49 133 4 82 56
108593: 440 931 5 635 54
274562: 18 4 88 12 3
2310: 168 125 6 551 1
158226796: 4 2 1 71 56 18 67
227860: 632 36 2 68 5
254276307: 211 927 13 62 57 90
969151: 96 75 1 79 6 608 1 856
1381920960: 329 7 7 6 4 3 5 51 5 4 3 8
57750433: 466 22 1 43 6 1 131
2039463: 8 532 4 2 2 4 3 59 245 1
924: 4 2 42 57 2 23
984: 9 5 1 3 4
3490: 32 9 8 5 7 7 18
764789: 47 91 3 83 341 2 942 4
8761312983: 1 5 1 645 2 56 981
49375245: 46 16 94 4 67
1371731088: 258 80 58 98 119 1 6
1691074: 3 653 36 8 2 4 61 153
237984: 3 60 942 4 84 514
8487: 3 836 6 3 7
1302665: 8 327 850 4 8 848 637
338504789434: 9 7 96 4 27 58 1 7 7 431
4375: 5 320 13 87 62
39114592: 24 74 32 3 53 53 8 58 9
55211: 1 2 5 261 3 6 6 3 873 6 5
3930310: 6 727 89 883 77
105416741: 8 6 2 7 830 2 7 81 29 72
1864306: 752 37 67 22 76
10308245: 460 6 22 56 243
8724688: 61 143 1 688
802716549428: 81 991 6 5 494 30
4542460: 5 11 52 818 924
3187936924: 8 9 54 879 356
63545: 1 459 7 429 71
117919: 9 76 202 28 91 1
3743973: 74 82 5 41 5 269
861952: 57 558 68 7 2
3334911: 668 16 39 8 255
66798536: 27 9 931 6 92 65 3 3
8653262: 4 82 5 326 2
658062508: 5 97 94 2 5 6 9 3 55 6 7
22128516: 111 222 898
1200278: 40 5 6 269 1 8
8492254: 465 206 452 28 74 6
3976640: 97 49 2 8 340
6598260668: 7 20 3 459 9 9 9 66 8
349711968: 699 417 1 4 1 9 50 4 4 8
4360998090: 46 474 98 40 5 9 586 2
38968452095: 4 8 59 12 7 172 6 592
7435934408: 521 8 34 8 32 2 2 2 7 79
3601746: 772 4 711 1 61 7
1037835487: 2 33 58 143 836 7
5238563720270: 5 238 5 5 4 9 720 27 2 5
73195290: 1 5 3 442 4 46 2 7 74 9
39219: 7 612 3 676 2 9 5 58 3 3
171333389699: 63 45 681 1 9 868 3 96
5938: 5 554 315 59 8
26921: 93 28 3 36 843
462492: 370 38 563 73 443
372492502: 9 1 521 5 407
252499564: 6 1 676 72 5 91 736 44
9089304: 8 405 786 1 28
22290929687: 18 8 255 512 849
496884960: 62 9 691 5 3 52 2 418 1
52469758: 7 21 96 244 80
1915494: 72 667 81 32 1 5
9240: 10 4 9 8 48 21
1229174: 39 965 1 6 16 2 676 73
63520233: 629 6 20 20 2 31
40053664: 520 36 298 72 207
31513519: 5 63 13 52 1
73259497328: 105 380 5 4 81 92 2 82
380149: 5 2 9 59 84 52
3532752: 75 6 40 8 7 9 1 4 7 7 48
735865836: 2 63 65 3 220 42 58
1036899: 1 972 63 89 6
119723575: 885 89 2 8 95 775
3394585738: 1 14 571 49 3 218 264
43184: 9 47 91 47 18 728
49179361: 3 2 358 1 27 7 8 5 1 35 1
60589: 51 9 55 8 31
3853: 376 9 454 6 9
97218628: 727 238 7 1 5 3 562 67
573: 3 18 8 47 306
2673281: 37 17 850 5 31
2519097323: 4 4 5 97 433 8 9 95 142
6282472: 46 1 691 942 3 472
1997842: 25 474 46 4 4
21463827009: 6 23 2 74 68 7 1 540 5 6
52876: 55 96 7 3 3
5458: 97 56 11 8 8
306: 4 93 5 1 3
2246440404358: 35 2 97 944 68 53 358
2156122429948: 627 6 8 625 3 796 3 1 9
705471450: 257 448 47 1 450
12086441200083: 60 4 322 5 3 8 5 5 20 86
95185977895: 98 5 36 209 966
66643: 1 3 7 1 6 43
243331: 233 9 57 6 756
12661228256: 590 33 4 6 7 5 4 774 8 4
1100: 141 1 952 1 5
10510801045: 69 2 2 9 86 5 9 1 76 28 3
9888464534: 77 6 246 98 7 74 967 5
361718875114: 2 97 4 725 12 1 5 186 6
106512316: 40 7 2 8 449 818 536
7588010: 64 694 772 1 291
991: 23 4 7 1
417: 6 45 7 75 65
15920852: 55 93 8 8 3 3 5 8 5 7 8 9
699: 4 8 55 43 589
35097279829: 4 6 2 2 7 9 58 9 5 7 982 9
108684: 5 6 2 62 283 1 6 4 9 2 1 6
35276: 28 575 4 57 677
8895075: 5 175 18 8 8 171
40618: 7 219 38 7 558 54 46
55909321: 4 4 4 6 3 2 41 705 8 3
176390408: 496 6 61 6 8 3 64 5 2 5
407788355: 40 778 7 603 3 747
102608197: 81 5 348 5 7 26 1 4 237
8020532: 9 9 9 1 969 8 4 5 8 884
2581035: 66 5 388 83 7
802185122: 561 993 4 360
3277848705: 9 6 53 9 95 6 7 11 7 6
134464957445: 1 493 1 9 495 74 44
229748861160: 67 46 3 205 234 518
2940111322: 37 12 917 589 22
18670960793: 9 6 5 3 9 8 261 3 1 46 4
1142150721: 5 16 55 5 212 5 5 2 18 3
22196443505: 815 786 45 77 4 1
573211: 2 377 7 24 18 9
4843: 3 6 9 44 4 82 8
302249666485: 3 194 57 134 54 717
662063: 5 3 2 1 624
132572: 6 8 36 82 57 2
3864582: 2 3 24 7 582
1690: 102 691 4 128 765
1209: 19 8 7 7 96
126089845: 7 5 8 5 98 736 3 7 9 1 7 6
46487320: 7 1 664 7 249 71
39486: 46 405 1 87 160
2736552: 3 28 8 83 7 28 537
2172301065: 63 91 618 3 55
523522: 93 1 67 362 522
986428764: 985 978 446 4 722 43
12315880: 9 29 96 8 470
3984391: 39 843 92
5689708: 5 4 5 7 7 576 6 157 6 19
64505661: 64 1 505 397 262
227515138: 227 5 1 513 5
215361445: 3 83 63 820 93 86 2 46
34003007060: 651 993 2 526 60
16267: 920 7 1 2 834 6 58 69
267374268991: 6 89 73 9 8 826 8 71 59
112166154: 10 2 93 5 66 155
135: 9 1 5 42 43
11248: 70 1 423 8
2911500: 7 1 379 10 647
65618: 984 65 686 971 1
1423917: 23 24 26 9 18 1 3 99
1436633024645: 2 84 134 9 2 9 9 8 79 8 2
280912: 935 3 3 62 52
102593598: 442 2 326 89 3 4 1 7 75
38611: 3 9 503 9 6 7
36060: 5 8 1 16 4 601
28487: 73 691 6 37
721930973: 72 18 830 479 70
36324778803: 800 100 3 2 26 454
70492231245: 571 990 211 5 591
801607886: 2 79 33 888 80 7 886
15442400: 28 69 999 3 72 157 8
354682: 8 40 1 3 5 5 4 8 3 18 9 1
11718044: 9 180 31 20 43
2292878: 7 56 82 229 425
8686510: 37 390 2 64 1 9 291 4 3
47239: 2 77 52 4 9 9
23755253: 2 3 1 14 707 19 10 22 1
20814560: 68 8 44 536 1 3 2 4 2 2
431195040: 3 579 696 74 1
29632103424: 32 66 6 7 6 62 898
3417: 8 81 2 28 869
10513496180: 211 3 56 7 2 6 7 135 47
4575903869: 45 6 2 3 9 1 903 8 6 9
481562: 2 15 946 50 5 9 3
23919714428: 27 8 335 3 2 6 39 4 2 6
7227024325: 393 870 603 211 22
113705615: 16 7 76 94 561 4
36627744: 31 879 122 467 76
9682305217682: 3 1 3 8 5 9 739 1 1 835 1
1883: 19 215 8 1 14
310865765704: 4 5 93 47 8 3 6 8 5 703 4
65640: 2 3 9 5 671 1 89 9 3 9 3
34615688: 8 581 1 9 1 6 5 699 4 90
2874960: 136 2 372 936 55
125692: 11 4 89 28 2
21607840833966: 9 9 950 1 75 96 871 39
23335608: 45 75 54 7 51
6234: 20 18 819 73 6 654
250181: 92 8 4 338 50 7 4
38566354: 9 7 120 611 37
62704469: 2 8 9 71 5 66 44 5 6 10
385850: 5 8 8 7 2 8 63 6 3 678 3 2
115032285: 8 150 96 7 913 15 21
24871: 8 3 270 600 1
77113465: 7 555 723 1 6 7 465
6231: 5 8 5 956 5
388: 4 291 1 18 4 72
63870451184: 1 1 3 2 911 508 8 293
961: 5 9 1 8 4 9 87 5 10 5 26 1
651002: 2 861 685 2 84 5 2
2999: 9 328 41 3 3
697540864632: 38 79 4 2 726 8 4 316 2
13399549: 3 1 11 73 8 59
3562090: 866 1 6 83 674
7828907: 74 2 706 87 2 10
2386854: 1 2 6 68 78 5 2 4 3 5 5 4
81760686: 706 5 7 1 6 6 2 7 2 19 87
214797: 8 9 3 421 8 1 3 4 1 9 42 9
54427336: 30 712 8 173 53 79 73
1053341344949: 65 569 3 712 238 4
1448736525566: 160 97 9 6 4 6 8 57 563
2123419597390: 606 83 8 9 9 6 6 9 7 393
123978240: 336 8 4 9 4 6 8 7 7 2 8 60
35148535: 2 7 4 48 565 8 4 2 8 9 5 2
204124802990: 9 630 13 340 36 7 583
539960: 44 66 196 25 960
37179596269: 5 9 63 806 153 6 267
46944: 256 517 694 4 8
164447918604: 3 3 5 68 2 239 59 3 20 1
606512067: 202 5 85 25 2 1 7 4 6
582: 6 82 4 78 1 8
358489335615: 4 8 36 290 49 3 356 12
37968920318: 619 787 27 6 9 203 1 8
45917891663: 6 97 6 743 4 91 665
56974260612: 681 192 73 598 894
1433362936: 23 81 301 2 938
13387282062: 71 5 209 7 382 7
1440477: 3 9 37 3 66 4 2 667 58 9
54297: 87 359 12 77 5 2 7
45930136: 75 180 3 3 8 378 104 8
15415060: 60 9 86 5 795 94 115
152568: 9 1 61 5 68
27460988: 2 74 60 488 501
1057969: 284 4 4 93
2426020: 856 7 13 202 2
49096: 6 5 24 2 68
9219: 345 9 3 85 8 23 15 5
502450092967: 1 142 17 6 6 1 85 589
252469069: 478 8 7 1 57 8 66 59
24272: 1 8 8 7 4 752 9 6 1
156972819: 21 9 858 968 3
4435814457: 77 9 8 8 6 1 14 460
7029: 57 3 5 6 971
7053569543: 70 52 914 2 653 531 9
19649102: 9 7 9 5 22 545 4 839 94
267089242: 3 5 3 83 8 2 342 7 29 5 7
93765: 40 945 53 957 47
815253659: 48 97 581 700 8 52 7
14381: 70 1 91 2 1
6727770: 8 5 1 2 7 47 96 2 4 2 9 38
488959: 12 7 770 5 7
444850: 57 3 7 68 6 350
359101435530: 819 36 14 3 143 553 2
255298640: 5 7 2 336 9 6 25 6 226 8
627971804: 91 69 71 723 81
376876294: 603 625 5 15 779
4870224: 8 32 3 2 68 8 93
2921378615: 7 3 1 1 7 7 272 2 3 953 5
25762: 22 3 475 1 288
9334: 8 9 6 1 5 125 42 364
61711944: 453 61 26 6 4 8 3
31159097: 62 1 5 953 605 32 97
1486721291: 178 87 68 96 9
164195070864: 93 879 40 795 8 4 22
209: 2 83 46
448419: 16 657 642 341 4
2213729487: 7 9 9 7 1 33 6 6 7 457 3 4
826: 83 91 642 8 2
69845916113: 4 6 87 39 6 1 6 62 78 77
420247390: 7 8 70 5 9 6 6 33 1 9 6 53
468391418: 1 5 4 363 885 7 3 9 6 3 8
730151: 729 320 7 816 9
6121517413: 707 9 6 6 4 4 6 43 6 9 3 4
1331520: 8 304 44 288 95
2651662: 24 755 9 34 1
55557168: 45 8 7 13 6 49 716 8
925030462: 453 992 2 8 8 64 4 2 3
22929993: 6 1 9 403 8 6 7 9 677 9 8
136079: 10 7 80 8 1
4018560: 24 2 115 4 182
155443251648: 1 89 7 9 6 2 2 819 48
47311914088: 1 739 4 9 498 7 71 7 4
12959675904: 7 558 529 98 1 84 64
117075505: 4 651 2 693 2 63 6 89 7
8663990338: 3 5 36 5 2 989 3 23 337
38598654357: 8 78 6 7 3 2 5 1 9 1 343
1066: 3 68 3 447 7
9763884: 4 8 11 4 806
2649: 710 3 76 94 1 3
97022: 6 5 4 84 77 2
4436743: 2 4 20 36 7 37 6
10887: 8 1 931 930 26
41289: 5 160 2 2 4
64001920: 561 4 3 61 38
4877046: 961 40 84 3 58
94551: 942 3 5 3 1
2348968: 234 86 3 6 8
4829697944: 5 51 4 9 7 8 687 122 8
1275687: 531 4 6 262 9 9
866: 5 3 7 3 8
62826: 1 6 1 1 6 2 634 84 491 7
234421278: 586 4 2 12 81
987: 5 81 3 31 864
1512712546: 9 8 7 63 7 125 47
81507: 1 4 800 69 38
6885843415: 743 5 546 570 926
28383880: 20 47 9 76 1 89 469
8399: 73 86 242 8 877 994
6734289681: 841 681 9 889
2487534047373: 259 5 3 948 9 974 101
11402873: 17 96 609 414 17 553
18904325600: 55 21 735 4 325 600
1335462451: 16 5 9 9 14 8 3 3 70 955
70253: 2 115 30 9 2 38
17112: 9 5 4 7 9 66 1 6 5 1 9 2
240212907: 4 9 83 31 381 71 8 21 4
1137902: 24 89 78 71 31
17115001: 8 9 5 100 978 2
8596391: 85 8 7 3 87 9 24 3 5 5 22
536020: 80 67 17
1999835: 8 241 881 8 790
91503776: 1 6 419 4 5 7 7 2 6 8 91 7
141043433: 470 5 59 6 4 796 1 2 3
662831: 69 96 6 5 31 9
2527482: 5 670 26 6 8 4 3 6 6 258
663617436: 3 8 420 90 66 91 7
5117396: 9 43 45 5 32 34 74
286833458: 299 976 59 956
1810904: 402 12 2 15 73 351 3
14755500281: 339 44 1 161 3 3 2 1 3 2
891738: 8 2 2 43 1 6 4 93 2 963
1431924: 1 32 3 124 9 92 4
18526: 572 3 33 7 71 27 4
204101449: 650 314 9 5 50
19637: 54 6 5 57 55
46435032: 4 5 706 87 84
3901884025: 21 5 80 167 377 335
1357110633: 798 3 2 85 633
368814453: 93 509 63 8 612
16783688: 4 9 9 417 4 972 5 31 9
12778007: 75 949 14 552 167
3103890: 775 4 3 89 3
746384: 52 14 91 74 5 8 305 9 8
1324077: 1 132 24 2 1 6 674 967
6907431: 203 9 3 7 2 6 3 6 30 4 3 3
291241150: 142 5 2 5 909 5 500 86
10416: 35 4 9 217
222786114772: 428 3 36 98 836 1 52
30956235: 5 263 130 3 193 37
1807890624: 973 24 27 1 688
70133160056: 822 711 9 1 4 2 6 5 5 5 7
882460946: 1 8 8 6 3 1 3 2 5 943 2 3
2371851: 8 27 50 5 890
40024680321: 1 8 5 7 65 5 4 38 941 3 7
487213: 29 9 661 697 9
740743860807: 77 75 6 2 46 134 812
17850: 20 9 9 26 83 5
83290948: 5 91 8 75 2 927
586005: 584 894 66 816 228
483120417: 3 3 72 4 50 99 4 17
21612195: 117 9 6 9 6 1 3 379 5 6 9
1146285425: 70 5 863 1 945 427
311680: 8 8 5 4 81 3 621 3 4 1 6 5
81: 2 5 2 4 1
1692432: 6 80 5 764 8 146
982802: 73 73 2 8 4 3 8 5 3 5 7 2
25409164560: 1 6 9 1 188 7 2 5 7 9 12 5
366260: 318 47 47 1 78 7
168240337: 5 944 11 6 9 9 4 3 5 2 67
156807: 47 4 8 456 80 7
14995745: 6 714 25 35 870
24780095: 8 15 5 5 4 7 67 4 3 7 11
104125: 557 482 2 22 2
1844501: 41 2 9 357 7 202 32 5
6275963892: 1 482 98 9 9 699 1 12 1
3890574408: 176 78 786 6 28
47467: 293 9 3 6 1
926285: 9 2 532 96 5
2209: 7 1 8 94 20 9
219763712: 294 7 62 184 8 8
1754288721: 344 99 440 155 814 9
531930: 49 85 694 65 6 900 85
1005239880: 1 733 9 94 6 997 2 4 60
462: 33 9 26 131 8
6132669: 9 52 546 4 6
14541: 30 6 1 8 8
49132039: 57 7 6 4 6 8 98 5 2 5 2 42
10597759252: 40 7 3 622 8 10 9 7 7 6 9
750879481848: 55 65 6 1 6 5 8 7 3 31 9 5
301540320: 46 510 83 819 8 795
25711201: 3 7 337 9 296 2 2 60 5 7
3131219615335: 6 1 51 20 21 9 615 3 35
190931: 6 6 9 7 836 2 1 7 6 1 552
39873482: 1 61 950 90 687
136495497599: 4 878 7 7 4 48 5 3 7 99 2
62: 5 9 3
4072901: 4 52 40 14 1 2 9 1 4 1 8 8
3639889: 665 7 2 540 6 46 7 1
44833: 8 910 6 472 1 8 3 672
226176: 2 65 275 30 608
100819083: 3 9 6 7 16 325 116 9 18
2124636580913: 5 382 61 9 6 580 91 1
18389: 71 5 6 4 6 2
74957687: 7 2 7 8 5 9 5 59 9 636 6
1935561104: 70 129 276 8 5 58 561
285412: 39 26 7 961 98 2
910425: 7 9 111 4 4 5 427
1868263488: 7 973 1 56 654 52
356: 9 9 7 64 4
121563: 2 3 84 6 25 566
11793880: 9 1 1 61 292 577
6433920: 50 265 4 8 4
757114712: 677 795 6 739 29 86 4
92196314: 91 427 769 314
3622: 9 5 32 3 9 8 9 20 65
748249: 41 5 3 5 3 9 1 101 4 810
57521100: 67 570 940 490 3
694140: 42 712 4 1 92
2584: 1 9 2 2 6 8 7 8 12 7 460 4
1299844: 72 4 567 8 8 47
4438062035: 7 710 541 133 8 1 996
17848382: 733 639 949 13 44
1285415254454: 377 73 415 786 82 3 2
42573460: 1 8 2 3 317 730 79 381
6487474065: 4 6 6 6 4 42 4 48 4 5 7 89
11248830: 1 570 7 7 4 3 5 7 11 6 9 6
1236900001: 24 10 720 625 57
774935037: 293 473 63 40 66
121832: 7 5 3 2 6 88 1 1 552 7 3 3
1016743: 76 37 6 658 58
2533368513: 61 4 55 636 596 21
6990058: 4 1 835 30 204
1847406607: 20 526 740 9 8
779328000: 6 373 4 2 3 8 80 9 12 5 8
96371: 3 5 88 208 156 7
5419039: 3 8 517 90 41
249830: 99 374 8 177 3 7 9 8 90
100166088: 8 9 99 5 45 733 9 264
3376144: 7 157 927 442 7 584 6
43593660: 11 9 537 99 41
411324689: 7 21 208 389 4 41 29 6
234004: 61 323 7 87 89 62
23183285: 23 18 26 6 88
97916165533: 269 91 4 165 535
1112448: 9 61 841 2 5 4 3 8 9 6 89
8963: 896 5 1
73558189852: 5 6 9 4 6 97 6 658 2 98 7
13680414: 49 47 66 90 594
24172014797: 48 336 8 5 1 479 7
9967992824: 9 41 946 706 93 28 2 4
76153297584: 47 81 66 2 975 84
541346194846: 45 1 6 73 5 2 97 4 2 2 5 2
2476666710: 2 630 15 208 17 630
60279278: 6 982 17 61 6 3 845
55027351: 4 528 9 2 88 135
929699919: 3 89 480 9 8 2 99 5 4 21
257203: 304 846 14 3 2
19954464: 4 2 199 29 8 7 2 8 6 8 12
349703121: 87 425 69 5 1 43 8 8 9
9607739480: 120 8 1 4 3 7 3 6 3 4 74 3
70229: 6 57 4 3 227
19346675608: 4 3 7 4 3 7 466 3 5 5 609
59456: 9 39 3 3 875 64
4049373107: 490 831 2 825 85 1 7
38708598: 9 8 89 40 412 1 7 18 2 5
217787072132: 186 39 5 2 3 6 9 5 355 6
1252444294: 382 309 78 42 9
7796721302: 7 796 71 6 5 300
232741316: 8 29 741 314 1
26910444: 298 907 9 879 9 15
40916974: 2 8 5 2 9 8 6 1 5 16 971
34830687: 15 387 6 668 19
49022893747: 778 140 1 17 7 4 9
240774: 4 815 4 1 5
2030: 4 95 11 46 895
141432: 8 9 395 3 5 8 7 8 3 49 7 1
466823: 1 32 544 26 71
5847912: 202 47 694 82 7
242621: 232 7 801 56 67
330876: 8 4 2 2 2 2 7 150 5 18 7
93687: 25 197 3 19 55
71444393: 1 6 5 9 7 8 5 789 8 423 9
6751035: 1 21 553 845 258 5 1
191462315465: 957 31 2 3 15 464
15511497: 55 8 2 94 73 289
494852056149: 918 7 65 77 610 4 9
116901382: 42 97 79 9 847 3 608 6
287727946: 1 643 7 8 1 2 799 5 1 7
26218340: 244 68 525 56 8 8 5 5 4
76566: 9 77 13 60 6
1830: 292 29 891 531 87
403126: 356 9 148 58 706
26406: 799 7 32 525 2 79 8
61533769122: 1 551 8 75 6 983 189
5083523328: 909 3 8 7 1 3 976 4 1 68
35952796: 7 5 952 35 39 5 51
167412767: 5 1 4 1 9 8 94 38 6 7 7 70
2195302: 85 6 308 41 46
1474198: 69 9 5 70 54
364088987: 88 8 41 8 987
78139858: 1 4 5 2 19 3 628 2 7 6 5 6
4404409: 63 832 69
78435: 7 47 2 61 5 16 7 21 5
757520426: 77 2 98 98 26
203318778: 4 281 991 7 5 62 31 8
287102009: 8 88 930 764 73 6 8 7
90227: 48 705 88 61 26
8181666: 73 8 8 166 9
4345042264: 16 1 3 8 23 5 183 8 62
1748: 74 8 5 4 2
253: 1 3 5 5 160 54
7800887: 9 4 5 7 5 99 79 15 94 7
5590: 14 42 8 5 81
37762: 87 9 48 2 9 167
333279: 2 2 58 80 363 524 1 57
171214269218: 844 322 681 3 63
118944: 5 8 7 873 93
124807260: 419 9 9 3 40 8 270 300
57067: 5 2 65 9 88 41 1
67645321537: 92 3 2 715 36 71 4 4 9 6
897: 1 7 827 62
1191701596: 94 6 393 18 83 83 3 15
1273: 3 4 7 1
144149: 5 9 32 78 68
1256472: 63 7 3 2 1 539 71 277 6
30990621: 309 83 94 668 4
38536499222: 2 510 18 1 9 95 88 780
856374: 5 802 1 492 5 7 17
130842660: 3 6 58 8 1 3 793 9 4 9
69578132: 7 21 1 5 2 47 6 99 7 1 3 3
5276748016: 8 7 53 1 208 226 93
48947804: 5 910 9 3 8 1 330 773 2
194740286300: 5 8 3 275 5 5 2 67 5 89 9
22422998: 337 7 85 37 95 905
6918244: 6 8 497 29 1
45185615913: 97 710 90 9 1 9 1 810 3
316116: 27 527 2 312 54
11292: 929 9 4 5 201 64 9 384
143302570: 4 16 808 8 117 82 888
6574936: 810 8 94 844 91
19500766: 927 48 20 7 67
5496862: 4 4 2 5 86 8 399 28 3 3 7
4081: 4 74 6 281 7
107041551: 2 57 2 900 35 9 52
365716: 8 34 43 277 3 719
233199: 34 225 11 9
75781172: 315 75 3 8 2 9 1 6 4
6441: 3 601 327 1 3 6 45
72: 7 5 6
1847: 2 645 49 191 869 90 1
689524: 27 4 504 47 44
421965206413: 87 9 6 8 4 5 206 391 25
965613600002: 4 846 6 280 7 140 690
50559280: 8 1 6 4 2 4 567 26 534 4
365496049: 9 4 32 4 8 7 6 686 7 4 2 5
64994090: 2 9 4 1 21 74 3 73 79 7
1241: 1 3 4 2 7 1 927 298
7392027906: 8 350 66 4 2 7 909
72665135998: 6 6 743 1 3 4 3 68 727 8
42527813: 6 563 5 4 3 74 13
2085967: 414 4 499 14 7
10090710861: 386 49 70 80 95 41 21
188483597: 7 582 4 8 218 54 1 877
367380998: 2 2 2 6 96 3 900 5 998
68095186: 23 615 83 8 58 665 27
6509884572: 69 3 7 3 5 447 3 29 45
24930077: 28 690 986 2 4 3 8 70
886840: 24 5 86 770 45 5 883
42180751: 55 6 7 350 535 356 90
73846429: 761 303 97 4 36
118157648: 762 70 33 91 1 9 221
31303: 316 129 114 56
2340: 1 2 1 90 13
38925682: 993 392 77 2 5
132208396: 881 37 1 90 5 8 7 3
17362906539: 165 30 832 90 653 6
513060: 806 636 6 352 86
13556739: 451 47 42 13 3
87166290: 5 85 372 295 72 4
2085930558: 856 47 3 770 559
1271377657: 9 33 460 8 7 7 8 914 6 3
92480: 40 514 24 4 40
203612568029: 9 8 9 3 4 593 8 4 4 80 3 1
997367027585: 79 95 567 99 21 6 2
14986059: 5 53 1 4 2 4 3 8 9 2 2 338
16943: 7 4 20 353
192411245217: 1 4 16 3 411 243 2 214
3267945: 932 5 35 316 8 35 993
7584118814: 7 671 470 45 7 3 34
92005506: 773 3 57 87 6 1 761 8
83148275295: 3 339 4 451 3 44 80 9 7
2758387: 393 7 7 3 88
158229124: 29 55 19 2 19 6 28 3
19731329: 2 9 1 83 7 94 6 1 2 980 9
372969: 6 731 54 84 9
44398676936: 995 485 95 8 446
29: 4 8 2 5
28812: 917 31 113 6 27
3221058: 4 4 121 4 4 5 83 41 620
5012875154: 898 6 867 8 88 75 157
619: 81 324 57 159
2000875149: 877 559 36 5 57 387 8
538511: 4 7 544 52 863
37415205: 7 45 7 9 84 9 78 4 9 991
87187684: 567 6 8 2 951 2
723726: 7 146 73 188 2 12 9 62
5611: 15 2 2 547 8
161732: 8 19 1 4 8 39 32
77322232001: 8 26 104 9 591 9 93 4 1
7664: 9 8 5 45 7 2
43978994: 462 45 951
184200: 63 29 10 5 4
24754844735: 574 385 653 66 2
38841958460: 447 488 62 14 60
512307698: 78 476 8 7 92 35 2 978
978764208: 1 83 5 78 7 56 484 4 8 4
51510: 9 1 77 9 7 32 38 7 583
519848234: 89 192 64 9 659 7 8 4 3
279759946564: 694 6 76 839 58 1 6 8 2
27642337368: 30 7 9 658 999 7 368
1714046887054: 9 4 3 88 3 699 1 7 3 976
2096866: 762 7 4 2 9 7 4 7 1 2 27 2
829347: 57 9 11 283 50 19
5188: 9 98 18 397 4
8546580: 3 931 494 63 95
2569449: 4 318 202 3 8
1008685401: 3 24 22 9 26 3 511 2 8
38907: 341 1 41 3 61 4 64
47134149: 59 5 6 423 9 55 2 6 37
156: 4 5 48 80 8
13690: 373 8 21 967 3
152680: 5 4 62 3 9 75 1 7 6 2 5 4
22638959: 203 8 12 282 4 90
667766987: 6 184 969 39 93 7 5 3 2
491050285: 9 3 9 9 9 7 6 28 270 6 8 3
123681: 9 1 5 8 4 88 91 3 4 5 14 3
2442314: 2 5 7 9 947
66996296: 6 1 9 7 48 8 1 1 8 4 4 372
527: 6 5 6 4 2
18881838: 929 53 32 45 52 21 6
41565: 44 3 73 665 8 52 2
38558: 1 5 21 68 21
6715471: 839 434 8
6389: 91 7 6 9 5 7 178 974 5 4
2117591196: 3 5 748 679 614 9 3 94
28162196: 8 7 1 32 2 196
35808181: 2 2 8 746 180
9867444479: 73 352 40 6 9 1 2 48 1 4
78674: 7 501 25 659 66
45024: 4 4 3 3 18 18 57 276 7
19756: 4 99 3 942 7
799: 34 57 708
157466: 8 2 6 8 7 678 40 9 6 69
12013722: 53 771 14 3 7
305851750: 8 736 8 8 5 6 3 34 8 7 5 1
31627: 85 8 4 85 7
120636732: 750 274 14 587 7 7
239363098: 57 7 6 69 1 1 1 8 59 5 4 6
23142: 7 7 4 3 8 579 6 6 8 8 50
330: 3 42 4 9 8 5
610059: 3 3 2 541 80 888
15743730746: 31 237 561 6 84
1289162: 5 6 57 370 11 28 8 5 2
4912012: 49 120 12
21034792439: 47 1 58 1 7 2 7 915 9 39
10550: 2 3 9 970 45 8 514 1 5
27651: 2 9 1 8 1 5 8 7 8 4 4 35
53322: 8 87 4 8 2 66 63 96 759
138446470: 26 6 47 682 4 71
1648416: 9 278 7 657 3
6538688411: 30 351 741 838 668
1344480: 7 466 85 43 7 56 424
244514648942: 468 4 7 2 5 2 1 2 37 945
241060: 8 3 5 67 8 69 6 48 4
40133289211: 659 7 87 9 7 2 9 17 4 1
435126: 783 57 518 8
17711006228220: 76 834 259 998 890
5734080: 36 1 1 288 55
8979895786: 9 2 93 110 38 8 5 21
3330: 532 23 6
10241840: 102 34 7 8 38
13305407: 2 1 4 5 8 7 259 5 2 12 5 2
1433165: 3 9 1 891 73 367 65
177433659084: 44 3 58 41 477 10 4 2
222432: 311 919 67 3 4 6 71 56
85538: 1 4 7 2 910
32399920: 9 4 9 9 9 343 93 8 3 8 70
3157308169: 1 373 938 9 169
48314570: 8 329 1 58 9 3 470 5
2157760504767: 751 9 9 76 9 2 9 7 9 2 8 3
113124347: 1 9 87 43 2 9 95 347 1
234373743: 2 9 28 89 3 4 285
65134472: 65 133 910 5 559
5111: 5 42 2 513 9 53
280608943: 45 909 7 7 7 5 5 9 4 587
4944: 40 1 9 45
177101: 80 4 186 35 2
8123256299: 643 1 251 7 58 4 9 296
2610013: 28 55 24 2 655 487 6
3473695: 10 681 6 7 17 5
102288: 44 8 693 6 8 980 4 2
792006: 80 9 71 8 1 44 73 6 82
8393424: 656 4 6 4 3 8 4 9 8 87 3 4
3357448904: 9 2 514 71 901
11955840: 5 778 1 3 2 8 3 2 4 4 16
33523655: 1 1 3 1 1 294 8 68 4 5 8 3
40658: 1 477 43 78 20
419: 5 99 4
10692: 9 8 4 4 27
2316100872: 772 5 1 6 812 6
8456347: 98 587 147 25
45388: 6 755 4 4 18 59
98449258: 90 859 57 260 7
290537744: 880 4 3 514 8 11
1920630535: 5 7 1 57 4 6 4 84 1 771
41738341141: 8 3 103 9 3 4 6 5 962
267888: 53 5 71 5 36
457162268328: 14 3 754 7 71 9 6 318
9818370: 378 26 9 30 10 3 90
136158886: 8 1 7 95 325 2 1 5 3 8 7
407: 6 42 69 8 78
1012705468: 822 4 44 7 657 811
4180406340096: 466 981 98 12 6 36 9 4
10705064: 4 424 136 5 931 181
2217819683: 7 51 62 9 9 423 96 3 5 4
7508279323: 3 250 555 272 3 6 32 2
2658216: 558 18 25 4 66
59297: 60 97 2 747 351
7495229447: 8 328 9 266 28 50
2644059830523: 57 55 2 97 574 815 8
54008124608: 94 751 10 958 57
2207268: 50 592 72 49 50 7 9
9395936945: 83 33 540 34 9 806 4
65754981: 340 41 89 53
5424: 267 8 2 69
194627: 564 43 8 613 1
75167376: 75 166 1 972 404
237336645000: 628 915 45 700 590
522553: 7 58 4 91 7 2 7 9 148 49
4897: 29 13 6 95
13670996090: 500 614 6 73 31 610
16290039939: 74 7 6 1 7 882 87 2 438
2804002896239: 85 2 41 17 5 52 774 5
86506: 910 1 29 157 73 74
21660911180: 722 2 15 911 180
6815: 6 743 72
114802992537: 6 17 215 5 39 1 5 186 2
720907: 203 61 587 39 81 8
15904808: 28 3 80 96 5 5
200829237621: 999 710 37 3 744 27
95188135587: 835 3 68 49 755 579 8
61525: 81 49 4 75 3 4 5 8 28
13221210319: 3 486 9 6 6 4 20 5 5 6 2 8
3728996709124: 945 71 9 708 62 96 6 1
39283710: 7 46 6 3 64 51 9 717
24046652: 1 8 92 61 34 2 646 46 7
178492223: 4 1 18 61 81 5 7 2 8 194
1677144138: 6 123 83 227 39
105579656: 2 3 4 7 2 96 8 6 63 6 366
78276190303: 7 94 9 131 13 41 3 7 9
110367683: 778 9 8 5 5 3 4 9 394 9
7626312605: 4 502 5 552 1 72 598 5
56319236258: 9 5 39 82 6 8 9 548 258
5406139: 642 842 45 4 6
45342: 7 29 96 267 8 1 2 50
7525096: 1 820 330 35 97
80899207: 11 236 80 9 7
1022048029: 328 76 82 5 24 7
853304431680: 313 630 752 6 603
4608388638: 31 9 958 177 93
68959734: 7 8 33 5 44 732 6 2 6 4
4653: 845 319 4
2523796352: 2 51 789 2 4 8 98
185856: 885 21 6
19948509: 72 83 24 3 910 396
1680716: 236 37 35 71 3

3
Gemfile Normal file
View file

@ -0,0 +1,3 @@
source "https://rubygems.org"
gem "rspec"

27
Gemfile.lock Normal file
View file

@ -0,0 +1,27 @@
GEM
remote: https://rubygems.org/
specs:
diff-lcs (1.5.1)
rspec (3.13.0)
rspec-core (~> 3.13.0)
rspec-expectations (~> 3.13.0)
rspec-mocks (~> 3.13.0)
rspec-core (3.13.2)
rspec-support (~> 3.13.0)
rspec-expectations (3.13.3)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.13.0)
rspec-mocks (3.13.2)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.13.0)
rspec-support (3.13.2)
PLATFORMS
arm64-darwin-24
ruby
DEPENDENCIES
rspec
BUNDLED WITH
2.5.23

8
template.rb Executable file
View file

@ -0,0 +1,8 @@
#!/usr/bin/env ruby
problem = 1
input = File.readlines("#{problem}.input")
result = :solution
puts result