Commits

Miki Tebeka committed e387320

Moving down

Comments (0)

Files changed (66)

go/1.go

-/*
-If we list all the natural numbers below 10 that are multiples of 3 or 5, we get
-3, 5, 6 and 9. The sum of these multiples is 23.
-
-Find the sum of all the multiples of 3 or 5 below 1000.
-
-Answer: 233168
-*/
-package main
-
-import "fmt"
-
-func main() {
-	sum := 0
-	for i := 1; i < 1000; i++ {
-		if (i%5 == 0) || (i%3 == 0) {
-			sum += i
-		}
-	}
-
-	fmt.Println(sum)
-}

go/10.go

-/*
-The sum of the primes below 10 is 2 + 3 + 5 + 7 = 17.
-
-Find the sum of all the primes below two million.
-
-Answer: 142913828922
-*/
-
-package main
-
-import (
-	"big"
-	"fmt"
-)
-
-func main() {
-	sum := int64(0)
-	for i := int64(0); i < 2000000; i++ {
-		if big.ProbablyPrime(big.NewInt(i), 10) {
-			sum += i
-		}
-	}
-	fmt.Println(sum)
-}

go/11.go

-/*
-In the 20×20 grid below, four numbers along a diagonal line have been marked in red.
-
-08 02 22 97 38 15 00 40 00 75 04 05 07 78 52 12 50 77 91 08
-49 49 99 40 17 81 18 57 60 87 17 40 98 43 69 48 04 56 62 00
-81 49 31 73 55 79 14 29 93 71 40 67 53 88 30 03 49 13 36 65
-52 70 95 23 04 60 11 42 69 24 68 56 01 32 56 71 37 02 36 91
-22 31 16 71 51 67 63 89 41 92 36 54 22 40 40 28 66 33 13 80
-24 47 32 60 99 03 45 02 44 75 33 53 78 36 84 20 35 17 12 50
-32 98 81 28 64 23 67 10 26 38 40 67 59 54 70 66 18 38 64 70
-67 26 20 68 02 62 12 20 95 63 94 39 63 08 40 91 66 49 94 21
-24 55 58 05 66 73 99 26 97 17 78 78 96 83 14 88 34 89 63 72
-21 36 23 09 75 00 76 44 20 45 35 14 00 61 33 97 34 31 33 95
-78 17 53 28 22 75 31 67 15 94 03 80 04 62 16 14 09 53 56 92
-16 39 05 42 96 35 31 47 55 58 88 24 00 17 54 24 36 29 85 57
-86 56 00 48 35 71 89 07 05 44 44 37 44 60 21 58 51 54 17 58
-19 80 81 68 05 94 47 69 28 73 92 13 86 52 17 77 04 89 55 40
-04 52 08 83 97 35 99 16 07 97 57 32 16 26 26 79 33 27 98 66
-88 36 68 87 57 62 20 72 03 46 33 67 46 55 12 32 63 93 53 69
-04 42 16 73 38 25 39 11 24 94 72 18 08 46 29 32 40 62 76 36
-20 69 36 41 72 30 23 88 34 62 99 69 82 67 59 85 74 04 36 16
-20 73 35 29 78 31 90 01 74 31 49 71 48 86 81 16 23 57 05 54
-01 70 54 71 83 51 54 69 16 92 33 48 61 43 52 01 89 19 67 48
-
-The product of these numbers is 26 × 63 × 78 × 14 = 1788696.
-
-What is the greatest product of four adjacent numbers in any direction (up,
-down, left, right, or diagonally) in the 20×20 grid?
-
-Answer: 70600674
-*/
-
-package main
-
-import "fmt"
-
-var nums = [][]int{
-	{8, 2, 22, 97, 38, 15, 00, 40, 00, 75, 04, 05, 07, 78, 52, 12, 50, 77, 91, 8},
-	{49, 49, 99, 40, 17, 81, 18, 57, 60, 87, 17, 40, 98, 43, 69, 48, 4, 56, 62, 0},
-	{81, 49, 31, 73, 55, 79, 14, 29, 93, 71, 40, 67, 53, 88, 30, 3, 49, 13, 36, 65},
-	{52, 70, 95, 23, 4, 60, 11, 42, 69, 24, 68, 56, 01, 32, 56, 71, 37, 02, 36, 91},
-	{22, 31, 16, 71, 51, 67, 63, 89, 41, 92, 36, 54, 22, 40, 40, 28, 66, 33, 13, 80},
-	{24, 47, 32, 60, 99, 3, 45, 02, 44, 75, 33, 53, 78, 36, 84, 20, 35, 17, 12, 50},
-	{32, 98, 81, 28, 64, 23, 67, 10, 26, 38, 40, 67, 59, 54, 70, 66, 18, 38, 64, 70},
-	{67, 26, 20, 68, 2, 62, 12, 20, 95, 63, 94, 39, 63, 8, 40, 91, 66, 49, 94, 21},
-	{24, 55, 58, 5, 66, 73, 99, 26, 97, 17, 78, 78, 96, 83, 14, 88, 34, 89, 63, 72},
-	{21, 36, 23, 9, 75, 0, 76, 44, 20, 45, 35, 14, 00, 61, 33, 97, 34, 31, 33, 95},
-	{78, 17, 53, 28, 22, 75, 31, 67, 15, 94, 3, 80, 04, 62, 16, 14, 9, 53, 56, 92},
-	{16, 39, 5, 42, 96, 35, 31, 47, 55, 58, 88, 24, 00, 17, 54, 24, 36, 29, 85, 57},
-	{86, 56, 0, 48, 35, 71, 89, 07, 05, 44, 44, 37, 44, 60, 21, 58, 51, 54, 17, 58},
-	{19, 80, 81, 68, 5, 94, 47, 69, 28, 73, 92, 13, 86, 52, 17, 77, 04, 89, 55, 40},
-	{4, 52, 8, 83, 97, 35, 99, 16, 07, 97, 57, 32, 16, 26, 26, 79, 33, 27, 98, 66},
-	{88, 36, 68, 87, 57, 62, 20, 72, 3, 46, 33, 67, 46, 55, 12, 32, 63, 93, 53, 69},
-	{4, 42, 16, 73, 38, 25, 39, 11, 24, 94, 72, 18, 8, 46, 29, 32, 40, 62, 76, 36},
-	{20, 69, 36, 41, 72, 30, 23, 88, 34, 62, 99, 69, 82, 67, 59, 85, 74, 4, 36, 16},
-	{20, 73, 35, 29, 78, 31, 90, 1, 74, 31, 49, 71, 48, 86, 81, 16, 23, 57, 05, 54},
-	{1, 70, 54, 71, 83, 51, 54, 69, 16, 92, 33, 48, 61, 43, 52, 1, 89, 19, 67, 48},
-}
-
-func main() {
-	max := 0
-	// horizontal
-	for row := 0; row < 20; row++ {
-		for col := 0; col <= 16; col++ {
-			p := nums[row][col] * nums[row][col+1] * nums[row][col+2] *
-				nums[row][col+3]
-			if p > max {
-				max = p
-			}
-		}
-	}
-	// vertical
-	for row := 0; row < 16; row++ {
-		for col := 0; col < 20; col++ {
-			p := nums[row][col] * nums[row+1][col] * nums[row+2][col] *
-				nums[row+3][col]
-			if p > max {
-				max = p
-			}
-		}
-	}
-	// right diagonal
-	for row := 0; row < 16; row++ {
-		for col := 0; col < 16; col++ {
-			p := nums[row][col] * nums[row+1][col+1] * nums[row+2][col+2] *
-				nums[row+3][col+3]
-			if p > max {
-				max = p
-			}
-		}
-	}
-	// left diagonal
-	for row := 0; row < 16; row++ {
-		for col := 3; col < 20; col++ {
-			p := nums[row][col] * nums[row+1][col-1] * nums[row+2][col-2] *
-				nums[row+3][col-3]
-			if p > max {
-				max = p
-			}
-		}
-	}
-
-	fmt.Println(max)
-}

go/12.go

-/*
-The sequence of triangle numbers is generated by adding the natural numbers. So
-the 7th triangle number would be 1 + 2 + 3 + 4 + 5 + 6 + 7 = 28. The first ten
-terms would be:
-
-1, 3, 6, 10, 15, 21, 28, 36, 45, 55, ...
-
-Let us list the factors of the first seven triangle numbers:
-
-     1: 1
-     3: 1,3
-     6: 1,2,3,6
-    10: 1,2,5,10
-    15: 1,3,5,15
-    21: 1,3,7,21
-    28: 1,2,4,7,14,28
-
-We can see that 28 is the first triangle number to have over five divisors.
-
-What is the value of the first triangle number to have over five hundred
-divisors?
-
-Answer: 76576500
-*/
-
-package main
-
-import "fmt"
-
-func triangles() chan uint {
-	out := make(chan uint)
-	go func() {
-		t, i := uint(0), uint(1)
-		for {
-			t += i
-			out <- t
-			i++
-		}
-	}()
-
-	return out
-}
-
-func numDivisors(n uint) uint {
-	d := uint(2) // 1 and the number itself
-	for i := uint(2); i <= n/2+1; i++ {
-		if n%i == 0 {
-			d++
-		}
-	}
-
-	return d
-}
-
-func worker(in chan uint, out chan uint) {
-	for {
-		t := <-in
-		if numDivisors(t) > 500 {
-			out <- t
-		}
-	}
-}
-
-const (
-	NUM_WORKERS = 1000
-)
-
-func main() {
-	out := make(chan uint)
-	in := triangles()
-	for i := 0; i < NUM_WORKERS; i++ {
-		go worker(in, out)
-	}
-
-	t := <-out
-	fmt.Println(t)
-}

go/13-digits.txt

-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
-44889911501440648020369068063960672322193204149535
-41503128880339536053299340368006977710650566631954
-81234880673210146739058568557934581403627822703280
-82616570773948327592232845941706525094512325230608
-22918802058777319719839450180888072429661980811197
-77158542502016545090413245809786882778948721859617
-72107838435069186155435662884062257473692284509516
-20849603980134001723930671666823555245252804609722
-53503534226472524250874054075591789781264330331690

go/13.go

-/*
-Work out the first ten digits of the sum of the following one-hundred 50-digit numbers.
-
-[13-digits.txt]
-
-Answer: 5537376230
-*/
-
-package main
-
-import (
-	"big"
-	"bufio"
-	"fmt"
-	"os"
-)
-
-func numbers(filename string) chan *big.Int {
-	out := make(chan *big.Int)
-	file, err := os.Open(filename)
-	if err != nil {
-		panic(fmt.Sprintf("error: can't open %s - %s", filename, err))
-	}
-	reader := bufio.NewReader(file)
-	go func() {
-		for {
-			line, _, err := reader.ReadLine()
-			if err == os.EOF {
-				close(out)
-				break
-			} else if err != nil {
-				panic(fmt.Sprintf("error: %s", err))
-			}
-
-			i := big.NewInt(0)
-			i.SetString(string(line), 10)
-
-			out <- i
-		}
-	}()
-
-	return out
-}
-
-func main() {
-	sum := big.NewInt(0)
-	for i := range numbers("13-digits.txt") {
-		sum.Add(sum, i)
-	}
-
-	fmt.Println(sum.String()[:10])
-}

go/14.go

-/*
-The following iterative sequence is defined for the set of positive integers:
-
-n → n/2 (n is even)
-n → 3n + 1 (n is odd)
-
-Using the rule above and starting with 13, we generate the following sequence:
-13 → 40 → 20 → 10 → 5 → 16 → 8 → 4 → 2 → 1
-
-It can be seen that this sequence (starting at 13 and finishing at 1) contains
-10 terms. Although it has not been proved yet (Collatz Problem), it is thought
-that all starting numbers finish at 1.
-
-Which starting number, under one million, produces the longest chain?
-
-NOTE: Once the chain starts the terms are allowed to go above one million
-*/
-
-package main
-
-import (
-	"big"
-	"fmt"
-)
-
-var one *big.Int = big.NewInt(1)
-var two *big.Int = big.NewInt(2)
-var three *big.Int = big.NewInt(3)
-
-func collatz(n int) int {
-	// use big.Int since intermediate results overflow ints
-	value := big.NewInt(int64(n))
-	for length := 1; ; length++ {
-		if value.Cmp(one) == 0 {
-			return length
-		}
-
-		if value.Bit(0) == 0 {
-			value.Div(value, two)
-		} else {
-			value.Mul(value, three)
-			value.Add(value, one)
-		}
-
-	}
-	// make the compiler happy
-	return -1
-}
-
-func main() {
-	n, value := 1, 1
-
-	for i := 2; i < 1000000; i++ {
-		c := collatz(i)
-		if c > value {
-			n, value = i, c
-		}
-	}
-
-	fmt.Println(n)
-}

go/14.py

-#!/usr/bin/env python
-
-_collatz = {1:1}
-def collatz(n):
-    value = _collatz.get(n)
-    if value:
-        return value
-
-    if (n % 2) == 0:
-        _collatz[n] = value = 1 + collatz(n/2)
-    else:
-        _collatz[n] = value = 1 + collatz(3*n+1)
-
-    return value
-
-def main():
-    n, value = 1, 1
-    for i in xrange(2, 1000001):
-        c = collatz(i)
-        if c > value:
-            n, value = i, c
-
-    print(n)
-
-if __name__ == "__main__":
-    main()

go/15.go

-/*
-Starting in the top left corner of a 2×2 grid, there are 6 routes (without
-backtracking) to the bottom right corner.
-
-How many routes are there through a 20×20 grid?
-
-Answer: 137846528820
-*/
-
-package main
-
-import "fmt"
-
-const (
-	MAX_X = 20
-	MAX_Y = 20
-)
-
-type Point struct {
-	X, Y int
-}
-
-func (p *Point) Hash() string {
-	return fmt.Sprintf("%d, %d", p.X, p.Y)
-}
-
-var _cache map[string]uint64
-
-func numPaths(p *Point) uint64 {
-	value, ok := _cache[p.Hash()]
-	if ok {
-		return value
-	}
-	if p.X == MAX_X || p.Y == MAX_Y {
-		return 1
-	}
-
-	np := numPaths(&Point{p.X + 1, p.Y}) + numPaths(&Point{p.X, p.Y + 1})
-	_cache[p.Hash()] = np
-
-	return np
-}
-
-func main() {
-	_cache = make(map[string]uint64)
-	fmt.Println(numPaths(&Point{0, 0}))
-}

go/16.go

-/*
-215 = 32768 and the sum of its digits is 3 + 2 + 7 + 6 + 8 = 26.
-
-What is the sum of the digits of the number 21000?
-
-Answer: 1366
-*/
-
-package main
-
-import (
-	"big"
-	"fmt"
-)
-
-func sumDigits(s string) int {
-	sum := 0
-	for _, c := range s {
-		sum += c - '0'
-	}
-
-	return sum
-}
-
-func main() {
-	i := big.NewInt(2)
-	i.Exp(big.NewInt(2), big.NewInt(1000), nil)
-	fmt.Println(sumDigits(i.String()))
-}

go/17.go

-/*
-If the numbers 1 to 5 are written out in words: one, two, three, four, five,
-then there are 3 + 3 + 5 + 4 + 4 = 19 letters used in total.
-
-If all the numbers from 1 to 1000 (one thousand) inclusive were written out in
-words, how many letters would be used?
-
-NOTE: Do not count spaces or hyphens. For example, 342 (three hundred and
-forty-two) contains 23 letters and 115 (one hundred and fifteen) contains 20
-letters. The use of "and" when writing out numbers is in compliance with British
-usage.
-
-Answer: 21124
-*/
-
-package main
-
-import "fmt"
-
-var numbers = map[int]string{
-	1:  "one",
-	2:  "two",
-	3:  "three",
-	4:  "four",
-	5:  "five",
-	6:  "six",
-	7:  "seven",
-	8:  "eight",
-	9:  "nine",
-	10: "ten",
-	11: "eleven",
-	12: "twleve",
-	13: "thirteen",
-	14: "fourteen",
-	15: "fifteen",
-	16: "sixteen",
-	17: "seventeen",
-	18: "eighteen",
-	19: "nineteen",
-	20: "twenty",
-	30: "thirty",
-	40: "forty",
-	50: "fifty",
-	60: "sixty",
-	70: "seventy",
-	80: "eighty",
-	90: "ninety",
-}
-
-func english(n int) string {
-	if n >= 100 {
-		hundreds := numbers[n/100] + "hundred"
-		tens := english(n - n/100*100)
-		if len(tens) > 0 {
-			return hundreds + "and" + tens
-		} else {
-			return hundreds
-		}
-	}
-	if value, ok := numbers[n]; ok {
-		return value
-	}
-
-	if n >= 20 {
-		return numbers[n/10*10] + numbers[n-n/10*10]
-	}
-
-	return ""
-}
-
-func main() {
-	s := "onethousand"
-	for n := 1; n < 1000; n++ {
-		s += english(n)
-	}
-	fmt.Println(len(s))
-}

go/18.go

-package main
-
-import "fmt"
-
-var nums = [][]int{
-	{75},
-	{95, 64},
-	{17, 47, 82},
-	{18, 35, 87, 10},
-	{20, 4, 82, 47, 65},
-	{19, 1, 23, 75, 3, 34},
-	{88, 2, 77, 73, 7, 63, 67},
-	{99, 65, 4, 28, 6, 16, 70, 92},
-	{41, 41, 26, 56, 83, 40, 80, 70, 33},
-	{41, 48, 72, 33, 47, 32, 37, 16, 94, 29},
-	{53, 71, 44, 65, 25, 43, 91, 52, 97, 51, 14},
-	{70, 11, 33, 28, 77, 73, 17, 78, 39, 68, 17, 57},
-	{91, 71, 52, 38, 17, 14, 91, 43, 58, 50, 27, 29, 48},
-	{63, 66, 4, 68, 89, 53, 67, 30, 73, 16, 69, 87, 40, 31},
-	{4, 62, 98, 27, 23, 9, 70, 98, 73, 93, 38, 53, 60, 4, 23},
-}
-
-func max(a, b int) int {
-	if a > b {
-		return a
-	}
-	return b
-}
-
-func maxPath(row, col int) int {
-	value := nums[row][col]
-	if row == len(nums)-1 {
-		return value
-	}
-	return value + max(maxPath(row+1, col), maxPath(row+1, col+1))
-}
-
-func main() {
-	fmt.Println(maxPath(0, 0))
-}

go/19.go

-/*
-You are given the following information, but you may prefer to do some research
-for yourself.
-
-    1 Jan 1900 was a Monday.
-    Thirty days has September,
-    April, June and November.
-    All the rest have thirty-one,
-    Saving February alone,
-    Which has twenty-eight, rain or shine.
-    And on leap years, twenty-nine.
-	A leap year occurs on any year evenly divisible by 4, but not on a century
-		unless it is divisible by 400.
-
-How many Sundays fell on the first of the month during the twentieth century (1
-Jan 1901 to 31 Dec 2000)?
-
-Answer: 171
-*/
-
-package main
-
-import "fmt"
-
-func isLeap(year int) bool {
-	if year%100 == 0 {
-		return year%400 == 0
-	}
-
-	return year%4 == 0
-}
-
-func numDays(month, year int) int {
-	switch month {
-	case 2:
-		if isLeap(year) {
-			return 29
-		}
-		return 28
-	case 4, 6, 9, 11:
-		return 30
-	}
-	return 31
-}
-
-func main() {
-	weekday := 1 // Monday
-	day, month, year := 1, 1, 1900
-	count := 0
-
-	for {
-		if year > 2000 {
-			break
-		}
-
-		if year > 1900 {
-			if weekday == 0 && day == 1 {
-				count += 1
-			}
-		}
-
-		day += 1
-		weekday = (weekday + 1) % 7
-		if day > numDays(month, year) {
-			day = 1
-			month += 1
-			if month > 12 {
-				month = 1
-				year += 1
-			}
-		}
-	}
-
-	fmt.Println(count)
-}

go/2.go

-/*
-Each new term in the Fibonacci sequence is generated by adding the previous two
-terms. By starting with 1 and 2, the first 10 terms will be:
-
-1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...
-
-By considering the terms in the Fibonacci sequence whose values do not exceed
-four million, find the sum of the even-valued terms.
-
-Answer: 4613732
-*/
-package main
-
-import "fmt"
-
-func fibs() chan int {
-	results := make(chan int)
-	go func() {
-		var a, b = 1, 1
-		for {
-			results <- a
-			a, b = b, a+b
-		}
-	}()
-
-	return results
-}
-
-func main() {
-	sum := 0
-	for i := range fibs() {
-		if i >= 4000000 {
-			break
-		}
-		if i%2 == 0 {
-			sum += i
-		}
-	}
-
-	fmt.Println(sum)
-}

go/20.go

-/*j
-n! means n × (n − 1) × ... × 3 × 2 × 1
-
-For example, 10! = 10 × 9 × ... × 3 × 2 × 1 = 3628800,
-and the sum of the digits in the number 10! is 3 + 6 + 2 + 8 + 8 + 0 + 0 = 27.
-
-Find the sum of the digits in the number 100!
-
-Answer: 648
-*/
-
-package main
-
-import (
-	"big"
-	"fmt"
-)
-
-// taken from 16
-func sumDigits(s string) int {
-	sum := 0
-	for _, c := range s {
-		sum += c - '0'
-	}
-
-	return sum
-}
-
-func main() {
-	fact := big.NewInt(1)
-	fact.MulRange(1, 100)
-
-	fmt.Println(sumDigits(fact.String()))
-}

go/21.go

-/*
-Let d(n) be defined as the sum of proper divisors of n (numbers less than n
-which divide evenly into n).  If d(a) = b and d(b) = a, where a ≠ b, then a and
-b are an amicable pair and each of a and b are called amicable numbers.
-
-For example, the proper divisors of 220 are 1, 2, 4, 5, 10, 11, 20, 22, 44, 55
-and 110; therefore d(220) = 284. The proper divisors of 284 are 1, 2, 4, 71 and
-142; so d(284) = 220.
-
-Evaluate the sum of all the amicable numbers under 10000.
-
-Answer: 31626
-*/
-package main
-
-import "fmt"
-
-func sumFactors(n int) int {
-	max := n/2 + 1
-	count := 0
-	for i := 1; i <= max; i++ {
-		if n%i == 0 {
-			count += i
-		}
-	}
-
-	return count
-}
-
-func main() {
-	seen := map[int]bool{}
-	for i := 1; i < 10000; i++ {
-		sf := sumFactors(i)
-		if sf != i && sumFactors(sf) == i {
-			seen[i] = true
-		}
-	}
-
-	sum := 0
-	for a := range seen {
-		sum += a
-	}
-
-	fmt.Println(sum)
-}

go/22.go

-/*
-Using names.txt (right click and 'Save Link/Target As...'), a 46K text file
-containing over five-thousand first names, begin by sorting it into alphabetical
-order. Then working out the alphabetical value for each name, multiply this
-value by its alphabetical position in the list to obtain a name score.
-
-For example, when the list is sorted into alphabetical order, COLIN, which is
-worth 3 + 15 + 12 + 9 + 14 = 53, is the 938th name in the list. So, COLIN would
-obtain a score of 938 × 53 = 49714.
-
-What is the total of all the name scores in the file?
-
-Answer: 871198282
-*/
-
-package main
-
-import (
-	"io/ioutil"
-	"regexp"
-	"sort"
-)
-
-func score(name string, position int) int {
-	score := 0
-	for _, c := range name {
-		score += c - 'A' + 1
-	}
-
-	return position * score
-}
-
-func readNamesSorted() []string {
-	data, _ := ioutil.ReadFile("names.txt")
-	re := regexp.MustCompile("[A-Z]+")
-	names := re.FindAll(data, -1)
-
-	// FIXME: There's probably a better way
-	strs := make([]string, len(names))
-	for i, name := range names {
-		strs[i] = string(name)
-	}
-	sort.Strings(strs)
-
-	return strs
-}
-
-func main() {
-	sum := 0
-	for i, name := range readNamesSorted() {
-		sum += score(name, i+1)
-	}
-	println(sum)
-}

go/23.go

-/*
-A perfect number is a number for which the sum of its proper divisors is exactly
-equal to the number. For example, the sum of the proper divisors of 28 would be
-1 + 2 + 4 + 7 + 14 = 28, which means that 28 is a perfect number.
-
-A number n is called deficient if the sum of its proper divisors is less than n
-and it is called abundant if this sum exceeds n.
-
-As 12 is the smallest abundant number, 1 + 2 + 3 + 4 + 6 = 16, the smallest
-number that can be written as the sum of two abundant numbers is 24. By
-mathematical analysis, it can be shown that all integers greater than 28123 can
-be written as the sum of two abundant numbers. However, this upper limit cannot
-be reduced any further by analysis even though it is known that the greatest
-number that cannot be expressed as the sum of two abundant numbers is less than
-this limit.
-
-Find the sum of all the positive integers which cannot be written as the sum of
-two abundant numbers.
-
-Answer: 4179871
-*/
-package main
-
-func min(x, y int) int {
-	if x > y {
-		return x
-	}
-	return y
-}
-
-func sumDivisors(n int) int {
-	sum := 0
-	for i := 1; i < min(n/2+1, n); i++ {
-		if n%i == 0 {
-			sum += i
-		}
-	}
-
-	return sum
-}
-
-var _cache = map[int]bool{}
-
-func isAbudant(n int) bool {
-	if value, ok := _cache[n]; ok {
-		return value
-	}
-
-	value := sumDivisors(n) > n
-	_cache[n] = value
-	return value
-}
-
-func isSumTwoAbudant(n int) bool {
-	for i := 1; i < n/2+1; i++ {
-		if isAbudant(i) && isAbudant(n-i) {
-			return true
-		}
-	}
-
-	return false
-}
-
-func main() {
-	sum := 0
-	for i := 1; i <= 28123; i++ {
-		if !isSumTwoAbudant(i) {
-			sum += i
-		}
-	}
-
-	println(sum)
-}

go/24.go

-/*
-A permutation is an ordered arrangement of objects. For example, 3124 is one
-possible permutation of the digits 1, 2, 3 and 4. If all of the permutations are
-listed numerically or alphabetically, we call it lexicographic order. The
-lexicographic permutations of 0, 1 and 2 are:
-
-012   021   102   120   201   210
-
-What is the millionth lexicographic permutation of the digits 0, 1, 2, 3, 4, 5,
-6, 7, 8 and 9?
-*/
-package main
-
-import (
-	"fmt"
-	"sort"
-)
-
-type Reversed []int
-
-func (r Reversed) Len() int {
-	return len(r)
-}
-
-func (r Reversed) Less(i, j int) bool {
-	return r[i] > r[j]
-}
-
-func (r Reversed) Swap(i, j int) {
-	r[i], r[j] = r[j], r[i]
-}
-
-func isLast(items []int) bool {
-	return sort.IsSorted(Reversed(items))
-}
-
-func lexicalPermutations(items []int) chan []int {
-	out := make(chan []int)
-	sort.Ints(items)
-	go func() {
-		for {
-			out <- items
-			if isLast(items) {
-				close(out)
-				return
-			}
-		}
-	}()
-
-	return out
-}
-
-var items = []int{0, 1, 2}
-
-func main() {
-	var i = []int{3, 1, 2}
-	fmt.Printf("%v\n", isLast(i))
-	sort.Sort(Reversed(i))
-	fmt.Printf("%v\n", i)
-	fmt.Printf("%v\n", isLast(i))
-}

go/25.go

-/*
-The Fibonacci sequence is defined by the recurrence relation:
-
-    Fn = Fn−1 + Fn−2, where F1 = 1 and F2 = 1.
-
-Hence the first 12 terms will be:
-
-    F1 = 1
-    F2 = 1
-    F3 = 2
-    F4 = 3
-    F5 = 5
-    F6 = 8
-    F7 = 13
-    F8 = 21
-    F9 = 34
-    F10 = 55
-    F11 = 89
-    F12 = 144
-
-The 12th term, F12, is the first term to contain three digits.
-
-What is the first term in the Fibonacci sequence to contain 1000 digits?
-
-Answer: 4782
-*/
-package main
-
-import (
-	"big"
-	"fmt"
-)
-
-func fibs() chan *big.Int {
-	a, b := big.NewInt(1), big.NewInt(1)
-	out := make(chan *big.Int)
-	go func() {
-		for {
-			f := big.NewInt(0)
-			f.Add(f, a)
-			out <- f
-			a, b = b, a.Add(a, b)
-		}
-	}()
-
-	return out
-}
-
-func main() {
-	i := 0
-	for f := range fibs() {
-		i++
-		if len(f.String()) >= 1000 {
-			break
-		}
-	}
-	fmt.Println(i)
-}

go/27.go

-/*
-Euler published the remarkable quadratic formula:
-
-n² + n + 41
-
-It turns out that the formula will produce 40 primes for the consecutive values
-n = 0 to 39. However, when n = 40, 402 + 40 + 41 = 40(40 + 1) + 41 is divisible
-by 41, and certainly when n = 41, 41² + 41 + 41 is clearly divisible by 41.
-
-Using computers, the incredible formula  n²  79n + 1601 was discovered, which
-produces 80 primes for the consecutive values n = 0 to 79. The product of the
-coefficients, 79 and 1601, is 126479.
-
-Considering quadratics of the form:
-
-	n² + an + b, where |a|  1000 and |b|  1000
-
-where |n| is the modulus/absolute value of n
-e.g. |11| = 11 and |4| = 4
-
-Find the product of the coefficients, a and b, for the quadratic expression
-that produces the maximum number of primes for consecutive values of n,
-starting with n = 0.
-
-Answer: -59231
-*/
-package main
-
-import (
-	"fmt"
-	"./primes"
-)
-
-func main() {
-	best_a, best_b, best_n := 0, 0, 0
-	for a := -999; a < 1000; a++ {
-		for b := -999; b < 1000; b++ {
-			n := 0
-			for {
-				v := n*n + a*n + b
-				if v < 0 {
-					break
-				}
-				if !primes.IsPrime(uint64(v)) {
-					break
-				}
-				n++
-			}
-
-			if n > best_n {
-				best_a, best_b, best_n = a, b, n
-			}
-		}
-	}
-
-	fmt.Println(best_a * best_b)
-}

go/3.go

-/*
-The prime factors of 13195 are 5, 7, 13 and 29.
-
-What is the largest prime factor of the number 600851475143 ?
-
-Answer: 6857
-*/
-package main
-
-import (
-	"big"
-	"fmt"
-	"math"
-)
-
-const (
-	n = 600851475143
-)
-
-func main() {
-	for start := int64(math.Sqrt(n)); start > 0; start-- {
-		if !big.ProbablyPrime(big.NewInt(start), 10) {
-			continue
-		}
-		if n%start == 0 {
-			fmt.Println(start)
-			break
-		}
-	}
-}

go/4.go

-/*
-A palindromic number reads the same both ways. The largest palindrome made from
-the product of two 2-digit numbers is 9009 = 91 × 99.
-
-Find the largest palindrome made from the product of two 3-digit numbers.
-
-Answer: 906609
-*/
-package main
-
-import "fmt"
-
-func isPalindrom(n int) bool {
-	str := fmt.Sprintf("%d", n)
-	size := len(str)
-	for i := 0; i < size/2; i++ {
-		if str[i] != str[size-i-1] {
-			return false
-		}
-	}
-	return true
-}
-
-func main() {
-	max := 0
-	for i := 1; i < 1000; i++ {
-		for j := 1; j < 1000; j++ {
-			n := i * j
-			if isPalindrom(n) && n > max {
-				max = n
-			}
-		}
-	}
-
-	fmt.Println(max)
-}

go/42.go

-/*
-The nth term of the sequence of triangle numbers is given by, tn = ½n(n+1); so the first ten triangle numbers are:
-
-1, 3, 6, 10, 15, 21, 28, 36, 45, 55, ...
-
-By converting each letter in a word to a number corresponding to its
-alphabetical position and adding these values we form a word value. For example,
-the word value for SKY is 19 + 11 + 25 = 55 = t10. If the word value is a
-triangle number then we shall call the word a triangle word.
-
-Using words.txt (right click and 'Save Link/Target As...'), a 16K text file
-containing nearly two-thousand common English words, how many are triangle
-words?
-
-Answer: 162
-*/
-package main
-
-import (
-	"fmt"
-	"io/ioutil"
-	"regexp"
-)
-
-func triangle(n int) int {
-	f := float64(n)
-	return int((f / 2) * (f + 1))
-}
-
-func wordToNumber(word []byte) int {
-	num := 0
-	offset := byte('A' - 1)
-	for _, c := range word {
-		num += int(c - offset)
-	}
-	return num
-}
-
-func triangles(max int) map[int]bool {
-	ts := make(map[int]bool)
-	for i := 1; i <= max; i++ {
-		ts[triangle(i)] = true
-	}
-
-	return ts
-}
-
-func main() {
-	data, _ := ioutil.ReadFile("words.txt")
-	re := regexp.MustCompile("[A-Z]+")
-
-	ts := triangles(1000)
-
-	count := 0
-	for _, word := range re.FindAll(data, -1) {
-		n := wordToNumber(word)
-		if ts[n] {
-			count++
-		}
-	}
-
-	fmt.Println(count)
-
-}

go/5.go

-/*
-2520 is the smallest number that can be divided by each of the numbers from 1 to
-10 without any remainder.
-
-What is the smallest positive number that is evenly divisible by all of the
-numbers from 1 to 20?
-
-Answer: 232792560
-*/
-
-package main
-
-import "fmt"
-
-func isDivisible(n int) bool {
-	for i := 1; i < 21; i++ {
-		if n%i != 0 {
-			return false
-		}
-	}
-	return true
-}
-
-func main() {
-	for i := 20; true; i++ {
-		if isDivisible(i) {
-			fmt.Println(i)
-			break
-		}
-	}
-}

go/6.go

-/*
-The sum of the squares of the first ten natural numbers is,
-1^2 + 2^2 + ... + 10^2 = 385
-
-The square of the sum of the first ten natural numbers is,
-(1 + 2 + ... + 10)^2 = 552 = 3025
-
-Hence the difference between the sum of the squares of the first ten natural
-numbers and the square of the sum is 3025 − 385 = 2640.
-
-Find the difference between the sum of the squares of the first one hundred
-natural numbers and the square of the sum.
-
-Answer: 25164150
-*/
-
-package main
-
-import "fmt"
-
-func sumOfSquares(n uint64) uint64 {
-	sum := uint64(0)
-	for i := uint64(1); i <= n; i++ {
-		sum += (i * i)
-	}
-
-	return sum
-}
-
-func squareOfSums(n uint64) uint64 {
-	sum := uint64(0)
-	for i := uint64(1); i <= n; i++ {
-		sum += i
-	}
-
-	return sum * sum
-}
-
-func main() {
-	fmt.Println(squareOfSums(100) - sumOfSquares(100))
-}

go/7.go

-/*
-By listing the first six prime numbers: 2, 3, 5, 7, 11, and 13, we can see that
-the 6th prime is 13.
-
-What is the 10001st prime number?
-
-Answer: 104743
-*/
-
-package main
-
-import (
-	"fmt"
-
-	"./primes"
-)
-
-func main() {
-	i := 0
-	for p := range primes.Primes() {
-		i++
-		if i > 10000 {
-			fmt.Println(p)
-			break
-		}
-	}
-
-}

go/8.go

-/*
-Find the greatest product of five consecutive digits in the 1000-digit number.
-
-73167176531330624919225119674426574742355349194934
-96983520312774506326239578318016984801869478851843
-85861560789112949495459501737958331952853208805511
-12540698747158523863050715693290963295227443043557
-66896648950445244523161731856403098711121722383113
-62229893423380308135336276614282806444486645238749
-30358907296290491560440772390713810515859307960866
-70172427121883998797908792274921901699720888093776
-65727333001053367881220235421809751254540594752243
-52584907711670556013604839586446706324415722155397
-53697817977846174064955149290862569321978468622482
-83972241375657056057490261407972968652414535100474
-82166370484403199890008895243450658541227588666881
-16427171479924442928230863465674813919123162824586
-17866458359124566529476545682848912883142607690042
-24219022671055626321111109370544217506941658960408
-07198403850962455444362981230987879927244284909188
-84580156166097919133875499200524063689912560717606
-05886116467109405077541002256983155200055935729725
-71636269561882670428252483600823257530420752963450
-
-Answer: 40824
-*/
-
-package main
-
-import (
-	"container/ring"
-	"fmt"
-)
-
-const (
-	s = `
-    73167176531330624919225119674426574742355349194934
-    96983520312774506326239578318016984801869478851843
-    85861560789112949495459501737958331952853208805511
-    12540698747158523863050715693290963295227443043557
-    66896648950445244523161731856403098711121722383113
-    62229893423380308135336276614282806444486645238749
-    30358907296290491560440772390713810515859307960866
-    70172427121883998797908792274921901699720888093776
-    65727333001053367881220235421809751254540594752243
-    52584907711670556013604839586446706324415722155397
-    53697817977846174064955149290862569321978468622482
-    83972241375657056057490261407972968652414535100474
-    82166370484403199890008895243450658541227588666881
-    16427171479924442928230863465674813919123162824586
-    17866458359124566529476545682848912883142607690042
-    24219022671055626321111109370544217506941658960408
-    07198403850962455444362981230987879927244284909188
-    84580156166097919133875499200524063689912560717606
-    05886116467109405077541002256983155200055935729725
-    71636269561882670428252483600823257530420752963450`
-)
-
-func digits() chan int {
-	out := make(chan int)
-	go func() {
-		for i := 0; i < len(s); i++ {
-			c := s[i]
-			if c >= '0' && c <= '9' {
-				out <- int(c) - int('0')
-			}
-		}
-		close(out)
-	}()
-
-	return out
-}
-
-func product(r *ring.Ring) int {
-	p := 1
-	r.Do(func(i interface{}) { p *= i.(int) })
-
-	return p
-}
-
-func products() chan int {
-	out := make(chan int)
-
-	go func() {
-		r := ring.New(5)
-		i := 0
-		for d := range digits() {
-			r.Value = d
-			i++
-			r = r.Next()
-
-			// Ring not full yet
-			if i < 5 {
-				continue
-			}
-
-			out <- product(r)
-		}
-		close(out)
-	}()
-
-	return out
-}
-
-func main() {
-	max_p := 0
-	for p := range products() {
-		if p > max_p {
-			max_p = p
-		}
-	}
-
-	fmt.Println(max_p)
-}

go/9.go

-/*
-A Pythagorean triplet is a set of three natural numbers, a < b < c, for which,
-a^2 + b^2 = c^2
-
-For example, 3^2 + 4^2 = 9 + 16 = 25 = 5^2.
-
-There exists exactly one Pythagorean triplet for which a + b + c = 1000.
-Find the product abc.
-
-Answer: 31875000
-*/
-
-package main
-
-import "fmt"
-
-func isPythagorean(a, b, c int) bool {
-	return a*a+b*b == c*c
-}
-
-func main() {
-	for a := 1; a < 1000; a++ {
-		for b := 1; b < 1000; b++ {
-			for c := 1; c < 1000; c++ {
-				if a+b+c == 1000 && isPythagorean(a, b, c) {
-					fmt.Println(a * b * c)
-					return
-				}
-			}
-		}
-	}
-	fmt.Println(isPythagorean(3, 4, 5))
-}

go/Makefile

-%.6: %.go
-	6g $<
-%: %.6
-	6l -o $@ $<
-
-LIBS_SRC=$(wildcard [a-z]*.go)
-LIBS=$(LIBS_SRC:%.go=%.6)
-
-SRC = $(wildcard [0-9]*.go)
-PROGRAMS = $(SRC:%.go=%)
-
-all: $(LIBS) $(PROGRAMS)
-
-clean:
-	rm -f $(PROGRAMS)
-	rm -f $(LIBS)
-	rm -f $(PROGRAMS:%=%.6)
-
-fresh: clean all
-
-.PHONY: all clean fresh

go/names.txt

-"MARY","PATRICIA","LINDA","BARBARA","ELIZABETH","JENNIFER","MARIA","SUSAN","MARGARET","DOROTHY","LISA","NANCY","KAREN","BETTY","HELEN","SANDRA","DONNA","CAROL","RUTH","SHARON","MICHELLE","LAURA","SARAH","KIMBERLY","DEBORAH","JESSICA","SHIRLEY","CYNTHIA","ANGELA","MELISSA","BRENDA","AMY","ANNA","REBECCA","VIRGINIA","KATHLEEN","PAMELA","MARTHA","DEBRA","AMANDA","STEPHANIE","CAROLYN","CHRISTINE","MARIE","JANET","CATHERINE","FRANCES","ANN","JOYCE","DIANE","ALICE","JULIE","HEATHER","TERESA","DORIS","GLORIA","EVELYN","JEAN","CHERYL","MILDRED","KATHERINE","JOAN","ASHLEY","JUDITH","ROSE","JANICE","KELLY","NICOLE","JUDY","CHRISTINA","KATHY","THERESA","BEVERLY","DENISE","TAMMY","IRENE","JANE","LORI","RACHEL","MARILYN","ANDREA","KATHRYN","LOUISE","SARA","ANNE","JACQUELINE","WANDA","BONNIE","JULIA","RUBY","LOIS","TINA","PHYLLIS","NORMA","PAULA","DIANA","ANNIE","LILLIAN","EMILY","ROBIN","PEGGY","CRYSTAL","GLADYS","RITA","DAWN","CONNIE","FLORENCE","TRACY","EDNA","TIFFANY","CARMEN","ROSA","CINDY","GRACE","WENDY","VICTORIA","EDITH","KIM","SHERRY","SYLVIA","JOSEPHINE","THELMA","SHANNON","SHEILA","ETHEL","ELLEN","ELAINE","MARJORIE","CARRIE","CHARLOTTE","MONICA","ESTHER","PAULINE","EMMA","JUANITA","ANITA","RHONDA","HAZEL","AMBER","EVA","DEBBIE","APRIL","LESLIE","CLARA","LUCILLE","JAMIE","JOANNE","ELEANOR","VALERIE","DANIELLE","MEGAN","ALICIA","SUZANNE","MICHELE","GAIL","BERTHA","DARLENE","VERONICA","JILL","ERIN","GERALDINE","LAUREN","CATHY","JOANN","LORRAINE","LYNN","SALLY","REGINA","ERICA","BEATRICE","DOLORES","BERNICE","AUDREY","YVONNE","ANNETTE","JUNE","SAMANTHA","MARION","DANA","STACY","ANA","RENEE","IDA","VIVIAN","ROBERTA","HOLLY","BRITTANY","MELANIE","LORETTA","YOLANDA","JEANETTE","LAURIE","KATIE","KRISTEN","VANESSA","ALMA","SUE","ELSIE","BETH","JEANNE","VICKI","CARLA","TARA","ROSEMARY","EILEEN","TERRI","GERTRUDE","LUCY","TONYA","ELLA","STACEY","WILMA","GINA","KRISTIN","JESSIE","NATALIE","AGNES","VERA","WILLIE","CHARLENE","BESSIE","DELORES","MELINDA","PEARL","ARLENE","MAUREEN","COLLEEN","ALLISON","TAMARA","JOY","GEORGIA","CONSTANCE","LILLIE","CLAUDIA","JACKIE","MARCIA","TANYA","NELLIE","MINNIE","MARLENE","HEIDI","GLENDA","LYDIA","VIOLA","COURTNEY","MARIAN","STELLA","CAROLINE","DORA","JO","VICKIE","MATTIE","TERRY","MAXINE","IRMA","MABEL","MARSHA","MYRTLE","LENA","CHRISTY","DEANNA","PATSY","HILDA","GWENDOLYN","JENNIE","NORA","MARGIE","NINA","CASSANDRA","LEAH","PENNY","KAY","PRISCILLA","NAOMI","CAROLE","BRANDY","OLGA","BILLIE","DIANNE","TRACEY","LEONA","JENNY","FELICIA","SONIA","MIRIAM","VELMA","BECKY","BOBBIE","VIOLET","KRISTINA","TONI","MISTY","MAE","SHELLY","DAISY","RAMONA","SHERRI","ERIKA","KATRINA","CLAIRE","LINDSEY","LINDSAY","GENEVA","GUADALUPE","BELINDA","MARGARITA","SHERYL","CORA","FAYE","ADA","NATASHA","SABRINA","ISABEL","MARGUERITE","HATTIE","HARRIET","MOLLY","CECILIA","KRISTI","BRANDI","BLANCHE","SANDY","ROSIE","JOANNA","IRIS","EUNICE","ANGIE","INEZ","LYNDA","MADELINE","AMELIA","ALBERTA","GENEVIEVE","MONIQUE","JODI","JANIE","MAGGIE","KAYLA","SONYA","JAN","LEE","KRISTINE","CANDACE","FANNIE","MARYANN","OPAL","ALISON","YVETTE","MELODY","LUZ","SUSIE","OLIVIA","FLORA","SHELLEY","KRISTY","MAMIE","LULA","LOLA","VERNA","BEULAH","ANTOINETTE","CANDICE","JUANA","JEANNETTE","PAM","KELLI","HANNAH","WHITNEY","BRIDGET","KARLA","CELIA","LATOYA","PATTY","SHELIA","GAYLE","DELLA","VICKY","LYNNE","SHERI","MARIANNE","KARA","JACQUELYN","ERMA","BLANCA","MYRA","LETICIA","PAT","KRISTA","ROXANNE","ANGELICA","JOHNNIE","ROBYN","FRANCIS","ADRIENNE","ROSALIE","ALEXANDRA","BROOKE","BETHANY","SADIE","BERNADETTE","TRACI","JODY","KENDRA","JASMINE","NICHOLE","RACHAEL","CHELSEA","MABLE","ERNESTINE","MURIEL","MARCELLA","ELENA","KRYSTAL","ANGELINA","NADINE","KARI","ESTELLE","DIANNA","PAULETTE","LORA","MONA","DOREEN","ROSEMARIE","ANGEL","DESIREE","ANTONIA","HOPE","GINGER","JANIS","BETSY","CHRISTIE","FREDA","MERCEDES","MEREDITH","LYNETTE","TERI","CRISTINA","EULA","LEIGH","MEGHAN","SOPHIA","ELOISE","ROCHELLE","GRETCHEN","CECELIA","RAQUEL","HENRIETTA","ALYSSA","JANA","KELLEY","GWEN","KERRY","JENNA","TRICIA","LAVERNE","OLIVE","ALEXIS","TASHA","SILVIA","ELVIRA","CASEY","DELIA","SOPHIE","KATE","PATTI","LORENA","KELLIE","SONJA","LILA","LANA","DARLA","MAY","MINDY","ESSIE","MANDY","LORENE","ELSA","JOSEFINA","JEANNIE","MIRANDA","DIXIE","LUCIA","MARTA","FAITH","LELA","JOHANNA","SHARI","CAMILLE","TAMI","SHAWNA","ELISA","EBONY","MELBA","ORA","NETTIE","TABITHA","OLLIE","JAIME","WINIFRED","KRISTIE","MARINA","ALISHA","AIMEE","RENA","MYRNA","MARLA","TAMMIE","LATASHA","BONITA","PATRICE","RONDA","SHERRIE","ADDIE","FRANCINE","DELORIS","STACIE","ADRIANA","CHERI","SHELBY","ABIGAIL","CELESTE","JEWEL","CARA","ADELE","REBEKAH","LUCINDA","DORTHY","CHRIS","EFFIE","TRINA","REBA","SHAWN","SALLIE","AURORA","LENORA","ETTA","LOTTIE","KERRI","TRISHA","NIKKI","ESTELLA","FRANCISCA","JOSIE","TRACIE","MARISSA","KARIN","BRITTNEY","JANELLE","LOURDES","LAUREL","HELENE","FERN","ELVA","CORINNE","KELSEY","INA","BETTIE","ELISABETH","AIDA","CAITLIN","INGRID","IVA","EUGENIA","CHRISTA","GOLDIE","CASSIE","MAUDE","JENIFER","THERESE","FRANKIE","DENA","LORNA","JANETTE","LATONYA","CANDY","MORGAN","CONSUELO","TAMIKA","ROSETTA","DEBORA","CHERIE","POLLY","DINA","JEWELL","FAY","JILLIAN","DOROTHEA","NELL","TRUDY","ESPERANZA","PATRICA","KIMBERLEY","SHANNA","HELENA","CAROLINA","CLEO","STEFANIE","ROSARIO","OLA","JANINE","MOLLIE","LUPE","ALISA","LOU","MARIBEL","SUSANNE","BETTE","SUSANA","ELISE","CECILE","ISABELLE","LESLEY","JOCELYN","PAIGE","JONI","RACHELLE","LEOLA","DAPHNE","ALTA","ESTER","PETRA","GRACIELA","IMOGENE","JOLENE","KEISHA","LACEY","GLENNA","GABRIELA","KERI","URSULA","LIZZIE","KIRSTEN","SHANA","ADELINE","MAYRA","JAYNE","JACLYN","GRACIE","SONDRA","CARMELA","MARISA","ROSALIND","CHARITY","TONIA","BEATRIZ","MARISOL","CLARICE","JEANINE","SHEENA","ANGELINE","FRIEDA","LILY","ROBBIE","SHAUNA","MILLIE","CLAUDETTE","CATHLEEN","ANGELIA","GABRIELLE","AUTUMN","KATHARINE","SUMMER","JODIE","STACI","LEA","CHRISTI","JIMMIE","JUSTINE","ELMA","LUELLA","MARGRET","DOMINIQUE","SOCORRO","RENE","MARTINA","MARGO","MAVIS","CALLIE","BOBBI","MARITZA","LUCILE","LEANNE","JEANNINE","DEANA","AILEEN","LORIE","LADONNA","WILLA","MANUELA","GALE","SELMA","DOLLY","SYBIL","ABBY","LARA","DALE","IVY","DEE","WINNIE","MARCY","LUISA","JERI","MAGDALENA","OFELIA","MEAGAN","AUDRA","MATILDA","LEILA","CORNELIA","BIANCA","SIMONE","BETTYE","RANDI","VIRGIE","LATISHA","BARBRA","GEORGINA","ELIZA","LEANN","BRIDGETTE","RHODA","HALEY","ADELA","NOLA","BERNADINE","FLOSSIE","ILA","GRETA","RUTHIE","NELDA","MINERVA","LILLY","TERRIE","LETHA","HILARY","ESTELA","VALARIE","BRIANNA","ROSALYN","EARLINE","CATALINA","AVA","MIA","CLARISSA","LIDIA","CORRINE","ALEXANDRIA","CONCEPCION","TIA","SHARRON","RAE","DONA","ERICKA","JAMI","ELNORA","CHANDRA","LENORE","NEVA","MARYLOU","MELISA","TABATHA","SERENA","AVIS","ALLIE","SOFIA","JEANIE","ODESSA","NANNIE","HARRIETT","LORAINE","PENELOPE","MILAGROS","EMILIA","BENITA","ALLYSON","ASHLEE","TANIA","TOMMIE","ESMERALDA","KARINA","EVE","PEARLIE","ZELMA","MALINDA","NOREEN","TAMEKA","SAUNDRA","HILLARY","AMIE","ALTHEA","ROSALINDA","JORDAN","LILIA","ALANA","GAY","CLARE","ALEJANDRA","ELINOR","MICHAEL","LORRIE","JERRI","DARCY","EARNESTINE","CARMELLA","TAYLOR","NOEMI","MARCIE","LIZA","ANNABELLE","LOUISA","EARLENE","MALLORY","CARLENE","NITA","SELENA","TANISHA","KATY","JULIANNE","JOHN","LAKISHA","EDWINA","MARICELA","MARGERY","KENYA","DOLLIE","ROXIE","ROSLYN","KATHRINE","NANETTE","CHARMAINE","LAVONNE","ILENE","KRIS","TAMMI","SUZETTE","CORINE","KAYE","JERRY","MERLE","CHRYSTAL","LINA","DEANNE","LILIAN","JULIANA","ALINE","LUANN","KASEY","MARYANNE","EVANGELINE","COLETTE","MELVA","LAWANDA","YESENIA","NADIA","MADGE","KATHIE","EDDIE","OPHELIA","VALERIA","NONA","MITZI","MARI","GEORGETTE","CLAUDINE","FRAN","ALISSA","ROSEANN","LAKEISHA","SUSANNA","REVA","DEIDRE","CHASITY","SHEREE","CARLY","JAMES","ELVIA","ALYCE","DEIRDRE","GENA","BRIANA","ARACELI","KATELYN","ROSANNE","WENDI","TESSA","BERTA","MARVA","IMELDA","MARIETTA","MARCI","LEONOR","ARLINE","SASHA","MADELYN","JANNA","JULIETTE","DEENA","AURELIA","JOSEFA","AUGUSTA","LILIANA","YOUNG","CHRISTIAN","LESSIE","AMALIA","SAVANNAH","ANASTASIA","VILMA","NATALIA","ROSELLA","LYNNETTE","CORINA","ALFREDA","LEANNA","CAREY","AMPARO","COLEEN","TAMRA","AISHA","WILDA","KARYN","CHERRY","QUEEN","MAURA","MAI","EVANGELINA","ROSANNA","HALLIE","ERNA","ENID","MARIANA","LACY","JULIET","JACKLYN","FREIDA","MADELEINE","MARA","HESTER","CATHRYN","LELIA","CASANDRA","BRIDGETT","ANGELITA","JANNIE","DIONNE","ANNMARIE","KATINA","BERYL","PHOEBE","MILLICENT","KATHERYN","DIANN","CARISSA","MARYELLEN","LIZ","LAURI","HELGA","GILDA","ADRIAN","RHEA","MARQUITA","HOLLIE","TISHA","TAMERA","ANGELIQUE","FRANCESCA","BRITNEY","KAITLIN","LOLITA","FLORINE","ROWENA","REYNA","TWILA","FANNY","JANELL","INES","CONCETTA","BERTIE","ALBA","BRIGITTE","ALYSON","VONDA","PANSY","ELBA","NOELLE","LETITIA","KITTY","DEANN","BRANDIE","LOUELLA","LETA","FELECIA","SHARLENE","LESA","BEVERLEY","ROBERT","ISABELLA","HERMINIA","TERRA","CELINA","TORI","OCTAVIA","JADE","DENICE","GERMAINE","SIERRA","MICHELL","CORTNEY","NELLY","DORETHA","SYDNEY","DEIDRA","MONIKA","LASHONDA","JUDI","CHELSEY","ANTIONETTE","MARGOT","BOBBY","ADELAIDE","NAN","LEEANN","ELISHA","DESSIE","LIBBY","KATHI","GAYLA","LATANYA","MINA","MELLISA","KIMBERLEE","JASMIN","RENAE","ZELDA","ELDA","MA","JUSTINA","GUSSIE","EMILIE","CAMILLA","ABBIE","ROCIO","KAITLYN","JESSE","EDYTHE","ASHLEIGH","SELINA","LAKESHA","GERI","ALLENE","PAMALA","MICHAELA","DAYNA","CARYN","ROSALIA","SUN","JACQULINE","REBECA","MARYBETH","KRYSTLE","IOLA","DOTTIE","BENNIE","BELLE","AUBREY","GRISELDA","ERNESTINA","ELIDA","ADRIANNE","DEMETRIA","DELMA","CHONG","JAQUELINE","DESTINY","ARLEEN","VIRGINA","RETHA","FATIMA","TILLIE","ELEANORE","CARI","TREVA","BIRDIE","WILHELMINA","ROSALEE","MAURINE","LATRICE","YONG","JENA","TARYN","ELIA","DEBBY","MAUDIE","JEANNA","DELILAH","CATRINA","SHONDA","HORTENCIA","THEODORA","TERESITA","ROBBIN","DANETTE","MARYJANE","FREDDIE","DELPHINE","BRIANNE","NILDA","DANNA","CINDI","BESS","IONA","HANNA","ARIEL","WINONA","VIDA","ROSITA","MARIANNA","WILLIAM","RACHEAL","GUILLERMINA","ELOISA","CELESTINE","CAREN","MALISSA","LONA","CHANTEL","SHELLIE","MARISELA","LEORA","AGATHA","SOLEDAD","MIGDALIA","IVETTE","CHRISTEN","ATHENA","JANEL","CHLOE","VEDA","PATTIE","TESSIE","TERA","MARILYNN","LUCRETIA","KARRIE","DINAH","DANIELA","ALECIA","ADELINA","VERNICE","SHIELA","PORTIA","MERRY","LASHAWN","DEVON","DARA","TAWANA","OMA","VERDA","CHRISTIN","ALENE","ZELLA","SANDI","RAFAELA","MAYA","KIRA","CANDIDA","ALVINA","SUZAN","SHAYLA","LYN","LETTIE","ALVA","SAMATHA","ORALIA","MATILDE","MADONNA","LARISSA","VESTA","RENITA","INDIA","DELOIS","SHANDA","PHILLIS","LORRI","ERLINDA","CRUZ","CATHRINE","BARB","ZOE","ISABELL","IONE","GISELA","CHARLIE","VALENCIA","ROXANNA","MAYME","KISHA","ELLIE","MELLISSA","DORRIS","DALIA","BELLA","ANNETTA","ZOILA","RETA","REINA","LAURETTA","KYLIE","CHRISTAL","PILAR","CHARLA","ELISSA","TIFFANI","TANA","PAULINA","LEOTA","BREANNA","JAYME","CARMEL","VERNELL","TOMASA","MANDI","DOMINGA","SANTA","MELODIE","LURA","ALEXA","TAMELA","RYAN","MIRNA","KERRIE","VENUS","NOEL","FELICITA","CRISTY","CARMELITA","BERNIECE","ANNEMARIE","TIARA","ROSEANNE","MISSY","CORI","ROXANA","PRICILLA","KRISTAL","JUNG","ELYSE","HAYDEE","ALETHA","BETTINA","MARGE","GILLIAN","FILOMENA","CHARLES","ZENAIDA","HARRIETTE","CARIDAD","VADA","UNA","ARETHA","PEARLINE","MARJORY","MARCELA","FLOR","EVETTE","ELOUISE","ALINA","TRINIDAD","DAVID","DAMARIS","CATHARINE","CARROLL","BELVA","NAKIA","MARLENA","LUANNE","LORINE","KARON","DORENE","DANITA","BRENNA","TATIANA","SAMMIE","LOUANN","LOREN","JULIANNA","ANDRIA","PHILOMENA","LUCILA","LEONORA","DOVIE","ROMONA","MIMI","JACQUELIN","GAYE","TONJA","MISTI","JOE","GENE","CHASTITY","STACIA","ROXANN","MICAELA","NIKITA","MEI","VELDA","MARLYS","JOHNNA","AURA","LAVERN","IVONNE","HAYLEY","NICKI","MAJORIE","HERLINDA","GEORGE","ALPHA","YADIRA","PERLA","GREGORIA","DANIEL","ANTONETTE","SHELLI","MOZELLE","MARIAH","JOELLE","CORDELIA","JOSETTE","CHIQUITA","TRISTA","LOUIS","LAQUITA","GEORGIANA","CANDI","SHANON","LONNIE","HILDEGARD","CECIL","VALENTINA","STEPHANY","MAGDA","KAROL","GERRY","GABRIELLA","TIANA","ROMA","RICHELLE","RAY","PRINCESS","OLETA","JACQUE","IDELLA","ALAINA","SUZANNA","JOVITA","BLAIR","TOSHA","RAVEN","NEREIDA","MARLYN","KYLA","JOSEPH","DELFINA","TENA","STEPHENIE","SABINA","NATHALIE","MARCELLE","GERTIE","DARLEEN","THEA","SHARONDA","SHANTEL","BELEN","VENESSA","ROSALINA","ONA","GENOVEVA","COREY","CLEMENTINE","ROSALBA","RENATE","RENATA","MI","IVORY","GEORGIANNA","FLOY","DORCAS","ARIANA","TYRA","THEDA","MARIAM","JULI","JESICA","DONNIE","VIKKI","VERLA","ROSELYN","MELVINA","JANNETTE","GINNY","DEBRAH","CORRIE","ASIA","VIOLETA","MYRTIS","LATRICIA","COLLETTE","CHARLEEN","ANISSA","VIVIANA","TWYLA","PRECIOUS","NEDRA","LATONIA","LAN","HELLEN","FABIOLA","ANNAMARIE","ADELL","SHARYN","CHANTAL","NIKI","MAUD","LIZETTE","LINDY","KIA","KESHA","JEANA","DANELLE","CHARLINE","CHANEL","CARROL","VALORIE","LIA","DORTHA","CRISTAL","SUNNY","LEONE","LEILANI","GERRI","DEBI","ANDRA","KESHIA","IMA","EULALIA","EASTER","DULCE","NATIVIDAD","LINNIE","KAMI","GEORGIE","CATINA","BROOK","ALDA","WINNIFRED","SHARLA","RUTHANN","MEAGHAN","MAGDALENE","LISSETTE","ADELAIDA","VENITA","TRENA","SHIRLENE","SHAMEKA","ELIZEBETH","DIAN","SHANTA","MICKEY","LATOSHA","CARLOTTA","WINDY","SOON","ROSINA","MARIANN","LEISA","JONNIE","DAWNA","CATHIE","BILLY","ASTRID","SIDNEY","LAUREEN","JANEEN","HOLLI","FAWN","VICKEY","TERESSA","SHANTE","RUBYE","MARCELINA","CHANDA","CARY","TERESE","SCARLETT","MARTY","MARNIE","LULU","LISETTE","JENIFFER","ELENOR","DORINDA","DONITA","CARMAN","BERNITA","ALTAGRACIA","ALETA","ADRIANNA","ZORAIDA","RONNIE","NICOLA","LYNDSEY","KENDALL","JANINA","CHRISSY","AMI","STARLA","PHYLIS","PHUONG","KYRA","CHARISSE","BLANCH","SANJUANITA","RONA","NANCI","MARILEE","MARANDA","CORY","BRIGETTE","SANJUANA","MARITA","KASSANDRA","JOYCELYN","IRA","FELIPA","CHELSIE","BONNY","MIREYA","LORENZA","KYONG","ILEANA","CANDELARIA","TONY","TOBY","SHERIE","OK","MARK","LUCIE","LEATRICE","LAKESHIA","GERDA","EDIE","BAMBI","MARYLIN","LAVON","HORTENSE","GARNET","EVIE","TRESSA","SHAYNA","LAVINA","KYUNG","JEANETTA","SHERRILL","SHARA","PHYLISS","MITTIE","ANABEL","ALESIA","THUY","TAWANDA","RICHARD","JOANIE","TIFFANIE","LASHANDA","KARISSA","ENRIQUETA","DARIA","DANIELLA","CORINNA","ALANNA","ABBEY","ROXANE","ROSEANNA","MAGNOLIA","LIDA","KYLE","JOELLEN","ERA","CORAL","CARLEEN","TRESA","PEGGIE","NOVELLA","NILA","MAYBELLE","JENELLE","CARINA","NOVA","MELINA","MARQUERITE","MARGARETTE","JOSEPHINA","EVONNE","DEVIN","CINTHIA","ALBINA","TOYA","TAWNYA","SHERITA","SANTOS","MYRIAM","LIZABETH","LISE","KEELY","JENNI","GISELLE","CHERYLE","ARDITH","ARDIS","ALESHA","ADRIANE","SHAINA","LINNEA","KAROLYN","HONG","FLORIDA","FELISHA","DORI","DARCI","ARTIE","ARMIDA","ZOLA","XIOMARA","VERGIE","SHAMIKA","NENA","NANNETTE","MAXIE","LOVIE","JEANE","JAIMIE","INGE","FARRAH","ELAINA","CAITLYN","STARR","FELICITAS","CHERLY","CARYL","YOLONDA","YASMIN","TEENA","PRUDENCE","PENNIE","NYDIA","MACKENZIE","ORPHA","MARVEL","LIZBETH","LAURETTE","JERRIE","HERMELINDA","CAROLEE","TIERRA","MIRIAN","META","MELONY","KORI","JENNETTE","JAMILA","ENA","ANH","YOSHIKO","SUSANNAH","SALINA","RHIANNON","JOLEEN","CRISTINE","ASHTON","ARACELY","TOMEKA","SHALONDA","MARTI","LACIE","KALA","JADA","ILSE","HAILEY","BRITTANI","ZONA","SYBLE","SHERRYL","RANDY","NIDIA","MARLO","KANDICE","KANDI","DEB","DEAN","AMERICA","ALYCIA","TOMMY","RONNA","NORENE","MERCY","JOSE","INGEBORG","GIOVANNA","GEMMA","CHRISTEL","AUDRY","ZORA","VITA","VAN","TRISH","STEPHAINE","SHIRLEE","SHANIKA","MELONIE","MAZIE","JAZMIN","INGA","HOA","HETTIE","GERALYN","FONDA","ESTRELLA","ADELLA","SU","SARITA","RINA","MILISSA","MARIBETH","GOLDA","EVON","ETHELYN","ENEDINA","CHERISE","CHANA","VELVA","TAWANNA","SADE","MIRTA","LI","KARIE","JACINTA","ELNA","DAVINA","CIERRA","ASHLIE","ALBERTHA","TANESHA","STEPHANI","NELLE","MINDI","LU","LORINDA","LARUE","FLORENE","DEMETRA","DEDRA","CIARA","CHANTELLE","ASHLY","SUZY","ROSALVA","NOELIA","LYDA","LEATHA","KRYSTYNA","KRISTAN","KARRI","DARLINE","DARCIE","CINDA","CHEYENNE","CHERRIE","AWILDA","ALMEDA","ROLANDA","LANETTE","JERILYN","GISELE","EVALYN","CYNDI","CLETA","CARIN","ZINA","ZENA","VELIA","TANIKA","PAUL","CHARISSA","THOMAS","TALIA","MARGARETE","LAVONDA","KAYLEE","KATHLENE","JONNA","IRENA","ILONA","IDALIA","CANDIS","CANDANCE","BRANDEE","ANITRA","ALIDA","SIGRID","NICOLETTE","MARYJO","LINETTE","HEDWIG","CHRISTIANA","CASSIDY","ALEXIA","TRESSIE","MODESTA","LUPITA","LITA","GLADIS","EVELIA","DAVIDA","CHERRI","CECILY","ASHELY","ANNABEL","AGUSTINA","WANITA","SHIRLY","ROSAURA","HULDA","EUN","BAILEY","YETTA","VERONA","THOMASINA","SIBYL","SHANNAN","MECHELLE","LUE","LEANDRA","LANI","KYLEE","KANDY","JOLYNN","FERNE","EBONI","CORENE","ALYSIA","ZULA","NADA","MOIRA","LYNDSAY","LORRETTA","JUAN","JAMMIE","HORTENSIA","GAYNELL","CAMERON","ADRIA","VINA","VICENTA","TANGELA","STEPHINE","NORINE","NELLA","LIANA","LESLEE","KIMBERELY","ILIANA","GLORY","FELICA","EMOGENE","ELFRIEDE","EDEN","EARTHA","CARMA","BEA","OCIE","MARRY","LENNIE","KIARA","JACALYN","CARLOTA","ARIELLE","YU","STAR","OTILIA","KIRSTIN","KACEY","JOHNETTA","JOEY","JOETTA","JERALDINE","JAUNITA","ELANA","DORTHEA","CAMI","AMADA","ADELIA","VERNITA","TAMAR","SIOBHAN","RENEA","RASHIDA","OUIDA","ODELL","NILSA","MERYL","KRISTYN","JULIETA","DANICA","BREANNE","AUREA","ANGLEA","SHERRON","ODETTE","MALIA","LORELEI","LIN","LEESA","KENNA","KATHLYN","FIONA","CHARLETTE","SUZIE","SHANTELL","SABRA","RACQUEL","MYONG","MIRA","MARTINE","LUCIENNE","LAVADA","JULIANN","JOHNIE","ELVERA","DELPHIA","CLAIR","CHRISTIANE","CHAROLETTE","CARRI","AUGUSTINE","ASHA","ANGELLA","PAOLA","NINFA","LEDA","LAI","EDA","SUNSHINE","STEFANI","SHANELL","PALMA","MACHELLE","LISSA","KECIA","KATHRYNE","KARLENE","JULISSA","JETTIE","JENNIFFER","HUI","CORRINA","CHRISTOPHER","CAROLANN","ALENA","TESS","ROSARIA","MYRTICE","MARYLEE","LIANE","KENYATTA","JUDIE","JANEY","IN","ELMIRA","ELDORA","DENNA","CRISTI","CATHI","ZAIDA","VONNIE","VIVA","VERNIE","ROSALINE","MARIELA","LUCIANA","LESLI","KARAN","FELICE","DENEEN","ADINA","WYNONA","TARSHA","SHERON","SHASTA","SHANITA","SHANI","SHANDRA","RANDA","PINKIE","PARIS","NELIDA","MARILOU","LYLA","LAURENE","LACI","JOI","JANENE","DOROTHA","DANIELE","DANI","CAROLYNN","CARLYN","BERENICE","AYESHA","ANNELIESE","ALETHEA","THERSA","TAMIKO","RUFINA","OLIVA","MOZELL","MARYLYN","MADISON","KRISTIAN","KATHYRN","KASANDRA","KANDACE","JANAE","GABRIEL","DOMENICA","DEBBRA","DANNIELLE","CHUN","BUFFY","BARBIE","ARCELIA","AJA","ZENOBIA","SHAREN","SHAREE","PATRICK","PAGE","MY","LAVINIA","KUM","KACIE","JACKELINE","HUONG","FELISA","EMELIA","ELEANORA","CYTHIA","CRISTIN","CLYDE","CLARIBEL","CARON","ANASTACIA","ZULMA","ZANDRA","YOKO","TENISHA","SUSANN","SHERILYN","SHAY","SHAWANDA","SABINE","ROMANA","MATHILDA","LINSEY","KEIKO","JOANA","ISELA","GRETTA","GEORGETTA","EUGENIE","DUSTY","DESIRAE","DELORA","CORAZON","ANTONINA","ANIKA","WILLENE","TRACEE","TAMATHA","REGAN","NICHELLE","MICKIE","MAEGAN","LUANA","LANITA","KELSIE","EDELMIRA","BREE","AFTON","TEODORA","TAMIE","SHENA","MEG","LINH","KELI","KACI","DANYELLE","BRITT","ARLETTE","ALBERTINE","ADELLE","TIFFINY","STORMY","SIMONA","NUMBERS","NICOLASA","NICHOL","NIA","NAKISHA","MEE","MAIRA","LOREEN","KIZZY","JOHNNY","JAY","FALLON","CHRISTENE","BOBBYE","ANTHONY","YING","VINCENZA","TANJA","RUBIE","RONI","QUEENIE","MARGARETT","KIMBERLI","IRMGARD","IDELL","HILMA","EVELINA","ESTA","EMILEE","DENNISE","DANIA","CARL","CARIE","ANTONIO","WAI","SANG","RISA","RIKKI","PARTICIA","MUI","MASAKO","MARIO","LUVENIA","LOREE","LONI","LIEN","KEVIN","GIGI","FLORENCIA","DORIAN","DENITA","DALLAS","CHI","BILLYE","ALEXANDER","TOMIKA","SHARITA","RANA","NIKOLE","NEOMA","MARGARITE","MADALYN","LUCINA","LAILA","KALI","JENETTE","GABRIELE","EVELYNE","ELENORA","CLEMENTINA","ALEJANDRINA","ZULEMA","VIOLETTE","VANNESSA","THRESA","RETTA","PIA","PATIENCE","NOELLA","NICKIE","JONELL","DELTA","CHUNG","CHAYA","CAMELIA","BETHEL","ANYA","ANDREW","THANH","SUZANN","SPRING","SHU","MILA","LILLA","LAVERNA","KEESHA","KATTIE","GIA","GEORGENE","EVELINE","ESTELL","ELIZBETH","VIVIENNE","VALLIE","TRUDIE","STEPHANE","MICHEL","MAGALY","MADIE","KENYETTA","KARREN","JANETTA","HERMINE","HARMONY","DRUCILLA","DEBBI","CELESTINA","CANDIE","BRITNI","BECKIE","AMINA","ZITA","YUN","YOLANDE","VIVIEN","VERNETTA","TRUDI","SOMMER","PEARLE","PATRINA","OSSIE","NICOLLE","LOYCE","LETTY","LARISA","KATHARINA","JOSELYN","JONELLE","JENELL","IESHA","HEIDE","FLORINDA","FLORENTINA","FLO","ELODIA","DORINE","BRUNILDA","BRIGID","ASHLI","ARDELLA","TWANA","THU","TARAH","SUNG","SHEA","SHAVON","SHANE","SERINA","RAYNA","RAMONITA","NGA","MARGURITE","LUCRECIA","KOURTNEY","KATI","JESUS","JESENIA","DIAMOND","CRISTA","AYANA","ALICA","ALIA","VINNIE","SUELLEN","ROMELIA","RACHELL","PIPER","OLYMPIA","MICHIKO","KATHALEEN","JOLIE","JESSI","JANESSA","HANA","HA","ELEASE","CARLETTA","BRITANY","SHONA","SALOME","ROSAMOND","REGENA","RAINA","NGOC","NELIA","LOUVENIA","LESIA","LATRINA","LATICIA","LARHONDA","JINA","JACKI","HOLLIS","HOLLEY","EMMY","DEEANN","CORETTA","ARNETTA","VELVET","THALIA","SHANICE","NETA","MIKKI","MICKI","LONNA","LEANA","LASHUNDA","KILEY","JOYE","JACQULYN","IGNACIA","HYUN","HIROKO","HENRY","HENRIETTE","ELAYNE","DELINDA","DARNELL","DAHLIA","COREEN","CONSUELA","CONCHITA","CELINE","BABETTE","AYANNA","ANETTE","ALBERTINA","SKYE","SHAWNEE","SHANEKA","QUIANA","PAMELIA","MIN","MERRI","MERLENE","MARGIT","KIESHA","KIERA","KAYLENE","JODEE","JENISE","ERLENE","EMMIE","ELSE","DARYL","DALILA","DAISEY","CODY","CASIE","BELIA","BABARA","VERSIE","VANESA","SHELBA","SHAWNDA","SAM","NORMAN","NIKIA","NAOMA","MARNA","MARGERET","MADALINE","LAWANA","KINDRA","JUTTA","JAZMINE","JANETT","HANNELORE","GLENDORA","GERTRUD","GARNETT","FREEDA","FREDERICA","FLORANCE","FLAVIA","DENNIS","CARLINE","BEVERLEE","ANJANETTE","VALDA","TRINITY","TAMALA","STEVIE","SHONNA","SHA","SARINA","ONEIDA","MICAH","MERILYN","MARLEEN","LURLINE","LENNA","KATHERIN","JIN","JENI","HAE","GRACIA","GLADY","FARAH","ERIC","ENOLA","EMA","DOMINQUE","DEVONA","DELANA","CECILA","CAPRICE","ALYSHA","ALI","ALETHIA","VENA","THERESIA","TAWNY","SONG","SHAKIRA","SAMARA","SACHIKO","RACHELE","PAMELLA","NICKY","MARNI","MARIEL","MAREN","MALISA","LIGIA","LERA","LATORIA","LARAE","KIMBER","KATHERN","KAREY","JENNEFER","JANETH","HALINA","FREDIA","DELISA","DEBROAH","CIERA","CHIN","ANGELIKA","ANDREE","ALTHA","YEN","VIVAN","TERRESA","TANNA","SUK","SUDIE","SOO","SIGNE","SALENA","RONNI","REBBECCA","MYRTIE","MCKENZIE","MALIKA","MAIDA","LOAN","LEONARDA","KAYLEIGH","FRANCE","ETHYL","ELLYN","DAYLE","CAMMIE","BRITTNI","BIRGIT","AVELINA","ASUNCION","ARIANNA","AKIKO","VENICE","TYESHA","TONIE","TIESHA","TAKISHA","STEFFANIE","SINDY","SANTANA","MEGHANN","MANDA","MACIE","LADY","KELLYE","KELLEE","JOSLYN","JASON","INGER","INDIRA","GLINDA","GLENNIS","FERNANDA","FAUSTINA","ENEIDA","ELICIA","DOT","DIGNA","DELL","ARLETTA","ANDRE","WILLIA","TAMMARA","TABETHA","SHERRELL","SARI","REFUGIO","REBBECA","PAULETTA","NIEVES","NATOSHA","NAKITA","MAMMIE","KENISHA","KAZUKO","KASSIE","GARY","EARLEAN","DAPHINE","CORLISS","CLOTILDE","CAROLYNE","BERNETTA","AUGUSTINA","AUDREA","ANNIS","ANNABELL","YAN","TENNILLE","TAMICA","SELENE","SEAN","ROSANA","REGENIA","QIANA","MARKITA","MACY","LEEANNE","LAURINE","KYM","JESSENIA","JANITA","GEORGINE","GENIE","EMIKO","ELVIE","DEANDRA","DAGMAR","CORIE","COLLEN","CHERISH","ROMAINE","PORSHA","PEARLENE","MICHELINE","MERNA","MARGORIE","MARGARETTA","LORE","KENNETH","JENINE","HERMINA","FREDERICKA","ELKE","DRUSILLA","DORATHY","DIONE","DESIRE","CELENA","BRIGIDA","ANGELES","ALLEGRA","THEO","TAMEKIA","SYNTHIA","STEPHEN","SOOK","SLYVIA","ROSANN","REATHA","RAYE","MARQUETTA","MARGART","LING","LAYLA","KYMBERLY","KIANA","KAYLEEN","KATLYN","KARMEN","JOELLA","IRINA","EMELDA","ELENI","DETRA","CLEMMIE","CHERYLL","CHANTELL","CATHEY","ARNITA","ARLA","ANGLE","ANGELIC","ALYSE","ZOFIA","THOMASINE","TENNIE","SON","SHERLY","SHERLEY","SHARYL","REMEDIOS","PETRINA","NICKOLE","MYUNG","MYRLE","MOZELLA","LOUANNE","LISHA","LATIA","LANE","KRYSTA","JULIENNE","JOEL","JEANENE","JACQUALINE","ISAURA","GWENDA","EARLEEN","DONALD","CLEOPATRA","CARLIE","AUDIE","ANTONIETTA","ALISE","ALEX","VERDELL","VAL","TYLER","TOMOKO","THAO","TALISHA","STEVEN","SO","SHEMIKA","SHAUN","SCARLET","SAVANNA","SANTINA","ROSIA","RAEANN","ODILIA","NANA","MINNA","MAGAN","LYNELLE","LE","KARMA","JOEANN","IVANA","INELL","ILANA","HYE","HONEY","HEE","GUDRUN","FRANK","DREAMA","CRISSY","CHANTE","CARMELINA","ARVILLA","ARTHUR","ANNAMAE","ALVERA","ALEIDA","AARON","YEE","YANIRA","VANDA","TIANNA","TAM","STEFANIA","SHIRA","PERRY","NICOL","NANCIE","MONSERRATE","MINH","MELYNDA","MELANY","MATTHEW","LOVELLA","LAURE","KIRBY","KACY","JACQUELYNN","HYON","GERTHA","FRANCISCO","ELIANA","CHRISTENA","CHRISTEEN","CHARISE","CATERINA","CARLEY","CANDYCE","ARLENA","AMMIE","YANG","WILLETTE","VANITA","TUYET","TINY","SYREETA","SILVA","SCOTT","RONALD","PENNEY","NYLA","MICHAL","MAURICE","MARYAM","MARYA","MAGEN","LUDIE","LOMA","LIVIA","LANELL","KIMBERLIE","JULEE","DONETTA","DIEDRA","DENISHA","DEANE","DAWNE","CLARINE","CHERRYL","BRONWYN","BRANDON","ALLA","VALERY","TONDA","SUEANN","SORAYA","SHOSHANA","SHELA","SHARLEEN","SHANELLE","NERISSA","MICHEAL","MERIDITH","MELLIE","MAYE","MAPLE","MAGARET","LUIS","LILI","LEONILA","LEONIE","LEEANNA","LAVONIA","LAVERA","KRISTEL","KATHEY","KATHE","JUSTIN","JULIAN","JIMMY","JANN","ILDA","HILDRED","HILDEGARDE","GENIA","FUMIKO","EVELIN","ERMELINDA","ELLY","DUNG","DOLORIS","DIONNA","DANAE","BERNEICE","ANNICE","ALIX","VERENA","VERDIE","TRISTAN","SHAWNNA","SHAWANA","SHAUNNA","ROZELLA","RANDEE","RANAE","MILAGRO","LYNELL","LUISE","LOUIE","LOIDA","LISBETH","KARLEEN","JUNITA","JONA","ISIS","HYACINTH","HEDY","GWENN","ETHELENE","ERLINE","EDWARD","DONYA","DOMONIQUE","DELICIA","DANNETTE","CICELY","BRANDA","BLYTHE","BETHANN","ASHLYN","ANNALEE","ALLINE","YUKO","VELLA","TRANG","TOWANDA","TESHA","SHERLYN","NARCISA","MIGUELINA","MERI","MAYBELL","MARLANA","MARGUERITA","MADLYN","LUNA","LORY","LORIANN","LIBERTY","LEONORE","LEIGHANN","LAURICE","LATESHA","LARONDA","KATRICE","KASIE","KARL","KALEY","JADWIGA","GLENNIE","GEARLDINE","FRANCINA","EPIFANIA","DYAN","DORIE","DIEDRE","DENESE","DEMETRICE","DELENA","DARBY","CRISTIE","CLEORA","CATARINA","CARISA","BERNIE","BARBERA","ALMETA","TRULA","TEREASA","SOLANGE","SHEILAH","SHAVONNE","SANORA","ROCHELL","MATHILDE","MARGARETA","MAIA","LYNSEY","LAWANNA","LAUNA","KENA","KEENA","KATIA","JAMEY","GLYNDA","GAYLENE","ELVINA","ELANOR","DANUTA","DANIKA","CRISTEN","CORDIE","COLETTA","CLARITA","CARMON","BRYNN","AZUCENA","AUNDREA","ANGELE","YI","WALTER","VERLIE","VERLENE","TAMESHA","SILVANA","SEBRINA","SAMIRA","REDA","RAYLENE","PENNI","PANDORA","NORAH","NOMA","MIREILLE","MELISSIA","MARYALICE","LARAINE","KIMBERY","KARYL","KARINE","KAM","JOLANDA","JOHANA","JESUSA","JALEESA","JAE","JACQUELYNE","IRISH","ILUMINADA","HILARIA","HANH","GENNIE","FRANCIE","FLORETTA","EXIE","EDDA","DREMA","DELPHA","BEV","BARBAR","ASSUNTA","ARDELL","ANNALISA","ALISIA","YUKIKO","YOLANDO","WONDA","WEI","WALTRAUD","VETA","TEQUILA","TEMEKA","TAMEIKA","SHIRLEEN","SHENITA","PIEDAD","OZELLA","MIRTHA","MARILU","KIMIKO","JULIANE","JENICE","JEN","JANAY","JACQUILINE","HILDE","FE","FAE","EVAN","EUGENE","ELOIS","ECHO","DEVORAH","CHAU","BRINDA","BETSEY","ARMINDA","ARACELIS","APRYL","ANNETT","ALISHIA","VEOLA","USHA","TOSHIKO","THEOLA","TASHIA","TALITHA","SHERY","RUDY","RENETTA","REIKO","RASHEEDA","OMEGA","OBDULIA","MIKA","MELAINE","MEGGAN","MARTIN","MARLEN","MARGET","MARCELINE","MANA","MAGDALEN","LIBRADA","LEZLIE","LEXIE","LATASHIA","LASANDRA","KELLE","ISIDRA","ISA","INOCENCIA","GWYN","FRANCOISE","ERMINIA","ERINN","DIMPLE","DEVORA","CRISELDA","ARMANDA","ARIE","ARIANE","ANGELO","ANGELENA","ALLEN","ALIZA","ADRIENE","ADALINE","XOCHITL","TWANNA","TRAN","TOMIKO","TAMISHA","TAISHA","SUSY","SIU","RUTHA","ROXY","RHONA","RAYMOND","OTHA","NORIKO","NATASHIA","MERRIE","MELVIN","MARINDA","MARIKO","MARGERT","LORIS","LIZZETTE","LEISHA","KAILA","KA","JOANNIE","JERRICA","JENE","JANNET","JANEE","JACINDA","HERTA","ELENORE","DORETTA","DELAINE","DANIELL","CLAUDIE","CHINA","BRITTA","APOLONIA","AMBERLY","ALEASE","YURI","YUK","WEN","WANETA","UTE","TOMI","SHARRI","SANDIE","ROSELLE","REYNALDA","RAGUEL","PHYLICIA","PATRIA","OLIMPIA","ODELIA","MITZIE","MITCHELL","MISS","MINDA","MIGNON","MICA","MENDY","MARIVEL","MAILE","LYNETTA","LAVETTE","LAURYN","LATRISHA","LAKIESHA","KIERSTEN","KARY","JOSPHINE","JOLYN","JETTA","JANISE","JACQUIE","IVELISSE","GLYNIS","GIANNA","GAYNELLE","EMERALD","DEMETRIUS","DANYELL","DANILLE","DACIA","CORALEE","CHER","CEOLA","BRETT","BELL","ARIANNE","ALESHIA","YUNG","WILLIEMAE","TROY","TRINH","THORA","TAI","SVETLANA","SHERIKA","SHEMEKA","SHAUNDA","ROSELINE","RICKI","MELDA","MALLIE","LAVONNA","LATINA","LARRY","LAQUANDA","LALA","LACHELLE","KLARA","KANDIS","JOHNA","JEANMARIE","JAYE","HANG","GRAYCE","GERTUDE","EMERITA","EBONIE","CLORINDA","CHING","CHERY","CAROLA","BREANN","BLOSSOM","BERNARDINE","BECKI","ARLETHA","ARGELIA","ARA","ALITA","YULANDA","YON","YESSENIA","TOBI","TASIA","SYLVIE","SHIRL","SHIRELY","SHERIDAN","SHELLA","SHANTELLE","SACHA","ROYCE","REBECKA","REAGAN","PROVIDENCIA","PAULENE","MISHA","MIKI","MARLINE","MARICA","LORITA","LATOYIA","LASONYA","KERSTIN","KENDA","KEITHA","KATHRIN","JAYMIE","JACK","GRICELDA","GINETTE","ERYN","ELINA","ELFRIEDA","DANYEL","CHEREE","CHANELLE","BARRIE","AVERY","AURORE","ANNAMARIA","ALLEEN","AILENE","AIDE","YASMINE","VASHTI","VALENTINE","TREASA","TORY","TIFFANEY","SHERYLL","SHARIE","SHANAE","SAU","RAISA","PA","NEDA","MITSUKO","MIRELLA","MILDA","MARYANNA","MARAGRET","MABELLE","LUETTA","LORINA","LETISHA","LATARSHA","LANELLE","LAJUANA","KRISSY","KARLY","KARENA","JON","JESSIKA","JERICA","JEANELLE","JANUARY","JALISA","JACELYN","IZOLA","IVEY","GREGORY","EUNA","ETHA","DREW","DOMITILA","DOMINICA","DAINA","CREOLA","CARLI","CAMIE","BUNNY","BRITTNY","ASHANTI","ANISHA","ALEEN","ADAH","YASUKO","WINTER","VIKI","VALRIE","TONA","TINISHA","THI","TERISA","TATUM","TANEKA","SIMONNE","SHALANDA","SERITA","RESSIE","REFUGIA","PAZ","OLENE","NA","MERRILL","MARGHERITA","MANDIE","MAN","MAIRE","LYNDIA","LUCI","LORRIANE","LORETA","LEONIA","LAVONA","LASHAWNDA","LAKIA","KYOKO","KRYSTINA","KRYSTEN","KENIA","KELSI","JUDE","JEANICE","ISOBEL","GEORGIANN","GENNY","FELICIDAD","EILENE","DEON","DELOISE","DEEDEE","DANNIE","CONCEPTION","CLORA","CHERILYN","CHANG","CALANDRA","BERRY","ARMANDINA","ANISA","ULA","TIMOTHY","TIERA","THERESSA","STEPHANIA","SIMA","SHYLA","SHONTA","SHERA","SHAQUITA","SHALA","SAMMY","ROSSANA","NOHEMI","NERY","MORIAH","MELITA","MELIDA","MELANI","MARYLYNN","MARISHA","MARIETTE","MALORIE","MADELENE","LUDIVINA","LORIA","LORETTE","LORALEE","LIANNE","LEON","LAVENIA","LAURINDA","LASHON","KIT","KIMI","KEILA","KATELYNN","KAI","JONE","JOANE","JI","JAYNA","JANELLA","JA","HUE","HERTHA","FRANCENE","ELINORE","DESPINA","DELSIE","DEEDRA","CLEMENCIA","CARRY","CAROLIN","CARLOS","BULAH","BRITTANIE","BOK","BLONDELL","BIBI","BEAULAH","BEATA","ANNITA","AGRIPINA","VIRGEN","VALENE","UN","TWANDA","TOMMYE","TOI","TARRA","TARI","TAMMERA","SHAKIA","SADYE","RUTHANNE","ROCHEL","RIVKA","PURA","NENITA","NATISHA","MING","MERRILEE","MELODEE","MARVIS","LUCILLA","LEENA","LAVETA","LARITA","LANIE","KEREN","ILEEN","GEORGEANN","GENNA","GENESIS","FRIDA","EWA","EUFEMIA","EMELY","ELA","EDYTH","DEONNA","DEADRA","DARLENA","CHANELL","CHAN","CATHERN","CASSONDRA","CASSAUNDRA","BERNARDA","BERNA","ARLINDA","ANAMARIA","ALBERT","WESLEY","VERTIE","VALERI","TORRI","TATYANA","STASIA","SHERISE","SHERILL","SEASON","SCOTTIE","SANDA","RUTHE","ROSY","ROBERTO","ROBBI","RANEE","QUYEN","PEARLY","PALMIRA","ONITA","NISHA","NIESHA","NIDA","NEVADA","NAM","MERLYN","MAYOLA","MARYLOUISE","MARYLAND","MARX","MARTH","MARGENE","MADELAINE","LONDA","LEONTINE","LEOMA","LEIA","LAWRENCE","LAURALEE","LANORA","LAKITA","KIYOKO","KETURAH","KATELIN","KAREEN","JONIE","JOHNETTE","JENEE","JEANETT","IZETTA","HIEDI","HEIKE","HASSIE","HAROLD","GIUSEPPINA","GEORGANN","FIDELA","FERNANDE","ELWANDA","ELLAMAE","ELIZ","DUSTI","DOTTY","CYNDY","CORALIE","CELESTA","ARGENTINA","ALVERTA","XENIA","WAVA","VANETTA","TORRIE","TASHINA","TANDY","TAMBRA","TAMA","STEPANIE","SHILA","SHAUNTA","SHARAN","SHANIQUA","SHAE","SETSUKO","SERAFINA","SANDEE","ROSAMARIA","PRISCILA","OLINDA","NADENE","MUOI","MICHELINA","MERCEDEZ","MARYROSE","MARIN","MARCENE","MAO","MAGALI","MAFALDA","LOGAN","LINN","LANNIE","KAYCE","KAROLINE","KAMILAH","KAMALA","JUSTA","JOLINE","JENNINE","JACQUETTA","IRAIDA","GERALD","GEORGEANNA","FRANCHESCA","FAIRY","EMELINE","ELANE","EHTEL","EARLIE","DULCIE","DALENE","CRIS","CLASSIE","CHERE","CHARIS","CAROYLN","CARMINA","CARITA","BRIAN","BETHANIE","AYAKO","ARICA","AN","ALYSA","ALESSANDRA","AKILAH","ADRIEN","ZETTA","YOULANDA","YELENA","YAHAIRA","XUAN","WENDOLYN","VICTOR","TIJUANA","TERRELL","TERINA","TERESIA","SUZI","SUNDAY","SHERELL","SHAVONDA","SHAUNTE","SHARDA","SHAKITA","SENA","RYANN","RUBI","RIVA","REGINIA","REA","RACHAL","PARTHENIA","PAMULA","MONNIE","MONET","MICHAELE","MELIA","MARINE","MALKA","MAISHA","LISANDRA","LEO","LEKISHA","LEAN","LAURENCE","LAKENDRA","KRYSTIN","KORTNEY","KIZZIE","KITTIE","KERA","KENDAL","KEMBERLY","KANISHA","JULENE","JULE","JOSHUA","JOHANNE","JEFFREY","JAMEE","HAN","HALLEY","GIDGET","GALINA","FREDRICKA","FLETA","FATIMAH","EUSEBIA","ELZA","ELEONORE","DORTHEY","DORIA","DONELLA","DINORAH","DELORSE","CLARETHA","CHRISTINIA","CHARLYN","BONG","BELKIS","AZZIE","ANDERA","AIKO","ADENA","YER","YAJAIRA","WAN","VANIA","ULRIKE","TOSHIA","TIFANY","STEFANY","SHIZUE","SHENIKA","SHAWANNA","SHAROLYN","SHARILYN","SHAQUANA","SHANTAY","SEE","ROZANNE","ROSELEE","RICKIE","REMONA","REANNA","RAELENE","QUINN","PHUNG","PETRONILA","NATACHA","NANCEY","MYRL","MIYOKO","MIESHA","MERIDETH","MARVELLA","MARQUITTA","MARHTA","MARCHELLE","LIZETH","LIBBIE","LAHOMA","LADAWN","KINA","KATHELEEN","KATHARYN","KARISA","KALEIGH","JUNIE","JULIEANN","JOHNSIE","JANEAN","JAIMEE","JACKQUELINE","HISAKO","HERMA","HELAINE","GWYNETH","GLENN","GITA","EUSTOLIA","EMELINA","ELIN","EDRIS","DONNETTE","DONNETTA","DIERDRE","DENAE","DARCEL","CLAUDE","CLARISA","CINDERELLA","CHIA","CHARLESETTA","CHARITA","CELSA","CASSY","CASSI","CARLEE","BRUNA","BRITTANEY","BRANDE","BILLI","BAO","ANTONETTA","ANGLA","ANGELYN","ANALISA","ALANE","WENONA","WENDIE","VERONIQUE","VANNESA","TOBIE","TEMPIE","SUMIKO","SULEMA","SPARKLE","SOMER","SHEBA","SHAYNE","SHARICE","SHANEL","SHALON","SAGE","ROY","ROSIO","ROSELIA","RENAY","REMA","REENA","PORSCHE","PING","PEG","OZIE","ORETHA","ORALEE","ODA","NU","NGAN","NAKESHA","MILLY","MARYBELLE","MARLIN","MARIS","MARGRETT","MARAGARET","MANIE","LURLENE","LILLIA","LIESELOTTE","LAVELLE","LASHAUNDA","LAKEESHA","KEITH","KAYCEE","KALYN","JOYA","JOETTE","JENAE","JANIECE","ILLA","GRISEL","GLAYDS","GENEVIE","GALA","FREDDA","FRED","ELMER","ELEONOR","DEBERA","DEANDREA","DAN","CORRINNE","CORDIA","CONTESSA","COLENE","CLEOTILDE","CHARLOTT","CHANTAY","CECILLE","BEATRIS","AZALEE","ARLEAN","ARDATH","ANJELICA","ANJA","ALFREDIA","ALEISHA","ADAM","ZADA","YUONNE","XIAO","WILLODEAN","WHITLEY","VENNIE","VANNA","TYISHA","TOVA","TORIE","TONISHA","TILDA","TIEN","TEMPLE","SIRENA","SHERRIL","SHANTI","SHAN","SENAIDA","SAMELLA","ROBBYN","RENDA","REITA","PHEBE","PAULITA","NOBUKO","NGUYET","NEOMI","MOON","MIKAELA","MELANIA","MAXIMINA","MARG","MAISIE","LYNNA","LILLI","LAYNE","LASHAUN","LAKENYA","LAEL","KIRSTIE","KATHLINE","KASHA","KARLYN","KARIMA","JOVAN","JOSEFINE","JENNELL","JACQUI","JACKELYN","HYO","HIEN","GRAZYNA","FLORRIE","FLORIA","ELEONORA","DWANA","DORLA","DONG","DELMY","DEJA","DEDE","DANN","CRYSTA","CLELIA","CLARIS","CLARENCE","CHIEKO","CHERLYN","CHERELLE","CHARMAIN","CHARA","CAMMY","BEE","ARNETTE","ARDELLE","ANNIKA","AMIEE","AMEE","ALLENA","YVONE","YUKI","YOSHIE","YEVETTE","YAEL","WILLETTA","VONCILE","VENETTA","TULA","TONETTE","TIMIKA","TEMIKA","TELMA","TEISHA","TAREN","TA","STACEE","SHIN","SHAWNTA","SATURNINA","RICARDA","POK","PASTY","ONIE","NUBIA","MORA","MIKE","MARIELLE","MARIELLA","MARIANELA","MARDELL","MANY","LUANNA","LOISE","LISABETH","LINDSY","LILLIANA","LILLIAM","LELAH","LEIGHA","LEANORA","LANG","KRISTEEN","KHALILAH","KEELEY","KANDRA","JUNKO","JOAQUINA","JERLENE","JANI","JAMIKA","JAME","HSIU","HERMILA","GOLDEN","GENEVIVE","EVIA","EUGENA","EMMALINE","ELFREDA","ELENE","DONETTE","DELCIE","DEEANNA","DARCEY","CUC","CLARINDA","CIRA","CHAE","CELINDA","CATHERYN","CATHERIN","CASIMIRA","CARMELIA","CAMELLIA","BREANA","BOBETTE","BERNARDINA","BEBE","BASILIA","ARLYNE","AMAL","ALAYNA","ZONIA","ZENIA","YURIKO","YAEKO","WYNELL","WILLOW","WILLENA","VERNIA","TU","TRAVIS","TORA","TERRILYN","TERICA","TENESHA","TAWNA","TAJUANA","TAINA","STEPHNIE","SONA","SOL","SINA","SHONDRA","SHIZUKO","SHERLENE","SHERICE","SHARIKA","ROSSIE","ROSENA","RORY","RIMA","RIA","RHEBA","RENNA","PETER","NATALYA","NANCEE","MELODI","MEDA","MAXIMA","MATHA","MARKETTA","MARICRUZ","MARCELENE","MALVINA","LUBA","LOUETTA","LEIDA","LECIA","LAURAN","LASHAWNA","LAINE","KHADIJAH","KATERINE","KASI","KALLIE","JULIETTA","JESUSITA","JESTINE","JESSIA","JEREMY","JEFFIE","JANYCE","ISADORA","GEORGIANNE","FIDELIA","EVITA","EURA","EULAH","ESTEFANA","ELSY","ELIZABET","ELADIA","DODIE","DION","DIA","DENISSE","DELORAS","DELILA","DAYSI","DAKOTA","CURTIS","CRYSTLE","CONCHA","COLBY","CLARETTA","CHU","CHRISTIA","CHARLSIE","CHARLENA","CARYLON","BETTYANN","ASLEY","ASHLEA","AMIRA","AI","AGUEDA","AGNUS","YUETTE","VINITA","VICTORINA","TYNISHA","TREENA","TOCCARA","TISH","THOMASENA","TEGAN","SOILA","SHILOH","SHENNA","SHARMAINE","SHANTAE","SHANDI","SEPTEMBER","SARAN","SARAI","SANA","SAMUEL","SALLEY","ROSETTE","ROLANDE","REGINE","OTELIA","OSCAR","OLEVIA","NICHOLLE","NECOLE","NAIDA","MYRTA","MYESHA","MITSUE","MINTA","MERTIE","MARGY","MAHALIA","MADALENE","LOVE","LOURA","LOREAN","LEWIS","LESHA","LEONIDA","LENITA","LAVONE","LASHELL","LASHANDRA","LAMONICA","KIMBRA","KATHERINA","KARRY","KANESHA","JULIO","JONG","JENEVA","JAQUELYN","HWA","GILMA","GHISLAINE","GERTRUDIS","FRANSISCA","FERMINA","ETTIE","ETSUKO","ELLIS","ELLAN","ELIDIA","EDRA","DORETHEA","DOREATHA","DENYSE","DENNY","DEETTA","DAINE","CYRSTAL","CORRIN","CAYLA","CARLITA","CAMILA","BURMA","BULA","BUENA","BLAKE","BARABARA","AVRIL","AUSTIN","ALAINE","ZANA","WILHEMINA","WANETTA","VIRGIL","VI","VERONIKA","VERNON","VERLINE","VASILIKI","TONITA","TISA","TEOFILA","TAYNA","TAUNYA","TANDRA","TAKAKO","SUNNI","SUANNE","SIXTA","SHARELL","SEEMA","RUSSELL","ROSENDA","ROBENA","RAYMONDE","PEI","PAMILA","OZELL","NEIDA","NEELY","MISTIE","MICHA","MERISSA","MAURITA","MARYLN","MARYETTA","MARSHALL","MARCELL","MALENA","MAKEDA","MADDIE","LOVETTA","LOURIE","LORRINE","LORILEE","LESTER","LAURENA","LASHAY","LARRAINE","LAREE","LACRESHA","KRISTLE","KRISHNA","KEVA","KEIRA","KAROLE","JOIE","JINNY","JEANNETTA","JAMA","HEIDY","GILBERTE","GEMA","FAVIOLA","EVELYNN","ENDA","ELLI","ELLENA","DIVINA","DAGNY","COLLENE","CODI","CINDIE","CHASSIDY","CHASIDY","CATRICE","CATHERINA","CASSEY","CAROLL","CARLENA","CANDRA","CALISTA","BRYANNA","BRITTENY","BEULA","BARI","AUDRIE","AUDRIA","ARDELIA","ANNELLE","ANGILA","ALONA","ALLYN","DOUGLAS","ROGER","JONATHAN","RALPH","NICHOLAS","BENJAMIN","BRUCE","HARRY","WAYNE","STEVE","HOWARD","ERNEST","PHILLIP","TODD","CRAIG","ALAN","PHILIP","EARL","DANNY","BRYAN","STANLEY","LEONARD","NATHAN","MANUEL","RODNEY","MARVIN","VINCENT","JEFFERY","JEFF","CHAD","JACOB","ALFRED","BRADLEY","HERBERT","FREDERICK","EDWIN","DON","RICKY","RANDALL","BARRY","BERNARD","LEROY","MARCUS","THEODORE","CLIFFORD","MIGUEL","JIM","TOM","CALVIN","BILL","LLOYD","DEREK","WARREN","DARRELL","JEROME","FLOYD","ALVIN","TIM","GORDON","GREG","JORGE","DUSTIN","PEDRO","DERRICK","ZACHARY","HERMAN","GLEN","HECTOR","RICARDO","RICK","BRENT","RAMON","GILBERT","MARC","REGINALD","RUBEN","NATHANIEL","RAFAEL","EDGAR","MILTON","RAUL","BEN","CHESTER","DUANE","FRANKLIN","BRAD","RON","ROLAND","ARNOLD","HARVEY","JARED","ERIK","DARRYL","NEIL","JAVIER","FERNANDO","CLINTON","TED","MATHEW","TYRONE","DARREN","LANCE","KURT","ALLAN","NELSON","GUY","CLAYTON","HUGH","MAX","DWAYNE","DWIGHT","ARMANDO","FELIX","EVERETT","IAN","WALLACE","KEN","BOB","ALFREDO","ALBERTO","DAVE","IVAN","BYRON","ISAAC","MORRIS","CLIFTON","WILLARD","ROSS","ANDY","SALVADOR","KIRK","SERGIO","SETH","KENT","TERRANCE","EDUARDO","TERRENCE","ENRIQUE","WADE","STUART","FREDRICK","ARTURO","ALEJANDRO","NICK","LUTHER","WENDELL","JEREMIAH","JULIUS","OTIS","TREVOR","OLIVER","LUKE","HOMER","GERARD","DOUG","KENNY","HUBERT","LYLE","MATT","ALFONSO","ORLANDO","REX","CARLTON","ERNESTO","NEAL","PABLO","LORENZO","OMAR","WILBUR","GRANT","HORACE","RODERICK","ABRAHAM","WILLIS","RICKEY","ANDRES","CESAR","JOHNATHAN","MALCOLM","RUDOLPH","DAMON","KELVIN","PRESTON","ALTON","ARCHIE","MARCO","WM","PETE","RANDOLPH","GARRY","GEOFFREY","JONATHON","FELIPE","GERARDO","ED","DOMINIC","DELBERT","COLIN","GUILLERMO","EARNEST","LUCAS","BENNY","SPENCER","RODOLFO","MYRON","EDMUND","GARRETT","SALVATORE","CEDRIC","LOWELL","GREGG","SHERMAN","WILSON","SYLVESTER","ROOSEVELT","ISRAEL","JERMAINE","FORREST","WILBERT","LELAND","SIMON","CLARK","IRVING","BRYANT","OWEN","RUFUS","WOODROW","KRISTOPHER","MACK","LEVI","MARCOS","GUSTAVO","JAKE","LIONEL","GILBERTO","CLINT","NICOLAS","ISMAEL","ORVILLE","ERVIN","DEWEY","AL","WILFRED","JOSH","HUGO","IGNACIO","CALEB","TOMAS","SHELDON","ERICK","STEWART","DOYLE","DARREL","ROGELIO","TERENCE","SANTIAGO","ALONZO","ELIAS","BERT","ELBERT","RAMIRO","CONRAD","NOAH","GRADY","PHIL","CORNELIUS","LAMAR","ROLANDO","CLAY","PERCY","DEXTER","BRADFORD","DARIN","AMOS","MOSES","IRVIN","SAUL","ROMAN","RANDAL","TIMMY","DARRIN","WINSTON","BRENDAN","ABEL","DOMINICK","BOYD","EMILIO","ELIJAH","DOMINGO","EMMETT","MARLON","EMANUEL","JERALD","EDMOND","EMIL","DEWAYNE","WILL","OTTO","TEDDY","REYNALDO","BRET","JESS","TRENT","HUMBERTO","EMMANUEL","STEPHAN","VICENTE","LAMONT","GARLAND","MILES","EFRAIN","HEATH","RODGER","HARLEY","ETHAN","ELDON","ROCKY","PIERRE","JUNIOR","FREDDY","ELI","BRYCE","ANTOINE","STERLING","CHASE","GROVER","ELTON","CLEVELAND","DYLAN","CHUCK","DAMIAN","REUBEN","STAN","AUGUST","LEONARDO","JASPER","RUSSEL","ERWIN","BENITO","HANS","MONTE","BLAINE","ERNIE","CURT","QUENTIN","AGUSTIN","MURRAY","JAMAL","ADOLFO","HARRISON","TYSON","BURTON","BRADY","ELLIOTT","WILFREDO","BART","JARROD","VANCE","DENIS","DAMIEN","JOAQUIN","HARLAN","DESMOND","ELLIOT","DARWIN","GREGORIO","BUDDY","XAVIER","KERMIT","ROSCOE","ESTEBAN","ANTON","SOLOMON","SCOTTY","NORBERT","ELVIN","WILLIAMS","NOLAN","ROD","QUINTON","HAL","BRAIN","ROB","ELWOOD","KENDRICK","DARIUS","MOISES","FIDEL","THADDEUS","CLIFF","MARCEL","JACKSON","RAPHAEL","BRYON","ARMAND","ALVARO","JEFFRY","DANE","JOESPH","THURMAN","NED","RUSTY","MONTY","FABIAN","REGGIE","MASON","GRAHAM","ISAIAH","VAUGHN","GUS","LOYD","DIEGO","ADOLPH","NORRIS","MILLARD","ROCCO","GONZALO","DERICK","RODRIGO","WILEY","RIGOBERTO","ALPHONSO","TY","NOE","VERN","REED","JEFFERSON","ELVIS","BERNARDO","MAURICIO","HIRAM","DONOVAN","BASIL","RILEY","NICKOLAS","MAYNARD","SCOT","VINCE","QUINCY","EDDY","SEBASTIAN","FEDERICO","ULYSSES","HERIBERTO","DONNELL","COLE","DAVIS","GAVIN","EMERY","WARD","ROMEO","JAYSON","DANTE","CLEMENT","COY","MAXWELL","JARVIS","BRUNO","ISSAC","DUDLEY","BROCK","SANFORD","CARMELO","BARNEY","NESTOR","STEFAN","DONNY","ART","LINWOOD","BEAU","WELDON","GALEN","ISIDRO","TRUMAN","DELMAR","JOHNATHON","SILAS","FREDERIC","DICK","IRWIN","MERLIN","CHARLEY","MARCELINO","HARRIS","CARLO","TRENTON","KURTIS","HUNTER","AURELIO","WINFRED","VITO","COLLIN","DENVER","CARTER","LEONEL","EMORY","PASQUALE","MOHAMMAD","MARIANO","DANIAL","LANDON","DIRK","BRANDEN","ADAN","BUFORD","GERMAN","WILMER","EMERSON","ZACHERY","FLETCHER","JACQUES","ERROL","DALTON","MONROE","JOSUE","EDWARDO","BOOKER","WILFORD","SONNY","SHELTON","CARSON","THERON","RAYMUNDO","DAREN","HOUSTON","ROBBY","LINCOLN","GENARO","BENNETT","OCTAVIO","CORNELL","HUNG","ARRON","ANTONY","HERSCHEL","GIOVANNI","GARTH","CYRUS","CYRIL","RONNY","LON","FREEMAN","DUNCAN","KENNITH","CARMINE","ERICH","CHADWICK","WILBURN","RUSS","REID","MYLES","ANDERSON","MORTON","JONAS","FOREST","MITCHEL","MERVIN","ZANE","RICH","JAMEL","LAZARO","ALPHONSE","RANDELL","MAJOR","JARRETT","BROOKS","ABDUL","LUCIANO","SEYMOUR","EUGENIO","MOHAMMED","VALENTIN","CHANCE","ARNULFO","LUCIEN","FERDINAND","THAD","EZRA","ALDO","RUBIN","ROYAL","MITCH","EARLE","ABE","WYATT","MARQUIS","LANNY","KAREEM","JAMAR","BORIS","ISIAH","EMILE","ELMO","ARON","LEOPOLDO","EVERETTE","JOSEF","ELOY","RODRICK","REINALDO","LUCIO","JERROD","WESTON","HERSHEL","BARTON","PARKER","LEMUEL","BURT","JULES","GIL","ELISEO","AHMAD","NIGEL","EFREN","ANTWAN","ALDEN","MARGARITO","COLEMAN","DINO","OSVALDO","LES","DEANDRE","NORMAND","KIETH","TREY","NORBERTO","NAPOLEON","JEROLD","FRITZ","ROSENDO","MILFORD","CHRISTOPER","ALFONZO","LYMAN","JOSIAH","BRANT","WILTON","RICO","JAMAAL","DEWITT","BRENTON","OLIN","FOSTER","FAUSTINO","CLAUDIO","JUDSON","GINO","EDGARDO","ALEC","TANNER","JARRED","DONN","TAD","PRINCE","PORFIRIO","ODIS","LENARD","CHAUNCEY","TOD","MEL","MARCELO","KORY","AUGUSTUS","KEVEN","HILARIO","BUD","SAL","ORVAL","MAURO","ZACHARIAH","OLEN","ANIBAL","MILO","JED","DILLON","AMADO","NEWTON","LENNY","RICHIE","HORACIO","BRICE","MOHAMED","DELMER","DARIO","REYES","MAC","JONAH","JERROLD","ROBT","HANK","RUPERT","ROLLAND","KENTON","DAMION","ANTONE","WALDO","FREDRIC","BRADLY","KIP","BURL","WALKER","TYREE","JEFFEREY","AHMED","WILLY","STANFORD","OREN","NOBLE","MOSHE","MIKEL","ENOCH","BRENDON","QUINTIN","JAMISON","FLORENCIO","DARRICK","TOBIAS","HASSAN","GIUSEPPE","DEMARCUS","CLETUS","TYRELL","LYNDON","KEENAN","WERNER","GERALDO","COLUMBUS","CHET","BERTRAM","MARKUS","HUEY","HILTON","DWAIN","DONTE","TYRON","OMER","ISAIAS","HIPOLITO","FERMIN","ADALBERTO","BO","BARRETT","TEODORO","MCKINLEY","MAXIMO","GARFIELD","RALEIGH","LAWERENCE","ABRAM","RASHAD","KING","EMMITT","DARON","SAMUAL","MIQUEL","EUSEBIO","DOMENIC","DARRON","BUSTER","WILBER","RENATO","JC","HOYT","HAYWOOD","EZEKIEL","CHAS","FLORENTINO","ELROY","CLEMENTE","ARDEN","NEVILLE","EDISON","DESHAWN","NATHANIAL","JORDON","DANILO","CLAUD","SHERWOOD","RAYMON","RAYFORD","CRISTOBAL","AMBROSE","TITUS","HYMAN","FELTON","EZEQUIEL","ERASMO","STANTON","LONNY","LEN","IKE","MILAN","LINO","JAROD","HERB","ANDREAS","WALTON","RHETT","PALMER","DOUGLASS","CORDELL","OSWALDO","ELLSWORTH","VIRGILIO","TONEY","NATHANAEL","DEL","BENEDICT","MOSE","JOHNSON","ISREAL","GARRET","FAUSTO","ASA","ARLEN","ZACK","WARNER","MODESTO","FRANCESCO","MANUAL","GAYLORD","GASTON","FILIBERTO","DEANGELO","MICHALE","GRANVILLE","WES","MALIK","ZACKARY","TUAN","ELDRIDGE","CRISTOPHER","CORTEZ","ANTIONE","MALCOM","LONG","KOREY","JOSPEH","COLTON","WAYLON","VON","HOSEA","SHAD","SANTO","RUDOLF","ROLF","REY","RENALDO","MARCELLUS","LUCIUS","KRISTOFER","BOYCE","BENTON","HAYDEN","HARLAND","ARNOLDO","RUEBEN","LEANDRO","KRAIG","JERRELL","JEROMY","HOBERT","CEDRICK","ARLIE","WINFORD","WALLY","LUIGI","KENETH","JACINTO","GRAIG","FRANKLYN","EDMUNDO","SID","PORTER","LEIF","JERAMY","BUCK","WILLIAN","VINCENZO","SHON","LYNWOOD","JERE","HAI","ELDEN","DORSEY","DARELL","BRODERICK","ALONSO"

go/primes.go

-package primes
-
-func integers() chan uint64 {
-	out := make(chan uint64)
-
-	go func() {
-		var i uint64 = 2
-		for {
-			out <- i
-			i++
-		}
-	}()
-
-	return out
-}
-
-func filter(prime uint64, in chan uint64) chan uint64 {
-	out := make(chan uint64)
-
-	go func() {
-		for i := range in {
-			if (i % prime) != 0 {
-				out <- i
-			}
-		}
-	}()
-
-	return out
-}
-
-func Primes() chan uint64 {
-	out := make(chan uint64)
-	in := integers()
-	go func() {
-		for {
-			i := <-in
-			out <- i
-			in = filter(i, in)
-		}
-	}()
-
-	return out
-}
-
-var primes []uint64 = nil
-var pgen = Primes()
-
-func fillPrimes(n uint64) {
-	for {
-		if len(primes) > 0 && primes[len(primes)-1] > n {
-			return
-		}
-		p := <-pgen
-		primes = append(primes, p)
-	}
-}
-
-func search(needle uint64, haystack []uint64) bool {
-	for _, v := range haystack {
-		if needle == v {
-			return true
-		}
-	}
-
-	return false
-}
-
-func IsPrime(n uint64) bool {
-	fillPrimes(n)
-	return search(n, primes)
-}

go/src/euler/1.go

+/*
+If we list all the natural numbers below 10 that are multiples of 3 or 5, we get
+3, 5, 6 and 9. The sum of these multiples is 23.
+
+Find the sum of all the multiples of 3 or 5 below 1000.
+
+Answer: 233168
+*/
+package main
+
+import "fmt"
+
+func main() {
+	sum := 0
+	for i := 1; i < 1000; i++ {
+		if (i%5 == 0) || (i%3 == 0) {
+			sum += i
+		}
+	}
+
+	fmt.Println(sum)
+}

go/src/euler/10.go

+/*
+The sum of the primes below 10 is 2 + 3 + 5 + 7 = 17.
+
+Find the sum of all the primes below two million.
+
+Answer: 142913828922
+*/
+
+package main
+
+import (
+	"fmt"
+	"math/big"
+)
+
+func main() {
+	sum := int64(0)
+	for i := int64(0); i < 2000000; i++ {
+		if big.ProbablyPrime(big.NewInt(i), 10) {
+			sum += i
+		}
+	}
+	fmt.Println(sum)
+}

go/src/euler/11.go

+/*
+In the 20×20 grid below, four numbers along a diagonal line have been marked in red.
+
+08 02 22 97 38 15 00 40 00 75 04 05 07 78 52 12 50 77 91 08
+49 49 99 40 17 81 18 57 60 87 17 40 98 43 69 48 04 56 62 00
+81 49 31 73 55 79 14 29 93 71 40 67 53 88 30 03 49 13 36 65
+52 70 95 23 04 60 11 42 69 24 68 56 01 32 56 71 37 02 36 91
+22 31 16 71 51 67 63 89 41 92 36 54 22 40 40 28 66 33 13 80
+24 47 32 60 99 03 45 02 44 75 33 53 78 36 84 20 35 17 12 50
+32 98 81 28 64 23 67 10 26 38 40 67 59 54 70 66 18 38 64 70
+67 26 20 68 02 62 12 20 95 63 94 39 63 08 40 91 66 49 94 21
+24 55 58 05 66 73 99 26 97 17 78 78 96 83 14 88 34 89 63 72
+21 36 23 09 75 00 76 44 20 45 35 14 00 61 33 97 34 31 33 95
+78 17 53 28 22 75 31 67 15 94 03 80 04 62 16 14 09 53 56 92
+16 39 05 42 96 35 31 47 55 58 88 24 00 17 54 24 36 29 85 57
+86 56 00 48 35 71 89 07 05 44 44 37 44 60 21 58 51 54 17 58
+19 80 81 68 05 94 47 69 28 73 92 13 86 52 17 77 04 89 55 40
+04 52 08 83 97 35 99 16 07 97 57 32 16 26 26 79 33 27 98 66
+88 36 68 87 57 62 20 72 03 46 33 67 46 55 12 32 63 93 53 69
+04 42 16 73 38 25 39 11 24 94 72 18 08 46 29 32 40 62 76 36
+20 69 36 41 72 30 23 88 34 62 99 69 82 67 59 85 74 04 36 16
+20 73 35 29 78 31 90 01 74 31 49 71 48 86 81 16 23 57 05 54
+01 70 54 71 83 51 54 69 16 92 33 48 61 43 52 01 89 19 67 48
+
+The product of these numbers is 26 × 63 × 78 × 14 = 1788696.
+
+What is the greatest product of four adjacent numbers in any direction (up,
+down, left, right, or diagonally) in the 20×20 grid?
+
+Answer: 70600674
+*/
+
+package main
+
+import "fmt"
+
+var nums = [][]int{
+	{8, 2, 22, 97, 38, 15, 00, 40, 00, 75, 04, 05, 07, 78, 52, 12, 50, 77, 91, 8},
+	{49, 49, 99, 40, 17, 81, 18, 57, 60, 87, 17, 40, 98, 43, 69, 48, 4, 56, 62, 0},
+	{81, 49, 31, 73, 55, 79, 14, 29, 93, 71, 40, 67, 53, 88, 30, 3, 49, 13, 36, 65},
+	{52, 70, 95, 23, 4, 60, 11, 42, 69, 24, 68, 56, 01, 32, 56, 71, 37, 02, 36, 91},
+	{22, 31, 16, 71, 51, 67, 63, 89, 41, 92, 36, 54, 22, 40, 40, 28, 66, 33, 13, 80},
+	{24, 47, 32, 60, 99, 3, 45, 02, 44, 75, 33, 53, 78, 36, 84, 20, 35, 17, 12, 50},
+	{32, 98, 81, 28, 64, 23, 67, 10, 26, 38, 40, 67, 59, 54, 70, 66, 18, 38, 64, 70},
+	{67, 26, 20, 68, 2, 62, 12, 20, 95, 63, 94, 39, 63, 8, 40, 91, 66, 49, 94, 21},
+	{24, 55, 58, 5, 66, 73, 99, 26, 97, 17, 78, 78, 96, 83, 14, 88, 34, 89, 63, 72},
+	{21, 36, 23, 9, 75, 0, 76, 44, 20, 45, 35, 14, 00, 61, 33, 97, 34, 31, 33, 95},
+	{78, 17, 53, 28, 22, 75, 31, 67, 15, 94, 3, 80, 04, 62, 16, 14, 9, 53, 56, 92},
+	{16, 39, 5, 42, 96, 35, 31, 47, 55, 58, 88, 24, 00, 17, 54, 24, 36, 29, 85, 57},
+	{86, 56, 0, 48, 35, 71, 89, 07, 05, 44, 44, 37, 44, 60, 21, 58, 51, 54, 17, 58},
+	{19, 80, 81, 68, 5, 94, 47, 69, 28, 73, 92, 13, 86, 52, 17, 77, 04, 89, 55, 40},
+	{4, 52, 8, 83, 97, 35, 99, 16, 07, 97, 57, 32, 16, 26, 26, 79, 33, 27, 98, 66},
+	{88, 36, 68, 87, 57, 62, 20, 72, 3, 46, 33, 67, 46, 55, 12, 32, 63, 93, 53, 69},
+	{4, 42, 16, 73, 38, 25, 39, 11, 24, 94, 72, 18, 8, 46, 29, 32, 40, 62, 76, 36},
+	{20, 69, 36, 41, 72, 30, 23, 88, 34, 62, 99, 69, 82, 67, 59, 85, 74, 4, 36, 16},
+	{20, 73, 35, 29, 78, 31, 90, 1, 74, 31, 49, 71, 48, 86, 81, 16, 23, 57, 05, 54},
+	{1, 70, 54, 71, 83, 51, 54, 69, 16, 92, 33, 48, 61, 43, 52, 1, 89, 19, 67, 48},
+}
+
+func main() {
+	max := 0
+	// horizontal
+	for row := 0; row < 20; row++ {
+		for col := 0; col <= 16; col++ {
+			p := nums[row][col] * nums[row][col+1] * nums[row][col+2] *
+				nums[row][col+3]
+			if p > max {
+				max = p
+			}
+		}
+	}
+	// vertical
+	for row := 0; row < 16; row++ {
+		for col := 0; col < 20; col++ {
+			p := nums[row][col] * nums[row+1][col] * nums[row+2][col] *
+				nums[row+3][col]
+			if p > max {
+				max = p
+			}
+		}
+	}
+	// right diagonal
+	for row := 0; row < 16; row++ {
+		for col := 0; col < 16; col++ {
+			p := nums[row][col] * nums[row+1][col+1] * nums[row+2][col+2] *
+				nums[row+3][col+3]
+			if p > max {
+				max = p
+			}
+		}
+	}
+	// left diagonal
+	for row := 0; row < 16; row++ {
+		for col := 3; col < 20; col++ {
+			p := nums[row][col] * nums[row+1][col-1] * nums[row+2][col-2] *
+				nums[row+3][col-3]
+			if p > max {
+				max = p
+			}
+		}
+	}
+
+	fmt.Println(max)
+}

go/src/euler/12.go

+/*
+The sequence of triangle numbers is generated by adding the natural numbers. So
+the 7th triangle number would be 1 + 2 + 3 + 4 + 5 + 6 + 7 = 28. The first ten
+terms would be:
+
+1, 3, 6, 10, 15, 21, 28, 36, 45, 55, ...
+
+Let us list the factors of the first seven triangle numbers:
+
+     1: 1
+     3: 1,3
+     6: 1,2,3,6
+    10: 1,2,5,10
+    15: 1,3,5,15
+    21: 1,3,7,21
+    28: 1,2,4,7,14,28
+
+We can see that 28 is the first triangle number to have over five divisors.
+
+What is the value of the first triangle number to have over five hundred
+divisors?
+
+Answer: 76576500
+*/
+
+package main
+
+import "fmt"
+
+func triangles() chan uint {
+	out := make(chan uint)
+	go func() {
+		t, i := uint(0), uint(1)
+		for {
+			t += i
+			out <- t
+			i++
+		}
+	}()
+
+	return out
+}
+
+func numDivisors(n uint) uint {
+	d := uint(2) // 1 and the number itself
+	for i := uint(2); i <= n/2+1; i++ {
+		if n%i == 0 {
+			d++
+		}
+	}
+
+	return d
+}
+
+func worker(in chan uint, out chan uint) {
+	for {
+		t := <-in
+		if numDivisors(t) > 500 {
+			out <- t
+		}
+	}
+}
+
+const (
+	NUM_WORKERS = 1000
+)
+
+func main() {
+	out := make(chan uint)
+	in := triangles()
+	for i := 0; i < NUM_WORKERS; i++ {
+		go worker(in, out)
+	}
+
+	t := <-out
+	fmt.Println(t)
+}

go/src/euler/13-digits.txt

+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
+44889911501440648020369068063960672322193204149535
+41503128880339536053299340368006977710650566631954
+81234880673210146739058568557934581403627822703280
+82616570773948327592232845941706525094512325230608
+22918802058777319719839450180888072429661980811197
+77158542502016545090413245809786882778948721859617
+72107838435069186155435662884062257473692284509516
+20849603980134001723930671666823555245252804609722
+53503534226472524250874054075591789781264330331690

go/src/euler/13.go

+/*
+Work out the first ten digits of the sum of the following one-hundred 50-digit numbers.
+
+[13-digits.txt]
+
+Answer: 5537376230
+*/
+
+package main
+
+import (
+	"big"
+	"bufio"
+	"fmt"
+	"os"
+)
+
+func numbers(filename string) chan *big.Int {
+	out := make(chan *big.Int)
+	file, err := os.Open(filename)
+	if err != nil {
+		panic(fmt.Sprintf("error: can't open %s - %s", filename, err))
+	}
+	reader := bufio.NewReader(file)
+	go func() {
+		for {
+			line, _, err := reader.ReadLine()
+			if err == os.EOF {
+				close(out)
+				break
+			} else if err != nil {
+				panic(fmt.Sprintf("error: %s", err))
+			}
+
+			i := big.NewInt(0)
+			i.SetString(string(line), 10)
+
+			out <- i
+		}
+	}()
+