initialise

This commit is contained in:
Javier-Orestis MANTZIOS
2025-01-07 10:39:37 +02:00
commit 108f50e8ea
25 changed files with 5534 additions and 0 deletions

1000
1/input Normal file

File diff suppressed because it is too large Load Diff

71
1/main.go Normal file
View File

@@ -0,0 +1,71 @@
package main
import (
"bufio"
"fmt"
"os"
"strconv"
"strings"
"slices"
)
func totalDistance(firstList, secondList []int) int {
slices.Sort(firstList)
slices.Sort(secondList)
// fmt.Println(thirdList)
result := 0
for i := range firstList {
if firstList[i] > secondList[i] {
result = result + firstList[i] - secondList[i]
} else {
result = result + secondList[i] - firstList[i]
}
}
return result
}
func similarityScore(firstList, secondList []int) int {
result := 0
appearances := []int{}
for i:=range firstList {
count := 0
for j:=range secondList {
if firstList[i] == secondList[j] {
count = count + 1
}
}
appearances = append(appearances, count)
result = result + firstList[i] * count
}
return result
}
func main() {
filePath := "input"
file, err := os.Open(filePath)
if err != nil {
fmt.Printf("Error opening file: %v\n", err)
return
}
defer file.Close()
var firstList []int
var secondList []int
scanner := bufio.NewScanner(file)
for scanner.Scan() {
// Split the line into parts
line := scanner.Text()
parts := strings.Fields(line) // Fields splits by whitespace
// Convert parts to integers
first, err1 := strconv.Atoi(parts[0])
second, err2 := strconv.Atoi(parts[1])
if err1 != nil || err2 != nil {
fmt.Printf("Error parsing numbers on line: %s\n", line)
continue
}
firstList = append(firstList, first)
secondList = append(secondList, second)
}
fmt.Println(totalDistance(firstList, secondList))
fmt.Println(similarityScore(firstList, secondList))
}

1000
2/input Normal file

File diff suppressed because it is too large Load Diff

115
2/main.go Normal file
View File

@@ -0,0 +1,115 @@
package main
import (
"bufio"
"fmt"
"math"
"os"
// "slices"
"strconv"
"strings"
)
func rmIndex(s []int, i int) []int {
result := make([]int, 0)
result = append(result, s[:i]...)
result = append(result, s[i+1:]...)
return result
}
func isSorted(s []int) bool {
n := len(s)
asc := true
desc := true
for i := 1; i < n; i++ {
if s[i-1] < s[i] {
desc = false
}
if s[i-1] > s[i] {
asc = false
}
}
if asc || desc {
return true
} else {
return false
}
}
func isSafe(r []int) bool {
if isSorted(r) {
for i := range r {
if i < len(r)-1 {
if math.Abs(float64(r[i]-r[i+1])) < 1 || math.Abs(float64(r[i]-r[i+1])) > 3 {
return false
}
}
}
return true
} else {
return false
}
}
func main() {
file, err := os.Open("input")
if err != nil {
panic(err)
}
defer file.Close()
scanner := bufio.NewScanner(file)
reports := [][]int{}
for scanner.Scan() {
line := scanner.Text()
parts := strings.Fields(line)
levels := []int{}
for i := range parts {
level,_ := strconv.Atoi(parts[i])
levels = append(levels, level)
}
reports = append(reports, levels)
}
safeCount := 0
dampSafeCount := 0
for i := range reports {
if isSafe(reports[i]) {
safeCount++
} else {
for j := range reports[i] {
dampenedReport := rmIndex(reports[i], j)
if isSafe(dampenedReport) {
dampSafeCount++
break
}
}
}
}
fmt.Println("Safe Reports: ", safeCount)
fmt.Println("Dampened Safe Reports: ", dampSafeCount)
fmt.Println("Total Safe Reports: ", safeCount+dampSafeCount)
// sorted := 0
// unsorted := 0
// sortedUnsafe := 0
// for i := range reports {
// if ! isSorted(reports[i]) {
// unsorted++
// continue
// } else {
// sorted++
// for j := range reports[i] {
// if j < len(reports[i])-1 {
// if math.Abs(float64(reports[i][j]-reports[i][j+1])) < 1 || math.Abs(float64(reports[i][j]-reports[i][j+1])) > 3 {
// fmt.Println(reports[i])
// sortedUnsafe++
// break
// }
// }
// }
// }
// }
// fmt.Println(len(reports))
// fmt.Println("sorted lines: ", sorted)
// fmt.Println("unsorted lines: ", unsorted)
// fmt.Println("sortedUnsafe lines: ", sortedUnsafe)
// fmt.Println("safeCount math : ", len(reports) - unsorted - sortedUnsafe)
}

50
2/main.go.BAK Normal file
View File

@@ -0,0 +1,50 @@
package main
import (
"bufio"
"fmt"
"math"
"os"
"slices"
"strconv"
"strings"
)
func main() {
filePath := "input"
file, err := os.Open(filePath)
if err != nil {
fmt.Printf("Error opening file: %v\n", err)
return
}
defer file.Close()
scanner := bufio.NewScanner(file)
report := [][]int{}
i := 0
safeCount := 0
safe := true
for scanner.Scan() {
safe = true
line := scanner.Text()
parts := strings.Fields(line)
for j := range parts {
level, _ := strconv.Atoi(parts[j])
report[i] = append(report[i], level)
}
if slices.IsSorted(report[i]) {
for j := range report[i] {
if j < len(report[i]) {
if 1 >= math.Abs(float64(report[i][j]-report[i][j+1])) && math.Abs(float64(report[i][j]-report[i][j+1])) > 3 {
safe = false
}
}
}
} else {
safe = false
}
if safe {
safeCount = safeCount + 1
}
}
}

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)/;

63
3/main.go Normal file
View File

@@ -0,0 +1,63 @@
package main
import (
"bufio"
"fmt"
"os"
"regexp"
"strconv"
// "strings"
)
func main() {
filePath := "input"
file, err := os.Open(filePath)
if err != nil {
panic(err)
}
result := 0
defer file.Close()
scanner := bufio.NewScanner(file)
r := regexp.MustCompile(`mul\([0-9]{1,3},[0-9]{1,3}\)|do\(\)|don't\(\)`)
numbers := regexp.MustCompile(`[0-9]{1,3}`)
enabled := true
for scanner.Scan() {
line := scanner.Text()
matches := r.FindAllString(line, -1)
fmt.Println(matches)
for i := range matches {
if matches[i] == "do()" {
fmt.Println("Do")
enabled = true
} else if matches[i] == "don't()" {
fmt.Println("Don't")
enabled = false
} else {
if enabled {
fmt.Println(matches[i], " enabled")
multipliers := numbers.FindAllString(matches[i], -1)
firstNumber, _ := strconv.Atoi(multipliers[0])
secondNumber, _ := strconv.Atoi(multipliers[1])
result = result + firstNumber * secondNumber
} else {
fmt.Println(matches[i], " disabled")
}
}
// multipliers := numbers.FindAllString(matches[i], -1)
//// fmt.Println(multipliers)
//// fmt.Printf("%T\n", multipliers)
//// fmt.Println(len(multipliers))
//// fmt.Println(multipliers[0])
// firstNumber, _ := strconv.Atoi(multipliers[0])
// secondNumber, _ := strconv.Atoi(multipliers[1])
// result = result + firstNumber * secondNumber
//// for j := range multipliers {
//// multipliersSplit := strings.Fields(multipliers[j])
//// multiplierInt1, _ := strconv.Atoi(multipliersSplit[0])
//// multiplierInt2, _ := strconv.Atoi(multipliersSplit[1])
//// result = result + multiplierInt1 * multiplierInt2
//// }
}
}
fmt.Println(result)
}

10
4/exampleinput Normal file
View File

@@ -0,0 +1,10 @@
MMMSXXMASM
MSAMXMSMSA
AMXSXMAAMM
MSAMASMSMX
XMASAMXAMM
XXAMMXXAMA
SMSMSASXSS
SAXAMASAAA
MAMMMXMMMM
MXMXAXMASX

140
4/input Normal file
View File

@@ -0,0 +1,140 @@
MASAMXSXSSXSASXSMMXSSMXSAMSAMXSXXAMSXSASXXMASAMXMSMMSSXSASMXXAXMAMXMAMXXMASXXSXMSSXAMMSMMMSSSMASAMXSAMAXMSMXMMMXMASAMXSXSSMMMSMSXXMAMMXAMAMX
SAMXSSMMMAAMAMAAXAASAMMXAXMMAMXSMAMMAAAXXMAMXMAXMAAMXMAMASXMASMMSMMSAMMSAMXMASAMAMSSXMAAAAXMASXMASXMAMMMMAMXSMSASAAMSAMAAAASASXMXXMAXMAXSAMX
MAMMXAXAMMMMAMSMMMXMAMSSSMSSMMAXXAMMMMMMMAXSSSSMSMSMSMSMAMAAXMAAMXASAXMSAMMSMMAMXXAMASXSMSMSMSMSAMASAMAAMASXAASAMXSXMASASMMMASAMMMSMSXXMAXXM
SSMMSSSSSMXSAMAMMXSSXMXAAMAAAMMMSMSAMAMAASXXMAAASXXASAAXMASMMXMMMMASMSMSAMAAMXSXMMASAMMMAXAMAMAMASASASMXSASMMMMXSMMMSXMAMMSMXMASAAAXXAAMAMSA
AMAMAAAAAXAMXXASAAXAXXMXMMSXMMAASASXXAMXXMMXMMMMMAMAMSMSXAAXSSSXMAXMXAXMXMSMSAXAAXMMXXMMAMAMAMSSMMMSAXAXMXMXMXMAMMMAMAMSMAMAXSAXMMXXMXMSAAAS
MSAMMSMMSMMMSMXMMASMXMAAXAXASMMXSASASMXSASXMMXSAMMMAXAMSMMSMMAAAXSASMXXMSXMAMASMMMAMSSSMSSXMXMAMXAAMXMMMSMMMSAMXXAMMSMAAMASMMMXSSSSXSAXSMSMM
XXASAMAAXMXASMMMXAAMXASMMASAMAXXMAMXMAAMAMSAMASASXMXSASXXAXAMMMMMXMMMSXMAAMXMAXAASAMMMAAAMAMSMSMXMXSXMAAAMAAMSXMXSMMAXSXSASXAXSAMAAAMMXXAMAM
SSXMASMMSSMASAMXXSXSXXXXSAMXSSMMMXSAMMMMMSXSAMXXMASASMMMMMXSMMAAXAXAAAASXMMXMMSSMSASMSMMMSAMMAMAXSAMXSMSSSMSSXXSAXAXMMAAMMXXSSMAMMMMMXMMASAM
MAMXAMXAXAMXSAMXMMAMMAMMSXXAAAMXAXMAXSXMMAMXMXMASXMASMMMSMAMASXMMASMMSMMAMXXMXAAMXAXAXSMXMASMAMAMMASAXXMXAMXAMAMAMXMSSMSXMSMXAMSMASXMAMMAMAM
MASMMSMMSMSXXAMXMMAMAAAAXXMASMMSSSSSMMAXSAMASAXMXAMMMAASAMXMAMAAXXAMXAXSXMXMXMSSMMMMMMMMASAMMAMSMSAMXSXMMSXMXMMMSMMSASXAAMAMSSMMSXXASAXXSSMM
XAMXXAAAMXMAMMMMXMSSSXSSSMMXMAAXAAAAAMAMSAMXXXSXMAXXMSMSMSSMAMMMMXAXSMMMXMAMSAMXAXXAXAASASAMSXSAAMXSMSAAAMAMXXSAAAXMASMSMSAMXXAMXSSMMSMSXAAX
MSMMSMSAMXMSAMXMXXAAAAXAMXAXSMMXMMMMMMMMSMSMMSMMAMASAMASMAASMMSXMSXMMMAMSMSMSASXMMSXSAXMXSAMAXSMSMAXASXMMSAMMMASMMMMMMMMAXMMXMXMAAMMAXMMMSMM
AAAXAMMASXAXAMMMMMMSMMMAMXMXSMSSMMXXAAXXMAAMXXAMAMAMAMAMMSMMXAMAMMASXMAMAAXASAMXMAMXMMXXASMMXXSAMMSMXMASASASXAMMSAXXMAAMMSSMXXMMMSXMAMXSAMXA
MMSMAMMAAMMMAMAAAAXAAXXAMMMAMXAAAMXSSMSSMSMSMSAMXMASAMMSAMAMMXXXSSMMASXXMMMMMXMAMAXASAMMXMMMXMMAMAMMMSMMASAMXSXAXMXMSMSSMAAXMMXSAMXMASAMASMS
XSMMXMSXMAASAMSSSSSSMMSXXAMAMMXSMMMAAXAMXXXAMSAMASXSASAMXMAMAXSMMAMSMMXASXSSMXSXMMMMSMMMSMMSAMSXMASAMASMAMXMAMMMXXMXAAXAMSSMAAAMXMASASASAMAM
MAMAMMMMXMXAMXAXMMXMAXMMSASMMSMAMXAXSMXSAMMMXXAMXMASXMXSASXMMMAASAMAAXSXMAXAMXSXASXAXXAAAAASAXMXSXXMXASMMSMMMMAXXSAMMXXAMMAMXSXMXSAMXSXMXSMS
SMMXSAAASMXAXMAXMXSMMXAAAMXMAMSAMXSXMAAMASAMSSMMAMAMASXMMMXAAXMXMMMMMMMMMSMAAAMSAAAAMMMSSMMSSMXAMMXSMXMXMAAMXSSSMMAXASXSMSAMXMASAMMSMMMSMMXS
AXXMMMSMXASXMXSMSASAASMMXSAMMMSMSAMXMXMMAMAXAAXSAMXSAMXSASMSMSXSMSMMSMMAAXMSMAMMSAMSSXAMXAXSMMMXXXAMAMMASMXMXAXXAXXMASAMXXXSASAMASAMAAAXAMAM
MMXAMXMMMXSASAASMASMMXAMAMASXASXMASXMAXMSXSMSSMMASAMASAMXSAAAMAMAAAXAAMMSMMASXXXMXXAAMMMMAMXAAMMSMAXXAMAMSMSMMMXMMSMMMXMXMSXMMASAMAXSMMSXMAX
XSMSAAXMAMMAMXSAMXMMSSMMASXMAXMAMXXASASXMAXAMXAMAMASAMXMAMXMAMSMSSSMSSMAXMSASMMXAXMASXAMSMSSSMSAMMSMXXMXSAMXAASXSAMAAAAMAMSAXSAMASMMXAMXMSSS
AXAXMMMMSMMAMMMMMXMAXAXSASMMAMSAMSSMMMSAMAMAMMSMMSAMXMMMMSAMXXXAAAAMAAMXMAMAXAMSMSAAXXXXAAAAXAMXSAMAMXXSAMMSSMMMMASXMSASAXMSMMMSAMXXSAMXMAAX
MMXMXMAAAAMXXAAXXMMSMXMMASASAXMASXAAAXMXMXSAMAAXAAMSAAXAAAXSSMMMMMMMSSMAMXMAMMASAAMXMAXSMMMSMXSXMMSAXSXAMXMAXAXXMXMXMXASXXSAMAAMASMMMAMAMMSM
MAASXSXSXXMMSSMSAXAXMAXXXSXMASMMMAMSMMXAXXXMSSXSXMASMXSMSXMMXAXASXSXMAXXSAMXSXAMMMSSMXMMSAMMMMAAXAMXMXMSXMMMSMMMSMSMXMXMAXXASXMMAMMMSASASMAM
MSMSAMMMMMAXAAMMMMMSSSSSMMAMXMASXAXAAMSMSXXXAMXAMXMXXAAAAMMXMXSAMXAMAXAMAAMAMMMMXAAAMXMASXSAAXSXMXMAMAMAXMAMSAMXAAAAXSAMXMMXMMAMXSAASXSMMMAM
MMXMXMAAAMMASMMSMSXAAAXMAXAMSAMXSMSMSMAMMMXMASMMMMAAMXSMMAAAAMMMMXMAMMAXSASASASAMMSSMMMASMSMSMXXAAMAMAMMMMAXXASMMSMSMSAXAAMMXMXMAAMMSMMMMSAX
MXMXMSSSXSXAAXXXAXMMSMSSSMAMSAMXAXXXXMXSAAXMXMMMASMXSAAAXSSSSSSMSAXAXSAMMASMSASXSXAAASMASAMAXAMXXMSSSSSXSXMSSSMAAMXMASXXMSMAAMMMXXMXXAAAASMS
MASAXXXXASMSMSMMSMXMAAXAASXMXMASMMSMMMXMASXMMXXSAXMAMXMMMXXAAAXASMMSXMASMAMMMAMAXMXSMMMXMAMSMSMMSAMAAAAAAASAXASMMMAXXMAXXAMXAMASXSMXSSMSMXAA
XAMMMMSMXMAXAMXAAMAXMXMSMMXXXXAXAASAAAAAMMMSASMMMXSASAMSMSMMMMMAMMAMASXMMSSXMAMAMSXMAMSASAMAAMAMMAMMMMMMMSMASMMXMSASXMMMSASXSSMSAASXXMMMMMSM
MSXSAAAXXMAMXXMXSSSSXSAMXSAMSMXSMMMSMSSSMMAMASMAXASMSAAXAXAAAXMAMMASXMAXAXMMSXSXAMASAMSAXMXMXMAXMAMXXSXSXAAAMXMAMMXSAAAAXAMXMAXMMMMXMASAAAMM
MMASMSMSXSASMAAXXAMAMMSMAMAXAAMXMAXAMXAMXMAMXMMXMMSXSMMMSMSSSXSASMXSASMMXSAASAMXXMAMAMMMMSASXXXSMSAMSAASMMMMSXMSMSSSMMMSSSMSSSMMAXAAAASXSMSM
XMAMXAAXXXAMMAMXMAMXMAAMSSSMMSASXMSAXSAMXSSSSMAMSASAXXXAMAXMAXSAXMASXAXAASMMSAMXSMASMMAAMSASAASAMAAMXMXMSXAAXXXAASASMSXXAAAXAXASASMMXXXMMASM
XMXMXMSMSMMMAMXASAMMMSSMMAMMAMMMAXSMMXAMXAXAAMAMSAMXMMMMSSMAXMMSMSMSSMXMMXMASAMAASAMASMSMMMMXXMASMXMMXSMMMMSSSMSSMAMXXMMXMMMMMXSAMXSMSSSMAMA
MXMMMXAAAAXSMMSASXSAMAXXMAMMAMAMMMSXXXASMSMSMMMXMSMAXAAXMXAXMMAXMAXMAMMSMMMASAMXMMSSMMXXAAXAMXSAMXSXMAXAAAXAAMAMXMXMMMXXAMXXXXAMXMXXAAAAMMMS
MXAAASMSMSMMAAMXMAMMSMMSMMSSSMMASXMAXSXMXXAXAASAMASXSXSSSSMSXMAXMXAXMMAAASMXSXSSMAXSXMASMMMAXMXMAXSAMSSMMSAMMMAMXAMAXAAXSSMSSSXMAXMMMMMMMAAX
SSSMXSAAAXMXMMAAMSMMAAMXSXAXAASAMAMSMMAMXMMMSMSASXSMMXAMXSXMAMASMSSSSSSSSMMXMMMAMSMMXMASAXSXXSAXMMSAMXAXAXMXAMMMXMAAMMSSXAAAAAMASAASMSXSXMSS
AXAXAMMMMMMXSMSXAAASMSXAXMMMSMMASXMMAMXSAMXAXXXAMMSAXSMSAXMAMMAMXAAAAMAMXAMXSASAMXSMAMASXMMSMSASMAXMMSXMMSXSMMSAMXAXMAXMXMMMSMAAXSXMASAAXSAM
MSAMXSASAAXMXAAMSSXMAMMMMSAMXAAXAMASAMASXSMMSSMAMAMSMAAMASMSSMXSMMMMMMSMXXMASASXMAMMAMAMAXAAXXMMMSSMXMASXAAXXAAAXXMSSMMSMSAMAXMAXMMMAMMMMMAS
XAAMXXASMXSMMMMMAXAMASXMASMMSSMMMMMMXMMSAMMMAMSMMAXASMXMSMAXAAXAXSAXMXXAMSMXSAMMMAMXAMXSMMXSSMMAXMAMSAMASMXMMMXMMXXAAAAAXXAMXSSMAMSMMSXXASAM
MMAMAMMMXMAXXMSMXSXMASAMASXMAAXMMASMMMXMXMAMAXAXMMSMMXAMXSMSAMXMXSASXAMXMAAMMMMASASXSSXAXAMAAMXAMMAMMASAMXMSASASXXMSSMMSMMAMXXMMSXMAXMASMASM
ASAMXSAAASMMSAAMXSXMMSAMAXAMSXMMSASASAAXAMXSMSXSXMAAMSAXAAXMAMAMAMMMMMMAXXMXAMXAMXSXMAXMXSAXMXMSSSSMXXMAMMXMASAXAXMAMXXXXSSSMAMSMASXMMMXXXXS
MSASASMSMMMAMSAMAMASAMXASMSMMAAAMXSXMASMSMAMXXAXMSSSMXMMSSMSASXMASXXMASMSSSMASMMSXSASXMSAMSMXSXAAAXSASMMMSASMMMMAMMASXMMAMAAMAMAMAMMAASXMMMS
XSAMAMXXMSMXMXXMASXMASXMMAAASXMMSMMMMMMAAMASAMMMMXMMMXMAMAASAXMSMSMMXMXAAAMSMXMAAAXAMAXMMMAXASMMMMMAMXAAMMAMMAAXAASXMMAAMMSMMMSMSSMSSMMAAAAM
XMXMAMXMASAMXXXMAXAMXSXMMSMMMMXXAMXAAAMXMASMXASAMAMMMAMXSMMMSMAMXMASAMMMMMMXSAAMMSMSMMMSASXMXMXAMXSAXSMMSMMMMSMSSXXMASMMXXAMXAAMAAAMAMSSMMSS
XMAMAMSMMMMAXXSMSSXMAMAXAAMXXASXSSSSMXMAMMMASMXASASASXSXXAXAMMXMAXSMXSASMXSAMXXXAMAAAXASASMMAMSMSMSXXAXAXAAMMAAAMAMSXMAXSMMMMSSXSMMMAAXMAXAA
XSSSXSAMMAXMMXMAXAXMASMMSMSXMASAMXAMASMXMAMAMMSAMASMSAMASMMMSMSSSSMXMXASAAMASMSSMMSMXMMSXMAMXMASAAXMXMXSSMMSSMMMSSMMMXMASASAMXXAASMSMMSSMMSS
AAAXMAMASXSXXMMAMXMMMMAXXASMAXMXMAXSXSASMMMSAMXXMXMASXMMAMXAAXMAMAMMMMMMMXSAMXMAAXXSAMMMASXMXSXSMSMAAMAXAMAAMAXMAXMAMMXASAMAMAMXMMMSAAAXXAMX
ASMXXXAAAMMXSASASXMXSSMMMXMASMSXMSAXAMAMMMAXMMMXMAMXMSXMMAMMMSMSMXMAMAMAMXSAMMSSMMXMXSASAMASAMXMAMMSSMASMMSSXSMMAXSXSAMXXASAMXSSMMAMMMXSMSSM
XMXSMMMMSAAASMMMSMAAMAXXMSSMMAXXAMMMSMMMSMMMSAMXSASAAMXSAMXSMSAXMSSSMXXMMASAMMAAMMSMAAMMXSAMMSAMAMMAXMASXAMMMMXXAAAAAXMSSMSASAXAAMSSMSXAXAAA
MMAMAAAAXMMXSAMXSAMMSSMMXAAAMSMMXSAAMAMAAAAAXAMXMAMMMMAXXMXAAMAMAAAAASASMXSSMMMSMAAMAMXXXMMSXXXXSMMAXMASMSSMAMASMMMMMMMXAASAMXSMMMMAAAMMMSSM
AMASMSMMSAMXSAMAMSXMAMASMSSMMMXMAXMASXMMSMMSSSMSSMMAXMAMAMAMXMSMMMXSASAXXMMMMSMXMMXSXXXSXMASMSMMXMMSMMXSAXAAMXAXXXAAAAXXMMMAMXMMXASMMMMSMXMX
SMAXAAAXSMMAMAMSSXSMASXMAXXXAXAMASMASXAAXMXMAAMAAASXMSSSMMASXSAMXMXXAMAMSMSAAAAASXMMXSMAXMAMMAMAXAAMASMMMMMSXMASMSSSSSMXAXMAXSAMSXSMMMXAAXSS
MMSMSMMAMMMSSSXMAMXSAMAMXMMSSXXSXMMMSXSMXXAMXMMMXMMAMXXAMSASXMAMXSAMXMAAMAAMSSSMXAAAAXAMMMMMMASMXMMSAMAAASXMMAXAAXMAMAMSXMXXXSAXAMXMAXSASAAA
XAAAXMASMXSAMXAXSMMXMSMMMSXAMSMSXMAMSXMSXMMSASMSSSSXMMSMMMASXMAMSMASMMASMXMMXAXASXMMSSSXSAAASASXASAMASXMSMMSMSSMMMMSMSMMASMMASXMXAAMMMAAMMXM
MXMMMXAMAXMASASMXASMXAAASAMXSAXXAXAXMXSASAXAMAAAAXAXAAAAXXAXXXAMXSAMXSSXMAXSMMMMMSAMAXMAXMMMAAMMXMAMXMMMMAAXAAAAMSAAXAAMAXAAMSAMXSSMSAMXMSMM
SSMSSMASMMSMMAXASMMASXSXSXAXMXSSXMSASMMASMSSSXMMMMXSMSSMSASAMXMSAMXSASXAMXMXAAXSAMXMMXMMMSMMMAMMXSMMSXMAXMSSMSSMMMSMSMSMMMMMXXAMAMMASAXXMXAA
AAAAXMXMXMAXMXMASXMXMXMAXMASMMXXXAMAASMAMXXAAMXAXSAMAAAMAMMASAMXASAMXSMMMMXSSMSMXSXAXXXSAAAAXSXMASAASAMMSMXAAAXAXXAMSAMASASXMSMMMSMAMXXMMSMM
SMMMSSXSASMSMAMXMAMAMXMXMMAAAAAMMSMMMXMASMMMMXMAMMAXAASXMXSAMASXMMXXXMAXAMXAAMXXAMMMMXAMMSMMMMAMASMMSMMMAMSMMMSXMMMSMASAMAAAAAXAAAMMSMAAAMAS
MAMXAASMMSAAXASXSMSASMMSAMSSSMMSAMASMMMXAAAAXSXMASAMXSXAXMMXSXMAMAAMMMSMMMSXMAMMXMASMXMXAMXAAMAMMSAMXAXMAMAXSAMAAAMSMAMXMXSMMMSMSSMXAAXMXSAM
MASMMMSXAMXMSMSMAXSAAAAASXAXAAAMMSMMASXXMSMSSXAMAMASXMMMMASAMASAMSMSXAAXMAXAXMXSSSXSAASMMSSXXAASXSMMMXMSXMXXMASMSMMXMAXAAMXAAXXXMAAMAXSAAMXS
SASASASMSMSMAASASMMAMMMMMMMXMMMSMAMMAMXMMAMXXMXMAXMMAMAXMAMASAMAXXASMSSSMMMMMAXMAMMXMXXAAXAAXSAMXSASMXMAMXMMSXMMAAXAXSSSSMMSMSSMMMXSAAAMMMAS
MXSAMASAAAASMSMAMMMAXXSAMASXAAAAXMSSMSSXSAMAXMSSMSSSSMSSMMMAMXSMMMAMAXXMMAASASASMSSMMXSMMMSMMMASAXSAAASMSAXXAAXSXSSMMMAMAXXAMAAAXAAMXMMXAXAS
SXMMMXMXMMMSXXMSMXXSSMMASAMMSMXSSXAAXAAXXMSMSMASAMXAXAMSXMASMMXAASAMMAMXMSXSAMAXAAAAMXAXAAXAXSAMAMXMSMMASASASXMMXMXMMMAMAMSAMSSMMMMSSXXSMSMS
MAAAXAMSSMMXAXAMMMAAAXSAMASMMSAAAMSSMMXMXXAAXMAMMMMSMSMSXXAXASMSMSXSAAXAMMMMMMMMMSSMMMMXMMMAMMXMMMAAXXMXMAMMXMMSAMAXAXXMSMXSMXAXSAXSMMAAAAAX
SSMMXXMAAAMMSMMMASXSAMXXSAMAAMMMMXXAXXASMSMSMMMSAXAXXAASXMMSMMAXXXAAMMSMSAMAMAXAAAMAMAXXSASMXSXSXMASMSXMMAMXXAAMASASXSAMXMXXXXMXMXMMASXMSMSM
AAASASMSSMMAAAXMXSAAAAXXMXSMMMSASMSSMSMSAXXMMMASMMSMSMSMMSAAXMSSMMMMXAAASMSASMMMMMXAASMXMXXSAMAMMMXMAXASMSSSSMMSXMXXXAAAXMASMSMMMMMSAMAXXAMX
SSMMASAMXMMSSSMSAMXMXSMMSMMMXXXASAAXAAAMMMMMXSASXXXXAMXAAMSMSMAMXASXSMMMMASMMXAMXSSSMXXAMAMMMMAMASAMXSXMAMAMXAAXXMMSSXMMXMASAAAAAXAMASXMMSMS
XAXMXMXMAXMMAXAMXSASMXMASAASXXMSMMMMSMMASMMMAMASASMSMSMMMMMXAMAMSXSXAXMAMXSASMSAAMAMXMASMASAASASASASASAMXMSMMMMXAXSAMMSXSAMXXXSMXMMSXMAMMXAA
SMMSSXSMSSMMMMXMXSASAXMASXMSAMXMAXXAXASAMAAMXSAMXXXAMXXMAASMXSAMSAXMMMXMSAMXMAAMMMAXXXMAMSSXMSASASAMASXMXAXMSSMSMXMASASXMXMASMMMXMMMMSAMSMXM
AAAXMMMAAAAAXAMMXMMMXMMAMMMMXMAXMMMSSMMSSSMMASAMMSSSMMAASMXMAXMSMSMAXAAMMXSAMXMXSMMMSSSSXXXMXSAMXMXMMMAMMMSMAMMAMMSAMMSAMXMASXSXMMAAMMSMXAMX
SMMSXAMAMMXMMMAMASAMMXMASASXMSMMMAAAXMAMMMMMMSAMAMAASMMMMAMXSSXMAMSXMSXSAMXMMMMXMASAMXAMMMAMASASXMASXAMXAAAMMMSASXMASXXAMXMASMMMSSMSMAXMASMA
AXXMASMSSSMSSSXXAMSSMASXSASMMASMSSSSMMMSXMAMXSMMMSMMAMMXMSAMXAAMSMSMMXAAAMAXXAMMXMMSSMMMXMAMAXSAMSMMAXXSMXMMAAMAAMSMMMSAMSMMSAXAAAMMMSMSXASX
XMSAMXSXAAAAXAAMSSMXMASAMAMAMASXAMMXAMAMASMSMMSMAAXXMMSMMXAXMMMMMXXAXMMASMXSSXSASXMXXXXAMSMMXMMMAAASXSMSMASMMXSSMAXAAAMXMSAASMMMSSMXAXAXXMAS
MXXMAMXMSMMMMMSMXAXAMXSMMASMMXSMMMSSMMAMMMMAAAXMSMXXXXAAXSXMAMSXMASXMASAAAXMAMXMAAMMMMMAXAXMMSSXMMXMAAAXMASAXMAMXSSMMMSAMMMMXAXMAMXMMMSMMMAS
AMASXSSMMXAMSMAMXMMMSMMXXAXAAXXAXAAAASMMSASXMMMXAASXSSSSMMMXXAMAMMMSAMMMSMXMASXMSSMAAASXSXXXAAXXMSXMSMMMMAXXMAMSSXXAAASAMSSMSSMMASAMAAXAXMAM
MSAMXXAAMXXMAMXSAMMAAAXMMSSMMXMSSMMSMMAXSAMXAASAMXMAAAAMAAMXSSSMMSASMXXMAASMMMAXMAMMSMSXSMSMMSSSMSAAAAAXMSSSSXMXMASMMXSSMAAAAMASASAXMMSAMMSM
MAMASAMXMASMMSASMSMMSSMAXAAAXMSAAAAXMXSMMAMXMASAXMMMMMMXSASAMMAMMMAMAMMSMAMXAXXMSAMXMASASAAAMMAAASMMMSSMMXAAMAMXSXSXXAXXMXXMSSMMAXXMSXMAMAAA
XXMAXMXAMMSAMMASAXXAMMMXMMXMAXMMSMMMSSMAXXXXSASXMXXAXXMMMAMAXSAMAMAMXXAAMXASXMXMMMMMMAMAMSMSSMSMMMXXAAAASMMMMAAMSASAASASMSMXAAMASMSXMAXAMSXS
MMMMSAMXSXSXMSSMASMXXASXSSSSXSAAMASASASXMMMMMXSASASMSSXSXSSXMMASMSMSMMSSSMXAMSASASAMMAMSMXMAMAMMXSXMMSSMMAAAMSXSMAMAMMAXAASMSMMAAAXASAMMMXAM
AMAXSAXXAXXAMXXMMMXXSAMXAAAAXSMXSAMMSAMXSAAAXASAMAMXXXAMAMAXMSAMXAAAAAAXXXXMASASASASXAMXSSMASMMSAMASAXXMAMSSXXSAMSMAMMMMSMMMXAMSSXMXMXMMAMXM
SMMMMMMMMXSXMAXAMXAMMSMMMMMMMMSAMXMXMMMAXSMSSMMXMXSSMMMMAMAXXAASMSSSSMXSXMXXMMAMASAMXXSAMXXAXXAMASAMMSMAMMMXASXXMASXMAAAXXMASAMMMMMAXAMSSSSS
AAMAAXXAXAXASMSSXMXXAAMAXXXXXMAXSAMMSXMAXAXMAMMXAXMASXASASXSASXMAXAAXMMSAMXMXMXMAMXMXXMASAMSSMMSXMAAXAAAMAMMXXSXXMMSSSSSSMMMMXMAAMSMMXXAAAAX
SASXSMSMSMSXSAAMAMAMSSXSSMSMMXMXXASASXXMAMXMAMXMMMSAMSXSASASMMMMXMAMXXAMAAASASMMMSSXMASMMAAAXXASXSSXSSSMSSSMSAMXXXSAMXAAMXAAXMSMXMAXAMMMMMMM
AMXAAAAAAAMAMMMXAMXXMAMMAAAAAAMXSAMAMMSSSSSSXMXAAMMAXMMMAMMSASXMXXAMXMSSMSMSASXMXAAXXAAMMMMMMMXSAAAMMAXXAAAAMASASXMMXAMXMSMMMXAMMSSSSMAXMAXM
SAMXMMMSMSMXMAXSAMSSMXMSASMXMASAAMMSMAAAMXMAMSSMXSSMXAAMASMSAMXMASMMXAMXXAXMMMASMSSSMMSSXMMXAXMMXMAMMAMMMSMSMAMASXAAAXXAMXXAXXXMMSXAXSMSXMSS
AXAMXSXMXAMXMAXXMMMAXXMXXMAXSASMSMAXMMMXMAAMAMAXXXAASMMSASXMMMMMMXAAASMMSMSSMSSMAAMXAAAMAMSSMSAASXXSMMSAAXAXMMMAMXMMSMASXAMSSMSSSSMSMMXMASAX
XSSXMASXSMSXMASXMASAMXMASMXMMAMXAMXSXMSASASXSSSMMMMMMAAMXSMSASMAMMMMXXAAXXAAMMAMMMMSMMMSAMAAMAMMSAXXAXAXXMAMXXMAXAMAAASAMXSAAMSXAMAASMXSXMAS
AAMAMXMMAAAXSASXSASAMASAXMAMMXMXMMASAMSAMAMAXAAAXAXXSAMXSMXSAXSAMAASMSMMSMSXMSSMMAMXXAMSXSMSMMSMXMMMMMMXMASMMMMXSASXSSXMAXXXMMMMSMSMXSAMMMMM
MSSSMMMSMMMMMMXAMXSASXMASMXXSASMXMXMXMMAMAMAMSXSASXXSAMXMXAMMMSMSMMMMAMXMMAMXMMASXSMSMMXASXXAXXASXMASAXXAMMXAAAAXXMAMMMXSSMMXSAAXMXAXMMMAAAA
MAAAXXAAAMXSAMSXSASMMASAMMMMMASAXSMSMSMSSXSXMMAAAXMXSAMAMMMXSAMAAXAASAMAAMMSAAMXMAAAXSAAXMASMMSSMASASMMAXXASXMSSSMMMMMSAMXASASMSSSMSAMXSSXSA
MMSMMMXXSMXSAMAAMASXMASAMXAAMXMXMMAAAAAXXXMAMMMMMMXAMASXSAMAMASMMSSXSAXSSMASXSMMMSMMMMXMMMMMAXSASXMMSAMASXMXAAMAXAAXAMMMSMSMXSAMAXAXMAXAMXMM
SMAXXMXSAMXSAMMMMAMAMXXMMSSXSXMAMMSMSMSMAXSSMSXAAXMXSAXASASMSAMAAAXMMMMMAMXSAXMAAAAMXMASXXASMMSAMMSAMAMAXAMXMXMASMMMSXMAXXAMXMAMXMMMXSMMMAAA
XAMASAMAAMASMMMAMXSXMMMXMAMSSXMAXXXXXMMMSMAMASMMXAAMMMSMSAMAMXSMMMSMAXXSAMAMMMSMSMMSAXAXMAMXSAMXMAMMSSMMSAMXXXMASAMSMXMAMXSMSMSMSAXAXXAASXSS
XSMAAXAMXMAXAASXSASAAXMAMMSAMASXXXXASXAAAMMMAMAXMXSAXXMXMAMMMAXXXAMMSSMSAMAMAAMXXAAXXXSMMMXMMSSXMAXXAMAASMXMXXMASASAMXMASAAMSAAAASMSASXMSAMX
MXMXSXSASMAMSXSAMASMMASXMXMASXMMSSMAMSMSSSSMSMXMMAAXMAMASAMXMMSSMASAAMASMSAXMXSAMMMMSMMASAAMSASASXXMASMXSAAMSMMMSXMASMXMAMXAMSMMMMXMXAAMXMSA
AAMAXAMAMXXMXAMXMXMASAMAXSMMMAAAAXMAMMMMAAAAAMXSMASASASASASXXMAXSMMMMMMMAXAMAAMAMMSASASAMSSMMASXMSMXXMMXMMXXAAAAMAMXXXAXXMMSAMXXXXASMSMMAMXA
XAXXMAMMMMXSXMSXSMXAMAMXAXAAMMMMXMMAXAAMMSMMMSAAXMMASASMXMMXAMXXMXMXXXMMSMXAMSMSMXMASXMAXAMAMXMASAMSAMXSXAMSSSMXSAMSXSXMAXSMXSASMMMSAAXSASAM
SXMSMSMXAXMAMXMAMXAMSXMXMSSMSSSSMSXSMSXSAXXMAMXSMXMXMAMAMSSSSMMSMSMSMAAAXAASMXAMXMMAMAXSMMSMASXXMASAAMAMAAMAAXAAMXMXAMASXXMXXMAAXMXMXMXSAXAS
AMAAAAMMXMMSASMSMSMAAXSXAMXAXAAAAMAXXAASMMSMASAMMXMXSAMXMAAMXAMXAAAAXXMAMSMXAMAMMSMAMXMXAMXAAMMMAXSMSMASASMSXMMXSXMSAMMMMASXXMSMSAXMMXMMXXAM
SASMSMSSSMAMMSAAXAAXMAMMXMMMMMSMMMAMMMMMAAXXSMMMAMSASAMXMMSMSXMMSMSMSXMXMXMMMMAMASXSSMASXMMMMSAAXXXAXMXMXMAXXXXAXAAMXMXASAMXAXMAXAMMASXXSAMX
XAXXMASAXMAMXMXMSSSMXSMSXSAAXMAXAMASMMSSMMSMMASAMXMAXAMSXMAMMMMMMMXXMXMASASMSXXMASMXAMMMSMAAAXAMMAMMMASXMMAMAMSXXMMSSSSXMXSXSMMSXMASASMAMAXS
MXMMSSMMMMAXAMXXMAAXXXMAASMMSMSSMSASAAAAAMXMSAMMXMXSMMMMASAXAAAASXMSMASXSASAMXXMMSMSMMXAAXMMXSMSAMAXAXSAMMAMAAMAXSMXMAMMSMSAAXAXAMMMAMXAXAXX
MXMASAMXASMSSSXSASMMMSMMXMXSAMAAMMMSMMMSSMAMMAMXXAAAXMASAMXMXSSMSAAXSAMAMAMXMMXMMSASAMMSSSSSMAAAXXMSMMMAMSSSXSMMMMAAMAMAAAMSMMXSAXMMSSSSSMSX
XAMXSMMMMSAAAAAAAMXSAAXSMSMSSSSSMMASXAXXXMAXXMMMMMXSXSAMXMSSMAMMSMMMMMMXMSMXAXSAAMMSAMAMMAAMMMMMXMMAAAMMMAAXMMAMSSSSSMSSMSMMMAASXMASAAXAAXSX
SSSMSXSAXMMMMMMMMMXMSSSMASASAMXMAMASXMXSMXSXXXXXMMAMXMMXXAAXMAMMXMAXMAXAMXASASMMXSASXMASMMMMXXAXASMSSMSMMSSMASAMMAAXXMAMAAAAMMMSAAMMMMMMMMSA
AAAAXAXXSMXASASAXXAXXMAMAMMMXMASMMMSASAMAAMAMSMAMMAXMSMSMMASMAMMASXSSSSMSXMMMMASAMXMASASAAMAXSXSMSAMAMXMAMAAASASMMMMMMAMMSSMXSXMAXAAAXXXMAXM
MSMMMSMMMMMASAMXXXXSASMMSSXXSMXXSAXMAMMSSSMAMAAASMMSAAAXMMMAMMMSASXXAAMASMXAASXMXMASXMMMXMSMASXMMSMSAMAMXXAMXMAXXXAAMSMSMAXXAXMASMSMSXMAMMSS
MAMXAMAAAAMMMAMXSMASAMXMXMMMAMSXSMSMAMXAAMAASXSMSXAAMMSMXASAMSAMAXMMMMMASAXMMSAMASMSAASXMMAMMMXSAMXSAMMXSAMXASXMSASMXAAAMXMMMXSAMXMXAASXMMAA
MXXMAXSMSMSSSMSAAMMMMMMMAMAXMASAXAAXMMMMSMXMSXXAXMMMSXMMSXSAXMXMASXAAXMASMSSXSASXSMMMXMAXSXAAXAMASASXMXAMXXMXSAAXXMXSMSMSMMSAMXAMAMXSAMASMAS
SAMXSXMAXASAMAMMXAMXAAASASAMXMMMMSMSXSMMAXAMXMMXMXAXXAMMSMMMMMMXMAXSSSMXSAXMASAMXXMXMXSMMMXSMMMSAMASMSMASXMMASMMMSMMXAXXSAAAXSSXMAMAMAMAXMAM
XXSAMAMAMXMMMAMAMSXSXSXSXSASAXAAMAAAXAMMAMSMSAAMMSMSSXMASXMAXAASXMAXAXXAMAMMAMAMXMSASXASAMXXSSXMXMXMASAMMMSAAMAAAAASMSMAMMSMSMXMSSSXSMMSSMXS
XMMXXAMSMSSXSASAMXASAMAMXMASAMSMSXXSAMXMSMXAMXSAAAXMASMASMSXSSMSAMXMMMMXSSXMXMSAMXSASXSAMXSMAMAXASMMMMSXMAXMSMMMSSMMAXMXMXMMMXAXAAMASMAXMXMA
SAXASXSMXAAXMASAMMAMXMAMAXMXMMMAXAMAMXAMXAMAMSMMSSXXMAXAMXSAAAAXAMSMXXAMMAMMSMXAXMMMMMMXMMAMXMSMMSAAMAMMMXSAMXMXAMXMAMMSMXAAMSSMMSMAMMSMMSAM
XMXMAMAXMMXSAASMMSMSASMSSSMAMXMXMMMAASMSMMMXSAMXMMXAMXSSMASMXMMMAMAMSMSMSAAAAASXMASAXAXASXSXSMXAXSXMMAMMAMXMSXMAASMMXSXMASXMXAASAMMXSXXAAXMX
SSSXSMAMXAAXMXSXXXASXSAAAAMXMAMASMMMMMXAAAAMAMXMXAAMMAAMMAMXSSXMASMSAMMASXSSMMMXMSMAMXSAMMMAAMSAMXAXSAXMASXXSAMAMXAXAMAMASMMMSSMMSMMMASMMMSX
AAAAXMXSMMXSMAXMMMXMAMMMSMMSMASAXMASASMSSMSSMAAMMMSXSMSMMSSMMAASXSXSASMAMXMAMSAMXAXAAXMASAMSMMSSMSMMMASXXMXAXXMASMMMMXMMAMAAAXAXAAMAMMMXMSAM
MAMMMSMMMMMAMASAASAMXMAXAXXAMAXMMSASAMXAAAXMXSAMAAMASXAXAMXAMSMMASMSAMMAMXXAMXXSSSXSSXAAMAXXAAMAMXXMASAMMMMSMXSMXASAMASMSSSMSSSMSMSAMXXXMAMA
AAXAXAAXAASAMMAMSSMSAMXSMMSMXMSMAMXMXMMXMMSSMMASMSMAMMSMMSSMMXAMXMAMXMXXMAXSMSMMAMAXXMASXXMSMMSMSAMXXMMMAXAXAASMXMAMSMSAAMXAAAAAXASXSXMAMMXS
MXSMSSSMSXSAAXAXMXMXXXAMXAAMAXAMSSSMMSMMXMAMAMXAMXMXMAXAXMAAAXAMSMSMSSMASMXXAMXMAMXXMMAAMMMAAMAAAMXSXSXSSMMXSSMAASXMXAMMMXSMSSSMMMMXAXSAMAAM
XAXMAAXXXASXMMMSXASMMMMSMSSSMMASAAASAAXXAMMSXMXSAAAAMXSSMSSMMSAMXAAAAMXAMAAMAMXMXSAMMMSSMAXMSMMMMXAMXMAXAASMMMMXMMAMMMXAXXSAMAAASXSMSASASMSS
MXSMXXMXSMXSXAXMMMSAAMXSAAMAMSMMMSMMSSMMXSXXAMXMMMSXSAAAAAAXMAMXMSMMMAMSSMSSMMXMAXAMAAXAXSSXXMSMSMXXAMMMSMMAAMAASMSMAMSXSMMAMMMMAXXAMASAMAAA
SMMMAXSXMMAMMMAAAXSMMMAXMSMAMMAMXMXMAMAMSMMSMMSSXMMAMMSMMMSMMAXXXAXMMXXXAMXAAAMMSSMMMMSAMXXXMAAAAMSSSSXAMAMSXMMMSAMSSXMAAASXMASXMSMMMAMXMMMS
AXAAXMMAAMASAMXXSMSXSMMXXMMAXSAMASMMAMAMMAAAAAAXAAMAMXXXAXXMMMSMMMMSMSSSMMSMMMXXMAXXXAMXMASXMSMSMMAAXSMXSXMMSMXAMAMAXAMXSAMXSAMAXMAAMXSASXAX
SMMMSASMMSASMXSAXAMASXSXASXAMSAMASASXSSSSMMSMMSSSMSMSMXSSSMAAAXAAAXAAAXAAAMAAMXMSMMMAMSSMXASAMXAAMMXMXMAMAAAAXMXMMMXXXMMXAAAMASXMMSMSASASMMS
XAAAMMMXAMXSAAMMMAMSMAXMMMMXMSMMXSMMAMXAASAAXSAMXXAAAAXXMAXMMXSSSXSMMMXSMMSSMSAAAMMMSMAAXXMSMXMSMMXSAMXSSSMSSSMSMMXSXAXAMXMMMAMAAXAAXMMXSAAX
MXMMSXXMXMXMMXSXSAMXMSMSAAMAAMASAMAMSMMSMMSASMMSMSMSMMMASMMMSMMAXAXMASMAXXXXMSXSMSAAAMSSMSXSMAMXSAMASXAMMXAAMMAMXSAMSSMMXASAMASXMSXSSXSAMMMS
AAMXMXMXAAXMMMXASXSAAAAMSAXXMSAMMSAMAXMXAAMXSAASAAMAXXAXMXAAMAMAMSMSASASMSXAXSXMASMSMMAAXXAXXMXAMXSAMMMSAMMSXMAMMMAXAMAMSASXSASMAMXMMAMASMXX
MMSAMMASMSMSSMMMMMMMMMXMMMSSMMMXMXXSXMXMMMSSXMMSXXMASXSMMSMMXMMSSMAMMMXAASXMMSAMMMXXMMXXMMSMASMMMAMAMMAMAXAMASXSASXMASXMAXXXMASMAMSMMAMXXXAS
SMSASAMMMAAAMSASASXSSSSMSAMXAAAMSAMMXSAAXASMMSXMMSMAMXAAXXASXSAMAMMMASMMMMAMAMAMMMASMSSMMAXMAMAXSXSMSMMMSMXSAMASASASAMAAMSXMSAXXAMSXSXSMXMMM
AMMAMXXXXMMMSSMMASMMMAAAMXMXMMXSMASAAMXSMMSAAMAAAMMSMSXMXMASAMXSAMAAMAXAASAMXSMMXMASXAAMMASMAXXMMASAAAAAXXMMAMXMAMMMASAMXMAMSASMSSMAMAAAXMAS
MSXSAMMSASXXXMAMSMXAMSMMMAMSMSXAXSMMSSMXASMMMSMMMSAXXSASMSAMXMMXAMAMXMMSXSMSMAASMMASMSMMMMMXAMAXMAMXMSMASASMSMSMSMMMAMAXMSAMSAMMXAMAMSMMXSAX
XAMMAAAMAMMMMMAMAAMMXAXXSXMAAXMXMMAMAAXSSMXMMAAMXMASAXAMMAMMMSSSSXSAAXAXAMAAMSMMAMASMXASAXMAXASAMMSAXAMXSXMAXSXMASXMASXMASMMMAMXSMMXXAAMXMMS
AMAMSMSMAMXAASMSMSMSAMXXMAMMSMSSSMAMSSMMXMASMXSMXMXMAMSMMASAAMAAAAMSXSAMAMSMXXXSSMMSASAXMSMASXMASAAXMMSMSAMXMMMSAMXSMXAAMMXAXAMXSAAMSMSMAAAA
SXSMXAXMAMMMMSAMAAAXXSXMMMAXAMAXAXXXXAASMMMAAXMMMSAMXMXASASMXSMMMMMAMMASXMXSAMXMAAXSXMAMSAMAAASXMXSMSXAAMSAMXXAMASXMSSXSASXXMAMXXMAMSAMMSMMX
AAAXMXMSMMMSMMAMSMSMMMXSAAXSSSMSSMSASXMMAMSMSMSAAXXXSASMMMSMXSAMAXMAXSAMAAMSXMASMSMSAMMMSASMMXMMMSAAXSMSMAMASMSSMMAAAXXMAMAAMSSMMXSXSASAXMAM
MXMXSAMMAAAAXSSMMAAAAXAMMXMAMXXXMAXASXMXAMAAAAXMMSSMSXSAAAMMAMASMMSAXMSSMMMMASXXAAASXMAAXXMXMMMSXSMSMXMMMXMAMSXAXSXMMSMMAMXMMAAAAXMAMAMXMMSA
XAMAXASMMMSXMAAAXSSSSSXMASMSMMSMMSMASASXXSMXMMMMXXXASMSXMSSMASAMAAMAMMAMAMXSAMXMSMMMSSMSSXMASAAAASXXXAAAXAMXMXXAMXMXXXXMASAAMXSMMSMAMAMMXAAA
SASASXMXAXXMMSSMMAAAAXMASXXMAMMAAXMXMAMAMXMASMMMSAMXMASMMXAXXSASMMSSMSASAMAMAMXAXAMXMMXXAASASMSMMMMXMSSXSSXMASXMXAMSSMMSAXMXSAMAXXMAMAMAMMSM
SXMXSAAMMMSXMAMXMMMMMMMMMXASMMMMMMSXMAMAMASASAAAMAMMMMMAMSMMMMMMMMAAASASMMMSMSMSSMXMASMMSMMAXAXXSASAAMAMAAAMASAMSASAAXMASMXXMASXMSSMSSSXMMAM
MXSASMMMXAASMMSXSAMXXASAMXXXXSXASXXASXSASXMASMMMSAMAAASAMXXAAMAAXMSSMMAMMAAAAAMAAXASAAAAMAMSMSMMSASMSMAXSSXMASAMSSMXSXMAMMXMSXMAAMMMAXXMASAS
MSMMSAMAMMSSMXMXSXXMASMMSAMXAMSAMXSXMASXSAMXMMAMXXSSSMSASXSSSSMSSXMAXMXMSXSMSMMSSMMMSSMMSSMAXXMAMXXMAXXMMMMMASAMXMMMMXMASAMXMASXSSSMMSMMMMMS

73
4/main.go Normal file
View File

@@ -0,0 +1,73 @@
package main
import (
"bufio"
"fmt"
"os"
"strings"
)
func main() {
file, err := os.Open("input")
if err != nil {
panic(err)
}
defer file.Close()
scanner := bufio.NewScanner(file)
resultXMAS := 0
resultMASX := 0
// word := []string{"X","M","A","S"}
table := [][]string{}
for scanner.Scan() {
line := scanner.Text()
// fmt.Println(line)
table = append(table, strings.Split(line, ""))
}
for i := range table {
for j := range table[i] {
//XMAS
if table[i][j] == "X" {
//HORIZONTAL DOWN
if i < len(table)-3 && table[i+1][j]+table[i+2][j]+table[i+3][j] == "MAS" {
resultXMAS++
}
//HORIZONTAL UP
if i >= 3 && table[i-1][j]+table[i-2][j]+table[i-3][j] == "MAS" {
resultXMAS++
}
//HORIZONTAL RIGHT
if j < len(table[i])-3 && table[i][j+1]+table[i][j+2]+table[i][j+3] == "MAS" {
resultXMAS++
}
//HORIZONTAL LEFT
if j >= 3 && table[i][j-1]+table[i][j-2]+table[i][j-3] == "MAS" {
resultXMAS++
}
//DIAGONAL DOWNRIGHT
if i < len(table)-3 && j < len(table[i])-3 && table[i+1][j+1]+table[i+2][j+2]+table[i+3][j+3] == "MAS" {
resultXMAS++
}
//DIAGONAL DOWNLEFT
if i < len(table)-3 && j >= 3 && table[i+1][j-1]+table[i+2][j-2]+table[i+3][j-3] == "MAS" {
resultXMAS++
}
//DIAGONAL UPLEFT
if i >= 3 && j >= 3 && table[i-1][j-1]+table[i-2][j-2]+table[i-3][j-3] == "MAS" {
resultXMAS++
}
//DIAGONAL UPRIGHT
if i >= 3 && j < len(table[i])-3 && table[i-1][j+1]+table[i-2][j+2]+table[i-3][j+3] == "MAS" {
resultXMAS++
}
}
//MASX
if table[i][j] == "A" {
if i < len(table)-1 && i >=1 && j < len(table[i])-1 && j>=1 && (table[i-1][j-1]+table[i+1][j+1] == "MS" || table[i-1][j-1]+table[i+1][j+1] == "SM") && (table[i-1][j+1]+table[i+1][j-1] == "MS" || table[i-1][j+1]+table[i+1][j-1] == "SM") {
resultMASX++
}
}
}
}
fmt.Println("XMAS contained :",resultXMAS)
fmt.Println("MAS in X contained :",resultMASX)
}

1374
5/input Normal file

File diff suppressed because it is too large Load Diff

109
5/main.go Normal file
View File

@@ -0,0 +1,109 @@
package main
import (
"bufio"
"fmt"
"os"
"regexp"
"strconv"
)
func calcScore(s [][]string) int {
result := 0
for i := range s {
if len(s[i]) % 2 == 0 {
fmt.Println("The following valid update has an even length, so cannot calculate the middle page: ", s[i])
} else {
middle := (len(s[i]) + 1) / 2
middlePage, _ := strconv.Atoi(s[i][middle - 1])
result = result + middlePage
}
}
return result
}
func isValid(update []string, rules [][]string) bool {
valid := true
for i:=1; i<len(update); i++ { //FOR EACH NUMBER OF THE UPDATE
for j := range rules { //FOR EACH RULE
if update[i] != rules[j][0] {
continue
} else {
for k:=0; k<i; k++ { //FOR EACH
if update[k] == rules[j][1] {
valid = false
break
}
}
}
}
}
return valid
}
func makeValid(update []string, rules [][]string) []string {
for i:=1; i<len(update); i++ { //FOR EACH NUMBER OF THE UPDATE
for j := range rules { //FOR EACH RULE
if update[i] != rules[j][0] {
continue
} else {
for k:=0; k<i; k++ { //FOR EACH
if update[k] == rules[j][1] {
temp := update[k]
update[k] = update[i]
update[i] = temp
break
}
}
}
}
}
if ! isValid(update, rules) {
update=makeValid(update, rules)
}
return update
}
func main() {
file, _ := os.Open("input")
defer file.Close()
scanner := bufio.NewScanner(file)
ruleRegex := regexp.MustCompile(`[0-9]+\|[0-9]+`)
updateRegex := regexp.MustCompile(`^(\d+(,\d+)*)$`)
numberRegex := regexp.MustCompile(`[0-9]+`)
rules := [][]string{}
updates := [][]string{}
for scanner.Scan() {
line := scanner.Text()
ruleMatches := ruleRegex.FindAllString(line, -1)
updateMatches := updateRegex.FindAllString(line, -1)
rule := []string{}
update := []string{}
for i := range ruleMatches {
rule = append(rule, numberRegex.FindAllString(ruleMatches[i], -1)...)
}
for i := range updateMatches {
update = append(update, numberRegex.FindAllString(updateMatches[i], -1)...)
}
if len(rule) > 0 {
rules = append(rules, rule)
}
if len(update) > 0 {
updates = append(updates, update)
}
}
validUpdates := [][]string{}
invalidUpdates := [][]string{}
for i := range updates {
if isValid(updates[i], rules) {
validUpdates = append(validUpdates, updates[i])
} else {
valid:=makeValid(updates[i], rules)
invalidUpdates = append(invalidUpdates, valid)
}
}
validScore := calcScore(validUpdates)
fmt.Println("Score of valid updates: ", validScore)
invalidScore := calcScore(invalidUpdates)
fmt.Println(invalidScore)
}

80
5/main.go.BAK Normal file
View File

@@ -0,0 +1,80 @@
package main
import (
"bufio"
"fmt"
"os"
"regexp"
"strconv"
)
func calcScore(s [][]string) int {
result := 0
for i := range s {
if len(s[i]) % 2 == 0 {
fmt.Println("The following valid update has an even length, so cannot calculate the middle page: ", s[i])
} else {
middle := (len(s[i]) + 1) / 2
middlePage, _ := strconv.Atoi(s[i][middle - 1])
result = result + middlePage
}
}
return result
}
func main() {
file, _ := os.Open("test")
defer file.Close()
scanner := bufio.NewScanner(file)
rule := regexp.MustCompile(`[0-9]+\|[0-9]+`)
update := regexp.MustCompile(`^(\d+(,\d+)*)$`)
rules := []string{}
updates := []string{}
for scanner.Scan() {
line := scanner.Text()
ruleMatches := rule.FindAllString(line, -1)
updateMatches := update.FindAllString(line, -1)
rules = append(rules, ruleMatches...)
updates = append(updates, updateMatches...)
}
// fmt.Println("Rules: ", rules[0])
// fmt.Println("Updates: ", updates[0])
number := regexp.MustCompile(`[0-9]+`)
validUpdates := [][]string{}
invalidUpdates := [][]string{}
for i := range updates { //FOR EACH UPDATE
validUpdate := true
updateNumbers := number.FindAllString(updates[i], -1)
for j:=1; j<len(updateNumbers); j++ { //FOR EACH NUMBER OF THE UPDATE
for k := range rules { //FOR EACH RULE
ruleNumbers := number.FindAllString(rules[k], -1)
if updateNumbers[j] != ruleNumbers[0] {
continue
} else {
for l:=0; l<j; l++ { //FOR EACH NUMBER UNTIL THIS ONE IN THE REPORT
if updateNumbers[l] == ruleNumbers[1] {
validUpdate = false
break
}
}
}
}
if validUpdate == false {
break
}
}
if validUpdate {
validUpdates = append(validUpdates, updateNumbers)
} else {
invalidUpdates = append(invalidUpdates, updateNumbers)
}
// fmt.Println("Update numbers: ", updateNumbers)
// fmt.Println("updateNumbers length:", len(updateNumbers))
}
// fmt.Println("Valid Updates: ", validUpdates)
// fmt.Println("Valid updates number: ", len(validUpdates))
result := calcScore(validUpdates)
fmt.Println("Valid updates: ", validUpdates)
fmt.Println("Invalid updates: ", invalidUpdates)
fmt.Println("Result: ", result)
}

28
5/test Normal file
View File

@@ -0,0 +1,28 @@
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

130
6/input Normal file
View File

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

160
6/main.go Normal file
View File

@@ -0,0 +1,160 @@
package main
import (
"bufio"
"fmt"
"os"
"strings"
)
func findPosition(layout [][]string) []int {
position := []int{}
for i := range layout {
for j := range layout[i] {
if layout[i][j] == "^" {
position = append(position, i, j)
}
}
}
return position
}
func findObstacles(layout [][]string) [][]int {
positions := [][]int{}
for i := range layout {
for j := range layout[i] {
if layout[i][j] == "#" {
positions = append(positions, []int{i,j})
}
}
}
return positions
}
func calcPath(layout [][]string) ([][]int, bool) {
circle := false
direction := "up"
guardPosition:=findPosition(layout)
inBound := true
currentPosition := guardPosition
path := [][]int{currentPosition}
for inBound && !circle {
if direction == "up" {
if currentPosition[0] == 0 {
inBound = false
break
} else if layout[currentPosition[0]-1][currentPosition[1]] == "#" {
direction = "right"
continue
} else {
currentPosition = []int{currentPosition[0]-1, currentPosition[1]}
if checkCircle(path, currentPosition) {
circle = true
} else {
path = append(path, currentPosition)
}
}
}
if direction == "right" {
if currentPosition[1] == len(layout)-1 {
inBound = false
break
} else if layout[currentPosition[0]][currentPosition[1]+1] == "#" {
direction = "down"
continue
} else {
currentPosition = []int{currentPosition[0], currentPosition[1]+1}
if checkCircle(path, currentPosition) {
circle = true
} else {
path = append(path, currentPosition)
}
}
}
if direction == "down" {
if currentPosition[0] == len(layout)-1 {
inBound = false
break
} else if layout[currentPosition[0]+1][currentPosition[1]] == "#" {
direction = "left"
continue
} else {
currentPosition = []int{currentPosition[0]+1, currentPosition[1]}
if checkCircle(path, currentPosition) {
circle = true
} else {
path = append(path, currentPosition)
}
}
}
if direction == "left" {
if currentPosition[1] == 0 {
inBound = false
break
} else if layout[currentPosition[0]][currentPosition[1]-1] == "#" {
direction = "up"
continue
} else {
currentPosition = []int{currentPosition[0], currentPosition[1]-1}
if checkCircle(path, currentPosition) {
circle = true
} else {
path = append(path, currentPosition)
}
}
}
}
return path, circle
}
func checkCircle(path [][]int, position []int) bool {
result := false
for i:=1;i<len(path);i++ {
if path[i][0] == position[0] && path[i][1] == position[1] {
if i < len(path)-1 && path[i-1][0] == path[len(path)-1][0] && path[i-1][1] == path[len(path)-1][1] {
result = true
}
}
}
return result
}
func main() {
file, _ := os.Open("input")
defer file.Close()
scanner := bufio.NewScanner(file)
layout := [][]string{}
for scanner.Scan() {
line := scanner.Text()
layout = append(layout, strings.Split(line, ""))
}
// fmt.Println(path)
// fmt.Println(len(path))
path, _ := calcPath(layout)
pathOccurances := make(map[[2]int]int)
for _, tuple := range path {
key := [2]int{tuple[0],tuple[1]}
pathOccurances[key]++
}
fmt.Println(len(pathOccurances))
circleSpots := [][]int{}
for i:=1;i<len(path);i++ {
if path[i][0] == path[0][0] && path[i][1] == path[0][1] {
continue
} else {
tempValue := layout[path[i][0]][path[i][1]]
layout[path[i][0]][path[i][1]] = "#"
_, circle := calcPath(layout)
if circle {
circleSpots = append(circleSpots, path[i])
}
layout[path[i][0]][path[i][1]] = tempValue
}
}
uniqueCircles := make(map[[2]int]int)
for _, tuple := range circleSpots {
key := [2]int{tuple[0],tuple[1]}
uniqueCircles[key]++
}
fmt.Println(len(uniqueCircles))
}

10
6/test Normal file
View File

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

850
7/input Normal file
View File

@@ -0,0 +1,850 @@
5055314034: 10 1 489 35 44 14 16 4
108773: 18 1 121 2 6 38
22175: 1 73 45 2 35 5
4076637638: 338 1 6 1 191 7 3 4 34 4
479231839: 9 7 73 1 6 4 7 8 581 7 2 8
161312232: 761 852 11 4 8 28 6
6760600000: 220 40 7 5 878 25
601121975: 608 91 53 5 5 53 649
761: 79 2 6 558 42
84130: 65 90 8 6 9
52590888326: 7 3 9 3 8 543 1 673 8 4
21603: 9 80 3 1
6498240: 9 6 7 32 210
2420318475: 8 413 85 167 5 81
6368572316: 885 2 2 599 5 1 6 6 6 5 9
23428423: 870 8 1 308 581 5 34 9
17387502: 1 8 50 1 76 67 395
16073047995028: 9 8 2 6 2 282 5 507 954
1527631: 2 8 95 6 8 8 152 6 1 9 5 8
90086454: 32 593 2 1 4 1 6 4 6 45 7
516078606614: 8 60 6 7 860 59 7 14
145962: 2 86 847 269 3 6
81188: 9 8 7 3 386 37 82 2 8
159171: 50 1 764 817 12 4
9440342478: 866 326 50 499 67
177118: 77 846 845 3 18
389593323: 41 95 2 3 62 46 6 780 3
2318793: 3 74 9 8 792
6077575: 421 4 6 84 17 7
1513923281: 760 3 166 82 4 1
1368574: 950 17 520 460 2 534
2602638433: 6 506 58 1 346 262 4
324285404: 7 4 1 6 6 443 3 4 6 41 1 4
123419188: 831 275 4 1 8 9 7 9 5 6
7639222: 3 2 1 50 4 9 823 98 1 2 8
2165757141719: 93 575 4 8 498 81 5 5 6
32949456: 7 6 1 1 338 31 9 6 958 7
373015448: 7 1 8 86 146 2 8 6 545 5
58401: 50 1 74 9 7 3 672 7 59
321369974958: 3 5 380 7 3 3 2 5 801 3 9
1654884263287: 398 42 99 1 72 91 287
1497933556: 4 89 6 2 41 8 5 558
14538726514: 726 8 658 699 6 2 514
653959328: 63 519 95 2 3 27
12554226440: 8 4 46 8 8 912 828 58 7
24068829: 2 1 7 9 8 6 3 14 33 6 6 1
13716449: 1 37 16 449
70300416144: 1 9 61 300 406 2 8 1 44
12041328: 60 3 4 839 78
179748877650: 179 2 5 4 881 6 76 49
22666025380: 4 230 3 54 99 96 456 4
74741534: 747 4 14 33 40 61
194212880: 97 2 201 7 4 8 1 98 7 8 2
534529044: 7 7 673 8 4 680 7 9 28 9
688: 4 5 5 23 6
256747454: 8 3 6 9 9 3 76 266 9 5 2
61497991: 52 29 759 18 993
8046070: 4 35 2 833 36 70
19899933: 6 23 801 6 5 94 4 5 3 2 3
175019472155: 9 4 84 444 214 25 5 30
122: 2 12 8 5 5
7716862272: 8 6 1 9 1 9 782 49 8 4 3 7
292572: 7 3 314 36 21 1
9265739: 181 9 828 7 5 8 5 1 38 9
38166224456: 8 55 930 6 995 144 54
10633: 461 77 9 972 7
11448249: 11 359 89 2 51
6409: 3 2 5 6 252 8 4 3 352 3
144060624: 7 3 34 1 601 1 27 907 6
29213: 97 1 3 8 6
61614560278: 23 4 758 900 98 35 8
701009838: 786 93 959 2 13
170675: 51 1 4 446 34 27 6 5
3590981856: 2 6 77 7 3 6 6 12 99 77 7
159313258080: 20 933 158 9 79 76
13950095: 620 774 482 3 524 5
19276100: 3 828 1 95 773 519 53
91701711135: 58 300 704 2 527
19037065502: 29 69 9 1 90 5 46 955 9
4796722: 841 57 30 1 9
6491761244154: 9 689 19 5 83 5 68 67
2288734074: 3 20 351 81 11 35 7 2
51: 1 7 3
6703: 5 19 2 7 6 3 8 6 3 678 3 7
55285: 7 151 96 43 5 673
1345: 20 5 4 13 323 2
648683: 90 9 85 8
647351437: 1 79 2 8 7 568 12 2 3 5
496420640: 9 34 69 9 710 2 8
17707: 78 98 93 7 7
1322647: 1 6 4 7 4 2 8 8 9 8 50 283
13373109: 2 771 1 865 1 9 5 5 2 5 4
1771452188: 17 714 52 1 86
3876558518158: 3 6 5 6 9 2 3 4 271 5 53 8
121216672: 3 2 8 3 7 6 57 8 4 4 8 674
99709866569: 778 9 7 32 42 664 4 7
8132: 61 12 84 5 743
181628139355: 3 48 7 9 3 5 475 41 5 7 4
8137536: 2 3 5 7 8 3 7 31 7 2 6 9
125320123: 16 7 7 13 96 372 8 123
3928122: 7 3 5 97 4 4 6 389
16010345: 8 25 8 95 1 5 590 230 9
353033: 6 434 5 80 633
662454: 882 6 7 3 402 3 28 26
4623860913: 6 6 8 6 2 49 8 3 2 8 4 982
6223012578846: 70 889 125 788 46
1233252: 8 6 5 9 3 804 2 9 213 8 9
6377598: 7 5 7 11 692 3 2 9 3 1 2 6
851215538888: 9 5 4 7 4 1 9 42 8 2 890
652063806: 26 4 21 8 1 6 2 49 8 3 5 8
569651493608: 626 5 17 9 531 3 607 2
109564049: 5 4 4 2 622 5 501 5 50 1
108244890: 920 181 7 3 6 65
3064775: 6 3 1 7 1 6 7 9 65 9 581 5
2168098354: 4 479 73 6 40 4 29 53 6
2213354545: 9 1 212 335 38 87 656
113305647: 83 1 93 9 5 36 4 8 3
3648621: 45 2 9 6 4 3 4 1 76 1 7 6
39788761: 3 631 52 58 75 8
37988340: 996 882 389 3 52
105593616: 3 9 2 2 9 196 1 815 57 3
34732786878: 391 3 6 907 6 88 1
432317883: 273 791 11 182
485351797: 58 4 76 83 9 96
75514220688: 839 90 4 220 688
8989734402: 89 81 8 734 400 2
1560183: 7 48 54 4 1 84 1
1639799045: 116 589 8 9 2 5 3 8 8
52538: 29 78 3 736 62 86
943: 726 6 206 5 3
426657: 5 53 7 230 7
34098: 40 841 1 3 6 441 7
987900367: 6 4 6 8 98 8 2 6 36 4 1 3
3240: 7 2 16 6 9 81
167040619026129: 8 5 537 764 5 9 479 2 9
21896: 19 4 6 4 86 184
473: 364 1 95 7 6
231: 5 8 191
4095: 7 571 9 8 81
40921600: 20 37 92 816 4 50
39353184077: 99 835 3 9 1 585 8 79
224194610985: 9 552 4 190 3 999 2 9 2
81804625: 8 79 5 93 27 84 27
146: 9 6 8 15 9
793655568: 491 449 8 8 9 4
83314065: 462 8 559 18 6
364726: 40 87 27 26 4
1678449: 176 3 952 73
2423015: 5 76 99 6 8 8 501 3 8
171837368646: 94 1 609 33 1 3 68 648
686498: 8 8 78 95 2
504336092: 5 945 553 30 4 2 9 9 5 4
73304: 12 736 98
3458989639: 4 6 3 61 7 95 6 50 463 9
182: 1 4 90 83 5
2487563: 78 1 992 61 23 45
13836888716: 772 7 1 8 272 5 8 4 8 68
6288370: 29 7 180 77 7 137 207
10944097534206: 1 673 409 408 9 2 327
1195444320: 92 7 998 6 310
27360851258: 66 6 9 9 4 2 5 8 51 258
6317930: 986 63 70 9 982 30
68190208: 29 918 40 576 8 8 8 8
21470713: 1 7 2 3 200 5 2 11 359
309386: 3 72 3 1 6 41
88555437: 72 696 19 81 93
692826037754: 766 4 663 899 5 2 54
88288240327202: 6 6 65 539 57 61 7 20 4
6481223: 646 9 9 3 145 4 72
37018831358: 671 7 6 91 31 358
185508656: 2 14 9 371 4 14 5 93 1 4
60076539: 4 150 760 39 3 491 5
349331: 2 3 27 317 329
6527: 7 1 7 4 7 5 5 2 6 50 1 54
582802573: 321 516 6 284 2 245
12151573: 5 92 44 3 9 663 551 9 6
3265154989: 777 408 9 8 7 2 36 2 3 4
516041069541: 8 2 4 17 72 7 7 1 546 4
1695: 7 5 327 5
17171: 163 5 52 321
177861: 4 94 120 6 3
17432592: 9 870 573 716 12
420355623360: 1 213 7 23 98 19 33 61
572193: 9 26 3 902 655 6
417217: 46 2 27 2 58 83 4 55
2061628: 474 8 2 3 656 978 4
546001430: 6 8 391 637 8 80 22 65
281028055: 3 35 9 3 9 9 8 8 48 33 55
33580: 33 5 68 6 6
723642076: 467 7 973 2 8 412 5 18
47287138632892: 72 749 4 4 405 65 3 90
227860: 37 9 61 6 92 1 4
6571872443: 543 121 9 148 2 443
741867: 5 21 9 81 7
177518571: 8 53 611 1 6 17 862 5 3
3596: 44 299 7 78 79
360138: 9 4 1 665 1 2 497 42 3 9
42509: 23 495 82 6 27
28260834920: 785 36 834 79 7 5 118
263067760: 515 714 40 65 85 6 70
256447296093: 860 200 7 35 864 4 9 2
246840600711: 53 3 735 350 92 3 712
13192021941: 409 7 68 56 9 388 5
15576: 7 40 7 3 3 378 8 390 4
2189253: 46 8 73 4 53
1816444120: 605 4 6 3 6 3 4 2 4 1 2 10
46744143989399: 4 6 74 414 3 98 7 2 399
1255715008872: 9 872 2 3 5 8 69 7 8 87 2
118404: 885 12 941 279 4
404222: 1 9 5 389 2 21
154879: 1 580 72 79 39 3
3359259415: 646 26 29 7 2 15
4538379: 3 8 529 233 8 4 513
915: 4 1 640 5 265
581101: 978 3 2 99 8 161
83836120: 20 94 50 94 41 2 72 8
2033775: 38 539 61 99 9 9
692410: 692 3 60 48 5
194576: 304 4 8 8 2
620550: 2 5 5 8 64 9 3 562 9 7
7624704956: 3 93 64 264 8 96 958
964319157: 147 3 78 35 74 84
627487938: 8 2 7 641 7 938
162785716: 37 6 6 3 7 6 3 9 1 4
9445586101: 6 8 8 3 35 45 7 6 6 4 102
539240: 9 21 9 7 65
389898820815: 8 5 538 4 6 3 4 3 601 8 7
10363: 42 856 6 132 1
1039848290: 6 3 26 781 102 1 11
140532: 193 151 13 8 8 574 6
5068: 15 1 7 44 25 423
15985935: 81 8 3 1 9 665
1041709883: 4 795 8 7 1 7 2 2 9 6 646
1432651301: 102 194 724 99 4
4878: 7 114 523 99 5 6 390
4181369637: 4 79 43 880 203
31575685: 4 6 304 7 3 9 3 2 965 8 5
3622: 3 61 3 1 9
982: 99 93 791
27390952984: 22 67 5 5 7 944 980 6 4
184342: 71 88 25 329 14
3392818: 467 24 691 7
10248050597: 2 7 1 5 1 45 2 66 724 9 5
53172521: 870 10 4 61 781 19
11304: 98 3 4 80 9
104258902: 7 7 4 463 7 484 5 82 2 2
5613: 6 19 1 22 117
1148356567: 7 8 274 662 2 745 6 6 6
4084: 5 67 16 7 3
124533: 9 6 5 59 14 2 3 5 8 3 3
2057435762: 74 7 94 74 7 571
6509263: 62 563 280 871 55 37
264982: 325 1 8 42 7 6 2 10
50343: 2 2 44 52 5
28924499: 59 49 84 60 98
8914562171: 6 1 9 9 6 160 5 16 7 3
3969876: 62 8 8 867 946 63
577332: 774 4 492 70 812
7380856: 38 3 30 6 856
159862230: 2 2 8 2 71 46 3 343 7 5 9
103487100: 2 49 51 41 2 977 483 3
2547882725245: 483 5 1 4 145 8 9 524 3
1387400184215: 13 874 100 184 212
10146850566: 241 7 6 2 77 9 6 10 82 6
471205560: 7 89 164 40 49
304928495: 6 813 7 372 95
5476: 67 4 35 39 4 1 4
437171: 261 58 370 634 345
1544843589: 1 544 4 4 3 7 5 9 4 5 645
1148401434: 3 31 77 3 33 133 9 95
67822: 73 5 19 8 344 4 91 479
3534850086174: 72 243 233 3 8 5 739 7
479471892: 9 97 355 61 9
1858976: 592 4 608 4 386
200176098: 85 894 7 6 439
17579: 9 8 3 58 1 3
36768: 8 3 60 86 4 16 8 6
9500988: 579 1 780 28 21
1156896: 48 241 1 8 8
66078: 83 79 6 2 440 6
37342237806: 957 922 441 14 8 423
2135507316: 3 130 68 703 5 2 7 314
24622848: 3 206 2 2 384
517132446: 5 2 518 7 8 9 7 687 6 4 1
26297215017: 1 5 41 4 658 7 5 386 1 9
11323819355: 2 45 73 460 41 33
877788: 94 7 30 8 666
34923962: 9 588 1 60 5 303 972 1
2060156: 5 93 6 913 3 9 75 731
1010573: 4 897 516 604 5 7 2
1153373: 6 9 416 49 619 370
188237471616: 338 3 5 926 3 1 9 6 2 16
351420096: 77 386 3 7 22 8 563
28154770105: 554 8 50 7 25 2 33 1 55
797941714: 931 9 6 7 7 7 4 952 68
17307: 20 213 7 8 7 7 841
278861076: 31 562 2 85 1 3 4 468
939675870639: 989 5 366 945 638
3355236: 1 1 531 732 1 91 20 3 5
303636711: 94 3 41 427 73
4553356517: 417 79 36 30 85 5 3
119833217456: 149 79 152 18 2 8
8647858: 2 91 55 716 785 8
70791495: 6 9 5 1 3 9 1 5 9 385 89 5
58703112937: 3 7 592 1 4 73 2 949
1333781: 5 22 7 3 321 5 5
55088: 449 376 49 63 26
14704: 1 235 3 5 9 8 2 4 747 4 4
141818221948: 468 6 97 6 9 336 3 170
106725235: 275 66 6 98 323 4
935144558: 90 36 72 243 4 45 57
4783996: 4 760 23 993 1
7179142: 74 97 91 9 6 216
17860470: 337 9 14 312 10 9 530
82330587240: 56 4 5 56 7 2 810 4 4 5 6
7624624: 9 486 900 38 236 38
3117225: 7 7 52 32 8 9 89 723 5 4
4533781031: 70 6 86 9 4 742 933 17
1152: 62 5 5 190 287
202477780855: 5 278 6 251 2 97 265 7
33930789: 22 8 31 9 6 8 3 4 1
46868: 46 366 1 7 4 491
2234965: 9 9 253 10 9 8 8 9 6 76
56725: 725 78 7 2 513
413871: 5 17 25 8 68
4411739: 612 901 54 8 7 4
280019599: 62 497 5 4 1 3 9 80 599
139832: 4 9 965 2 343 7 7 79 2
6626869: 599 3 86 64 28 2
22108023: 854 2 9 258 5
149940: 80 69 462 480 1
2333364: 52 223 804 4 44
564496918: 5 748 658 4 9 6 918
7310688: 4 7 1 82 40 4 9 51 21 92
232322688: 6 74 64 9 24 84 32
472649: 2 28 8 20 45 606
4985: 980 2 13 2 5
173748825: 9 48 75 97 419
4032: 53 90 75 6 18
2819352: 73 3 16 711 77 6 19 37
956118: 557 3 5 570 786 8 4
16924517: 2 7 4 67 6 21 984 9 701
92: 9 4 1 57 1
812046062: 7 2 5 4 32 38 96 7 9 581
87867529187: 67 2 7 4 906 6 8 3 8 3 87
28749775: 2 4 2 61 5 82 32 11 49 5
6310651: 983 3 8 8 2 51
5014704: 4 2 747 839 753 2 7 78
15436752: 47 207 327 27 33 3
83562106762: 83 8 9 498 383 2 6 764
60877371: 37 5 688 42 41 17
310856: 677 5 25 6 91
116678676: 1 29 177 4 511
4599: 434 6 88 87 78
1737334: 159 43 4 7 53 657 2 22
512120: 441 3 719 15 9 836 7 4
18168384: 1 7 7 243 971
5436: 424 40 9 734 56
2853540: 30 948 95 39 1
207065: 414 13 5
1387710382: 14 11 9 2 8 6 2 77 9 79
95854: 93 51 3 5 6 8 216 4 4
11476: 98 2 4 110 36
88098: 89 790 1 91 6 3
4650: 77 6 1 22 7
320716: 6 82 41 234 61 82 670
912: 86 7 5 2 41 48 627
164961: 3 674 966 30 92 538 1
138616: 4 3 34 4 835 8 7 2 8
1965: 961 2 45
100926540962: 5 2 9 991 990 6 1 960
3194282223: 195 5 426 400 3 9 57
2377: 885 5 902 520 65
875172675: 2 485 3 9 4 8 6 84 3 2 3 5
3527088: 2 2 38 17 89 32 39 1 6
36414372: 9 749 25 4 1 6 917 8 7 2
1956972: 4 1 7 1 4 4 7 1 728 48 6 2
186714996: 891 7 3 3 7 99 8
8779120: 10 381 1 7 23 20
58735380: 97 89 220 10 6
1546053: 81 320 590 52 6 5 87 6
891089745: 9 521 946 38 5 4
18500736: 2 2 5 925 72 8 9
46556774: 9 33 499 77
506616547829: 7 79 2 5 152 9 1 3 6 2 6
9423: 32 2 9 27 1
249538843: 4 9 13 4 23 5 709 3 41
9677312192: 1 23 224 2 6 5 3 2 180 9
367662: 3 9 1 5 2 1 276 37 8 7 7 8
479671395840: 3 4 91 8 9 2 5 812 46 4 7
2408811: 96 305 11 9 340 4 5 6
16956800: 33 8 950 2 32
461607: 45 985 4 87 9 835 2
776: 1 97 8
13140615: 3 73 2 6 5 47 8 5 5 1 1 9
28824: 1 5 46 3 58 1 3 9 87 1
95810721: 1 94 791 1 18 665 58
117868923: 81 1 97 928 3 5
1068: 86 3 7 41 4 53 874
6282: 1 27 21 66 65 9
7620674: 5 71 20 487 94 93 2
7935824: 7 819 739 22 1 5 13 78
199809421: 694 64 75 9 499 335 5
30580: 305 4 3 36
13500687200: 68 3 266 180 572 7 5 2
127633711135: 1 99 7 8 7 4 8 555 2 8 5 3
194559682: 6 648 5 12 1 2 22 5 679
116522137: 82 19 59 44 1 35 34 4
19715: 98 2 9 7 16
101871: 38 991 99
258511840: 5 42 1 54 709 149 32
2391735493: 32 765 3 7 35 458 34
187570353992: 4 9 9 9 7 7 9 3 4 344 7 49
360374400018: 200 208 625 8 36 5 5 8
2230817787: 4 58 2 2 1 181 7 5 9 1 9 3
401494: 3 4 99 1 938 6 4 6
733544: 4 2 4 8 382 2 8 2 7 8 3 5
77590906330: 8 3 4 76 8 2 42 7 4 68 8
2004866958: 250 6 8 66 933 1 25
533045520: 5 6 6 6 6 3 7 521 8 5 7 6
5413: 8 4 451
3651758346: 942 546 71 10 1 45
1125824227545: 3 3 4 1 8 533 87 5 7 8 6
190513132: 6 24 9 49 6 5 9 3 5 5 4 99
934891: 9 7 26 4 2 8 2 8 82 1 90
1137: 8 43 20 86 688
17531: 89 84 10 221
118321967: 8 9 704 65 6 7 4 3 631 2
638843084623: 1 71 3 7 5 4 5 578 179 1
98230: 29 2 2 1 6 2 90 1 7 64 8
13444932444: 8 42 123 216 95 1 4 2
71659034: 626 1 2 9 25 9 95 8 114
32711009: 26 141 51 15 1 88
1684270: 1 280 7 794 92 1 7 59
29916: 1 86 82 339 6 4
4811820531: 4 82 1 3 4 2 2 90 611 8 4
9867762: 10 1 8 3 1 2 9 4 188 3 3 2
510: 457 24 30
3353882283: 3 93 490 2 2 757 3 1 3 8
61: 5 17 9 1 32
1727: 708 898 26 86 8
223611912: 7 7 3 1 451 86 231 9 3 8
116475838: 8 840 24 549
2156733: 7 8 7 2 4 533 8 1 37 730
49787: 4 8 645 883 258
771230164: 9 2 97 4 1 9 808 2 4 6 6
5275: 105 5 5
69778355889: 802 87 4 2 5 9 5 9 99 91
911554728: 4 5 2 3 9 4 236 93 7 8 5 6
704196331803: 704 1 963 31 802
472914541: 28 67 78 4 9 3 7 9 91 7 9
7257683: 93 868 6 817 89
36471370885: 300 770 3 47 6 2 86
33958632312: 19 992 99 99 248 73
2488243: 4 8 74 4 190
26913521521: 7 8 9 6 9 4 49 6 35 1 67 4
52685: 405 98 23 8 8
4406699117: 5 974 4 4 9 2 5 9 91
795088373103: 158 978 39 67 4 6 21 5
305130396: 9 5 1 59 3 347 9 67 12
531: 47 3 7 1 1 9
1192268044384: 3 871 88 35 4 435 4 31
6392322: 7 63 351 7 8 251 44 27
69739288: 8 71 7 4 8 84 4
523483: 87 2 3 5 2 91 2 692
802030: 6 2 81 86 22 30
626316838: 41 201 38 2 419 416
18023805: 969 31 6 60 42
2762443: 15 64 777 45 1 204 4
71441: 87 81 96 9
93838674: 6 7 55 7 155 70 9 97
7306479: 3 2 1 283 9 63 9 7 9 5 8
314885: 9 34 8 8 12 70 6
4845827: 484 5 102 697 31
22788228: 418 9 8 1 68
135358192800: 7 2 3 1 5 4 949 8 5 80 9
1546: 4 51 96 2 1 26 3 909 7
361176914: 3 848 2 49 7 2 2 8 2 914
9544257: 7 7 9 42 3 2 7 5 546 27
526: 65 8 2 4
1932693441: 53 67 7 8 9 4 29 9 780 1
821715: 33 83 3 14
1810654: 22 81 975 556 321
415368: 31 3 735 2 54
2650: 39 79 21 295 96 5
3277842795: 8 69 22 4 6 2 5 5 3 613
787763809: 692 4 8 363 53 6 35 49
140345412505: 296 4 947 24 43 58 5
397671263: 9 1 3 1 57 6 8 5 4 3 126 3
2875941: 4 603 5 44 47 8
4621566793294: 8 932 452 5 22 61 853
8968000: 467 8 59 32 3
6027428: 5 675 352 423 6
1724: 8 2 12 694 46
392769: 9 6 907 5 1 1 39 5 3 3 9
3925: 759 4 1 61 827
1486822: 82 594 5 9 17 3 2
2400: 6 7 143 90 8
4286544: 347 9 807 1 546
3307871: 3 4 4 4 6 6 72 2 285 23 7
398278260: 3 7 81 6 9 7 526
59250: 6 93 623 28 79
122906054: 30 884 64 3 92 7 53
32646: 3 1 627 9
2980467454: 8 8 9 9 3 3 4 46 7 440 5 9
55943811099: 530 535 758 770 2 9 9
2168287875: 6 86 257 2 42 7 5
481195320: 789 790 772
62339349: 4 1 8 930 8 9 3 16 9 3 2 4
7157155545: 3 15 3 973 5 4 3 5 55 48
210528982: 4 9 9 32 521 57 866 52
1545266035: 61 62 6 32 5 680 9 24
51739: 9 5 2 7 82 79
6102859: 60 181 756 90 8 3 76
10159693192: 4 27 33 114 721
214575225: 8 51 6 4 9 837 675 9 5 9
7028944: 47 7 4 3 9 7 1 51 2 376
23322867: 9 49 29 28 4 574 7
902118625817: 883 8 759 94 625 819
713256123099: 742 155 47 961 9 1 97
1755816105888: 698 3 776 796 351 3
396663497: 1 983 2 634 97
1348244080: 65 768 205 78 1
462274: 248 8 233
61266: 8 7 87 6 69
5882741765: 1 7 3 5 3 1 427 2 4 8 8 8
766181250: 485 29 811 771 15 50
1716743769: 58 8 701 754 7 308 69
21777: 2 9 3 5 65
1553336: 56 295 94 1 393 59
40332646896: 873 35 22 781 6 6
4110: 35 5 80 156 754
37564007116818: 93 910 8 5 7 1 116 818
26127012: 9 24 1 7 4 98 4 2 7 3 33 9
12548006988763: 979 1 1 4 2 86 149 763
636520546: 998 1 4 7 7 425 4 77 85
14145768: 829 4 7 4 651 4 889
8725165: 9 173 5 903 6 8 3 65
474882020: 448 53 101 5 4
124342128: 983 5 871 614 28 35 8
358665062: 5 3 80 8 1 1 8 8 337 3 6
669561657: 3 28 2 607 2 3 6 1 656
117632: 8 3 208 555 4
1220055: 217 56 7 40 39 119
205348861: 9 56 3 716 61
8410710: 5 64 4 8 98 7 363
7928792: 376 46 8 80 3 4 3 3 764
5799083120393: 3 5 6 47 4 7 170 7 7 83 5
107463712: 9 6 1 6 60 9 5 9 9 2 8 67
10207: 91 1 33 428 549
43330935: 8 9 53 7 68 947 82 3
19476019: 1 9 3 1 72 94 3 7 6 4 34
284580: 15 8 1 20 9
2144840841: 57 38 505 9 99
22349258705: 19 1 26 5 9 1 732 8 5 8
487325080187: 39 935 650 160 38 5
24929138: 1 395 91 18 932
65799405: 5 3 1 263 435
2216: 82 4 6 24 8
980777690: 954 220 584 835 50
561801738: 1 4 50 8 15 4 325 673 8
1490988: 93 2 8 2 987
7942059112: 7 9 1 1 3 8 5 5 4 582 9 12
4180933171: 830 6 5 93 260 54 3 27
330636: 715 387 13 3
1069672872524: 1 298 9 795 7 5 2 252 4
5186234: 5 1 794 18 50 37
5016205: 722 43 6 426 1 4 7 1 56
258833147: 4 8 7 6 548 513 23
28645434967: 203 1 61 14 25 9 967
9181353: 69 98 751 1 351
4124314800: 66 7 8 687 772 190 9 6
291900470: 6 7 3 6 2 525 2 2 61 9
4665835983: 170 296 58 35 983
30415786635: 713 864 927 394 108
346694957: 385 21 561 42 9 531
76864: 70 6 864
127218604: 18 7 8 3 96 14 8 5 2 2 6 2
98043728: 4 3 79 5 1 8 19 8 6 9 2 51
1125553: 29 83 55 52 3
142859: 9 51 150 3 205
8996988138: 493 389 943 8 65 5 4 7
32707052: 6 51 5 5 8 4 6 218 3 3 5 2
4186878922: 41 7 74 94 73 5 902 20
50607732: 3 3 132 3 57 9 113 43 3
1318255: 12 186 8 59 905
320484960: 6 1 707 6 1 914 487
2068225: 3 8 9 44 227
79076: 85 3 310 26
13952270: 29 979 64 137 2 95
106877774: 2 490 37 93 6 113 567
3846: 3 1 8 37 1 7 21 7 73 149
13619850960: 25 28 444 860 673
2074682368: 3 226 8 4 226 2 5 8 5 65
7226571570: 722 182 91 384 1 567
900282: 89 9 217 988 77
1127715: 6 97 5 787 4 76 816 3
16058952397: 35 608 392 741 394
26843: 886 8 4 3 3
35145018: 1 66 39 290 50 19
1278: 93 534 2 15 9
24038: 893 521 17
196530656: 4 1 721 784 3 956 8 7
47772498: 4 7 5 3 748 6 8 7 15 4 9 9
8610: 70 4 11 2 795 69
423060737457: 4 8 7 2 3 54 3 2 1 886 9 3
63375360: 75 109 77 16 96 5
128980522089: 8 475 3 2 8 418 2 829 2
7945: 5 5 6 843 8
8684275286: 1 784 83 421 6 52 88
3714: 33 4 11
110467308: 5 835 86 819 18 25 84
297205: 7 67 102 342 4
61361: 2 3 2 7 2 361
22550147294: 3 186 4 7 46 5 36 823 4
1052927614392: 2 1 5 564 4 3 3 718 393
3828: 3 58 417 8 7
9729036288: 656 4 16 314 82 9
5831042160: 915 619 3 834 4 5 514
10047756640: 8 301 4 2 7 6 8 11 8 388
34334730: 51 440 1 90 17
2355371884: 7 7 8 1 5 3 2 3 7 184 4 4
7720: 5 69 7 4 433 1 9 8
508919: 92 204 79 1 3 2 9 5
2749463626: 642 921 5 465
148277603765: 1 5 43 40 7 4 39 8 429 5
6912: 81 51 84 2 55 89 12
2519958: 7 304 32 8 253 3 9 66
68495: 42 634 7 38 95
37935797473371: 76 176 3 498 73 368
4088514: 20 460 1 85 14
42340486560: 727 7 104 4 2 1 6 5 57
93889045874: 7 7 3 3 722 4 7 9 8 5 873
111628894: 29 375 84 38 702
1836669: 5 4 34 602 68
127205: 9 10 8 4 3 893 8 3 5 8 1 5
10169671: 1 72 7 6 997 8 1 46 4 3 2
237605921214087: 62 52 7 874 38 140 87
37392: 1 5 276 175 82
33961623: 1 6 1 6 99 3 61 543 6 71
37304: 8 4 5 620 65 2 38
328923190: 876 126 113 7 4 415
9004522: 852 15 2 21 352 8 2
6277: 6 274 4
799: 18 5 3 7 5 3 4 8 4 7 7 305
815: 5 567 75 167 1
1907156: 7 55 29 4 2 4 3 733 5 6
54232722: 8 11 1 1 12 3 3 6 51 438
90356: 6 53 204 65 98
80393954535: 6 980 8 699 3 9 815
585333000: 81 1 6 8 557 1 4 7 6 3 7 3
1740698240: 1 89 16 4 1 8 19 8 944 5
27080469199: 147 5 997 177 196
397655: 4 80 674 4 54
32581186: 58 546 913 14 4 3
1411288: 329 6 788 5 1 50 5 7 5 3
686822508: 6 837 3 29 455 10
14329614: 37 387 10 540 74
900648672: 172 596 9 8 44 89 37
12010046: 6 8 72 100 47
51520200: 831 9 19 27 613 1
44168970: 72 20 6 8 1 2 77 67
53032: 529 796 8 1 4
88279: 5 38 7 293 86
37669257997338: 570 7 463 33 292 1 66
37263336: 423 4 47 22 4
1953126: 196 1 2 2 4 411 3 7 8 3
18262: 25 181 88 80 55
745577968: 9 31 27 70 2 4 5 8 7
325718593204: 3 1 6 3 7 1 8 3 9 35 132 2
70183: 7 5 92 597 83
292206: 8 528 2 973 5 31
35684388: 9 6 531 4 7 9 1 5 7 8 798
4518001568: 8 4 4 3 3 9 900 4 1 563 6
353907: 69 907 3 870 5 6
14174170: 141 735 60 582 28
4579: 89 80 9 5 3
905743293: 17 4 3 57 9 922 48
4721355: 3 4 6 13 6 8 7 2 8 15 853
28300777: 6 2 7 4 4 3 9 94 4 38 97 8
3059337317: 305 44 49 373 17
123832907: 800 5 7 762 8 412 5 2 6
189634: 9 9 9 624 7
53083923: 906 59 13 852 58 1
117861384016: 5 46 14 5 2 6 8 8 5 5 8 17
1670110: 25 95 542 6 25 54 53
18266750880: 8 28 98 20 86 69 478
846: 754 3 7 6 74
91230: 565 325 22 30
21602109: 878 1 82 6 3 833
383: 6 1 2 178 2 11
4640341196: 5 58 4 4 3 3 99 5 4 3 96
295: 2 7 35 7 5 15
25640: 60 7 42 146
2324: 7 2 7 4 852
2106855: 1 918 527 243 5 6 15
1096879615: 9 1 38 52 20 61 792
206838115: 2 7 2 7 42 7 94 1 7 9 2 5
892: 838 53 1
37042143372: 1 38 45 81 549 26 386
13608260: 9 7 9 3 63 260
10296568836: 260 11 15 801 6 6
1152012: 2 7 410 450 12
15670: 9 174 9
378879: 428 87 522 6 530 762
63217413002: 7 7 10 61 7 1 1 5 3 350 3
214357346: 9 9 2 3 3 9 527 5 9 5 2 6
6384: 1 5 860 5 42 7
3660322: 2 687 53 8 8 1 770 9 20
597992800: 59 79 878 49 1 8 8
2086695: 3 1 8 2 164 1 6 1 3 195 3
56275146474: 7 1 82 572 903 88 71
5878173: 9 97 2 615 9
256125: 69 157 24 3 57 13 112
63613676031: 345 710 62 53 49 17
6041746627: 6 65 6 3 180 1 6 77 25 5
445082: 50 9 4 7 75 92 141 9 5
3336568969: 11 93 3 1 605 537 7 9
14476045838: 720 220 154 45 8 3 8
25791150: 73 65 2 37 350
1770: 4 18 8 2 7
634521698: 96 816 81 89 9
766610: 7 35 29 2 609
165288: 99 8 89 88 6 97
122461717: 2 657 224 269 8 37 5
49274709: 8 61 4 71 709
156370725697: 1 771 2 9 3 3 2 75 5 6 9 6
135450075: 306 97 8 1 42 10 73
178096158: 7 471 686 391 54
37098919: 1 2 6 539 2 1 7 45 1 8 2 2
564755082: 829 68 103 508 2
15091: 84 7 590 978 7
5925156: 4 80 5 6 7 5 7 443 95 8
227132981304: 639 235 47 7 9 1 9 2 3 4
83734: 4 2 3 7 36
4764348248: 231 851 16 64 642 44
201359438581: 33 9 429 677 5 580 1
5382: 32 497 1 9 3
89850: 46 810 70 866 5 50
7095185620: 2 18 2 83 9 388 9 1 34
898628: 89 340 93 429 8
4521335: 2 988 456 2 691 4
825553: 527 522 3 216 56
1437: 6 7 492 737 196
6349783608: 2 98 268 522 216 63
26307: 47 42 204 4 36 79
2664689: 4 37 46 3 295 96 88
517476672: 699 24 5 28 74
906139989: 15 59 62 559 98 8 3
101621401: 3 4 99 29 42 6 841 7
174668041: 291 11 339 3 3 2 1
499516611066: 5 3 6 3 6 238 6 7 55 1 6 3
656734: 5 789 741 21 7 9 34
2964812: 3 4 7 2 36 1 11 813
457793: 526 17 130 8 791 39 5
324783326229: 32 474 9 34 32 62 29
714670: 42 17 552 60 9 46
174857716: 6 9 146 8 734 1 9 18 2 9
22400846: 350 64 843
9498234307: 4 12 966 709 23
16680905: 9 9 156 7 3 17 6 6 4 8 4
405: 9 9 5
4565438: 913 1 5 4 37
214448709: 670 13 423 7 318
2056320: 6 854 62 7 247 378
28709528: 3 580 8 550 57 75 9 8
12101046387: 5 1 86 7 4 3 7 3 638 5 2
9550: 52 7 992 7 58
8347014: 7 32 5 92 9 9 331 443
27345853945: 9 202 2 3 8 3 3 8 4 649 3
154494235766: 772 469 2 1 777 6 5 3 2
55637839247: 6 8 2 44 955 8 7 5 9 93 4
3395211904: 285 9 77 53 415 224
410136: 51 26 7 8
22526624126: 2 555 82 778 854 6
2985869706: 46 9 70 8 5 7 8 7 6 90 9
3423438677: 714 705 958 346 5
784310979: 784 310 89 8 9
2859878751: 3 96 3 36 48 8 37 9 305
900: 38 7 1 4 5
30425338: 30 4 25 33 8
567294: 4 702 3 12 8
33541379: 110 571 6 89 64 775
494363134: 555 4 620 12 89 886
71527: 3 6 5 3 8 6 1 7 12 5 8 7
46980046: 53 721 96 540 43
37206236963: 7 7 88 94 6 9 83 1 61 5 3
50976954: 5 2 2 80 45 37 11 87 14
5203315048: 1 63 2 74 61 27 3 5 50
1939803185: 969 901 59 2 6
1028599911631: 118 20 2 97 1 749 87 1
91641646160: 9 424 43 62 472 206
4808181291: 2 978 9 889 26 12 93
357338008: 706 3 504 8 3 2 9 6 789
81364559: 800 13 56 8 556
1517735009: 1 6 414 291 923 787
10942: 2 2 130 72
2927: 74 5 3 8 1 31 9 646
21363940: 72 22 73 3 49 829 260
1075962223: 21 512 7 615 53 670
91216741: 912 1 30 37 41
3020021513: 749 56 686 8 458 9 2
3412491525: 28 57 29 4 8 912 3 23
586986542: 34 36 81 832 2 7 8 7 68
3985200: 3 3 3 616 9 118 4 9 45
25153680: 82 71 3 1 60 8 3 39 24
5121: 557 3 8 1 9
4361404380: 9 72 779 4 9 6 6 2 5 12
4633574: 1 8 52 2 26 4 9 4 4 7 6 41
2500: 10 3 62 200 7 433
205765071: 237 599 5 866 4
475225461: 938 7 336 6 687 90 81
67637: 67 633 6
62118081357: 1 2 9 1 90 290 4 5 2 4 90
3666: 3 58 7 8 8
149245: 4 382 4 19 718 5 87 28
561006667: 82 5 68 66 6 6
83570460265375: 92 6 318 188 547 5 85
71579598: 29 75 67 329 55
108468786: 27 117 4 747 42
108885688319: 1 3 7 7 770 5 4 2 88 320
274800836: 5 60 2 6 49 4 47 435 7 9
161022283: 38 7 604 358 232 51
19692: 41 990 933 9 43
1814645: 9 270 89 7 85 695
5522958: 9 3 9 6 1 63 769
14581981: 11 9 6 9 6 8 2 7 4 60 63
150150: 5 4 90 3 69 5 18 6 72
34959356: 368 3 678 22 14 6 1 1 3
2325598: 48 57 850
13630671514: 1 45 3 4 9 526 31 171 3
83325934080: 8 7 8 9 7 182 7 6 32 9 1
37047437: 4 583 9 777 2 1 9 10 4 1
2664496: 98 65 9 7 9 3 709
2768330498: 1 893 31 30 498
865227: 50 2 57 167 33
5902050651: 843 1 487 1 7 7 1 48 54
7499664484: 832 694 602 9 4 84
7952436: 770 1 2 233 6 1 1 436
8294452: 2 9 3 8 66 5 1 5 41 8 7 2
6456627216: 4 3 9 26 4 86 3 8 544 1 8
2802: 255 2 169 9 4 48 2
699018: 2 7 2 6 6 353 7 5 4 39
2189890971124: 92 980 9 785 704 2 3 1
33192972: 646 99 519 826 20
6335442: 2 6 564 13 3 4 1 2 96 6
8535690: 1 866 1 2 9 6 2 9 5 9 3 90
5936091: 89 900 3 49 6
1429232: 79 7 8 626 9 500 112 7
12011121824: 15 8 11 12 1 824

84
7/main.go Normal file
View File

@@ -0,0 +1,84 @@
package main
import (
"bufio"
"fmt"
"math"
"os"
"regexp"
"strconv"
"strings"
)
func randomOperator(equation []int) [][]int {
combinationsTotal := math.Pow(3, float64(len(equation)-2))
combinations := [][]int{}
for i:=0;i<int(combinationsTotal);i++ {
combination := strconv.FormatInt(int64(i), 3)
combinationSSlice := strings.Split(combination, "")
prepend := len(equation) - 2 - len(combinationSSlice)
if prepend>0 {
for j:=1;j<=prepend;j++ {
combinationSSlice = append([]string{"0"}, combinationSSlice...)
}
}
combinationISlice := []int{}
for j:=range combinationSSlice {
combinationInt, _ := strconv.Atoi(combinationSSlice[j])
combinationISlice = append(combinationISlice, combinationInt)
}
combinations = append(combinations, combinationISlice)
}
return combinations
}
func calcResult(tillnow, next, operator int) int {
if operator == 0 {
return tillnow + next
} else if operator == 1 {
return tillnow * next
} else {
// find number of digits
digits := 0
helper := next
for helper > 0 {
helper = helper/10
digits++
}
return tillnow*int(math.Pow(10,float64(digits)))+next
}
}
func main() {
file, _ := os.Open("test")
defer file.Close()
scanner := bufio.NewScanner(file)
regexNumber := regexp.MustCompile(`[0-9]+`)
equations := [][]int{}
randomOperators := [][][]int{} // []equation []operators []operator
for scanner.Scan() {
line := scanner.Text()
equationStrings := regexNumber.FindAllString(line, -1)
equationInts := []int{}
for i := range equationStrings {
equationInt, _ := strconv.Atoi(equationStrings[i])
equationInts = append(equationInts, equationInt)
}
equations = append(equations, equationInts)
randomOperators = append(randomOperators,randomOperator(equationInts))
}
result := 0
for i := range equations { // for each equation
for j := range randomOperators[i] { // for each random operator corresponding to the equation
calculations := equations[i][1]
for k:=2;k<len(equations[i]);k++ {
calculations = calcResult(calculations,equations[i][k],randomOperators[i][j][k-2])
}
if calculations == equations[i][0] {
result = result + equations[i][0]
break
}
}
}
fmt.Println(result)
}

9
7/test Normal file
View File

@@ -0,0 +1,9 @@
190: 10 19
3267: 81 40 27
83: 17 5
156: 15 6
7290: 6 8 6 15
161011: 16 10 13
192: 17 8 14
21037: 9 7 18 13
292: 11 6 16 20

50
8/input Normal file
View File

@@ -0,0 +1,50 @@
...........V..................b.g.................
..................................g...............
.............................c....................
............T........Z.......P....................
.x........................VP......................
..........................PH......................
.................H.....Z.......g.R................
......f............T.V....b......A................
......................P...........................
.......f..................A.............R.........
........x..............T.......l..H.....A.c.......
..k..x..............Z.............................
........5....S...............0.A..................
.............N....L...............................
.f............................T........s.....N....
..................l..........bH.......tc.R..N.....
......Z...6......n......l...k.N...0...............
...........g....S......l.r.................t..s...
..L................b.......K..t...................
................5....n........0.............c.....
.....L......n............................E........
.k.......L................m.....................Es
..............St.....5....Rm......................
............6..5...................3...0..........
...........k.................W........3...........
................n......K...E....2S..........3.....
....................................E....Q........
..........M.....x...............K.................
..h.............................1.................
.6............z..............4...e.........WY....y
........f............a.......Y..y...s.............
...h............r.............v....m..............
.....h.................v....m.....Y.Q.....W3......
.........................Yq....Q.................7
.........6..............7.................9.......
...................X..........y..q.....2..........
............r..............q.....y...........7.8..
..B..............M....4............9..............
...1.......M...X.......CGzp...4..B...2..K.........
.....................z...v....Q.....8...........9.
B.......X.F....rM...v...............2...8..D......
h1..............................7..D.....8....d...
...............F.....................9D....4....d.
..........a......p............F.........W.D......d
.........................G..C...........q.........
...B..................................C...........
.........w..........z....p.....................e..
.a............G....w........p........F........e...
........a...w.....................................
........w...............XC.......G................

93
8/main.go Normal file
View File

@@ -0,0 +1,93 @@
package main
import (
"bufio"
"fmt"
"os"
"regexp"
"strings"
)
func findAntennas(layout [][]string, antenna string) [][]int {
antenaPositions := [][]int{}
for i := range layout {
for j := range layout[i] {
if layout[i][j] == antenna {
antenaPositions = append(antenaPositions, []int{i,j})
}
}
}
return antenaPositions
}
func calcAntiNodes(layout [][]string, node1, node2 []int) [][]int {
x := node1[0] - node2[0]
y := node1[1] - node2[1]
antinodes := [][]int{}
for i:=0;i<len(layout);i++ {
antinode1 := []int{node1[0] + i*x, node1[1] + i*y}
antinode2 := []int{node2[0] - i*x, node2[1] - i*y}
if ! (antinode1[0] >= 0 && antinode1[1] >= 0 && antinode1[0] < len(layout) && antinode1[1] < len(layout)) {
antinode1 = []int{}
}
if ! (antinode2[0] >= 0 && antinode2[1] >= 0 && antinode2[0] < len(layout) && antinode2[1] < len(layout)) {
antinode2 = []int{}
}
if len(antinode1) > 0 {
antinodes = append(antinodes, antinode1)
}
if len(antinode2) >0 {
antinodes = append(antinodes, antinode2)
}
}
return antinodes
}
func main() {
// file, _ := os.Open("test")
file, _ := os.Open("input")
defer file.Close()
scanner := bufio.NewScanner(file)
regexAntenna := regexp.MustCompile(`[^.]`)
antennas := []string{}
layout := [][]string{}
for scanner.Scan() {
line := scanner.Text()
layout = append(layout, strings.Split(line, ""))
// //fmt.Println(line)
foundAntennas := regexAntenna.FindAllString(line, -1)
if len(foundAntennas) > 0 {
antennas = append(antennas, foundAntennas...)
}
}
antennaMap := make(map[string][][]int)
for _, antenna := range antennas {
// //fmt.Println(antenna)
key := antenna
antennaMap[key] = findAntennas(layout,antenna)
}
//fmt.Println(antennaMap)
antinodelist := [][]int{}
for _,v := range antennaMap {
//fmt.Println("key: ", k, "value: ", v)
for i:=0;i<len(v);i++ {
for j:=0;j<len(v);j++ {
if j>i {
//fmt.Println(v[i],v[j])
antinodes := calcAntiNodes(layout, v[i], v[j])
antinodelist = append(antinodelist, antinodes...)
}
}
}
}
//fmt.Println(antinodelist)
antinodeMap := make(map[[2]int]int)
for i := range antinodelist {
if len(antinodelist[i]) > 0 {
key := [2]int{antinodelist[i][0], antinodelist[i][1]}
antinodeMap[key]++
}
}
fmt.Println(len(antinodeMap))
}

0
8/temp Normal file
View File

12
8/test Normal file
View File

@@ -0,0 +1,12 @@
............
........0...
.....0......
.......0....
....0.......
......A.....
............
............
........A...
.........A..
............
............

17
test/main.go Normal file
View File

@@ -0,0 +1,17 @@
package main
import "fmt"
func main() {
// Initialize the variable before the loop
value := 0
for i := 0; i < 5; i++ {
// Change its value within the loop
value += i
fmt.Println("Current Value:", value) // Use the variable here
}
fmt.Println("Final Value:", value) // Still accessible after the loop
}