Created
June 7, 2016 03:03
-
-
Save jrjames83/25170c48700cc39781a7ed1df25b410f to your computer and use it in GitHub Desktop.
Project Eueler 13 in Go
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| package main | |
| import ( | |
| "fmt" | |
| //"strconv" | |
| "strings" | |
| "math/big" | |
| ) | |
| //Work out the first ten digits of the sum of the following | |
| //one-hundred 50-digit numbers. https://projecteuler.net/problem=13 | |
| func main() { | |
| // backtick for multiline string | |
| digits := | |
| `37107287533902102798797998220837590246510135740250 | |
| 46376937677490009712648124896970078050417018260538 | |
| 74324986199524741059474233309513058123726617309629 | |
| 91942213363574161572522430563301811072406154908250 | |
| 23067588207539346171171980310421047513778063246676 | |
| 89261670696623633820136378418383684178734361726757 | |
| 28112879812849979408065481931592621691275889832738 | |
| 44274228917432520321923589422876796487670272189318 | |
| 47451445736001306439091167216856844588711603153276 | |
| 70386486105843025439939619828917593665686757934951 | |
| 62176457141856560629502157223196586755079324193331 | |
| 64906352462741904929101432445813822663347944758178 | |
| 92575867718337217661963751590579239728245598838407 | |
| 58203565325359399008402633568948830189458628227828 | |
| 80181199384826282014278194139940567587151170094390 | |
| 35398664372827112653829987240784473053190104293586 | |
| 86515506006295864861532075273371959191420517255829 | |
| 71693888707715466499115593487603532921714970056938 | |
| 54370070576826684624621495650076471787294438377604 | |
| 53282654108756828443191190634694037855217779295145 | |
| 36123272525000296071075082563815656710885258350721 | |
| 45876576172410976447339110607218265236877223636045 | |
| 17423706905851860660448207621209813287860733969412 | |
| 81142660418086830619328460811191061556940512689692 | |
| 51934325451728388641918047049293215058642563049483 | |
| 62467221648435076201727918039944693004732956340691 | |
| 15732444386908125794514089057706229429197107928209 | |
| 55037687525678773091862540744969844508330393682126 | |
| 18336384825330154686196124348767681297534375946515 | |
| 80386287592878490201521685554828717201219257766954 | |
| 78182833757993103614740356856449095527097864797581 | |
| 16726320100436897842553539920931837441497806860984 | |
| 48403098129077791799088218795327364475675590848030 | |
| 87086987551392711854517078544161852424320693150332 | |
| 59959406895756536782107074926966537676326235447210 | |
| 69793950679652694742597709739166693763042633987085 | |
| 41052684708299085211399427365734116182760315001271 | |
| 65378607361501080857009149939512557028198746004375 | |
| 35829035317434717326932123578154982629742552737307 | |
| 94953759765105305946966067683156574377167401875275 | |
| 88902802571733229619176668713819931811048770190271 | |
| 25267680276078003013678680992525463401061632866526 | |
| 36270218540497705585629946580636237993140746255962 | |
| 24074486908231174977792365466257246923322810917141 | |
| 91430288197103288597806669760892938638285025333403 | |
| 34413065578016127815921815005561868836468420090470 | |
| 23053081172816430487623791969842487255036638784583 | |
| 11487696932154902810424020138335124462181441773470 | |
| 63783299490636259666498587618221225225512486764533 | |
| 67720186971698544312419572409913959008952310058822 | |
| 95548255300263520781532296796249481641953868218774 | |
| 76085327132285723110424803456124867697064507995236 | |
| 37774242535411291684276865538926205024910326572967 | |
| 23701913275725675285653248258265463092207058596522 | |
| 29798860272258331913126375147341994889534765745501 | |
| 18495701454879288984856827726077713721403798879715 | |
| 38298203783031473527721580348144513491373226651381 | |
| 34829543829199918180278916522431027392251122869539 | |
| 40957953066405232632538044100059654939159879593635 | |
| 29746152185502371307642255121183693803580388584903 | |
| 41698116222072977186158236678424689157993532961922 | |
| 62467957194401269043877107275048102390895523597457 | |
| 23189706772547915061505504953922979530901129967519 | |
| 86188088225875314529584099251203829009407770775672 | |
| 11306739708304724483816533873502340845647058077308 | |
| 82959174767140363198008187129011875491310547126581 | |
| 97623331044818386269515456334926366572897563400500 | |
| 42846280183517070527831839425882145521227251250327 | |
| 55121603546981200581762165212827652751691296897789 | |
| 32238195734329339946437501907836945765883352399886 | |
| 75506164965184775180738168837861091527357929701337 | |
| 62177842752192623401942399639168044983993173312731 | |
| 32924185707147349566916674687634660915035914677504 | |
| 99518671430235219628894890102423325116913619626622 | |
| 73267460800591547471830798392868535206946944540724 | |
| 76841822524674417161514036427982273348055556214818 | |
| 97142617910342598647204516893989422179826088076852 | |
| 87783646182799346313767754307809363333018982642090 | |
| 10848802521674670883215120185883543223812876952786 | |
| 71329612474782464538636993009049310363619763878039 | |
| 62184073572399794223406235393808339651327408011116 | |
| 66627891981488087797941876876144230030984490851411 | |
| 60661826293682836764744779239180335110989069790714 | |
| 85786944089552990653640447425576083659976645795096 | |
| 66024396409905389607120198219976047599490197230297 | |
| 64913982680032973156037120041377903785566085089252 | |
| 16730939319872750275468906903707539413042652315011 | |
| 94809377245048795150954100921645863754710598436791 | |
| 78639167021187492431995700641917969777599028300699 | |
| 15368713711936614952811305876380278410754449733078 | |
| 40789923115535562561142322423255033685442488917353 | |
| 41503128880339536053299340368006977710650566631954 | |
| 44889911501440648020369068063960672322193204149535 | |
| 81234880673210146739058568557934581403627822703280 | |
| 82616570773948327592232845941706525094512325230608 | |
| 22918802058777319719839450180888072429661980811197 | |
| 77158542502016545090413245809786882778948721859617 | |
| 72107838435069186155435662884062257473692284509516 | |
| 20849603980134001723930671666823555245252804609722 | |
| 53503534226472524250874054075591789781264330331690` | |
| test := strings.Split(digits, "\n") // linbreaks preserved in sublime from the HTML page | |
| n := new(big.Int).SetInt64(0) // create a big int to haandle the accumulator https://golang.org/pkg/math/big/ | |
| // Loop through slice of the 50 digit numbers (100 of them) | |
| // and convert each string to a big int, then add to n the accumulator | |
| for _, v := range test { | |
| res , _ := new(big.Int).SetString(v, 10) | |
| n.Add(n, res) | |
| } | |
| fmt.Printf("%T \n",n) // debug | |
| // Convert the accumulator back to a string | |
| str_result := n.String() // convert bigint back to string | |
| fmt.Printf("%T \n",str_result) // debug | |
| //split string to array so I can slice | |
| fin := strings.Split(str_result, "") // convert string to slice | |
| fin10 := fin[0:10] // up to the 10th element | |
| // first 10 digits of sum | |
| fmt.Println(fin10, " should be the first 10 elements of the large sum\n") | |
| //[5 5 3 7 3 7 6 2 3 0] should be the first 10 elements of the large sum | |
| // Code I struggled with just for the hell of it below - some interesting | |
| // string conversion methods and the artifacts of ont realizing the linebreaks | |
| // were making it into my slice (why 5099 chars?!) | |
| // note stupid attempt to filter them out before I realized | |
| // to just split on newline to array and then proceed to iteration :) | |
| // nbr, _ := strconv.Atoi(v) | |
| // clean := strings.Replace(digits, "\n" ,"", -1) | |
| // myslice := strings.Split(clean, "") | |
| // b := []int{} | |
| // for _, v := range myslice { | |
| // nbr, _ := strconv.Atoi(v) | |
| // if nbr >= 0 || nbr < 10 { | |
| // b = append(b, nbr) | |
| // } | |
| // } | |
| // myslice := strings.Split(digits, "") | |
| // myslice10 := myslice[0:10] | |
| // //fmt.Printf("%T", myslice) // []string | |
| // //https://golang.org/pkg/strings/#Join | |
| // b := []int{} | |
| // for _, v := range myslice10 { | |
| // to_add, _ := strconv.Atoi(v) | |
| // b = append(b, to_add) | |
| // } | |
| // sum := 0 | |
| // for _, v := range b { | |
| // sum = sum + v | |
| // } | |
| // fmt.Print(sum, " Is the sum of the first 10 numbers") | |
| // Iterate through range and add then join then sum | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment