initialise
This commit is contained in:
71
1/main.go
Normal file
71
1/main.go
Normal 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))
|
||||
}
|
||||
|
||||
115
2/main.go
Normal file
115
2/main.go
Normal 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
50
2/main.go.BAK
Normal 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
6
3/input
Normal 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
63
3/main.go
Normal 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
10
4/exampleinput
Normal file
@@ -0,0 +1,10 @@
|
||||
MMMSXXMASM
|
||||
MSAMXMSMSA
|
||||
AMXSXMAAMM
|
||||
MSAMASMSMX
|
||||
XMASAMXAMM
|
||||
XXAMMXXAMA
|
||||
SMSMSASXSS
|
||||
SAXAMASAAA
|
||||
MAMMMXMMMM
|
||||
MXMXAXMASX
|
||||
140
4/input
Normal file
140
4/input
Normal file
@@ -0,0 +1,140 @@
|
||||
MASAMXSXSSXSASXSMMXSSMXSAMSAMXSXXAMSXSASXXMASAMXMSMMSSXSASMXXAXMAMXMAMXXMASXXSXMSSXAMMSMMMSSSMASAMXSAMAXMSMXMMMXMASAMXSXSSMMMSMSXXMAMMXAMAMX
|
||||
SAMXSSMMMAAMAMAAXAASAMMXAXMMAMXSMAMMAAAXXMAMXMAXMAAMXMAMASXMASMMSMMSAMMSAMXMASAMAMSSXMAAAAXMASXMASXMAMMMMAMXSMSASAAMSAMAAAASASXMXXMAXMAXSAMX
|
||||
MAMMXAXAMMMMAMSMMMXMAMSSSMSSMMAXXAMMMMMMMAXSSSSMSMSMSMSMAMAAXMAAMXASAXMSAMMSMMAMXXAMASXSMSMSMSMSAMASAMAAMASXAASAMXSXMASASMMMASAMMMSMSXXMAXXM
|
||||
SSMMSSSSSMXSAMAMMXSSXMXAAMAAAMMMSMSAMAMAASXXMAAASXXASAAXMASMMXMMMMASMSMSAMAAMXSXMMASAMMMAXAMAMAMASASASMXSASMMMMXSMMMSXMAMMSMXMASAAAXXAAMAMSA
|
||||
AMAMAAAAAXAMXXASAAXAXXMXMMSXMMAASASXXAMXXMMXMMMMMAMAMSMSXAAXSSSXMAXMXAXMXMSMSAXAAXMMXXMMAMAMAMSSMMMSAXAXMXMXMXMAMMMAMAMSMAMAXSAXMMXXMXMSAAAS
|
||||
MSAMMSMMSMMMSMXMMASMXMAAXAXASMMXSASASMXSASXMMXSAMMMAXAMSMMSMMAAAXSASMXXMSXMAMASMMMAMSSSMSSXMXMAMXAAMXMMMSMMMSAMXXAMMSMAAMASMMMXSSSSXSAXSMSMM
|
||||
XXASAMAAXMXASMMMXAAMXASMMASAMAXXMAMXMAAMAMSAMASASXMXSASXXAXAMMMMMXMMMSXMAAMXMAXAASAMMMAAAMAMSMSMXMXSXMAAAMAAMSXMXSMMAXSXSASXAXSAMAAAMMXXAMAM
|
||||
SSXMASMMSSMASAMXXSXSXXXXSAMXSSMMMXSAMMMMMSXSAMXXMASASMMMMMXSMMAAXAXAAAASXMMXMMSSMSASMSMMMSAMMAMAXSAMXSMSSSMSSXXSAXAXMMAAMMXXSSMAMMMMMXMMASAM
|
||||
MAMXAMXAXAMXSAMXMMAMMAMMSXXAAAMXAXMAXSXMMAMXMXMASXMASMMMSMAMASXMMASMMSMMAMXXMXAAMXAXAXSMXMASMAMAMMASAXXMXAMXAMAMAMXMSSMSXMSMXAMSMASXMAMMAMAM
|
||||
MASMMSMMSMSXXAMXMMAMAAAAXXMASMMSSSSSMMAXSAMASAXMXAMMMAASAMXMAMAAXXAMXAXSXMXMXMSSMMMMMMMMASAMMAMSMSAMXSXMMSXMXMMMSMMSASXAAMAMSSMMSXXASAXXSSMM
|
||||
XAMXXAAAMXMAMMMMXMSSSXSSSMMXMAAXAAAAAMAMSAMXXXSXMAXXMSMSMSSMAMMMMXAXSMMMXMAMSAMXAXXAXAASASAMSXSAAMXSMSAAAMAMXXSAAAXMASMSMSAMXXAMXSSMMSMSXAAX
|
||||
MSMMSMSAMXMSAMXMXXAAAAXAMXAXSMMXMMMMMMMMSMSMMSMMAMASAMASMAASMMSXMSXMMMAMSMSMSASXMMSXSAXMXSAMAXSMSMAXASXMMSAMMMASMMMMMMMMAXMMXMXMAAMMAXMMMSMM
|
||||
AAAXAMMASXAXAMMMMMMSMMMAMXMXSMSSMMXXAAXXMAAMXXAMAMAMAMAMMSMMXAMAMMASXMAMAAXASAMXMAMXMMXXASMMXXSAMMSMXMASASASXAMMSAXXMAAMMSSMXXMMMSXMAMXSAMXA
|
||||
MMSMAMMAAMMMAMAAAAXAAXXAMMMAMXAAAMXSSMSSMSMSMSAMXMASAMMSAMAMMXXXSSMMASXXMMMMMXMAMAXASAMMXMMMXMMAMAMMMSMMASAMXSXAXMXMSMSSMAAXMMXSAMXMASAMASMS
|
||||
XSMMXMSXMAASAMSSSSSSMMSXXAMAMMXSMMMAAXAMXXXAMSAMASXSASAMXMAMAXSMMAMSMMXASXSSMXSXMMMMSMMMSMMSAMSXMASAMASMAMXMAMMMXXMXAAXAMSSMAAAMXMASASASAMAM
|
||||
MAMAMMMMXMXAMXAXMMXMAXMMSASMMSMAMXAXSMXSAMMMXXAMXMASXMXSASXMMMAASAMAAXSXMAXAMXSXASXAXXAAAAASAXMXSXXMXASMMSMMMMAXXSAMMXXAMMAMXSXMXSAMXSXMXSMS
|
||||
SMMXSAAASMXAXMAXMXSMMXAAAMXMAMSAMXSXMAAMASAMSSMMAMAMASXMMMXAAXMXMMMMMMMMMSMAAAMSAAAAMMMSSMMSSMXAMMXSMXMXMAAMXSSSMMAXASXSMSAMXMASAMMSMMMSMMXS
|
||||
AXXMMMSMXASXMXSMSASAASMMXSAMMMSMSAMXMXMMAMAXAAXSAMXSAMXSASMSMSXSMSMMSMMAAXMSMAMMSAMSSXAMXAXSMMMXXXAMAMMASMXMXAXXAXXMASAMXXXSASAMASAMAAAXAMAM
|
||||
MMXAMXMMMXSASAASMASMMXAMAMASXASXMASXMAXMSXSMSSMMASAMASAMXSAAAMAMAAAXAAMMSMMASXXXMXXAAMMMMAMXAAMMSMAXXAMAMSMSMMMXMMSMMMXMXMSXMMASAMAXSMMSXMAX
|
||||
XSMSAAXMAMMAMXSAMXMMSSMMASXMAXMAMXXASASXMAXAMXAMAMASAMXMAMXMAMSMSSSMSSMAXMSASMMXAXMASXAMSMSSSMSAMMSMXXMXSAMXAASXSAMAAAAMAMSAXSAMASMMXAMXMSSS
|
||||
AXAXMMMMSMMAMMMMMXMAXAXSASMMAMSAMSSMMMSAMAMAMMSMMSAMXMMMMSAMXXXAAAAMAAMXMAMAXAMSMSAAXXXXAAAAXAMXSAMAMXXSAMMSSMMMMASXMSASAXMSMMMSAMXXSAMXMAAX
|
||||
MMXMXMAAAAMXXAAXXMMSMXMMASASAXMASXAAAXMXMXSAMAAXAAMSAAXAAAXSSMMMMMMMSSMAMXMAMMASAAMXMAXSMMMSMXSXMMSAXSXAMXMAXAXXMXMXMXASXXSAMAAMASMMMAMAMMSM
|
||||
MAASXSXSXXMMSSMSAXAXMAXXXSXMASMMMAMSMMXAXXXMSSXSXMASMXSMSXMMXAXASXSXMAXXSAMXSXAMMMSSMXMMSAMMMMAAXAMXMXMSXMMMSMMMSMSMXMXMAXXASXMMAMMMSASASMAM
|
||||
MSMSAMMMMMAXAAMMMMMSSSSSMMAMXMASXAXAAMSMSXXXAMXAMXMXXAAAAMMXMXSAMXAMAXAMAAMAMMMMXAAAMXMASXSAAXSXMXMAMAMAXMAMSAMXAAAAXSAMXMMXMMAMXSAASXSMMMAM
|
||||
MMXMXMAAAMMASMMSMSXAAAXMAXAMSAMXSMSMSMAMMMXMASMMMMAAMXSMMAAAAMMMMXMAMMAXSASASASAMMSSMMMASMSMSMXXAAMAMAMMMMAXXASMMSMSMSAXAAMMXMXMAAMMSMMMMSAX
|
||||
MXMXMSSSXSXAAXXXAXMMSMSSSMAMSAMXAXXXXMXSAAXMXMMMASMXSAAAXSSSSSSMSAXAXSAMMASMSASXSXAAASMASAMAXAMXXMSSSSSXSXMSSSMAAMXMASXXMSMAAMMMXXMXXAAAASMS
|
||||
MASAXXXXASMSMSMMSMXMAAXAASXMXMASMMSMMMXMASXMMXXSAXMAMXMMMXXAAAXASMMSXMASMAMMMAMAXMXSMMMXMAMSMSMMSAMAAAAAAASAXASMMMAXXMAXXAMXAMASXSMXSSMSMXAA
|
||||
XAMMMMSMXMAXAMXAAMAXMXMSMMXXXXAXAASAAAAAMMMSASMMMXSASAMSMSMMMMMAMMAMASXMMSSXMAMAMSXMAMSASAMAAMAMMAMMMMMMMSMASMMXMSASXMMMSASXSSMSAASXXMMMMMSM
|
||||
MSXSAAAXXMAMXXMXSSSSXSAMXSAMSMXSMMMSMSSSMMAMASMAXASMSAAXAXAAAXMAMMASXMAXAXMMSXSXAMASAMSAXMXMXMAXMAMXXSXSXAAAMXMAMMXSAAAAXAMXMAXMMMMXMASAAAMM
|
||||
MMASMSMSXSASMAAXXAMAMMSMAMAXAAMXMAXAMXAMXMAMXMMXMMSXSMMMSMSSSXSASMXSASMMXSAASAMXXMAMAMMMMSASXXXSMSAMSAASMMMMSXMSMSSSMMMSSSMSSSMMAXAAAASXSMSM
|
||||
XMAMXAAXXXAMMAMXMAMXMAAMSSSMMSASXMSAXSAMXSSSSMAMSASAXXXAMAXMAXSAXMASXAXAASMMSAMXSMASMMAAMSASAASAMAAMXMXMSXAAXXXAASASMSXXAAAXAXASASMMXXXMMASM
|
||||
XMXMXMSMSMMMAMXASAMMMSSMMAMMAMMMAXSMMXAMXAXAAMAMSAMXMMMMSSMAXMMSMSMSSMXMMXMASAMAASAMASMSMMMMXXMASMXMMXSMMMMSSSMSSMAMXXMMXMMMMMXSAMXSMSSSMAMA
|
||||
MXMMMXAAAAXSMMSASXSAMAXXMAMMAMAMMMSXXXASMSMSMMMXMSMAXAAXMXAXMMAXMAXMAMMSMMMASAMXMMSSMMXXAAXAMXSAMXSXMAXAAAXAAMAMXMXMMMXXAMXXXXAMXMXXAAAAMMMS
|
||||
MXAAASMSMSMMAAMXMAMMSMMSMMSSSMMASXMAXSXMXXAXAASAMASXSXSSSSMSXMAXMXAXMMAAASMXSXSSMAXSXMASMMMAXMXMAXSAMSSMMSAMMMAMXAMAXAAXSSMSSSXMAXMMMMMMMAAX
|
||||
SSSMXSAAAXMXMMAAMSMMAAMXSXAXAASAMAMSMMAMXMMMSMSASXSMMXAMXSXMAMASMSSSSSSSSMMXMMMAMSMMXMASAXSXXSAXMMSAMXAXAXMXAMMMXMAAMMSSXAAAAAMASAASMSXSXMSS
|
||||
AXAXAMMMMMMXSMSXAAASMSXAXMMMSMMASXMMAMXSAMXAXXXAMMSAXSMSAXMAMMAMXAAAAMAMXAMXSASAMXSMAMASXMMSMSASMAXMMSXMMSXSMMSAMXAXMAXMXMMMSMAAXSXMASAAXSAM
|
||||
MSAMXSASAAXMXAAMSSXMAMMMMSAMXAAXAMASAMASXSMMSSMAMAMSMAAMASMSSMXSMMMMMMSMXXMASASXMAMMAMAMAXAAXXMMMSSMXMASXAAXXAAAXXMSSMMSMSAMAXMAXMMMAMMMMMAS
|
||||
XAAMXXASMXSMMMMMAXAMASXMASMMSSMMMMMMXMMSAMMMAMSMMAXASMXMSMAXAAXAXSAXMXXAMSMXSAMMMAMXAMXSMMXSSMMAXMAMSAMASMXMMMXMMXXAAAAAXXAMXSSMAMSMMSXXASAM
|
||||
MMAMAMMMXMAXXMSMXSXMASAMASXMAAXMMASMMMXMXMAMAXAXMMSMMXAMXSMSAMXMXSASXAMXMAAMMMMASASXSSXAXAMAAMXAMMAMMASAMXMSASASXXMSSMMSMMAMXXMMSXMAXMASMASM
|
||||
ASAMXSAAASMMSAAMXSXMMSAMAXAMSXMMSASASAAXAMXSMSXSXMAAMSAXAAXMAMAMAMMMMMMAXXMXAMXAMXSXMAXMXSAXMXMSSSSMXXMAMMXMASAXAXMAMXXXXSSSMAMSMASXMMMXXXXS
|
||||
MSASASMSMMMAMSAMAMASAMXASMSMMAAAMXSXMASMSMAMXXAXMSSSMXMMSSMSASXMASXXMASMSSSMASMMSXSASXMSAMSMXSXAAAXSASMMMSASMMMMAMMASXMMAMAAMAMAMAMMAASXMMMS
|
||||
XSAMAMXXMSMXMXXMASXMASXMMAAASXMMSMMMMMMAAMASAMMMMXMMMXMAMAASAXMSMSMMXMXAAAMSMXMAAAXAMAXMMMAXASMMMMMAMXAAMMAMMAAXAASXMMAAMMSMMMSMSSMSSMMAAAAM
|
||||
XMXMAMXMASAMXXXMAXAMXSXMMSMMMMXXAMXAAAMXMASMXASAMAMMMAMXSMMMSMAMXMASAMMMMMMXSAAMMSMSMMMSASXMXMXAMXSAXSMMSMMMMSMSSXXMASMMXXAMXAAMAAAMAMSSMMSS
|
||||
XMAMAMSMMMMAXXSMSSXMAMAXAAMXXASXSSSSMXMAMMMASMXASASASXSXXAXAMMXMAXSMXSASMXSAMXXXAMAAAXASASMMAMSMSMSXXAXAXAAMMAAAMAMSXMAXSMMMMSSXSMMMAAXMAXAA
|
||||
XSSSXSAMMAXMMXMAXAXMASMMSMSXMASAMXAMASMXMAMAMMSAMASMSAMASMMMSMSSSSMXMXASAAMASMSSMMSMXMMSXMAMXMASAAXMXMXSSMMSSMMMSSMMMXMASASAMXXAASMSMMSSMMSS
|
||||
AAAXMAMASXSXXMMAMXMMMMAXXASMAXMXMAXSXSASMMMSAMXXMXMASXMMAMXAAXMAMAMMMMMMMXSAMXMAAXXSAMMMASXMXSXSMSMAAMAXAMAAMAXMAXMAMMXASAMAMAMXMMMSAAAXXAMX
|
||||
ASMXXXAAAMMXSASASXMXSSMMMXMASMSXMSAXAMAMMMAXMMMXMAMXMSXMMAMMMSMSMXMAMAMAMXSAMMSSMMXMXSASAMASAMXMAMMSSMASMMSSXSMMAXSXSAMXXASAMXSSMMAMMMXSMSSM
|
||||
XMXSMMMMSAAASMMMSMAAMAXXMSSMMAXXAMMMSMMMSMMMSAMXSASAAMXSAMXSMSAXMSSSMXXMMASAMMAAMMSMAAMMXSAMMSAMAMMAXMASXAMMMMXXAAAAAXMSSMSASAXAAMSSMSXAXAAA
|
||||
MMAMAAAAXMMXSAMXSAMMSSMMXAAAMSMMXSAAMAMAAAAAXAMXMAMMMMAXXMXAAMAMAAAAASASMXSSMMMSMAAMAMXXXMMSXXXXSMMAXMASMSSMAMASMMMMMMMXAASAMXSMMMMAAAMMMSSM
|
||||
AMASMSMMSAMXSAMAMSXMAMASMSSMMMXMAXMASXMMSMMSSSMSSMMAXMAMAMAMXMSMMMXSASAXXMMMMSMXMMXSXXXSXMASMSMMXMMSMMXSAXAAMXAXXXAAAAXXMMMAMXMMXASMMMMSMXMX
|
||||
SMAXAAAXSMMAMAMSSXSMASXMAXXXAXAMASMASXAAXMXMAAMAAASXMSSSMMASXSAMXMXXAMAMSMSAAAAASXMMXSMAXMAMMAMAXAAMASMMMMMSXMASMSSSSSMXAXMAXSAMSXSMMMXAAXSS
|
||||
MMSMSMMAMMMSSSXMAMXSAMAMXMMSSXXSXMMMSXSMXXAMXMMMXMMAMXXAMSASXMAMXSAMXMAAMAAMSSSMXAAAAXAMMMMMMASMXMMSAMAAASXMMAXAAXMAMAMSXMXXXSAXAMXMAXSASAAA
|
||||
XAAAXMASMXSAMXAXSMMXMSMMMSXAMSMSXMAMSXMSXMMSASMSSSSXMMSMMMASXMAMSMASMMASMXMMXAXASXMMSSSXSAAASASXASAMASXMSMMSMSSMMMMSMSMMASMMASXMXAAMMMAAMMXM
|
||||
MXMMMXAMAXMASASMXASMXAAASAMXSAXXAXAXMXSASAXAMAAAAXAXAAAAXXAXXXAMXSAMXSSXMAXSMMMMMSAMAXMAXMMMAAMMXMAMXMMMMAAXAAAAMSAAXAAMAXAAMSAMXSSMSAMXMSMM
|
||||
SSMSSMASMMSMMAXASMMASXSXSXAXMXSSXMSASMMASMSSSXMMMMXSMSSMSASAMXMSAMXSASXAMXMXAAXSAMXMMXMMMSMMMAMMXSMMSXMAXMSSMSSMMMSMSMSMMMMMXXAMAMMASAXXMXAA
|
||||
AAAAXMXMXMAXMXMASXMXMXMAXMASMMXXXAMAASMAMXXAAMXAXSAMAAAMAMMASAMXASAMXSMMMMXSSMSMXSXAXXXSAAAAXSXMASAASAMMSMXAAAXAXXAMSAMASASXMSMMMSMAMXXMMSMM
|
||||
SMMMSSXSASMSMAMXMAMAMXMXMMAAAAAMMSMMMXMASMMMMXMAMMAXAASXMXSAMASXMMXXXMAXAMXAAMXXAMMMMXAMMSMMMMAMASMMSMMMAMSMMMSXMMMSMASAMAAAAAXAAAMMSMAAAMAS
|
||||
MAMXAASMMSAAXASXSMSASMMSAMSSSMMSAMASMMMXAAAAXSXMASAMXSXAXMMXSXMAMAAMMMSMMMSXMAMMXMASMXMXAMXAAMAMMSAMXAXMAMAXSAMAAAMSMAMXMXSMMMSMSSMXAAXMXSAM
|
||||
MASMMMSXAMXMSMSMAXSAAAAASXAXAAAMMSMMASXXMSMSSXAMAMASXMMMMASAMASAMSMSXAAXMAXAXMXSSSXSAASMMSSXXAASXSMMMXMSXMXXMASMSMMXMAXAAMXAAXXXMAAMAXSAAMXS
|
||||
SASASASMSMSMAASASMMAMMMMMMMXMMMSMAMMAMXMMAMXXMXMAXMMAMAXMAMASAMAXXASMSSSMMMMMAXMAMMXMXXAAXAAXSAMXSASMXMAMXMMSXMMAAXAXSSSSMMSMSSMMMXSAAAMMMAS
|
||||
MXSAMASAAAASMSMAMMMAXXSAMASXAAAAXMSSMSSXSAMAXMSSMSSSSMSSMMMAMXSMMMAMAXXMMAASASASMSSMMXSMMMSMMMASAXSAAASMSAXXAAXSXSSMMMAMAXXAMAAAXAAMXMMXAXAS
|
||||
SXMMMXMXMMMSXXMSMXXSSMMASAMMSMXSSXAAXAAXXMSMSMASAMXAXAMSXMASMMXAASAMMAMXMSXSAMAXAAAAMXAXAAXAXSAMAMXMSMMASASASXMMXMXMMMAMAMSAMSSMMMMSSXXSMSMS
|
||||
MAAAXAMSSMMXAXAMMMAAAXSAMASMMSAAAMSSMMXMXXAAXMAMMMMSMSMSXXAXASMSMSXSAAXAMMMMMMMMMSSMMMMXMMMAMMXMMMAAXXMXMAMMXMMSAMAXAXXMSMXSMXAXSAXSMMAAAAAX
|
||||
SSMMXXMAAAMMSMMMASXSAMXXSAMAAMMMMXXAXXASMSMSMMMSAXAXXAASXMMSMMAXXXAAMMSMSAMAMAXAAAMAMAXXSASMXSXSXMASMSXMMAMXXAAMASASXSAMXMXXXXMXMXMMASXMSMSM
|
||||
AAASASMSSMMAAAXMXSAAAAXXMXSMMMSASMSSMSMSAXXMMMASMMSMSMSMMSAAXMSSMMMMXAAASMSASMMMMMXAASMXMXXSAMAMMMXMAXASMSSSSMMSXMXXXAAAXMASMSMMMMMSAMAXXAMX
|
||||
SSMMASAMXMMSSSMSAMXMXSMMSMMMXXXASAAXAAAMMMMMXSASXXXXAMXAAMSMSMAMXASXSMMMMASMMXAMXSSSMXXAMAMMMMAMASAMXSXMAMAMXAAXXMMSSXMMXMASAAAAAXAMASXMMSMS
|
||||
XAXMXMXMAXMMAXAMXSASMXMASAASXXMSMMMMSMMASMMMAMASASMSMSMMMMMXAMAMSXSXAXMAMXSASMSAAMAMXMASMASAASASASASASAMXMSMMMMXAXSAMMSXSAMXXXSMXMMSXMAMMXAA
|
||||
SMMSSXSMSSMMMMXMXSASAXMASXMSAMXMAXXAXASAMAAMXSAMXXXAMXXMAASMXSAMSAXMMMXMSAMXMAAMMMAXXXMAMSSXMSASASAMASXMXAXMSSMSMXMASASXMXMASMMMXMMMMSAMSMXM
|
||||
AAAXMMMAAAAAXAMMXMMMXMMAMMMMXMAXMMMSSMMSSSMMASAMMSSSMMAASMXMAXMSMSMAXAAMMXSAMXMXSMMMSSSSXXXMXSAMXMXMMMAMMMSMAMMAMMSAMMSAMXMASXSXMMAAMMSMXAMX
|
||||
SMMSXAMAMMXMMMAMASAMMXMASASXMSMMMAAAXMAMMMMMMSAMAMAASMMMMAMXSSXMAMSXMSXSAMXMMMMXMASAMXAMMMAMASASXMASXAMXAAAMMMSASXMASXXAMXMASMMMSSMSMAXMASMA
|
||||
AXXMASMSSSMSSSXXAMSSMASXSASMMASMSSSSMMMSXMAMXSMMMSMMAMMXMSAMXAAMSMSMMXAAAMAXXAMMXMMSSMMMXMAMAXSAMSMMAXXSMXMMAAMAAMSMMMSAMSMMSAXAAAMMMSMSXASX
|
||||
XMSAMXSXAAAAXAAMSSMXMASAMAMAMASXAMMXAMAMASMSMMSMAAXXMMSMMXAXMMMMMXXAXMMASMXSSXSASXMXXXXAMSMMXMMMAAASXSMSMASMMXSSMAXAAAMXMSAASMMMSSMXAXAXXMAS
|
||||
MXXMAMXMSMMMMMSMXAXAMXSMMASMMXSMMMSSMMAMMMMAAAXMSMXXXXAAXSXMAMSXMASXMASAAAXMAMXMAAMMMMMAXAXMMSSXMMXMAAAXMASAXMAMXSSMMMSAMMMMXAXMAMXMMMSMMMAS
|
||||
AMASXSSMMXAMSMAMXMMMSMMXXAXAAXXAXAAAASMMSASXMMMXAASXSSSSMMMXXAMAMMMSAMMMSMXMASXMSSMAAASXSXXXAAXXMSXMSMMMMAXXMAMSSXXAAASAMSSMSSMMASAMAAXAXMAM
|
||||
MSAMXXAAMXXMAMXSAMMAAAXMMSSMMXMSSMMSMMAXSAMXAASAMXMAAAAMAAMXSSSMMSASMXXMAASMMMAXMAMMSMSXSMSMMSSSMSAAAAAXMSSSSXMXMASMMXSSMAAAAMASASAXMMSAMMSM
|
||||
MAMASAMXMASMMSASMSMMSSMAXAAAXMSAAAAXMXSMMAMXMASAXMMMMMMXSASAMMAMMMAMAMMSMAMXAXXMSAMXMASASAAAMMAAASMMMSSMMXAAMAMXSXSXXAXXMXXMSSMMAXXMSXMAMAAA
|
||||
XXMAXMXAMMSAMMASAXXAMMMXMMXMAXMMSMMMSSMAXXXXSASXMXXAXXMMMAMAXSAMAMAMXXAAMXASXMXMMMMMMAMAMSMSSMSMMMXXAAAASMMMMAAMSASAASASMSMXAAMASMSXMAXAMSXS
|
||||
MMMMSAMXSXSXMSSMASMXXASXSSSSXSAAMASASASXMMMMMXSASASMSSXSXSSXMMASMSMSMMSSSMXAMSASASAMMAMSMXMAMAMMXSXMMSSMMAAAMSXSMAMAMMAXAASMSMMAAAXASAMMMXAM
|
||||
AMAXSAXXAXXAMXXMMMXXSAMXAAAAXSMXSAMMSAMXSAAAXASAMAMXXXAMAMAXMSAMXAAAAAAXXXXMASASASASXAMXSSMASMMSAMASAXXMAMSSXXSAMSMAMMMMSMMMXAMSSXMXMXMMAMXM
|
||||
SMMMMMMMMXSXMAXAMXAMMSMMMMMMMMSAMXMXMMMAXSMSSMMXMXSSMMMMAMAXXAASMSSSSMXSXMXXMMAMASAMXXSAMXXAXXAMASAMMSMAMMMXASXXMASXMAAAXXMASAMMMMMAXAMSSSSS
|
||||
AAMAAXXAXAXASMSSXMXXAAMAXXXXXMAXSAMMSXMAXAXMAMMXAXMASXASASXSASXMAXAAXMMSAMXMXMXMAMXMXXMASAMSSMMSXMAAXAAAMAMMXXSXXMMSSSSSSMMMMXMAAMSMMXXAAAAX
|
||||
SASXSMSMSMSXSAAMAMAMSSXSSMSMMXMXXASASXXMAMXMAMXMMMSAMSXSASASMMMMXMAMXXAMAAASASMMMSSXMASMMAAAXXASXSSXSSSMSSSMSAMXXXSAMXAAMXAAXMSMXMAXAMMMMMMM
|
||||
AMXAAAAAAAMAMMMXAMXXMAMMAAAAAAMXSAMAMMSSSSSSXMXAAMMAXMMMAMMSASXMXXAMXMSSMSMSASXMXAAXXAAMMMMMMMXSAAAMMAXXAAAAMASASXMMXAMXMSMMMXAMMSSSSMAXMAXM
|
||||
SAMXMMMSMSMXMAXSAMSSMXMSASMXMASAAMMSMAAAMXMAMSSMXSSMXAAMASMSAMXMASMMXAMXXAXMMMASMSSSMMSSXMMXAXMMXMAMMAMMMSMSMAMASXAAAXXAMXXAXXXMMSXAXSMSXMSS
|
||||
AXAMXSXMXAMXMAXXMMMAXXMXXMAXSASMSMAXMMMXMAAMAMAXXXAASMMSASXMMMMMMXAAASMMSMSSMSSMAAMXAAAMAMSSMSAASXXSMMSAAXAXMMMAMXMMSMASXAMSSMSSSSMSMMXMASAX
|
||||
XSSXMASXSMSXMASXMASAMXMASMXMMAMXAMXSXMSASASXSSSMMMMMMAAMXSMSASMAMMMMXXAAXXAAMMAMMMMSMMMSAMAAMAMMSAXXAXAXXMAMXXMAXAMAAASAMXSAAMSXAMAASMXSXMAS
|
||||
AAMAMXMMAAAXSASXSASAMASAXMAMMXMXMMASAMSAMAMAXAAAXAXXSAMXSMXSAXSAMAASMSMMSMSXMSSMMAMXXAMSXSMSMMSMXMMMMMMXMASMMMMXSASXSSXMAXXXMMMMSMSMXSAMMMMM
|
||||
MSSSMMMSMMMMMMXAMXSASXMASMXXSASMXMXMXMMAMAMAMSXSASXXSAMXMXAMMMSMSMMMMAMXMMAMXMMASXSMSMMXASXXAXXASXMASAXXAMMXAAAAXXMAMMMXSSMMXSAAXMXAXMMMAAAA
|
||||
MAAAXXAAAMXSAMSXSASMMASAMMMMMASAXSMSMSMSSXSXMMAAAXMXSAMAMMMXSAMAAXAASAMAAMMSAAMXMAAAXSAAXMASMMSSMASASMMAXXASXMSSSMMMMMSAMXASASMSSSMSAMXSSXSA
|
||||
MMSMMMXXSMXSAMAAMASXMASAMXAAMXMXMMAAAAAXXXMAMMMMMMXAMASXSAMAMASMMSSXSAXSSMASXSMMMSMMMMXMMMMMAXSASXMMSAMASXMXAAMAXAAXAMMMSMSMXSAMAXAXMAXAMXMM
|
||||
SMAXXMXSAMXSAMMMMAMAMXXMMSSXSXMAMMSMSMSMAXSSMSXAAXMXSAXASASMSAMAAAXMMMMMAMXSAXMAAAAMXMASXXASMMSAMMSAMAMAXAMXMXMASMMMSXMAXXAMXMAMXMMMXSMMMAAA
|
||||
XAMASAMAAMASMMMAMXSXMMMXMAMSSXMAXXXXXMMMSMAMASMMXAAMMMSMSAMAMXSMMMSMAXXSAMAMMMSMSMMSAXAXMAMXSAMXMAMMSSMMSAMXXXMASAMSMXMAMXSMSMSMSAXAXXAASXSS
|
||||
XSMAAXAMXMAXAASXSASAAXMAMMSAMASXXXXASXAAAMMMAMAXMXSAXXMXMAMMMAXXXAMMSSMSAMAMAAMXXAAXXXSMMMXMMSSXMAXXAMAASMXMXXMASASAMXMASAAMSAAAASMSASXMSAMX
|
||||
MXMXSXSASMAMSXSAMASMMASXMXMASXMMSSMAMSMSSSSMSMXMMAAXMAMASAMXMMSSMASAAMASMSAXMXSAMMMMSMMASAAMSASASXXMASMXSAAMSMMMSXMASMXMAMXAMSMMMMXMXAAMXMSA
|
||||
AAMAXAMAMXXMXAMXMXMASAMAXSMMMAAAAXMAMMMMAAAAAMXSMASASASASASXXMAXSMMMMMMMAXAMAAMAMMSASASAMSSMMASXMSMXXMMXMMXXAAAAMAMXXXAXXMMSAMXXXXASMSMMAMXA
|
||||
XAXXMAMMMMXSXMSXSMXAMAMXAXAAMMMMXMMAXAAMMSMMMSAAXMMASASMXMMXAMXXMXMXXXMMSMXAMSMSMXMASXMAXAMAMXMASAMSAMXSXAMSSSMXSAMSXSXMAXSMXSASMMMSAAXSASAM
|
||||
SXMSMSMXAXMAMXMAMXAMSXMXMSSMSSSSMSXSMSXSAXXMAMXSMXMXMAMAMSSSSMMSMSMSMAAAXAASMXAMXMMAMAXSMMSMASXXMASAAMAMAAMAAXAAMXMXAMASXXMXXMAAXMXMXMXSAXAS
|
||||
AMAAAAMMXMMSASMSMSMAAXSXAMXAXAAAAMAXXAASMMSMASAMMXMXSAMXMAAMXAMXAAAAXXMAMSMXAMAMMSMAMXMXAMXAAMMMAXSMSMASASMSXMMXSXMSAMMMMASXXMSMSAXMMXMMXXAM
|
||||
SASMSMSSSMAMMSAAXAAXMAMMXMMMMMSMMMAMMMMMAAXXSMMMAMSASAMXMMSMSXMMSMSMSXMXMXMMMMAMASXSSMASXMMMMSAAXXXAXMXMXMAXXXXAXAAMXMXASAMXAXMAXAMMASXXSAMX
|
||||
XAXXMASAXMAMXMXMSSSMXSMSXSAAXMAXAMASMMSSMMSMMASAMXMAXAMSXMAMMMMMMMXXMXMASASMSXXMASMXAMMMSMAAAXAMMAMMMASXMMAMAMSXXMMSSSSXMXSXSMMSXMASASMAMAXS
|
||||
MXMMSSMMMMAXAMXXMAAXXXMAASMMSMSSMSASAAAAAMXMSAMMXMXSMMMMASAXAAAASXMSMASXSASAMXXMMSMSMMXAAXMMXSMSAMAXAXSAMMAMAAMAXSMXMAMMSMSAAXAXAMMMAMXAXAXX
|
||||
MXMASAMXASMSSSXSASMMMSMMXMXSAMAAMMMSMMMSSMAMMAMXXAAAXMASAMXMXSSMSAAXSAMAMAMXMMXMMSASAMMSSSSSMAAAXXMSMMMAMSSSXSMMMMAAMAMAAAMSMMXSAXMMSSSSSMSX
|
||||
XAMXSMMMMSAAAAAAAMXSAAXSMSMSSSSSMMASXAXXXMAXXMMMMMXSXSAMXMSSMAMMSMMMMMMXMSMXAXSAAMMSAMAMMAAMMMMMXMMAAAMMMAAXMMAMSSSSSMSSMSMMMAASXMASAAXAAXSX
|
||||
SSSMSXSAXMMMMMMMMMXMSSSMASASAMXMAMASXMXSMXSXXXXXMMAMXMMXXAAXMAMMXMAXMAXAMXASASMMXSASXMASMMMMXXAXASMSSMSMMSSMASAMMAAXXMAMAAAAMMMSAAMMMMMMMMSA
|
||||
AAAAXAXXSMXASASAXXAXXMAMAMMMXMASMMMSASAMAAMAMSMAMMAXMSMSMMASMAMMASXSSSSMSXMMMMASAMXMASASAAMAXSXSMSAMAMXMAMAAASASMMMMMMAMMSSMXSXMAXAAAXXXMAXM
|
||||
MSMMMSMMMMMASAMXXXXSASMMSSXXSMXXSAXMAMMSSSMAMAAASMMSAAAXMMMAMMMSASXXAAMASMXAASXMXMASXMMMXMSMASXMMSMSAMAMXXAMXMAXXXAAMSMSMAXXAXMASMSMSXMAMMSS
|
||||
MAMXAMAAAAMMMAMXSMASAMXMXMMMAMSXSMSMAMXAAMAASXSMSXAAMMSMXASAMSAMAXMMMMMASAXMMSAMASMSAASXMMAMMMXSAMXSAMMXSAMXASXMSASMXAAAMXMMMXSAMXMXAASXMMAA
|
||||
MXXMAXSMSMSSSMSAAMMMMMMMAMAXMASAXAAXMMMMSMXMSXXAXMMMSXMMSXSAXMXMASXAAXMASMSSXSASXSMMMXMAXSXAAXAMASASXMXAMXXMXSAAXXMXSMSMSMMSAMXAMAMXSAMASMAS
|
||||
SAMXSXMAXASAMAMMXAMXAAASASAMXMMMMSMSXSMMAXAMXMMXMXAXXAMMSMMMMMMXMAXSSSMXSAXMASAMXXMXMXSMMMXSMMMSAMASMSMASXMMASMMMSMMXAXXSAAAXSSXMAMAMAMAXMAM
|
||||
XXSAMAMAMXMMMAMAMSXSXSXSXSASAXAAMAAAXAMMAMSMSAAMMSMSSXMASXMAXAASXMAXAXXAMAMMAMAMXMSASXASAMXXSSXMXMXMASAMMMSAAMAAAAASMSMAMMSMSMXMSSSXSMMSSMXS
|
||||
XMMXXAMSMSSXSASAMXASAMAMXMASAMSMSXXSAMXMSMXAMXSAAAXMASMASMSXSSMSAMXMMMMXSSXMXMSAMXSASXSAMXSMAMAXASMMMMSXMAXMSMMMSSMMAXMXMXMMMXAXAAMASMAXMXMA
|
||||
SAXASXSMXAAXMASAMMAMXMAMAXMXMMMAXAMAMXAMXAMAMSMMSSXXMAXAMXSAAAAXAMSMXXAMMAMMSMXAXMMMMMMXMMAMXMSMMSAAMAMMMXSAMXMXAMXMAMMSMXAAMSSMMSMAMMSMMSAM
|
||||
XMXMAMAXMMXSAASMMSMSASMSSSMAMXMXMMMAASMSMMMXSAMXMMXAMXSSMASMXMMMAMAMSMSMSAAAAASXMASAXAXASXSXSMXAXSXMMAMMAMXMSXMAASMMXSXMASXMXAASAMMXSXXAAXMX
|
||||
SSSXSMAMXAAXMXSXXXASXSAAAAMXMAMASMMMMMXAAAAMAMXMXAAMMAAMMAMXSSXMASMSAMMASXSSMMMXMSMAMXSAMMMAAMSAMXAXSAXMASXXSAMAMXAXAMAMASMMMSSMMSMMMASMMMSX
|
||||
AAAAXMXSMMXSMAXMMMXMAMMMSMMSMASAXMASASMSSMSSMAAMMMSXSMSMMSSMMAASXSXSASMAMXMAMSAMXAXAAXMASAMSMMSSMSMMMASXXMXAXXMASMMMMXMMAMAAAXAXAAMAMMMXMSAM
|
||||
MAMMMSMMMMMAMASAASAMXMAXAXXAMAXMMSASAMXAAAXMXSAMAAMASXAXAMXAMSMMASMSAMMAMXXAMXXSSSXSSXAAMAXXAAMAMXXMASAMMMMSMXSMXASAMASMSSSMSSSMSMSAMXXXMAMA
|
||||
AAXAXAAXAASAMMAMSSMSAMXSMMSMXMSMAMXMXMMXMMSSMMASMSMAMMSMMSSMMXAMXMAMXMXXMAXSMSMMAMAXXMASXXMSMMSMSAMXXMMMAXAXAASMXMAMSMSAAMXAAAAAXASXSXMAMMXS
|
||||
MXSMSSSMSXSAAXAXMXMXXXAMXAAMAXAMSSSMMSMMXMAMAMXAMXMXMAXAXMAAAXAMSMSMSSMASMXXAMXMAMXXMMAAMMMAAMAAAMXSXSXSSMMXSSMAASXMXAMMMXSMSSSMMMMXAXSAMAAM
|
||||
XAXMAAXXXASXMMMSXASMMMMSMSSSMMASAAASAAXXAMMSXMXSAAAAMXSSMSSMMSAMXAAAAMXAMAAMAMXMXSAMMMSSMAXMSMMMMXAMXMAXAASMMMMXMMAMMMXAXXSAMAAASXSMSASASMSS
|
||||
MXSMXXMXSMXSXAXMMMSAAMXSAAMAMSMMMSMMSSMMXSXXAMXMMMSXSAAAAAAXMAMXMSMMMAMSSMSSMMXMAXAMAAXAXSSXXMSMSMXXAMMMSMMAAMAASMSMAMSXSMMAMMMMAXXAMASAMAAA
|
||||
SMMMAXSXMMAMMMAAAXSMMMAXMSMAMMAMXMXMAMAMSMMSMMSSXMMAMMSMMMSMMAXXXAXMMXXXAMXAAAMMSSMMMMSAMXXXMAAAAMSSSSXAMAMSXMMMSAMSSXMAAASXMASXMSMMMAMXMMMS
|
||||
AXAAXMMAAMASAMXXSMSXSMMXXMMAXSAMASMMAMAMMAAAAAAXAAMAMXXXAXXMMMSMMMMSMSSSMMSMMMXXMAXXXAMXMASXMSMSMMAAXSMXSXMMSMXAMAMAXAMXSAMXSAMAXMAAMXSASXAX
|
||||
SMMMSASMMSASMXSAXAMASXSXASXAMSAMASASXSSSSMMSMMSSSMSMSMXSSSMAAAXAAAXAAAXAAAMAAMXMSMMMAMSSMXASAMXAAMMXMXMAMAAAAXMXMMMXXXMMXAAAMASXMMSMSASASMMS
|
||||
XAAAMMMXAMXSAAMMMAMSMAXMMMMXMSMMXSMMAMXAASAAXSAMXXAAAAXXMAXMMXSSSXSMMMXSMMSSMSAAAMMMSMAAXXMSMXMSMMXSAMXSSSMSSSMSMMXSXAXAMXMMMAMAAXAAXMMXSAAX
|
||||
MXMMSXXMXMXMMXSXSAMXMSMSAAMAAMASAMAMSMMSMMSASMMSMSMSMMMASMMMSMMAXAXMASMAXXXXMSXSMSAAAMSSMSXSMAMXSAMASXAMMXAAMMAMXSAMSSMMXASAMASXMSXSSXSAMMMS
|
||||
AAMXMXMXAAXMMMXASXSAAAAMSAXXMSAMMSAMAXMXAAMXSAASAAMAXXAXMXAAMAMAMSMSASASMSXAXSXMASMSMMAAXXAXXMXAMXSAMMMSAMMSXMAMMMAXAMAMSASXSASMAMXMMAMASMXX
|
||||
MMSAMMASMSMSSMMMMMMMMMXMMMSSMMMXMXXSXMXMMMSSXMMSXXMASXSMMSMMXMMSSMAMMMXAASXMMSAMMMXXMMXXMMSMASMMMAMAMMAMAXAMASXSASXMASXMAXXXMASMAMSMMAMXXXAS
|
||||
SMSASAMMMAAAMSASASXSSSSMSAMXAAAMSAMMXSAAXASMMSXMMSMAMXAAXXASXSAMAMMMASMMMMAMAMAMMMASMSSMMAXMAMAXSXSMSMMMSMXSAMASASASAMAAMSXMSAXXAMSXSXSMXMMM
|
||||
AMMAMXXXXMMMSSMMASMMMAAAMXMXMMXSMASAAMXSMMSAAMAAAMMSMSXMXMASAMXSAMAAMAXAASAMXSMMXMASXAAMMASMAXXMMASAAAAAXXMMAMXMAMMMASAMXMAMSASMSSMAMAAAXMAS
|
||||
MSXSAMMSASXXXMAMSMXAMSMMMAMSMSXAXSMMSSMXASMMMSMMMSAXXSASMSAMXMMXAMAMXMMSXSMSMAASMMASMSMMMMMXAMAXMAMXMSMASASMSMSMSMMMAMAXMSAMSAMMXAMAMSMMXSAX
|
||||
XAMMAAAMAMMMMMAMAAMMXAXXSXMAAXMXMMAMAAXSSMXMMAAMXMASAXAMMAMMMSSSSXSAAXAXAMAAMSMMAMASMXASAXMAXASAMMSAXAMXSXMAXSXMASXMASXMASMMMAMXSMMXXAAMXMMS
|
||||
AMAMSMSMAMXAASMSMSMSAMXXMAMMSMSSSMAMSSMMXMASMXSMXMXMAMSMMASAAMAAAAMSXSAMAMSMXXXSSMMSASAXMSMASXMASAAXMMSMSAMXMMMSAMXSMXAAMMXAXAMXSAAMSMSMAAAA
|
||||
SXSMXAXMAMMMMSAMAAAXXSXMMMAXAMAXAXXXXAASMMMAAXMMMSAMXMXASASMXSMMMMMAMMASXMXSAMXMAAXSXMAMSAMAAASXMXSMSXAAMSAMXXAMASXMSSXSASXXMAMXXMAMSAMMSMMX
|
||||
AAAXMXMSMMMSMMAMSMSMMMXSAAXSSSMSSMSASXMMAMSMSMSAAXXXSASMMMSMXSAMAXMAXSAMAAMSXMASMSMSAMMMSASMMXMMMSAAXSMSMAMASMSSMMAAAXXMAMAAMSSMMXSXSASAXMAM
|
||||
MXMXSAMMAAAAXSSMMAAAAXAMMXMAMXXXMAXASXMXAMAAAAXMMSSMSXSAAAMMAMASMMSAXMSSMMMMASXXAAASXMAAXXMXMMMSXSMSMXMMMXMAMSXAXSXMMSMMAMXMMAAAAXMAMAMXMMSA
|
||||
XAMAXASMMMSXMAAAXSSSSSXMASMSMMSMMSMASASXXSMXMMMMXXXASMSXMSSMASAMAAMAMMAMAMXSAMXMSMMMSSMSSXMASAAAASXXXAAAXAMXMXXAMXMXXXXMASAAMXSMMSMAMAMMXAAA
|
||||
SASASXMXAXXMMSSMMAAAAXMASXXMAMMAAXMXMAMAMXMASMMMSAMXMASMMXAXXSASMMSSMSASAMAMAMXAXAMXMMXXAASASMSMMMMXMSSXSSXMASXMXAMSSMMSAXMXSAMAXXMAMAMAMMSM
|
||||
SXMXSAAMMMSXMAMXMMMMMMMMMXASMMMMMMSXMAMAMASASAAAMAMMMMMAMSMMMMMMMMAAASASMMMSMSMSSMXMASMMSMMAXAXXSASAAMAMAAAMASAMSASAAXMASMXXMASXMSSMSSSXMMAM
|
||||
MXSASMMMXAASMMSXSAMXXASAMXXXXSXASXXASXSASXMASMMMSAMAAASAMXXAAMAAXMSSMMAMMAAAAAMAAXASAAAAMAMSMSMMSASMSMAXSSXMASAMSSMXSXMAMMXMSXMAAMMMAXXMASAS
|
||||
MSMMSAMAMMSSMXMXSXXMASMMSAMXAMSAMXSXMASXSAMXMMAMXXSSSMSASXSSSSMSSXMAXMXMSXSMSMMSSMMMSSMMSSMAXXMAMXXMAXXMMMMMASAMXMMMMXMASAMXMASXSSSMMSMMMMMS
|
||||
73
4/main.go
Normal file
73
4/main.go
Normal 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)
|
||||
}
|
||||
109
5/main.go
Normal file
109
5/main.go
Normal 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
80
5/main.go.BAK
Normal 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
28
5/test
Normal 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
130
6/input
Normal file
@@ -0,0 +1,130 @@
|
||||
......#...........#..............................#..............................#...........................##...............#....
|
||||
.............#..............#........#......##...................................................#............##...#..........#...
|
||||
...#..................#..............#.........#...#.........................................................................#..#.
|
||||
.....#..........#...................#.....................#..........#...........#......#..#...................#..................
|
||||
...#...............................................##..................#............#.....#...................#...................
|
||||
.#.#..#...................#.##.................#..........#................................#......#.........##..................#.
|
||||
....................#...................#....#.........#....................#....................................................#
|
||||
..........#......#...................................................................................................#....#.......
|
||||
.#...............#.........#...........#...............#...................#......#...............................................
|
||||
............#...........#........#..##.......#........#.....#................................##...................................
|
||||
...................#.#.............###.................##.................#.......................#.....#..............##.........
|
||||
.........................#...#............................#......#.......................#........................................
|
||||
.....................#..............................................#.......#......##......................................#......
|
||||
............................#.#............................................................................#.................#....
|
||||
.#.....#.......................................................#..........#.......................................................
|
||||
..............#..............................#.....#....#........#....................#....#.#...........#.#..................#...
|
||||
........................#...#...##......#...........................#.............#............................#..................
|
||||
...#........................................................#...#...........................#...#...............#........#........
|
||||
.........#..#..........#.....................................#..................................................................#.
|
||||
...........................................#.........#....#........................................#..#...........#...............
|
||||
..#..........#...........................................................................................#..............#.........
|
||||
...#.......#......................................#...............#...............................................................
|
||||
.#........#......#.#....................................#...#...........#..........#........#.#.......#.......................#...
|
||||
......................#...........#......##....................#..................#......#..............................#.......#.
|
||||
..............#......................#..............#...#.#............................................................#.#........
|
||||
..............#..................#...#..................#...#.....#...#...............#...........................................
|
||||
.............#............................##..#...#...............................................................##..............
|
||||
..#............................#.......#.#....................................#...................................................
|
||||
.......#.....#..........#......#.....#...................................#...........................#......#....#..............#.
|
||||
.#.................#.............................................#................#.............#.....#....................#......
|
||||
..............#.........#..#.....#...........#..............................#.................................#............#......
|
||||
....#.#............#............................................................#..........#......................................
|
||||
.........................................#.......#......#....................................#.....................#...#......#...
|
||||
....#.............................#....................................#..........#................................#..............
|
||||
.........#..#......#..............................................................#....................#..........................
|
||||
.......................................................##...#........#......................................................#.#..#
|
||||
..........................#.......##..##................................................................................#.........
|
||||
..................................##..................................................................#..........................#
|
||||
.#..................................................#..............#.....................#.....#..................................
|
||||
.......##........................#......................................................#..........#..............................
|
||||
.........#....#....#.........#.#........................#...#.....................................................#.....#.........
|
||||
....#.............................#....#....................#.....................#.....#......#.....................#..........#.
|
||||
............................................................................................#..........#......#...................
|
||||
..................................................................................#..........................#.#.....#.........#..
|
||||
..................................................#...................................................#......#.....#............#.
|
||||
..........................................^#................................................................................#.....
|
||||
...............#..........#.............................................#.....#....#...................#................#.........
|
||||
#..#....#........#........#.........#.......#.................#.......................#.#.............#...................#.......
|
||||
..#................................................................#......................................#.......................
|
||||
........#......................#.....................##.#..........#.............................#.............................#..
|
||||
....#..........#........................#.........................................................................................
|
||||
......#...#.#.#.........#.................#.....#.....#...#......#..................................................##........#...
|
||||
...#....#....................#...................................................................#......#...............#.........
|
||||
..#.......#.........................#..........#........#............................#......#....................#................
|
||||
.................................#.......................................#....................................................#..#
|
||||
......................#...#........................#.......................#.............#........................................
|
||||
......#.......#...................................................................................................#...............
|
||||
.............#............#......#............................#...........................................##......................
|
||||
..........................#.....................................................................................#.................
|
||||
....#..............................#......................#........................................#....#...........#.............
|
||||
................#.......#.........................................................................................................
|
||||
.............#............#........#.....#.........#.#.#............................#..........#..............#....#.......#.....#
|
||||
..#.....#...............................................................................................#...............#.........
|
||||
.......#...........#............#................#.......................................#..........................#......#......
|
||||
..........#........................................#......................#............#....................................#..#..
|
||||
.......#......#..............................#........................................................#.#.................#.......
|
||||
.#.................#..#.....................................................................................#...........##........
|
||||
#...................................#........................................#..............#.##........#..#.#.............#......
|
||||
......#...............#........#....#.........#.........#...#.......................#...........................#............#....
|
||||
...#...................................................................................#.......................................#..
|
||||
.....#.......................................#................#...............................................................#...
|
||||
.#................................................##................................#....................#...............#........
|
||||
.................................................#..#..................#.......#........................#...............#.....#...
|
||||
.....##.#.............................#.....................#................................................................#...#
|
||||
...........#....................#...........#...............#.................................................#.......#.......#..#
|
||||
........#....................................................#.....#....#.........................................#.....#.#.......
|
||||
...............#..........................#............#.#.................................................#......................
|
||||
...........#......#.....................#...................................................................#.#..............#....
|
||||
......#...#.........................#..........................................................#..................................
|
||||
.....................#................................................#..#........................................................
|
||||
..............#.................#............#....................#.#.......................................#............#........
|
||||
............#.....................#................#......#..........................#.#.........#............#...................
|
||||
........................................................................#.....................#...................................
|
||||
.............................#....................................................................................................
|
||||
.........................#...#..........................................#............................................#............
|
||||
..#...............................#.....#.....#.............#.......#..#.................##.#.......................#.........#.#.
|
||||
......................................#...........................................................................................
|
||||
...........#.....................................#................#...#.........................#........................#........
|
||||
..#...#..#..........................#.......#....#......................................................#................#........
|
||||
.....................................#...#.#........#...............#..#......#.....................................#...#.........
|
||||
.#..............#..............................................................#.........................##......................#
|
||||
..........#..................................#....#.........#...#.#..........#...#...................................##...........
|
||||
...............#.....................................................................................................#............
|
||||
.#.......#....................#...#..........................#.#...............#......................#........#.................#
|
||||
.............#....................#........................#..................#......#....#....#..................................
|
||||
........#..............................................................#.....................#....................................
|
||||
.......................#..............#.............#......#.........................................#.........................#..
|
||||
.......#.......#.#........#.......................#..#.......................................................#.#..................
|
||||
...............#..#....#.......................#.....#..............................#..................#.....................#....
|
||||
......#..............#...........................#............................##...........................#......................
|
||||
.......................................#........#................................#..........................#.....................
|
||||
.#.....................................#............#.............................................................#..#............
|
||||
..................#..................#.........................#............#..........#.........................#...#............
|
||||
.......................................................#..............#..........................................................#
|
||||
...#....#..#...#..#...................##....................#.....................#...................#.....#..........#..........
|
||||
.......................#........#....................##.................#.......................................................#.
|
||||
........#.......#.......................#.#......##...##........#..##.........................................#...............##..
|
||||
....#..........................#.........##..#......#...........................#........#........#...#...........................
|
||||
...#..........................#.....#.....................................#.......................................................
|
||||
....................................##.......#..............................#.............#...#......#.............#..............
|
||||
.#..............................#...............................................................................................#.
|
||||
.....#................................................................................##.....#..............#.#...................
|
||||
...........................................................................................#....#................#................
|
||||
...#..#...................................................#....#.......#.......#.................................#........#.......
|
||||
.#....#....................#..............................................................................#.............#.......#.
|
||||
.........#.................#.......................................#...........#......#.......#............#............#.........
|
||||
........................................#...............................#.........................................................
|
||||
..............#....#......................#..........#........#.....................................#...........#..........#......
|
||||
......##....#.............#..........#......................#.........................................##..........................
|
||||
....................#.............................#.....................##.#..........#..#......................###.........#.....
|
||||
.#.......................................##........................#.....#.....#..#...............................................
|
||||
..............................#............................#.......................................................##.............
|
||||
.........#.............................#..............#......#.....#..............#.#............................#........#....#..
|
||||
............#..............#.............................#..........................#.............................#...............
|
||||
.................#...........#..............#.....#..............................#.............#................#.....#...........
|
||||
........#.....................#........#.....................................#..........................#......#.#................
|
||||
.....................................................#..#........................#.##..#.........#................................
|
||||
......#..............................................#..........................#...............................#..........#......
|
||||
.................................................#.................##.......................#...................................#.
|
||||
....................#.....#.......#.............#................................#..........#...#.................................
|
||||
160
6/main.go
Normal file
160
6/main.go
Normal 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
10
6/test
Normal file
@@ -0,0 +1,10 @@
|
||||
....#.....
|
||||
.........#
|
||||
..........
|
||||
..#.......
|
||||
.......#..
|
||||
..........
|
||||
.#..^.....
|
||||
........#.
|
||||
#.........
|
||||
......#...
|
||||
850
7/input
Normal file
850
7/input
Normal 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
84
7/main.go
Normal 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
9
7/test
Normal file
@@ -0,0 +1,9 @@
|
||||
190: 10 19
|
||||
3267: 81 40 27
|
||||
83: 17 5
|
||||
156: 15 6
|
||||
7290: 6 8 6 15
|
||||
161011: 16 10 13
|
||||
192: 17 8 14
|
||||
21037: 9 7 18 13
|
||||
292: 11 6 16 20
|
||||
50
8/input
Normal file
50
8/input
Normal 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
93
8/main.go
Normal 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))
|
||||
}
|
||||
|
||||
12
8/test
Normal file
12
8/test
Normal file
@@ -0,0 +1,12 @@
|
||||
............
|
||||
........0...
|
||||
.....0......
|
||||
.......0....
|
||||
....0.......
|
||||
......A.....
|
||||
............
|
||||
............
|
||||
........A...
|
||||
.........A..
|
||||
............
|
||||
............
|
||||
17
test/main.go
Normal file
17
test/main.go
Normal 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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user