diff options
| author | Reiner Herrmann <reiner@reiner-h.de> | 2014-08-31 20:21:45 +0200 |
|---|---|---|
| committer | Reiner Herrmann <reiner@reiner-h.de> | 2014-08-31 20:35:09 +0200 |
| commit | 95341b61b030c9e1290f3b326cb7ec584f543aea (patch) | |
| tree | 852386fa04d32eb859bca11c0eff7b5ef9e50f00 /src | |
| parent | 571164d977f91925c4c76a292f74f5f93d09ae23 (diff) | |
Diffstat (limited to 'src')
116 files changed, 0 insertions, 15835 deletions
diff --git a/src/projecteuler/001.py b/src/projecteuler/001.py deleted file mode 100644 index dd1cbc6..0000000 --- a/src/projecteuler/001.py +++ /dev/null @@ -1,7 +0,0 @@ -result = 0 - -for i in range(1,1000): - if i % 3 == 0 or i % 5 == 0: - result += i - -print result diff --git a/src/projecteuler/002.c b/src/projecteuler/002.c deleted file mode 100644 index 7a16a80..0000000 --- a/src/projecteuler/002.c +++ /dev/null @@ -1,20 +0,0 @@ -int main() -{ - int previous = 1, next = 2; - int sum = 0, tmp = 0; - - while(next <= 4000000) - { - if(!(next & 1)) - sum += next; - - tmp = next; - next += previous; - previous = tmp; - } - - printf("%ld\n", sum); - - return 0; -} - diff --git a/src/projecteuler/003.py b/src/projecteuler/003.py deleted file mode 100644 index c5b3036..0000000 --- a/src/projecteuler/003.py +++ /dev/null @@ -1,9 +0,0 @@ -number = 600851475143 - -i = 3 -while(i < number): - while(number % i == 0 and number != i): - number = number / i - i += 2 - -print number diff --git a/src/projecteuler/004.py b/src/projecteuler/004.py deleted file mode 100644 index c22b764..0000000 --- a/src/projecteuler/004.py +++ /dev/null @@ -1,23 +0,0 @@ -max = 0 - -def palindrom(number): - tmp = number - new = 0 - while(tmp > 0): - new *= 10 - new += tmp % 10 - tmp = tmp / 10 - - if new == number: - return True - else: - return False - - -for i in xrange(100,1000): - for j in xrange(100,1000): - if palindrom(i*j) and i*j > max: - max = i*j - -print max - diff --git a/src/projecteuler/005.py b/src/projecteuler/005.py deleted file mode 100644 index 8929956..0000000 --- a/src/projecteuler/005.py +++ /dev/null @@ -1,19 +0,0 @@ -divisors = [11, 12, 13, 14, 15, 16, 17, 18, 19] # only need to check those divisors - -def divisible(number): - result = True - for i in divisors: - if number % i != 0: - result = False - break - return result - -number = 20 - -while(True): - if divisible(number): - break - number += 20 - -print number - diff --git a/src/projecteuler/006.py b/src/projecteuler/006.py deleted file mode 100644 index 2010877..0000000 --- a/src/projecteuler/006.py +++ /dev/null @@ -1,13 +0,0 @@ -def sum_of_squares(limit): - result = 0 - for i in range(1, limit+1): - result += i*i - return result - -def square_of_sums(limit): - result = 0 - for i in range(1, limit+1): - result += i - return result*result - -print abs(sum_of_squares(100) - square_of_sums(100)) diff --git a/src/projecteuler/007.py b/src/projecteuler/007.py deleted file mode 100644 index 63d565a..0000000 --- a/src/projecteuler/007.py +++ /dev/null @@ -1,20 +0,0 @@ -prime_list = [2] - -def is_prime(number): - global prime_list - prime = True - for x in prime_list: - if number % x == 0: - prime = False - break - return prime - -count = 3 - -while(len(prime_list) < 10001): - if is_prime(count): - prime_list.append(count) - count += 2 - -print prime_list[-1] - diff --git a/src/projecteuler/008.py b/src/projecteuler/008.py deleted file mode 100644 index 002b958..0000000 --- a/src/projecteuler/008.py +++ /dev/null @@ -1,22 +0,0 @@ -number = 7316717653133062491922511967442657474235534919493496983520312774506326239578318016984801869478851843858615607891129494954595017379583319528532088055111254069874715852386305071569329096329522744304355766896648950445244523161731856403098711121722383113622298934233803081353362766142828064444866452387493035890729629049156044077239071381051585930796086670172427121883998797908792274921901699720888093776657273330010533678812202354218097512545405947522435258490771167055601360483958644670632441572215539753697817977846174064955149290862569321978468622482839722413756570560574902614079729686524145351004748216637048440319989000889524345065854122758866688116427171479924442928230863465674813919123162824586178664583591245665294765456828489128831426076900422421902267105562632111110937054421750694165896040807198403850962455444362981230987879927244284909188845801561660979191338754992005240636899125607176060588611646710940507754100225698315520005593572972571636269561882670428252483600823257530420752963450 - -max = 0 - -while(number > 0): - tmp = number - digit1 = tmp % 10 - tmp = tmp / 10 - digit2 = tmp % 10 - tmp = tmp / 10 - digit3 = tmp % 10 - tmp = tmp / 10 - digit4 = tmp % 10 - tmp = tmp / 10 - digit5 = tmp % 10 - tmp = tmp / 10 - number = number / 10 - product = digit1 * digit2 * digit3 * digit4 * digit5 - if product > max: - max = product - -print max diff --git a/src/projecteuler/009.py b/src/projecteuler/009.py deleted file mode 100644 index f122a7a..0000000 --- a/src/projecteuler/009.py +++ /dev/null @@ -1,7 +0,0 @@ -for a in range(1,1000): - for b in range(a, 1000): - c = 1000 - a - b - if a*a + b*b == c*c: - print a*b*c - break - diff --git a/src/projecteuler/010.py b/src/projecteuler/010.py deleted file mode 100644 index 691c7a5..0000000 --- a/src/projecteuler/010.py +++ /dev/null @@ -1,33 +0,0 @@ -limit = 2000000 - -number_list = [False] + [True]*(limit-1) -list_len = len(number_list) - -def next_prime(i): - global number_list - global list_len - x = i+1 - while(x <= list_len): - if number_list[x-1] == True: - break - x += 1 - return x - -i = 2 - -while(i*i <= list_len): - x = i*i - while(x <= list_len): - number_list[x-1] = False - x += i - i = next_prime(i) - - -sum = 0 - -for i in xrange(1, limit+1): - if number_list[i-1]: - sum += i - -print sum - diff --git a/src/projecteuler/011.py b/src/projecteuler/011.py deleted file mode 100644 index 4fff9d4..0000000 --- a/src/projecteuler/011.py +++ /dev/null @@ -1,50 +0,0 @@ - -numbers = [] - -f = open('011.txt', 'r') -for line in f: - line.rstrip('\n') - line_str = line.split(' ') - line_int = [ int(x) for x in line_str ] - numbers.append(line_int) -f.close() - - -def find_down(): - max = 0 - for i in range(0, 17): - for j in range(0, 20): - product = numbers[i][j] * numbers[i+1][j] * numbers[i+2][j] * numbers[i+3][j] - if product > max: - max = product - return max - -def find_right(): - max = 0 - for i in range(0, 20): - for j in range(0, 17): - product = numbers[i][j] * numbers[i][j+1] * numbers[i][j+2] * numbers[i][j+3] - if product > max: - max = product - return max - -def find_diagonal1(): - max = 0 - for i in range(0, 17): - for j in range(0, 17): - product = numbers[i][j] * numbers[i+1][j+1] * numbers[i+2][j+2] * numbers[i+3][j+3] - if product > max: - max = product - return max - -def find_diagonal2(): - max = 0 - for i in range(0, 17): - for j in range(0, 17): - product = numbers[i][19-j] * numbers[i+1][18-j] * numbers[i+2][17-j] * numbers[i+3][16-j] - if product > max: - max = product - return max - -print max(find_down(), find_right(), find_diagonal1(), find_diagonal2()) - diff --git a/src/projecteuler/011.txt b/src/projecteuler/011.txt deleted file mode 100644 index 4ac2451..0000000 --- a/src/projecteuler/011.txt +++ /dev/null @@ -1,20 +0,0 @@ -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 diff --git a/src/projecteuler/012.c b/src/projecteuler/012.c deleted file mode 100644 index c5cc49e..0000000 --- a/src/projecteuler/012.c +++ /dev/null @@ -1,37 +0,0 @@ -#include <math.h> - -int count_divisors(unsigned int triangle) -{ - unsigned int i; - int count = 2; - int limit = (int) ceil(sqrt(triangle)); - for(i=2; i<limit; i++) - { - if(triangle % i == 0) - { - if(triangle / i == i) - count++; - else - count += 2; - } - } - return count; -} - -int main() -{ - unsigned int triangle = 0; - int divisors = 0; - int count = 1; - - do - { - triangle += count++; - divisors = count_divisors(triangle); - } while(divisors <= 500); - - printf("%d\n", triangle); - - return 0; -} - diff --git a/src/projecteuler/013.py b/src/projecteuler/013.py deleted file mode 100644 index 9e4222c..0000000 --- a/src/projecteuler/013.py +++ /dev/null @@ -1,14 +0,0 @@ -numbers = [] - -f = open('013.txt', 'r') -for line in f: - numbers.append(int(line)) -f.close() - -sum = 0 - -for i in numbers: - sum += i - -print sum - diff --git a/src/projecteuler/013.txt b/src/projecteuler/013.txt deleted file mode 100644 index 43b568e..0000000 --- a/src/projecteuler/013.txt +++ /dev/null @@ -1,100 +0,0 @@ -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 diff --git a/src/projecteuler/014.py b/src/projecteuler/014.py deleted file mode 100644 index 7df8d53..0000000 --- a/src/projecteuler/014.py +++ /dev/null @@ -1,21 +0,0 @@ -def chain_len(n): - count = 1 - while(n != 1): - if not n & 1: - n = n / 2 - else: - n = 3*n + 1 - count += 1 - return count - -max_len = 0 -max_start = 0 - -for i in range(1, 1000000): - len = chain_len(i) - if len > max_len: - max_start = i - max_len = len - -print max_start - diff --git a/src/projecteuler/015.py b/src/projecteuler/015.py deleted file mode 100644 index 749be04..0000000 --- a/src/projecteuler/015.py +++ /dev/null @@ -1,29 +0,0 @@ - -size = 20 - -field = [ [ 1 for i in range(0, size+1) ] for i in range(0, size+1) ] - -for i in xrange(1, size+1): - for j in xrange(1, size+1): - field[i][j] = field[i][j-1] + field[i-1][j] - -print field[size][size] - - -# -# recursive solution. too slow -# -#def count_path(width, height): -# if width == 0 and height == 0: -# return 1 -# -# count = 0 -# if width > 0: # go right -# count += count_path(width-1, height) -# if height > 0: # go down -# count += count_path(width, height-1) -# -# return count -# -#print count_path(20, 20) - diff --git a/src/projecteuler/016.py b/src/projecteuler/016.py deleted file mode 100644 index d83451e..0000000 --- a/src/projecteuler/016.py +++ /dev/null @@ -1,9 +0,0 @@ -number = 1 << 1000 - -sum = 0 - -while(number > 0): - sum += number % 10 - number = number / 10 - -print sum diff --git a/src/projecteuler/017.py b/src/projecteuler/017.py deleted file mode 100644 index 8bb95cf..0000000 --- a/src/projecteuler/017.py +++ /dev/null @@ -1,31 +0,0 @@ -n1 = ["", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"] -n2 = ["ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen"] -n3 = ["twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety"] -n4 = ["hundred"] -n5 = ["thousand"] - -numbers = "" -for i in range(1, 1001): - current = "" - - if (i % 10000) / 1000 > 0: - current += n1[(i%10000)/1000] + n5[0] - if i % 1000 > 0: - current += "and" - - if (i % 1000) / 100 > 0: - current += n1[(i%1000)/100] + n4[0] - if i % 100 > 0: - current += "and" - - if i % 100 <= 9: - current += n1[i%10] - elif i % 100 <= 19: - current += n2[(i%10)-10] - else: - current += n3[(i%100)/10-2] + n1[i%10] - - numbers += current - -print len(numbers) - diff --git a/src/projecteuler/018.py b/src/projecteuler/018.py deleted file mode 100644 index d54d14c..0000000 --- a/src/projecteuler/018.py +++ /dev/null @@ -1,20 +0,0 @@ - -triangle = [] - -f = open('018.txt', 'r') -for line in f: - line.rstrip('\n') - row_str = line.split(' ') - row_int = [ int(x) for x in row_str ] - triangle.append(row_int) -f.close() - -for i in range(1, len(triangle)): - rowlen = len(triangle[i]) - triangle[i][0] += triangle[i-1][0] - triangle[i][rowlen-1] += triangle[i-1][rowlen-2] - for j in range(1, rowlen-1): - triangle[i][j] += max(triangle[i-1][j-1], triangle[i-1][j]) - -print max(triangle[-1]) - diff --git a/src/projecteuler/018.txt b/src/projecteuler/018.txt deleted file mode 100644 index e236c2f..0000000 --- a/src/projecteuler/018.txt +++ /dev/null @@ -1,15 +0,0 @@ -75 -95 64 -17 47 82 -18 35 87 10 -20 04 82 47 65 -19 01 23 75 03 34 -88 02 77 73 07 63 67 -99 65 04 28 06 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 04 68 89 53 67 30 73 16 69 87 40 31 -04 62 98 27 23 09 70 98 73 93 38 53 60 04 23 diff --git a/src/projecteuler/019.py b/src/projecteuler/019.py deleted file mode 100644 index 187b45e..0000000 --- a/src/projecteuler/019.py +++ /dev/null @@ -1,17 +0,0 @@ -days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] - -day = 7 # first sunday in 1900 -count = 0 - -for year in range(1900, 2001): - for month in range(1, 13): - if day == 1 and year >= 1901: - count += 1 - if month == 2 and year % 4 == 0: - day -= 1 - while(day <= days[month-1]): - day += 7 - day -= days[month-1] - -print count - diff --git a/src/projecteuler/020.py b/src/projecteuler/020.py deleted file mode 100644 index 451d614..0000000 --- a/src/projecteuler/020.py +++ /dev/null @@ -1,16 +0,0 @@ -def fac(limit): - result = 1 - for i in range(1, limit+1): - result *= i - return result - -number = fac(100) - -sum = 0 - -while(number > 0): - sum += number % 10 - number = number / 10 - -print sum - diff --git a/src/projecteuler/021.c b/src/projecteuler/021.c deleted file mode 100644 index e236cf3..0000000 --- a/src/projecteuler/021.c +++ /dev/null @@ -1,35 +0,0 @@ -#include <math.h> - -int sum_divisors(int number) -{ - int i; - int sum = 1; - int limit = (int) ceil(sqrt(number)); - for(i=2; i<limit; i++) - { - if(number % i == 0) - { - sum += i; - if(number / i != i) - sum += number / i; - } - } - return sum; -} - -int main() -{ - int sum = 0; - int a; - for(a=1; a<10000; a++) - { - int b = sum_divisors(a); - if(a == sum_divisors(b) && a != b) - sum += a; - } - - printf("%d\n", sum); - - return 0; -} - diff --git a/src/projecteuler/022.py b/src/projecteuler/022.py deleted file mode 100644 index d63530d..0000000 --- a/src/projecteuler/022.py +++ /dev/null @@ -1,18 +0,0 @@ -def score(name): - sum = 0 - for char in name: - sum += ord(char) - 64 - return sum - -pos = 0 -total_score = 0 - -f = open('022.txt', 'r') -for name in f: - name = name.rstrip("\n") - pos += 1 - total_score += pos * score(name) -f.close() - -print total_score - diff --git a/src/projecteuler/022.txt b/src/projecteuler/022.txt deleted file mode 100644 index 177df65..0000000 --- a/src/projecteuler/022.txt +++ /dev/null @@ -1,5163 +0,0 @@ -AARON -ABBEY -ABBIE -ABBY -ABDUL -ABE -ABEL -ABIGAIL -ABRAHAM -ABRAM -ADA -ADAH -ADALBERTO -ADALINE -ADAM -ADAN -ADDIE -ADELA -ADELAIDA -ADELAIDE -ADELE -ADELIA -ADELINA -ADELINE -ADELL -ADELLA -ADELLE -ADENA -ADINA -ADOLFO -ADOLPH -ADRIA -ADRIAN -ADRIANA -ADRIANE -ADRIANNA -ADRIANNE -ADRIEN -ADRIENE -ADRIENNE -AFTON -AGATHA -AGNES -AGNUS -AGRIPINA -AGUEDA -AGUSTIN -AGUSTINA -AHMAD -AHMED -AI -AIDA -AIDE -AIKO -AILEEN -AILENE -AIMEE -AISHA -AJA -AKIKO -AKILAH -AL -ALAINA -ALAINE -ALAN -ALANA -ALANE -ALANNA -ALAYNA -ALBA -ALBERT -ALBERTA -ALBERTHA -ALBERTINA -ALBERTINE -ALBERTO -ALBINA -ALDA -ALDEN -ALDO -ALEASE -ALEC -ALECIA -ALEEN -ALEIDA -ALEISHA -ALEJANDRA -ALEJANDRINA -ALEJANDRO -ALENA -ALENE -ALESHA -ALESHIA -ALESIA -ALESSANDRA -ALETA -ALETHA -ALETHEA -ALETHIA -ALEX -ALEXA -ALEXANDER -ALEXANDRA -ALEXANDRIA -ALEXIA -ALEXIS -ALFONSO -ALFONZO -ALFRED -ALFREDA -ALFREDIA -ALFREDO -ALI -ALIA -ALICA -ALICE -ALICIA -ALIDA -ALINA -ALINE -ALISA -ALISE -ALISHA -ALISHIA -ALISIA -ALISON -ALISSA -ALITA -ALIX -ALIZA -ALLA -ALLAN -ALLEEN -ALLEGRA -ALLEN -ALLENA -ALLENE -ALLIE -ALLINE -ALLISON -ALLYN -ALLYSON -ALMA -ALMEDA -ALMETA -ALONA -ALONSO -ALONZO -ALPHA -ALPHONSE -ALPHONSO -ALTA -ALTAGRACIA -ALTHA -ALTHEA -ALTON -ALVA -ALVARO -ALVERA -ALVERTA -ALVIN -ALVINA -ALYCE -ALYCIA -ALYSA -ALYSE -ALYSHA -ALYSIA -ALYSON -ALYSSA -AMADA -AMADO -AMAL -AMALIA -AMANDA -AMBER -AMBERLY -AMBROSE -AMEE -AMELIA -AMERICA -AMI -AMIE -AMIEE -AMINA -AMIRA -AMMIE -AMOS -AMPARO -AMY -AN -ANA -ANABEL -ANALISA -ANAMARIA -ANASTACIA -ANASTASIA -ANDERA -ANDERSON -ANDRA -ANDRE -ANDREA -ANDREAS -ANDREE -ANDRES -ANDREW -ANDRIA -ANDY -ANETTE -ANGEL -ANGELA -ANGELE -ANGELENA -ANGELES -ANGELIA -ANGELIC -ANGELICA -ANGELIKA -ANGELINA -ANGELINE -ANGELIQUE -ANGELITA -ANGELLA -ANGELO -ANGELYN -ANGIE -ANGILA -ANGLA -ANGLE -ANGLEA -ANH -ANIBAL -ANIKA -ANISA -ANISHA -ANISSA -ANITA -ANITRA -ANJA -ANJANETTE -ANJELICA -ANN -ANNA -ANNABEL -ANNABELL -ANNABELLE -ANNALEE -ANNALISA -ANNAMAE -ANNAMARIA -ANNAMARIE -ANNE -ANNELIESE -ANNELLE -ANNEMARIE -ANNETT -ANNETTA -ANNETTE -ANNICE -ANNIE -ANNIKA -ANNIS -ANNITA -ANNMARIE -ANTHONY -ANTIONE -ANTIONETTE -ANTOINE -ANTOINETTE -ANTON -ANTONE -ANTONETTA -ANTONETTE -ANTONIA -ANTONIETTA -ANTONINA -ANTONIO -ANTONY -ANTWAN -ANYA -APOLONIA -APRIL -APRYL -ARA -ARACELI -ARACELIS -ARACELY -ARCELIA -ARCHIE -ARDATH -ARDELIA -ARDELL -ARDELLA -ARDELLE -ARDEN -ARDIS -ARDITH -ARETHA -ARGELIA -ARGENTINA -ARIANA -ARIANE -ARIANNA -ARIANNE -ARICA -ARIE -ARIEL -ARIELLE -ARLA -ARLEAN -ARLEEN -ARLEN -ARLENA -ARLENE -ARLETHA -ARLETTA -ARLETTE -ARLIE -ARLINDA -ARLINE -ARLYNE -ARMAND -ARMANDA -ARMANDINA -ARMANDO -ARMIDA -ARMINDA -ARNETTA -ARNETTE -ARNITA -ARNOLD -ARNOLDO -ARNULFO -ARON -ARRON -ART -ARTHUR -ARTIE -ARTURO -ARVILLA -ASA -ASHA -ASHANTI -ASHELY -ASHLEA -ASHLEE -ASHLEIGH -ASHLEY -ASHLI -ASHLIE -ASHLY -ASHLYN -ASHTON -ASIA -ASLEY -ASSUNTA -ASTRID -ASUNCION -ATHENA -AUBREY -AUDIE -AUDRA -AUDREA -AUDREY -AUDRIA -AUDRIE -AUDRY -AUGUST -AUGUSTA -AUGUSTINA -AUGUSTINE -AUGUSTUS -AUNDREA -AURA -AUREA -AURELIA -AURELIO -AURORA -AURORE -AUSTIN -AUTUMN -AVA -AVELINA -AVERY -AVIS -AVRIL -AWILDA -AYAKO -AYANA -AYANNA -AYESHA -AZALEE -AZUCENA -AZZIE -BABARA -BABETTE -BAILEY -BAMBI -BAO -BARABARA -BARB -BARBAR -BARBARA -BARBERA -BARBIE -BARBRA -BARI -BARNEY -BARRETT -BARRIE -BARRY -BART -BARTON -BASIL -BASILIA -BEA -BEATA -BEATRICE -BEATRIS -BEATRIZ -BEAU -BEAULAH -BEBE -BECKI -BECKIE -BECKY -BEE -BELEN -BELIA -BELINDA -BELKIS -BELL -BELLA -BELLE -BELVA -BEN -BENEDICT -BENITA -BENITO -BENJAMIN -BENNETT -BENNIE -BENNY -BENTON -BERENICE -BERNA -BERNADETTE -BERNADINE -BERNARD -BERNARDA -BERNARDINA -BERNARDINE -BERNARDO -BERNEICE -BERNETTA -BERNICE -BERNIE -BERNIECE -BERNITA -BERRY -BERT -BERTA -BERTHA -BERTIE -BERTRAM -BERYL -BESS -BESSIE -BETH -BETHANIE -BETHANN -BETHANY -BETHEL -BETSEY -BETSY -BETTE -BETTIE -BETTINA -BETTY -BETTYANN -BETTYE -BEULA -BEULAH -BEV -BEVERLEE -BEVERLEY -BEVERLY -BIANCA -BIBI -BILL -BILLI -BILLIE -BILLY -BILLYE -BIRDIE -BIRGIT -BLAINE -BLAIR -BLAKE -BLANCA -BLANCH -BLANCHE -BLONDELL -BLOSSOM -BLYTHE -BO -BOB -BOBBI -BOBBIE -BOBBY -BOBBYE -BOBETTE -BOK -BONG -BONITA -BONNIE -BONNY -BOOKER -BORIS -BOYCE -BOYD -BRAD -BRADFORD -BRADLEY -BRADLY -BRADY -BRAIN -BRANDA -BRANDE -BRANDEE -BRANDEN -BRANDI -BRANDIE -BRANDON -BRANDY -BRANT -BREANA -BREANN -BREANNA -BREANNE -BREE -BRENDA -BRENDAN -BRENDON -BRENNA -BRENT -BRENTON -BRET -BRETT -BRIAN -BRIANA -BRIANNA -BRIANNE -BRICE -BRIDGET -BRIDGETT -BRIDGETTE -BRIGETTE -BRIGID -BRIGIDA -BRIGITTE -BRINDA -BRITANY -BRITNEY -BRITNI -BRITT -BRITTA -BRITTANEY -BRITTANI -BRITTANIE -BRITTANY -BRITTENY -BRITTNEY -BRITTNI -BRITTNY -BROCK -BRODERICK -BRONWYN -BROOK -BROOKE -BROOKS -BRUCE -BRUNA -BRUNILDA -BRUNO -BRYAN -BRYANNA -BRYANT -BRYCE -BRYNN -BRYON -BUCK -BUD -BUDDY -BUENA -BUFFY -BUFORD -BULA -BULAH -BUNNY -BURL -BURMA -BURT -BURTON -BUSTER -BYRON -CAITLIN -CAITLYN -CALANDRA -CALEB -CALISTA -CALLIE -CALVIN -CAMELIA -CAMELLIA -CAMERON -CAMI -CAMIE -CAMILA -CAMILLA -CAMILLE -CAMMIE -CAMMY -CANDACE -CANDANCE -CANDELARIA -CANDI -CANDICE -CANDIDA -CANDIE -CANDIS -CANDRA -CANDY -CANDYCE -CAPRICE -CARA -CAREN -CAREY -CARI -CARIDAD -CARIE -CARIN -CARINA -CARISA -CARISSA -CARITA -CARL -CARLA -CARLEE -CARLEEN -CARLENA -CARLENE -CARLETTA -CARLEY -CARLI -CARLIE -CARLINE -CARLITA -CARLO -CARLOS -CARLOTA -CARLOTTA -CARLTON -CARLY -CARLYN -CARMA -CARMAN -CARMEL -CARMELA -CARMELIA -CARMELINA -CARMELITA -CARMELLA -CARMELO -CARMEN -CARMINA -CARMINE -CARMON -CAROL -CAROLA -CAROLANN -CAROLE -CAROLEE -CAROLIN -CAROLINA -CAROLINE -CAROLL -CAROLYN -CAROLYNE -CAROLYNN -CARON -CAROYLN -CARRI -CARRIE -CARROL -CARROLL -CARRY -CARSON -CARTER -CARY -CARYL -CARYLON -CARYN -CASANDRA -CASEY -CASIE -CASIMIRA -CASSANDRA -CASSAUNDRA -CASSEY -CASSI -CASSIDY -CASSIE -CASSONDRA -CASSY -CATALINA -CATARINA -CATERINA -CATHARINE -CATHERIN -CATHERINA -CATHERINE -CATHERN -CATHERYN -CATHEY -CATHI -CATHIE -CATHLEEN -CATHRINE -CATHRYN -CATHY -CATINA -CATRICE -CATRINA -CAYLA -CECELIA -CECIL -CECILA -CECILE -CECILIA -CECILLE -CECILY -CEDRIC -CEDRICK -CELENA -CELESTA -CELESTE -CELESTINA -CELESTINE -CELIA -CELINA -CELINDA -CELINE -CELSA -CEOLA -CESAR -CHAD -CHADWICK -CHAE -CHAN -CHANA -CHANCE -CHANDA -CHANDRA -CHANEL -CHANELL -CHANELLE -CHANG -CHANTAL -CHANTAY -CHANTE -CHANTEL -CHANTELL -CHANTELLE -CHARA -CHARIS -CHARISE -CHARISSA -CHARISSE -CHARITA -CHARITY -CHARLA -CHARLEEN -CHARLENA -CHARLENE -CHARLES -CHARLESETTA -CHARLETTE -CHARLEY -CHARLIE -CHARLINE -CHARLOTT -CHARLOTTE -CHARLSIE -CHARLYN -CHARMAIN -CHARMAINE -CHAROLETTE -CHAS -CHASE -CHASIDY -CHASITY -CHASSIDY -CHASTITY -CHAU -CHAUNCEY -CHAYA -CHELSEA -CHELSEY -CHELSIE -CHER -CHERE -CHEREE -CHERELLE -CHERI -CHERIE -CHERILYN -CHERISE -CHERISH -CHERLY -CHERLYN -CHERRI -CHERRIE -CHERRY -CHERRYL -CHERY -CHERYL -CHERYLE -CHERYLL -CHESTER -CHET -CHEYENNE -CHI -CHIA -CHIEKO -CHIN -CHINA -CHING -CHIQUITA -CHLOE -CHONG -CHRIS -CHRISSY -CHRISTA -CHRISTAL -CHRISTEEN -CHRISTEL -CHRISTEN -CHRISTENA -CHRISTENE -CHRISTI -CHRISTIA -CHRISTIAN -CHRISTIANA -CHRISTIANE -CHRISTIE -CHRISTIN -CHRISTINA -CHRISTINE -CHRISTINIA -CHRISTOPER -CHRISTOPHER -CHRISTY -CHRYSTAL -CHU -CHUCK -CHUN -CHUNG -CIARA -CICELY -CIERA -CIERRA -CINDA -CINDERELLA -CINDI -CINDIE -CINDY -CINTHIA -CIRA -CLAIR -CLAIRE -CLARA -CLARE -CLARENCE -CLARETHA -CLARETTA -CLARIBEL -CLARICE -CLARINDA -CLARINE -CLARIS -CLARISA -CLARISSA -CLARITA -CLARK -CLASSIE -CLAUD -CLAUDE -CLAUDETTE -CLAUDIA -CLAUDIE -CLAUDINE -CLAUDIO -CLAY -CLAYTON -CLELIA -CLEMENCIA -CLEMENT -CLEMENTE -CLEMENTINA -CLEMENTINE -CLEMMIE -CLEO -CLEOPATRA -CLEORA -CLEOTILDE -CLETA -CLETUS -CLEVELAND -CLIFF -CLIFFORD -CLIFTON -CLINT -CLINTON -CLORA -CLORINDA -CLOTILDE -CLYDE -CODI -CODY -COLBY -COLE -COLEEN -COLEMAN -COLENE -COLETTA -COLETTE -COLIN -COLLEEN -COLLEN -COLLENE -COLLETTE -COLLIN -COLTON -COLUMBUS -CONCEPCION -CONCEPTION -CONCETTA -CONCHA -CONCHITA -CONNIE -CONRAD -CONSTANCE -CONSUELA -CONSUELO -CONTESSA -CORA -CORAL -CORALEE -CORALIE -CORAZON -CORDELIA -CORDELL -CORDIA -CORDIE -COREEN -CORENE -CORETTA -COREY -CORI -CORIE -CORINA -CORINE -CORINNA -CORINNE -CORLISS -CORNELIA -CORNELIUS -CORNELL -CORRIE -CORRIN -CORRINA -CORRINE -CORRINNE -CORTEZ -CORTNEY -CORY -COURTNEY -COY -CRAIG -CREOLA -CRIS -CRISELDA -CRISSY -CRISTA -CRISTAL -CRISTEN -CRISTI -CRISTIE -CRISTIN -CRISTINA -CRISTINE -CRISTOBAL -CRISTOPHER -CRISTY -CRUZ -CRYSTA -CRYSTAL -CRYSTLE -CUC -CURT -CURTIS -CYNDI -CYNDY -CYNTHIA -CYRIL -CYRSTAL -CYRUS -CYTHIA -DACIA -DAGMAR -DAGNY -DAHLIA -DAINA -DAINE -DAISEY -DAISY -DAKOTA -DALE -DALENE -DALIA -DALILA -DALLAS -DALTON -DAMARIS -DAMIAN -DAMIEN -DAMION -DAMON -DAN -DANA -DANAE -DANE -DANELLE -DANETTE -DANI -DANIA -DANIAL -DANICA -DANIEL -DANIELA -DANIELE -DANIELL -DANIELLA -DANIELLE -DANIKA -DANILLE -DANILO -DANITA -DANN -DANNA -DANNETTE -DANNIE -DANNIELLE -DANNY -DANTE -DANUTA -DANYEL -DANYELL -DANYELLE -DAPHINE -DAPHNE -DARA -DARBY -DARCEL -DARCEY -DARCI -DARCIE -DARCY -DARELL -DAREN -DARIA -DARIN -DARIO -DARIUS -DARLA -DARLEEN -DARLENA -DARLENE -DARLINE -DARNELL -DARON -DARREL -DARRELL -DARREN -DARRICK -DARRIN -DARRON -DARRYL -DARWIN -DARYL -DAVE -DAVID -DAVIDA -DAVINA -DAVIS -DAWN -DAWNA -DAWNE -DAYLE -DAYNA -DAYSI -DEADRA -DEAN -DEANA -DEANDRA -DEANDRE -DEANDREA -DEANE -DEANGELO -DEANN -DEANNA -DEANNE -DEB -DEBBI -DEBBIE -DEBBRA -DEBBY -DEBERA -DEBI -DEBORA -DEBORAH -DEBRA -DEBRAH -DEBROAH -DEDE -DEDRA -DEE -DEEANN -DEEANNA -DEEDEE -DEEDRA -DEENA -DEETTA -DEIDRA -DEIDRE -DEIRDRE -DEJA -DEL -DELAINE -DELANA -DELBERT -DELCIE -DELENA -DELFINA -DELIA -DELICIA -DELILA -DELILAH -DELINDA -DELISA -DELL -DELLA -DELMA -DELMAR -DELMER -DELMY -DELOIS -DELOISE -DELORA -DELORAS -DELORES -DELORIS -DELORSE -DELPHA -DELPHIA -DELPHINE -DELSIE -DELTA -DEMARCUS -DEMETRA -DEMETRIA -DEMETRICE -DEMETRIUS -DENA -DENAE -DENEEN -DENESE -DENICE -DENIS -DENISE -DENISHA -DENISSE -DENITA -DENNA -DENNIS -DENNISE -DENNY -DENVER -DENYSE -DEON -DEONNA -DEREK -DERICK -DERRICK -DESHAWN -DESIRAE -DESIRE -DESIREE -DESMOND -DESPINA -DESSIE -DESTINY -DETRA -DEVIN -DEVON -DEVONA -DEVORA -DEVORAH -DEWAYNE -DEWEY -DEWITT -DEXTER -DIA -DIAMOND -DIAN -DIANA -DIANE -DIANN -DIANNA -DIANNE -DICK -DIEDRA -DIEDRE -DIEGO -DIERDRE -DIGNA -DILLON -DIMPLE -DINA -DINAH -DINO -DINORAH -DION -DIONE -DIONNA -DIONNE -DIRK -DIVINA -DIXIE -DODIE -DOLLIE -DOLLY -DOLORES -DOLORIS -DOMENIC -DOMENICA -DOMINGA -DOMINGO -DOMINIC -DOMINICA -DOMINICK -DOMINIQUE -DOMINQUE -DOMITILA -DOMONIQUE -DON -DONA -DONALD -DONELLA -DONETTA -DONETTE -DONG -DONITA -DONN -DONNA -DONNELL -DONNETTA -DONNETTE -DONNIE -DONNY -DONOVAN -DONTE -DONYA -DORA -DORATHY -DORCAS -DOREATHA -DOREEN -DORENE -DORETHA -DORETHEA -DORETTA -DORI -DORIA -DORIAN -DORIE -DORINDA -DORINE -DORIS -DORLA -DOROTHA -DOROTHEA -DOROTHY -DORRIS -DORSEY -DORTHA -DORTHEA -DORTHEY -DORTHY -DOT -DOTTIE -DOTTY -DOUG -DOUGLAS -DOUGLASS -DOVIE -DOYLE -DREAMA -DREMA -DREW -DRUCILLA -DRUSILLA -DUANE -DUDLEY -DULCE -DULCIE -DUNCAN -DUNG -DUSTI -DUSTIN -DUSTY -DWAIN -DWANA -DWAYNE -DWIGHT -DYAN -DYLAN -EARL -EARLE -EARLEAN -EARLEEN -EARLENE -EARLIE -EARLINE -EARNEST -EARNESTINE -EARTHA -EASTER -EBONI -EBONIE -EBONY -ECHO -ED -EDA -EDDA -EDDIE -EDDY -EDELMIRA -EDEN -EDGAR -EDGARDO -EDIE -EDISON -EDITH -EDMOND -EDMUND -EDMUNDO -EDNA -EDRA -EDRIS -EDUARDO -EDWARD -EDWARDO -EDWIN -EDWINA -EDYTH -EDYTHE -EFFIE -EFRAIN -EFREN -EHTEL -EILEEN -EILENE -ELA -ELADIA -ELAINA -ELAINE -ELANA -ELANE -ELANOR -ELAYNE -ELBA -ELBERT -ELDA -ELDEN -ELDON -ELDORA -ELDRIDGE -ELEANOR -ELEANORA -ELEANORE -ELEASE -ELENA -ELENE -ELENI -ELENOR -ELENORA -ELENORE -ELEONOR -ELEONORA -ELEONORE -ELFREDA -ELFRIEDA -ELFRIEDE -ELI -ELIA -ELIANA -ELIAS -ELICIA -ELIDA -ELIDIA -ELIJAH -ELIN -ELINA -ELINOR -ELINORE -ELISA -ELISABETH -ELISE -ELISEO -ELISHA -ELISSA -ELIZ -ELIZA -ELIZABET -ELIZABETH -ELIZBETH -ELIZEBETH -ELKE -ELLA -ELLAMAE -ELLAN -ELLEN -ELLENA -ELLI -ELLIE -ELLIOT -ELLIOTT -ELLIS -ELLSWORTH -ELLY -ELLYN -ELMA -ELMER -ELMIRA -ELMO -ELNA -ELNORA -ELODIA -ELOIS -ELOISA -ELOISE -ELOUISE -ELOY -ELROY -ELSA -ELSE -ELSIE -ELSY -ELTON -ELVA -ELVERA -ELVIA -ELVIE -ELVIN -ELVINA -ELVIRA -ELVIS -ELWANDA -ELWOOD -ELYSE -ELZA -EMA -EMANUEL -EMELDA -EMELIA -EMELINA -EMELINE -EMELY -EMERALD -EMERITA -EMERSON -EMERY -EMIKO -EMIL -EMILE -EMILEE -EMILIA -EMILIE -EMILIO -EMILY -EMMA -EMMALINE -EMMANUEL -EMMETT -EMMIE -EMMITT -EMMY -EMOGENE -EMORY -ENA -ENDA -ENEDINA -ENEIDA -ENID -ENOCH -ENOLA -ENRIQUE -ENRIQUETA -EPIFANIA -ERA -ERASMO -ERIC -ERICA -ERICH -ERICK -ERICKA -ERIK -ERIKA -ERIN -ERINN -ERLENE -ERLINDA -ERLINE -ERMA -ERMELINDA -ERMINIA -ERNA -ERNEST -ERNESTINA -ERNESTINE -ERNESTO -ERNIE -ERROL -ERVIN -ERWIN -ERYN -ESMERALDA -ESPERANZA -ESSIE -ESTA -ESTEBAN -ESTEFANA -ESTELA -ESTELL -ESTELLA -ESTELLE -ESTER -ESTHER -ESTRELLA -ETHA -ETHAN -ETHEL -ETHELENE -ETHELYN -ETHYL -ETSUKO -ETTA -ETTIE -EUFEMIA -EUGENA -EUGENE -EUGENIA -EUGENIE -EUGENIO -EULA -EULAH -EULALIA -EUN -EUNA -EUNICE -EURA -EUSEBIA -EUSEBIO -EUSTOLIA -EVA -EVALYN -EVAN -EVANGELINA -EVANGELINE -EVE -EVELIA -EVELIN -EVELINA -EVELINE -EVELYN -EVELYNE -EVELYNN -EVERETT -EVERETTE -EVETTE -EVIA -EVIE -EVITA -EVON -EVONNE -EWA -EXIE -EZEKIEL -EZEQUIEL -EZRA -FABIAN -FABIOLA -FAE -FAIRY -FAITH -FALLON -FANNIE -FANNY -FARAH -FARRAH -FATIMA -FATIMAH -FAUSTINA -FAUSTINO -FAUSTO -FAVIOLA -FAWN -FAY -FAYE -FE -FEDERICO -FELECIA -FELICA -FELICE -FELICIA -FELICIDAD -FELICITA -FELICITAS -FELIPA -FELIPE -FELISA -FELISHA -FELIX -FELTON -FERDINAND -FERMIN -FERMINA -FERN -FERNANDA -FERNANDE -FERNANDO -FERNE -FIDEL -FIDELA -FIDELIA -FILIBERTO -FILOMENA -FIONA -FLAVIA -FLETA -FLETCHER -FLO -FLOR -FLORA -FLORANCE -FLORENCE -FLORENCIA -FLORENCIO -FLORENE -FLORENTINA -FLORENTINO -FLORETTA -FLORIA -FLORIDA -FLORINDA -FLORINE -FLORRIE -FLOSSIE -FLOY -FLOYD -FONDA -FOREST -FORREST -FOSTER -FRAN -FRANCE -FRANCENE -FRANCES -FRANCESCA -FRANCESCO -FRANCHESCA -FRANCIE -FRANCINA -FRANCINE -FRANCIS -FRANCISCA -FRANCISCO -FRANCOISE -FRANK -FRANKIE -FRANKLIN -FRANKLYN -FRANSISCA -FRED -FREDA -FREDDA -FREDDIE -FREDDY -FREDERIC -FREDERICA -FREDERICK -FREDERICKA -FREDIA -FREDRIC -FREDRICK -FREDRICKA -FREEDA -FREEMAN -FREIDA -FRIDA -FRIEDA -FRITZ -FUMIKO -GABRIEL -GABRIELA -GABRIELE -GABRIELLA -GABRIELLE -GAIL -GALA -GALE -GALEN -GALINA -GARFIELD -GARLAND -GARNET -GARNETT -GARRET -GARRETT -GARRY -GARTH -GARY -GASTON -GAVIN -GAY -GAYE -GAYLA -GAYLE -GAYLENE -GAYLORD -GAYNELL -GAYNELLE -GEARLDINE -GEMA -GEMMA -GENA -GENARO -GENE -GENESIS -GENEVA -GENEVIE -GENEVIEVE -GENEVIVE -GENIA -GENIE -GENNA -GENNIE -GENNY -GENOVEVA -GEOFFREY -GEORGANN -GEORGE -GEORGEANN -GEORGEANNA -GEORGENE -GEORGETTA -GEORGETTE -GEORGIA -GEORGIANA -GEORGIANN -GEORGIANNA -GEORGIANNE -GEORGIE -GEORGINA -GEORGINE -GERALD -GERALDINE -GERALDO -GERALYN -GERARD -GERARDO -GERDA -GERI -GERMAINE -GERMAN -GERRI -GERRY -GERTHA -GERTIE -GERTRUD -GERTRUDE -GERTRUDIS -GERTUDE -GHISLAINE -GIA -GIANNA -GIDGET -GIGI -GIL -GILBERT -GILBERTE -GILBERTO -GILDA -GILLIAN -GILMA -GINA -GINETTE -GINGER -GINNY -GINO -GIOVANNA -GIOVANNI -GISELA -GISELE -GISELLE -GITA -GIUSEPPE -GIUSEPPINA -GLADIS -GLADY -GLADYS -GLAYDS -GLEN -GLENDA -GLENDORA -GLENN -GLENNA -GLENNIE -GLENNIS -GLINDA -GLORIA -GLORY -GLYNDA -GLYNIS -GOLDA -GOLDEN -GOLDIE -GONZALO -GORDON -GRACE -GRACIA -GRACIE -GRACIELA -GRADY -GRAHAM -GRAIG -GRANT -GRANVILLE -GRAYCE -GRAZYNA -GREG -GREGG -GREGORIA -GREGORIO -GREGORY -GRETA -GRETCHEN -GRETTA -GRICELDA -GRISEL -GRISELDA -GROVER -GUADALUPE -GUDRUN -GUILLERMINA -GUILLERMO -GUS -GUSSIE -GUSTAVO -GUY -GWEN -GWENDA -GWENDOLYN -GWENN -GWYN -GWYNETH -HA -HAE -HAI -HAILEY -HAL -HALEY -HALINA -HALLEY -HALLIE -HAN -HANA -HANG -HANH -HANK -HANNA -HANNAH -HANNELORE -HANS -HARLAN -HARLAND -HARLEY -HARMONY -HAROLD -HARRIET -HARRIETT -HARRIETTE -HARRIS -HARRISON -HARRY -HARVEY -HASSAN -HASSIE -HATTIE -HAYDEE -HAYDEN -HAYLEY -HAYWOOD -HAZEL -HEATH -HEATHER -HECTOR -HEDWIG -HEDY -HEE -HEIDE -HEIDI -HEIDY -HEIKE -HELAINE -HELEN -HELENA -HELENE -HELGA -HELLEN -HENRIETTA -HENRIETTE -HENRY -HERB -HERBERT -HERIBERTO -HERLINDA -HERMA -HERMAN -HERMELINDA -HERMILA -HERMINA -HERMINE -HERMINIA -HERSCHEL -HERSHEL -HERTA -HERTHA -HESTER -HETTIE -HIEDI -HIEN -HILARIA -HILARIO -HILARY -HILDA -HILDE -HILDEGARD -HILDEGARDE -HILDRED -HILLARY -HILMA -HILTON -HIPOLITO -HIRAM -HIROKO -HISAKO -HOA -HOBERT -HOLLEY -HOLLI -HOLLIE -HOLLIS -HOLLY -HOMER -HONEY -HONG -HOPE -HORACE -HORACIO -HORTENCIA -HORTENSE -HORTENSIA -HOSEA -HOUSTON -HOWARD -HOYT -HSIU -HUBERT -HUE -HUEY -HUGH -HUGO -HUI -HULDA -HUMBERTO -HUNG -HUNTER -HUONG -HWA -HYACINTH -HYE -HYMAN -HYO -HYON -HYUN -IAN -IDA -IDALIA -IDELL -IDELLA -IESHA -IGNACIA -IGNACIO -IKE -ILA -ILANA -ILDA -ILEANA -ILEEN -ILENE -ILIANA -ILLA -ILONA -ILSE -ILUMINADA -IMA -IMELDA -IMOGENE -IN -INA -INDIA -INDIRA -INELL -INES -INEZ -INGA -INGE -INGEBORG -INGER -INGRID -INOCENCIA -IOLA -IONA -IONE -IRA -IRAIDA -IRENA -IRENE -IRINA -IRIS -IRISH -IRMA -IRMGARD -IRVIN -IRVING -IRWIN -ISA -ISAAC -ISABEL -ISABELL -ISABELLA -ISABELLE -ISADORA -ISAIAH -ISAIAS -ISAURA -ISELA -ISIAH -ISIDRA -ISIDRO -ISIS -ISMAEL -ISOBEL -ISRAEL -ISREAL -ISSAC -IVA -IVAN -IVANA -IVELISSE -IVETTE -IVEY -IVONNE -IVORY -IVY -IZETTA -IZOLA -JA -JACALYN -JACELYN -JACINDA -JACINTA -JACINTO -JACK -JACKELINE -JACKELYN -JACKI -JACKIE -JACKLYN -JACKQUELINE -JACKSON -JACLYN -JACOB -JACQUALINE -JACQUE -JACQUELIN -JACQUELINE -JACQUELYN -JACQUELYNE -JACQUELYNN -JACQUES -JACQUETTA -JACQUI -JACQUIE -JACQUILINE -JACQULINE -JACQULYN -JADA -JADE -JADWIGA -JAE -JAIME -JAIMEE -JAIMIE -JAKE -JALEESA -JALISA -JAMA -JAMAAL -JAMAL -JAMAR -JAME -JAMEE -JAMEL -JAMES -JAMEY -JAMI -JAMIE -JAMIKA -JAMILA -JAMISON -JAMMIE -JAN -JANA -JANAE -JANAY -JANE -JANEAN -JANEE -JANEEN -JANEL -JANELL -JANELLA -JANELLE -JANENE -JANESSA -JANET -JANETH -JANETT -JANETTA -JANETTE -JANEY -JANI -JANICE -JANIE -JANIECE -JANINA -JANINE -JANIS -JANISE -JANITA -JANN -JANNA -JANNET -JANNETTE -JANNIE -JANUARY -JANYCE -JAQUELINE -JAQUELYN -JARED -JAROD -JARRED -JARRETT -JARROD -JARVIS -JASMIN -JASMINE -JASON -JASPER -JAUNITA -JAVIER -JAY -JAYE -JAYME -JAYMIE -JAYNA -JAYNE -JAYSON -JAZMIN -JAZMINE -JC -JEAN -JEANA -JEANE -JEANELLE -JEANENE -JEANETT -JEANETTA -JEANETTE -JEANICE -JEANIE -JEANINE -JEANMARIE -JEANNA -JEANNE -JEANNETTA -JEANNETTE -JEANNIE -JEANNINE -JED -JEFF -JEFFEREY -JEFFERSON -JEFFERY -JEFFIE -JEFFREY -JEFFRY -JEN -JENA -JENAE -JENE -JENEE -JENELL -JENELLE -JENETTE -JENEVA -JENI -JENICE -JENIFER -JENIFFER -JENINE -JENISE -JENNA -JENNEFER -JENNELL -JENNETTE -JENNI -JENNIE -JENNIFER -JENNIFFER -JENNINE -JENNY -JERALD -JERALDINE -JERAMY -JERE -JEREMIAH -JEREMY -JERI -JERICA -JERILYN -JERLENE -JERMAINE -JEROLD -JEROME -JEROMY -JERRELL -JERRI -JERRICA -JERRIE -JERROD -JERROLD -JERRY -JESENIA -JESICA -JESS -JESSE -JESSENIA -JESSI -JESSIA -JESSICA -JESSIE -JESSIKA -JESTINE -JESUS -JESUSA -JESUSITA -JETTA -JETTIE -JEWEL -JEWELL -JI -JILL -JILLIAN -JIM -JIMMIE -JIMMY -JIN -JINA -JINNY -JO -JOAN -JOANA -JOANE -JOANIE -JOANN -JOANNA -JOANNE -JOANNIE -JOAQUIN -JOAQUINA -JOCELYN -JODEE -JODI -JODIE -JODY -JOE -JOEANN -JOEL -JOELLA -JOELLE -JOELLEN -JOESPH -JOETTA -JOETTE -JOEY -JOHANA -JOHANNA -JOHANNE -JOHN -JOHNA -JOHNATHAN -JOHNATHON -JOHNETTA -JOHNETTE -JOHNIE -JOHNNA -JOHNNIE -JOHNNY -JOHNSIE -JOHNSON -JOI -JOIE -JOLANDA -JOLEEN -JOLENE -JOLIE -JOLINE -JOLYN -JOLYNN -JON -JONA -JONAH -JONAS -JONATHAN -JONATHON -JONE -JONELL -JONELLE -JONG -JONI -JONIE -JONNA -JONNIE -JORDAN -JORDON -JORGE -JOSE -JOSEF -JOSEFA -JOSEFINA -JOSEFINE -JOSELYN -JOSEPH -JOSEPHINA -JOSEPHINE -JOSETTE -JOSH -JOSHUA -JOSIAH -JOSIE -JOSLYN -JOSPEH -JOSPHINE -JOSUE -JOVAN -JOVITA -JOY -JOYA -JOYCE -JOYCELYN -JOYE -JUAN -JUANA -JUANITA -JUDE -JUDI -JUDIE -JUDITH -JUDSON -JUDY -JULE -JULEE -JULENE -JULES -JULI -JULIA -JULIAN -JULIANA -JULIANE -JULIANN -JULIANNA -JULIANNE -JULIE -JULIEANN -JULIENNE -JULIET -JULIETA -JULIETTA -JULIETTE -JULIO -JULISSA -JULIUS -JUNE -JUNG -JUNIE -JUNIOR -JUNITA -JUNKO -JUSTA -JUSTIN -JUSTINA -JUSTINE -JUTTA -KA -KACEY -KACI -KACIE -KACY -KAI -KAILA -KAITLIN -KAITLYN -KALA -KALEIGH -KALEY -KALI -KALLIE -KALYN -KAM -KAMALA -KAMI -KAMILAH -KANDACE -KANDI -KANDICE -KANDIS -KANDRA -KANDY -KANESHA -KANISHA -KARA -KARAN -KAREEM -KAREEN -KAREN -KARENA -KAREY -KARI -KARIE -KARIMA -KARIN -KARINA -KARINE -KARISA -KARISSA -KARL -KARLA -KARLEEN -KARLENE -KARLY -KARLYN -KARMA -KARMEN -KAROL -KAROLE -KAROLINE -KAROLYN -KARON -KARREN -KARRI -KARRIE -KARRY -KARY -KARYL -KARYN -KASANDRA -KASEY -KASHA -KASI -KASIE -KASSANDRA -KASSIE -KATE -KATELIN -KATELYN -KATELYNN -KATERINE -KATHALEEN -KATHARINA -KATHARINE -KATHARYN -KATHE -KATHELEEN -KATHERIN -KATHERINA -KATHERINE -KATHERN -KATHERYN -KATHEY -KATHI -KATHIE -KATHLEEN -KATHLENE -KATHLINE -KATHLYN -KATHRIN -KATHRINE -KATHRYN -KATHRYNE -KATHY -KATHYRN -KATI -KATIA -KATIE -KATINA -KATLYN -KATRICE -KATRINA -KATTIE -KATY -KAY -KAYCE -KAYCEE -KAYE -KAYLA -KAYLEE -KAYLEEN -KAYLEIGH -KAYLENE -KAZUKO -KECIA -KEELEY -KEELY -KEENA -KEENAN -KEESHA -KEIKO -KEILA -KEIRA -KEISHA -KEITH -KEITHA -KELI -KELLE -KELLEE -KELLEY -KELLI -KELLIE -KELLY -KELLYE -KELSEY -KELSI -KELSIE -KELVIN -KEMBERLY -KEN -KENA -KENDA -KENDAL -KENDALL -KENDRA -KENDRICK -KENETH -KENIA -KENISHA -KENNA -KENNETH -KENNITH -KENNY -KENT -KENTON -KENYA -KENYATTA -KENYETTA -KERA -KEREN -KERI -KERMIT -KERRI -KERRIE -KERRY -KERSTIN -KESHA -KESHIA -KETURAH -KEVA -KEVEN -KEVIN -KHADIJAH -KHALILAH -KIA -KIANA -KIARA -KIERA -KIERSTEN -KIESHA -KIETH -KILEY -KIM -KIMBER -KIMBERELY -KIMBERLEE -KIMBERLEY -KIMBERLI -KIMBERLIE -KIMBERLY -KIMBERY -KIMBRA -KIMI -KIMIKO -KINA -KINDRA -KING -KIP -KIRA -KIRBY -KIRK -KIRSTEN -KIRSTIE -KIRSTIN -KISHA -KIT -KITTIE -KITTY -KIYOKO -KIZZIE -KIZZY -KLARA -KOREY -KORI -KORTNEY -KORY -KOURTNEY -KRAIG -KRIS -KRISHNA -KRISSY -KRISTA -KRISTAL -KRISTAN -KRISTEEN -KRISTEL -KRISTEN -KRISTI -KRISTIAN -KRISTIE -KRISTIN -KRISTINA -KRISTINE -KRISTLE -KRISTOFER -KRISTOPHER -KRISTY -KRISTYN -KRYSTA -KRYSTAL -KRYSTEN -KRYSTIN -KRYSTINA -KRYSTLE -KRYSTYNA -KUM -KURT -KURTIS -KYLA -KYLE -KYLEE -KYLIE -KYM -KYMBERLY -KYOKO -KYONG -KYRA -KYUNG -LACEY -LACHELLE -LACI -LACIE -LACRESHA -LACY -LADAWN -LADONNA -LADY -LAEL -LAHOMA -LAI -LAILA -LAINE -LAJUANA -LAKEESHA -LAKEISHA -LAKENDRA -LAKENYA -LAKESHA -LAKESHIA -LAKIA -LAKIESHA -LAKISHA -LAKITA -LALA -LAMAR -LAMONICA -LAMONT -LAN -LANA -LANCE -LANDON -LANE -LANELL -LANELLE -LANETTE -LANG -LANI -LANIE -LANITA -LANNIE -LANNY -LANORA -LAQUANDA -LAQUITA -LARA -LARAE -LARAINE -LAREE -LARHONDA -LARISA -LARISSA -LARITA -LARONDA -LARRAINE -LARRY -LARUE -LASANDRA -LASHANDA -LASHANDRA -LASHAUN -LASHAUNDA -LASHAWN -LASHAWNA -LASHAWNDA -LASHAY -LASHELL -LASHON -LASHONDA -LASHUNDA -LASONYA -LATANYA -LATARSHA -LATASHA -LATASHIA -LATESHA -LATIA -LATICIA -LATINA -LATISHA -LATONIA -LATONYA -LATORIA -LATOSHA -LATOYA -LATOYIA -LATRICE -LATRICIA -LATRINA -LATRISHA -LAUNA -LAURA -LAURALEE -LAURAN -LAURE -LAUREEN -LAUREL -LAUREN -LAURENA -LAURENCE -LAURENE -LAURETTA -LAURETTE -LAURI -LAURICE -LAURIE -LAURINDA -LAURINE -LAURYN -LAVADA -LAVELLE -LAVENIA -LAVERA -LAVERN -LAVERNA -LAVERNE -LAVETA -LAVETTE -LAVINA -LAVINIA -LAVON -LAVONA -LAVONDA -LAVONE -LAVONIA -LAVONNA -LAVONNE -LAWANA -LAWANDA -LAWANNA -LAWERENCE -LAWRENCE -LAYLA -LAYNE -LAZARO -LE -LEA -LEAH -LEAN -LEANA -LEANDRA -LEANDRO -LEANN -LEANNA -LEANNE -LEANORA -LEATHA -LEATRICE -LECIA -LEDA -LEE -LEEANN -LEEANNA -LEEANNE -LEENA -LEESA -LEIA -LEIDA -LEIF -LEIGH -LEIGHA -LEIGHANN -LEILA -LEILANI -LEISA -LEISHA -LEKISHA -LELA -LELAH -LELAND -LELIA -LEMUEL -LEN -LENA -LENARD -LENITA -LENNA -LENNIE -LENNY -LENORA -LENORE -LEO -LEOLA -LEOMA -LEON -LEONA -LEONARD -LEONARDA -LEONARDO -LEONE -LEONEL -LEONIA -LEONIDA -LEONIE -LEONILA -LEONOR -LEONORA -LEONORE -LEONTINE -LEOPOLDO -LEORA -LEOTA -LERA -LEROY -LES -LESA -LESHA -LESIA -LESLEE -LESLEY -LESLI -LESLIE -LESSIE -LESTER -LETA -LETHA -LETICIA -LETISHA -LETITIA -LETTIE -LETTY -LEVI -LEWIS -LEXIE -LEZLIE -LI -LIA -LIANA -LIANE -LIANNE -LIBBIE -LIBBY -LIBERTY -LIBRADA -LIDA -LIDIA -LIEN -LIESELOTTE -LIGIA -LILA -LILI -LILIA -LILIAN -LILIANA -LILLA -LILLI -LILLIA -LILLIAM -LILLIAN -LILLIANA -LILLIE -LILLY -LILY -LIN -LINA -LINCOLN -LINDA -LINDSAY -LINDSEY -LINDSY -LINDY -LINETTE -LING -LINH -LINN -LINNEA -LINNIE -LINO -LINSEY -LINWOOD -LIONEL -LISA -LISABETH -LISANDRA -LISBETH -LISE -LISETTE -LISHA -LISSA -LISSETTE -LITA -LIVIA -LIZ -LIZA -LIZABETH -LIZBETH -LIZETH -LIZETTE -LIZZETTE -LIZZIE -LLOYD -LOAN -LOGAN -LOIDA -LOIS -LOISE -LOLA -LOLITA -LOMA -LON -LONA -LONDA -LONG -LONI -LONNA -LONNIE -LONNY -LORA -LORAINE -LORALEE -LORE -LOREAN -LOREE -LOREEN -LORELEI -LOREN -LORENA -LORENE -LORENZA -LORENZO -LORETA -LORETTA -LORETTE -LORI -LORIA -LORIANN -LORIE -LORILEE -LORINA -LORINDA -LORINE -LORIS -LORITA -LORNA -LORRAINE -LORRETTA -LORRI -LORRIANE -LORRIE -LORRINE -LORY -LOTTIE -LOU -LOUANN -LOUANNE -LOUELLA -LOUETTA -LOUIE -LOUIS -LOUISA -LOUISE -LOURA -LOURDES -LOURIE -LOUVENIA -LOVE -LOVELLA -LOVETTA -LOVIE -LOWELL -LOYCE -LOYD -LU -LUANA -LUANN -LUANNA -LUANNE -LUBA -LUCAS -LUCI -LUCIA -LUCIANA -LUCIANO -LUCIE -LUCIEN -LUCIENNE -LUCILA -LUCILE -LUCILLA -LUCILLE -LUCINA -LUCINDA -LUCIO -LUCIUS -LUCRECIA -LUCRETIA -LUCY -LUDIE -LUDIVINA -LUE -LUELLA -LUETTA -LUIGI -LUIS -LUISA -LUISE -LUKE -LULA -LULU -LUNA -LUPE -LUPITA -LURA -LURLENE -LURLINE -LUTHER -LUVENIA -LUZ -LYDA -LYDIA -LYLA -LYLE -LYMAN -LYN -LYNDA -LYNDIA -LYNDON -LYNDSAY -LYNDSEY -LYNELL -LYNELLE -LYNETTA -LYNETTE -LYNN -LYNNA -LYNNE -LYNNETTE -LYNSEY -LYNWOOD -MA -MABEL -MABELLE -MABLE -MAC -MACHELLE -MACIE -MACK -MACKENZIE -MACY -MADALENE -MADALINE -MADALYN -MADDIE -MADELAINE -MADELEINE -MADELENE -MADELINE -MADELYN -MADGE -MADIE -MADISON -MADLYN -MADONNA -MAE -MAEGAN -MAFALDA -MAGALI -MAGALY -MAGAN -MAGARET -MAGDA -MAGDALEN -MAGDALENA -MAGDALENE -MAGEN -MAGGIE -MAGNOLIA -MAHALIA -MAI -MAIA -MAIDA -MAILE -MAIRA -MAIRE -MAISHA -MAISIE -MAJOR -MAJORIE -MAKEDA -MALCOLM -MALCOM -MALENA -MALIA -MALIK -MALIKA -MALINDA -MALISA -MALISSA -MALKA -MALLIE -MALLORY -MALORIE -MALVINA -MAMIE -MAMMIE -MAN -MANA -MANDA -MANDI -MANDIE -MANDY -MANIE -MANUAL -MANUEL -MANUELA -MANY -MAO -MAPLE -MARA -MARAGARET -MARAGRET -MARANDA -MARC -MARCEL -MARCELA -MARCELENE -MARCELINA -MARCELINE -MARCELINO -MARCELL -MARCELLA -MARCELLE -MARCELLUS -MARCELO -MARCENE -MARCHELLE -MARCI -MARCIA -MARCIE -MARCO -MARCOS -MARCUS -MARCY -MARDELL -MAREN -MARG -MARGARET -MARGARETA -MARGARETE -MARGARETT -MARGARETTA -MARGARETTE -MARGARITA -MARGARITE -MARGARITO -MARGART -MARGE -MARGENE -MARGERET -MARGERT -MARGERY -MARGET -MARGHERITA -MARGIE -MARGIT -MARGO -MARGORIE -MARGOT -MARGRET -MARGRETT -MARGUERITA -MARGUERITE -MARGURITE -MARGY -MARHTA -MARI -MARIA -MARIAH -MARIAM -MARIAN -MARIANA -MARIANELA -MARIANN -MARIANNA -MARIANNE -MARIANO -MARIBEL -MARIBETH -MARICA -MARICELA -MARICRUZ -MARIE -MARIEL -MARIELA -MARIELLA -MARIELLE -MARIETTA -MARIETTE -MARIKO -MARILEE -MARILOU -MARILU -MARILYN -MARILYNN -MARIN -MARINA -MARINDA -MARINE -MARIO -MARION -MARIS -MARISA -MARISELA -MARISHA -MARISOL -MARISSA -MARITA -MARITZA -MARIVEL -MARJORIE -MARJORY -MARK -MARKETTA -MARKITA -MARKUS -MARLA -MARLANA -MARLEEN -MARLEN -MARLENA -MARLENE -MARLIN -MARLINE -MARLO -MARLON -MARLYN -MARLYS -MARNA -MARNI -MARNIE -MARQUERITE -MARQUETTA -MARQUIS -MARQUITA -MARQUITTA -MARRY -MARSHA -MARSHALL -MARTA -MARTH -MARTHA -MARTI -MARTIN -MARTINA -MARTINE -MARTY -MARVA -MARVEL -MARVELLA -MARVIN -MARVIS -MARX -MARY -MARYA -MARYALICE -MARYAM -MARYANN -MARYANNA -MARYANNE -MARYBELLE -MARYBETH -MARYELLEN -MARYETTA -MARYJANE -MARYJO -MARYLAND -MARYLEE -MARYLIN -MARYLN -MARYLOU -MARYLOUISE -MARYLYN -MARYLYNN -MARYROSE -MASAKO -MASON -MATHA -MATHEW -MATHILDA -MATHILDE -MATILDA -MATILDE -MATT -MATTHEW -MATTIE -MAUD -MAUDE -MAUDIE -MAURA -MAUREEN -MAURICE -MAURICIO -MAURINE -MAURITA -MAURO -MAVIS -MAX -MAXIE -MAXIMA -MAXIMINA -MAXIMO -MAXINE -MAXWELL -MAY -MAYA -MAYBELL -MAYBELLE -MAYE -MAYME -MAYNARD -MAYOLA -MAYRA -MAZIE -MCKENZIE -MCKINLEY -MEAGAN -MEAGHAN -MECHELLE -MEDA -MEE -MEG -MEGAN -MEGGAN -MEGHAN -MEGHANN -MEI -MEL -MELAINE -MELANI -MELANIA -MELANIE -MELANY -MELBA -MELDA -MELIA -MELIDA -MELINA -MELINDA -MELISA -MELISSA -MELISSIA -MELITA -MELLIE -MELLISA -MELLISSA -MELODEE -MELODI -MELODIE -MELODY -MELONIE -MELONY -MELVA -MELVIN -MELVINA -MELYNDA -MENDY -MERCEDES -MERCEDEZ -MERCY -MEREDITH -MERI -MERIDETH -MERIDITH -MERILYN -MERISSA -MERLE -MERLENE -MERLIN -MERLYN -MERNA -MERRI -MERRIE -MERRILEE -MERRILL -MERRY -MERTIE -MERVIN -MERYL -META -MI -MIA -MICA -MICAELA -MICAH -MICHA -MICHAEL -MICHAELA -MICHAELE -MICHAL -MICHALE -MICHEAL -MICHEL -MICHELE -MICHELINA -MICHELINE -MICHELL -MICHELLE -MICHIKO -MICKEY -MICKI -MICKIE -MIESHA -MIGDALIA -MIGNON -MIGUEL -MIGUELINA -MIKA -MIKAELA -MIKE -MIKEL -MIKI -MIKKI -MILA -MILAGRO -MILAGROS -MILAN -MILDA -MILDRED -MILES -MILFORD -MILISSA -MILLARD -MILLICENT -MILLIE -MILLY -MILO -MILTON -MIMI -MIN -MINA -MINDA -MINDI -MINDY -MINERVA -MING -MINH -MINNA -MINNIE -MINTA -MIQUEL -MIRA -MIRANDA -MIREILLE -MIRELLA -MIREYA -MIRIAM -MIRIAN -MIRNA -MIRTA -MIRTHA -MISHA -MISS -MISSY -MISTI -MISTIE -MISTY -MITCH -MITCHEL -MITCHELL -MITSUE -MITSUKO -MITTIE -MITZI -MITZIE -MIYOKO -MODESTA -MODESTO -MOHAMED -MOHAMMAD -MOHAMMED -MOIRA -MOISES -MOLLIE -MOLLY -MONA -MONET -MONICA -MONIKA -MONIQUE -MONNIE -MONROE -MONSERRATE -MONTE -MONTY -MOON -MORA -MORGAN -MORIAH -MORRIS -MORTON -MOSE -MOSES -MOSHE -MOZELL -MOZELLA -MOZELLE -MUI -MUOI -MURIEL -MURRAY -MY -MYESHA -MYLES -MYONG -MYRA -MYRIAM -MYRL -MYRLE -MYRNA -MYRON -MYRTA -MYRTICE -MYRTIE -MYRTIS -MYRTLE -MYUNG -NA -NADA -NADENE -NADIA -NADINE -NAIDA -NAKESHA -NAKIA -NAKISHA -NAKITA -NAM -NAN -NANA -NANCEE -NANCEY -NANCI -NANCIE -NANCY -NANETTE -NANNETTE -NANNIE -NAOMA -NAOMI -NAPOLEON -NARCISA -NATACHA -NATALIA -NATALIE -NATALYA -NATASHA -NATASHIA -NATHALIE -NATHAN -NATHANAEL -NATHANIAL -NATHANIEL -NATISHA -NATIVIDAD -NATOSHA -NEAL -NECOLE -NED -NEDA -NEDRA -NEELY -NEIDA -NEIL -NELDA -NELIA -NELIDA -NELL -NELLA -NELLE -NELLIE -NELLY -NELSON -NENA -NENITA -NEOMA -NEOMI -NEREIDA -NERISSA -NERY -NESTOR -NETA -NETTIE -NEVA -NEVADA -NEVILLE -NEWTON -NGA -NGAN -NGOC -NGUYET -NIA -NICHELLE -NICHOL -NICHOLAS -NICHOLE -NICHOLLE -NICK -NICKI -NICKIE -NICKOLAS -NICKOLE -NICKY -NICOL -NICOLA -NICOLAS -NICOLASA -NICOLE -NICOLETTE -NICOLLE -NIDA -NIDIA -NIESHA -NIEVES -NIGEL -NIKI -NIKIA -NIKITA -NIKKI -NIKOLE -NILA -NILDA -NILSA -NINA -NINFA -NISHA -NITA -NOAH -NOBLE -NOBUKO -NOE -NOEL -NOELIA -NOELLA -NOELLE -NOEMI -NOHEMI -NOLA -NOLAN -NOMA -NONA -NORA -NORAH -NORBERT -NORBERTO -NOREEN -NORENE -NORIKO -NORINE -NORMA -NORMAN -NORMAND -NORRIS -NOVA -NOVELLA -NU -NUBIA -NUMBERS -NYDIA -NYLA -OBDULIA -OCIE -OCTAVIA -OCTAVIO -ODA -ODELIA -ODELL -ODESSA -ODETTE -ODILIA -ODIS -OFELIA -OK -OLA -OLEN -OLENE -OLETA -OLEVIA -OLGA -OLIMPIA -OLIN -OLINDA -OLIVA -OLIVE -OLIVER -OLIVIA -OLLIE -OLYMPIA -OMA -OMAR -OMEGA -OMER -ONA -ONEIDA -ONIE -ONITA -OPAL -OPHELIA -ORA -ORALEE -ORALIA -OREN -ORETHA -ORLANDO -ORPHA -ORVAL -ORVILLE -OSCAR -OSSIE -OSVALDO -OSWALDO -OTELIA -OTHA -OTILIA -OTIS -OTTO -OUIDA -OWEN -OZELL -OZELLA -OZIE -PA -PABLO -PAGE -PAIGE -PALMA -PALMER -PALMIRA -PAM -PAMALA -PAMELA -PAMELIA -PAMELLA -PAMILA -PAMULA -PANDORA -PANSY -PAOLA -PARIS -PARKER -PARTHENIA -PARTICIA -PASQUALE -PASTY -PAT -PATIENCE -PATRIA -PATRICA -PATRICE -PATRICIA -PATRICK -PATRINA -PATSY -PATTI -PATTIE -PATTY -PAUL -PAULA -PAULENE -PAULETTA -PAULETTE -PAULINA -PAULINE -PAULITA -PAZ -PEARL -PEARLE -PEARLENE -PEARLIE -PEARLINE -PEARLY -PEDRO -PEG -PEGGIE -PEGGY -PEI -PENELOPE -PENNEY -PENNI -PENNIE -PENNY -PERCY -PERLA -PERRY -PETE -PETER -PETRA -PETRINA -PETRONILA -PHEBE -PHIL -PHILIP -PHILLIP -PHILLIS -PHILOMENA -PHOEBE -PHUNG -PHUONG -PHYLICIA -PHYLIS -PHYLISS -PHYLLIS -PIA -PIEDAD -PIERRE -PILAR -PING -PINKIE -PIPER -POK -POLLY -PORFIRIO -PORSCHE -PORSHA -PORTER -PORTIA -PRECIOUS -PRESTON -PRICILLA -PRINCE -PRINCESS -PRISCILA -PRISCILLA -PROVIDENCIA -PRUDENCE -PURA -QIANA -QUEEN -QUEENIE -QUENTIN -QUIANA -QUINCY -QUINN -QUINTIN -QUINTON -QUYEN -RACHAEL -RACHAL -RACHEAL -RACHEL -RACHELE -RACHELL -RACHELLE -RACQUEL -RAE -RAEANN -RAELENE -RAFAEL -RAFAELA -RAGUEL -RAINA -RAISA -RALEIGH -RALPH -RAMIRO -RAMON -RAMONA -RAMONITA -RANA -RANAE -RANDA -RANDAL -RANDALL -RANDEE -RANDELL -RANDI -RANDOLPH -RANDY -RANEE -RAPHAEL -RAQUEL -RASHAD -RASHEEDA -RASHIDA -RAUL -RAVEN -RAY -RAYE -RAYFORD -RAYLENE -RAYMON -RAYMOND -RAYMONDE -RAYMUNDO -RAYNA -REA -REAGAN -REANNA -REATHA -REBA -REBBECA -REBBECCA -REBECA -REBECCA -REBECKA -REBEKAH -REDA -REED -REENA -REFUGIA -REFUGIO -REGAN -REGENA -REGENIA -REGGIE -REGINA -REGINALD -REGINE -REGINIA -REID -REIKO -REINA -REINALDO -REITA -REMA -REMEDIOS -REMONA -RENA -RENAE -RENALDO -RENATA -RENATE -RENATO -RENAY -RENDA -RENE -RENEA -RENEE -RENETTA -RENITA -RENNA -RESSIE -RETA -RETHA -RETTA -REUBEN -REVA -REX -REY -REYES -REYNA -REYNALDA -REYNALDO -RHEA -RHEBA -RHETT -RHIANNON -RHODA -RHONA -RHONDA -RIA -RICARDA -RICARDO -RICH -RICHARD -RICHELLE -RICHIE -RICK -RICKEY -RICKI -RICKIE -RICKY -RICO -RIGOBERTO -RIKKI -RILEY -RIMA -RINA -RISA -RITA -RIVA -RIVKA -ROB -ROBBI -ROBBIE -ROBBIN -ROBBY -ROBBYN -ROBENA -ROBERT -ROBERTA -ROBERTO -ROBIN -ROBT -ROBYN -ROCCO -ROCHEL -ROCHELL -ROCHELLE -ROCIO -ROCKY -ROD -RODERICK -RODGER -RODNEY -RODOLFO -RODRICK -RODRIGO -ROGELIO -ROGER -ROLAND -ROLANDA -ROLANDE -ROLANDO -ROLF -ROLLAND -ROMA -ROMAINE -ROMAN -ROMANA -ROMELIA -ROMEO -ROMONA -RON -RONA -RONALD -RONDA -RONI -RONNA -RONNI -RONNIE -RONNY -ROOSEVELT -RORY -ROSA -ROSALBA -ROSALEE -ROSALIA -ROSALIE -ROSALINA -ROSALIND -ROSALINDA -ROSALINE -ROSALVA -ROSALYN -ROSAMARIA -ROSAMOND -ROSANA -ROSANN -ROSANNA -ROSANNE -ROSARIA -ROSARIO -ROSAURA -ROSCOE -ROSE -ROSEANN -ROSEANNA -ROSEANNE -ROSELEE -ROSELIA -ROSELINE -ROSELLA -ROSELLE -ROSELYN -ROSEMARIE -ROSEMARY -ROSENA -ROSENDA -ROSENDO -ROSETTA -ROSETTE -ROSIA -ROSIE -ROSINA -ROSIO -ROSITA -ROSLYN -ROSS -ROSSANA -ROSSIE -ROSY -ROWENA -ROXANA -ROXANE -ROXANN -ROXANNA -ROXANNE -ROXIE -ROXY -ROY -ROYAL -ROYCE -ROZANNE -ROZELLA -RUBEN -RUBI -RUBIE -RUBIN -RUBY -RUBYE -RUDOLF -RUDOLPH -RUDY -RUEBEN -RUFINA -RUFUS -RUPERT -RUSS -RUSSEL -RUSSELL -RUSTY -RUTH -RUTHA -RUTHANN -RUTHANNE -RUTHE -RUTHIE -RYAN -RYANN -SABINA -SABINE -SABRA -SABRINA -SACHA -SACHIKO -SADE -SADIE -SADYE -SAGE -SAL -SALENA -SALINA -SALLEY -SALLIE -SALLY -SALOME -SALVADOR -SALVATORE -SAM -SAMANTHA -SAMARA -SAMATHA -SAMELLA -SAMIRA -SAMMIE -SAMMY -SAMUAL -SAMUEL -SANA -SANDA -SANDEE -SANDI -SANDIE -SANDRA -SANDY -SANFORD -SANG -SANJUANA -SANJUANITA -SANORA -SANTA -SANTANA -SANTIAGO -SANTINA -SANTO -SANTOS -SARA -SARAH -SARAI -SARAN -SARI -SARINA -SARITA -SASHA -SATURNINA -SAU -SAUL -SAUNDRA -SAVANNA -SAVANNAH -SCARLET -SCARLETT -SCOT -SCOTT -SCOTTIE -SCOTTY -SEAN -SEASON -SEBASTIAN -SEBRINA -SEE -SEEMA -SELENA -SELENE -SELINA -SELMA -SENA -SENAIDA -SEPTEMBER -SERAFINA -SERENA -SERGIO -SERINA -SERITA -SETH -SETSUKO -SEYMOUR -SHA -SHAD -SHAE -SHAINA -SHAKIA -SHAKIRA -SHAKITA -SHALA -SHALANDA -SHALON -SHALONDA -SHAMEKA -SHAMIKA -SHAN -SHANA -SHANAE -SHANDA -SHANDI -SHANDRA -SHANE -SHANEKA -SHANEL -SHANELL -SHANELLE -SHANI -SHANICE -SHANIKA -SHANIQUA -SHANITA -SHANNA -SHANNAN -SHANNON -SHANON -SHANTA -SHANTAE -SHANTAY -SHANTE -SHANTEL -SHANTELL -SHANTELLE -SHANTI -SHAQUANA -SHAQUITA -SHARA -SHARAN -SHARDA -SHAREE -SHARELL -SHAREN -SHARI -SHARICE -SHARIE -SHARIKA -SHARILYN -SHARITA -SHARLA -SHARLEEN -SHARLENE -SHARMAINE -SHAROLYN -SHARON -SHARONDA -SHARRI -SHARRON -SHARYL -SHARYN -SHASTA -SHAUN -SHAUNA -SHAUNDA -SHAUNNA -SHAUNTA -SHAUNTE -SHAVON -SHAVONDA -SHAVONNE -SHAWANA -SHAWANDA -SHAWANNA -SHAWN -SHAWNA -SHAWNDA -SHAWNEE -SHAWNNA -SHAWNTA -SHAY -SHAYLA -SHAYNA -SHAYNE -SHEA -SHEBA -SHEENA -SHEILA -SHEILAH -SHELA -SHELBA -SHELBY -SHELDON -SHELIA -SHELLA -SHELLEY -SHELLI -SHELLIE -SHELLY -SHELTON -SHEMEKA -SHEMIKA -SHENA -SHENIKA -SHENITA -SHENNA -SHERA -SHEREE -SHERELL -SHERI -SHERICE -SHERIDAN -SHERIE -SHERIKA -SHERILL -SHERILYN -SHERISE -SHERITA -SHERLENE -SHERLEY -SHERLY -SHERLYN -SHERMAN -SHERON -SHERRELL -SHERRI -SHERRIE -SHERRIL -SHERRILL -SHERRON -SHERRY -SHERRYL -SHERWOOD -SHERY -SHERYL -SHERYLL -SHIELA -SHILA -SHILOH -SHIN -SHIRA -SHIRELY -SHIRL -SHIRLEE -SHIRLEEN -SHIRLENE -SHIRLEY -SHIRLY -SHIZUE -SHIZUKO -SHON -SHONA -SHONDA -SHONDRA -SHONNA -SHONTA -SHOSHANA -SHU -SHYLA -SIBYL -SID -SIDNEY -SIERRA -SIGNE -SIGRID -SILAS -SILVA -SILVANA -SILVIA -SIMA -SIMON -SIMONA -SIMONE -SIMONNE -SINA -SINDY -SIOBHAN -SIRENA -SIU -SIXTA -SKYE -SLYVIA -SO -SOCORRO -SOFIA -SOILA -SOL -SOLANGE -SOLEDAD -SOLOMON -SOMER -SOMMER -SON -SONA -SONDRA -SONG -SONIA -SONJA -SONNY -SONYA -SOO -SOOK -SOON -SOPHIA -SOPHIE -SORAYA -SPARKLE -SPENCER -SPRING -STACEE -STACEY -STACI -STACIA -STACIE -STACY -STAN -STANFORD -STANLEY -STANTON -STAR -STARLA -STARR -STASIA -STEFAN -STEFANI -STEFANIA -STEFANIE -STEFANY -STEFFANIE -STELLA -STEPANIE -STEPHAINE -STEPHAN -STEPHANE -STEPHANI -STEPHANIA -STEPHANIE -STEPHANY -STEPHEN -STEPHENIE -STEPHINE -STEPHNIE -STERLING -STEVE -STEVEN -STEVIE -STEWART -STORMY -STUART -SU -SUANNE -SUDIE -SUE -SUEANN -SUELLEN -SUK -SULEMA -SUMIKO -SUMMER -SUN -SUNDAY -SUNG -SUNNI -SUNNY -SUNSHINE -SUSAN -SUSANA -SUSANN -SUSANNA -SUSANNAH -SUSANNE -SUSIE -SUSY -SUZAN -SUZANN -SUZANNA -SUZANNE -SUZETTE -SUZI -SUZIE -SUZY -SVETLANA -SYBIL -SYBLE -SYDNEY -SYLVESTER -SYLVIA -SYLVIE -SYNTHIA -SYREETA -TA -TABATHA -TABETHA -TABITHA -TAD -TAI -TAINA -TAISHA -TAJUANA -TAKAKO -TAKISHA -TALIA -TALISHA -TALITHA -TAM -TAMA -TAMALA -TAMAR -TAMARA -TAMATHA -TAMBRA -TAMEIKA -TAMEKA -TAMEKIA -TAMELA -TAMERA -TAMESHA -TAMI -TAMICA -TAMIE -TAMIKA -TAMIKO -TAMISHA -TAMMARA -TAMMERA -TAMMI -TAMMIE -TAMMY -TAMRA -TANA -TANDRA -TANDY -TANEKA -TANESHA -TANGELA -TANIA -TANIKA -TANISHA -TANJA -TANNA -TANNER -TANYA -TARA -TARAH -TAREN -TARI -TARRA -TARSHA -TARYN -TASHA -TASHIA -TASHINA -TASIA -TATIANA -TATUM -TATYANA -TAUNYA -TAWANA -TAWANDA -TAWANNA -TAWNA -TAWNY -TAWNYA -TAYLOR -TAYNA -TED -TEDDY -TEENA -TEGAN -TEISHA -TELMA -TEMEKA -TEMIKA -TEMPIE -TEMPLE -TENA -TENESHA -TENISHA -TENNIE -TENNILLE -TEODORA -TEODORO -TEOFILA -TEQUILA -TERA -TEREASA -TERENCE -TERESA -TERESE -TERESIA -TERESITA -TERESSA -TERI -TERICA -TERINA -TERISA -TERRA -TERRANCE -TERRELL -TERRENCE -TERRESA -TERRI -TERRIE -TERRILYN -TERRY -TESHA -TESS -TESSA -TESSIE -THAD -THADDEUS -THALIA -THANH -THAO -THEA -THEDA -THELMA -THEO -THEODORA -THEODORE -THEOLA -THERESA -THERESE -THERESIA -THERESSA -THERON -THERSA -THI -THOMAS -THOMASENA -THOMASINA -THOMASINE -THORA -THRESA -THU -THURMAN -THUY -TIA -TIANA -TIANNA -TIARA -TIEN -TIERA -TIERRA -TIESHA -TIFANY -TIFFANEY -TIFFANI -TIFFANIE -TIFFANY -TIFFINY -TIJUANA -TILDA -TILLIE -TIM -TIMIKA -TIMMY -TIMOTHY -TINA -TINISHA -TINY -TISA -TISH -TISHA -TITUS -TOBI -TOBIAS -TOBIE -TOBY -TOCCARA -TOD -TODD -TOI -TOM -TOMAS -TOMASA -TOMEKA -TOMI -TOMIKA -TOMIKO -TOMMIE -TOMMY -TOMMYE -TOMOKO -TONA -TONDA -TONETTE -TONEY -TONI -TONIA -TONIE -TONISHA -TONITA -TONJA -TONY -TONYA -TORA -TORI -TORIE -TORRI -TORRIE -TORY -TOSHA -TOSHIA -TOSHIKO -TOVA -TOWANDA -TOYA -TRACEE -TRACEY -TRACI -TRACIE -TRACY -TRAN -TRANG -TRAVIS -TREASA -TREENA -TRENA -TRENT -TRENTON -TRESA -TRESSA -TRESSIE -TREVA -TREVOR -TREY -TRICIA -TRINA -TRINH -TRINIDAD -TRINITY -TRISH -TRISHA -TRISTA -TRISTAN -TROY -TRUDI -TRUDIE -TRUDY -TRULA -TRUMAN -TU -TUAN -TULA -TUYET -TWANA -TWANDA -TWANNA -TWILA -TWYLA -TY -TYESHA -TYISHA -TYLER -TYNISHA -TYRA -TYREE -TYRELL -TYRON -TYRONE -TYSON -ULA -ULRIKE -ULYSSES -UN -UNA -URSULA -USHA -UTE -VADA -VAL -VALARIE -VALDA -VALENCIA -VALENE -VALENTIN -VALENTINA -VALENTINE -VALERI -VALERIA -VALERIE -VALERY -VALLIE -VALORIE -VALRIE -VAN -VANCE -VANDA -VANESA -VANESSA -VANETTA -VANIA -VANITA -VANNA -VANNESA -VANNESSA -VASHTI -VASILIKI -VAUGHN -VEDA -VELDA -VELIA -VELLA -VELMA -VELVA -VELVET -VENA -VENESSA -VENETTA -VENICE -VENITA -VENNIE -VENUS -VEOLA -VERA -VERDA -VERDELL -VERDIE -VERENA -VERGIE -VERLA -VERLENE -VERLIE -VERLINE -VERN -VERNA -VERNELL -VERNETTA -VERNIA -VERNICE -VERNIE -VERNITA -VERNON -VERONA -VERONICA -VERONIKA -VERONIQUE -VERSIE -VERTIE -VESTA -VETA -VI -VICENTA -VICENTE -VICKEY -VICKI -VICKIE -VICKY -VICTOR -VICTORIA -VICTORINA -VIDA -VIKI -VIKKI -VILMA -VINA -VINCE -VINCENT -VINCENZA -VINCENZO -VINITA -VINNIE -VIOLA -VIOLET -VIOLETA -VIOLETTE -VIRGEN -VIRGIE -VIRGIL -VIRGILIO -VIRGINA -VIRGINIA -VITA -VITO -VIVA -VIVAN -VIVIAN -VIVIANA -VIVIEN -VIVIENNE -VON -VONCILE -VONDA -VONNIE -WADE -WAI -WALDO -WALKER -WALLACE -WALLY -WALTER -WALTON -WALTRAUD -WAN -WANDA -WANETA -WANETTA -WANITA -WARD -WARNER -WARREN -WAVA -WAYLON -WAYNE -WEI -WELDON -WEN -WENDELL -WENDI -WENDIE -WENDOLYN -WENDY -WENONA -WERNER -WES -WESLEY -WESTON -WHITLEY -WHITNEY -WILBER -WILBERT -WILBUR -WILBURN -WILDA -WILEY -WILFORD -WILFRED -WILFREDO -WILHELMINA -WILHEMINA -WILL -WILLA -WILLARD -WILLENA -WILLENE -WILLETTA -WILLETTE -WILLIA -WILLIAM -WILLIAMS -WILLIAN -WILLIE -WILLIEMAE -WILLIS -WILLODEAN -WILLOW -WILLY -WILMA -WILMER -WILSON -WILTON -WINDY -WINFORD -WINFRED -WINIFRED -WINNIE -WINNIFRED -WINONA -WINSTON -WINTER -WM -WONDA -WOODROW -WYATT -WYNELL -WYNONA -XAVIER -XENIA -XIAO -XIOMARA -XOCHITL -XUAN -YADIRA -YAEKO -YAEL -YAHAIRA -YAJAIRA -YAN -YANG -YANIRA -YASMIN -YASMINE -YASUKO -YEE -YELENA -YEN -YER -YESENIA -YESSENIA -YETTA -YEVETTE -YI -YING -YOKO -YOLANDA -YOLANDE -YOLANDO -YOLONDA -YON -YONG -YOSHIE -YOSHIKO -YOULANDA -YOUNG -YU -YUETTE -YUK -YUKI -YUKIKO -YUKO -YULANDA -YUN -YUNG -YUONNE -YURI -YURIKO -YVETTE -YVONE -YVONNE -ZACHARIAH -ZACHARY -ZACHERY -ZACK -ZACKARY -ZADA -ZAIDA -ZANA -ZANDRA -ZANE -ZELDA -ZELLA -ZELMA -ZENA -ZENAIDA -ZENIA -ZENOBIA -ZETTA -ZINA -ZITA -ZOE -ZOFIA -ZOILA -ZOLA -ZONA -ZONIA -ZORA -ZORAIDA -ZULA -ZULEMA -ZULMA diff --git a/src/projecteuler/023.py b/src/projecteuler/023.py deleted file mode 100644 index d109302..0000000 --- a/src/projecteuler/023.py +++ /dev/null @@ -1,37 +0,0 @@ -import math - -limit = 28123 -numbers = set() - -def abundant(n): - divisors = set() - divisors.add(1) - for i in xrange(2, int(math.sqrt(n))+1): - if n % i == 0: - divisors.add(i) - divisors.add(n/i) - - if sum(divisors) > n: - return True - else: - return False - -def sum_abundant(n): - for i in numbers: - if n-i in numbers: - return True - return False - - -for n in xrange(2, limit+1): - if abundant(n): - numbers.add(n) - -sum = 0 - -for n in xrange(limit+1): - if not sum_abundant(n): - sum += n - -print sum - diff --git a/src/projecteuler/024.py b/src/projecteuler/024.py deleted file mode 100644 index 47546a5..0000000 --- a/src/projecteuler/024.py +++ /dev/null @@ -1,24 +0,0 @@ - -import sys - -digits = [ x for x in range(0, 10) ] - -limit = 1000000 - -count = 0 - -def permutate(start, end): - global permutations, count - if len(end) == 1: - count += 1 - if count == limit: - print start+end - sys.exit(0) - return - for i in range(0, len(end)): - s = start + [end[i]] - e = end[:i] + end[i+1:] - permutate(s, e) - -permutate([], digits) - diff --git a/src/projecteuler/025.py b/src/projecteuler/025.py deleted file mode 100644 index b69bddc..0000000 --- a/src/projecteuler/025.py +++ /dev/null @@ -1,19 +0,0 @@ -import math - -def digits(number): - return math.ceil(math.log10(number+1)) - -prev = 1 -next = 1 -count = 2 - -while(True): - if(digits(next) >= 1000): - break - tmp = next - next += prev - prev = tmp - count += 1 - -print count - diff --git a/src/projecteuler/026.py b/src/projecteuler/026.py deleted file mode 100644 index 0ddd85a..0000000 --- a/src/projecteuler/026.py +++ /dev/null @@ -1,33 +0,0 @@ - -def get_cycle(d): - remainders = [] - x = 1 - while x > 0: - if x < d: - x *= 10 - continue - - z = x / d - x = (x % d) * 10 - if x in remainders: # cycle detected - pos = 0 - for i in range(len(remainders)): - if remainders[i] == x: - return len(remainders) - i - break - remainders += [x] - - return 0 # no cycle - - -max_remainder = 0 -result = 0 - -for i in range(1, 1000): - r = get_cycle(i) - if r > max_remainder: - max_remainder = r - result = i - -print result - diff --git a/src/projecteuler/027.py b/src/projecteuler/027.py deleted file mode 100644 index 563d6af..0000000 --- a/src/projecteuler/027.py +++ /dev/null @@ -1,25 +0,0 @@ -from common import sieve - -primes = sieve(10000).primes() - -def count_primes(a, b): - n = 0 - while True: - p = n**2 + a*n + b - if p not in primes: - break - n += 1 - return n - -max_count = 0 -max_pair = (0, 0) - -for a in xrange(-999, 1000): - for b in xrange(-999, 1000): - c = count_primes(a, b) - if c > max_count: - max_count = c - max_pair = (a, b) - -print max_pair[0] * max_pair[1] - diff --git a/src/projecteuler/028.py b/src/projecteuler/028.py deleted file mode 100644 index 3ec1ff5..0000000 --- a/src/projecteuler/028.py +++ /dev/null @@ -1,13 +0,0 @@ - -width = 1001 -max_level = (width-1)/2 - -last = sum = 1 - -for level in range(1, max_level+1): - add = 2*level - sum += (last+add) + (last+2*add) + (last+3*add) + (last+4*add) - last = last+4*add - -print sum - diff --git a/src/projecteuler/029.py b/src/projecteuler/029.py deleted file mode 100644 index 0740911..0000000 --- a/src/projecteuler/029.py +++ /dev/null @@ -1,9 +0,0 @@ - -x = [] - -for i in range(2, 101): - for j in range(2, 101): - x.append(i**j) - -print len(set(x)) - diff --git a/src/projecteuler/030.c b/src/projecteuler/030.c deleted file mode 100644 index 5d044e9..0000000 --- a/src/projecteuler/030.c +++ /dev/null @@ -1,41 +0,0 @@ - -int digit_sum(int number) -{ - int sum = 0; - int digit; - int n = number; - - while(n > 0) - { - digit = n % 10; - sum += digit*digit*digit*digit*digit; - n = n / 10; - } - - if(number == sum) - return 1; - else - return 0; -} - -int main() -{ - int start = 10; - int end = 354294; // 9^5 * 6 - int sum = 0; - int i; - - for(i=start; i<end; i++) - { - if(digit_sum(i)) - { - printf("%d\n", i); - sum += i; - } - } - - printf("\n%d\n", sum); - - return 0; -} - diff --git a/src/projecteuler/031.py b/src/projecteuler/031.py deleted file mode 100644 index 331c8c2..0000000 --- a/src/projecteuler/031.py +++ /dev/null @@ -1,18 +0,0 @@ - -coins = [ 200, 100, 50, 20, 10, 5, 2, 1 ] - -value = 200 - -def count(v, c): - if v == 0: - return 1 - if len(c) == 1: - return 1 - sum = 0 - n = v / c[0] - for i in range(0, n+1): - sum += count(v-i*c[0], c[1:]) - return sum - -print count(value, coins) - diff --git a/src/projecteuler/032.c b/src/projecteuler/032.c deleted file mode 100644 index 13c40b5..0000000 --- a/src/projecteuler/032.c +++ /dev/null @@ -1,64 +0,0 @@ - -#include <stdio.h> - -/* - * much faster than python version, though less optimized... - * - * to filter out duplicates and add numbers: - * $ ./032 | sort -u | tr "\n" "+" | sed 's/+$/\n/' | bc - * - */ - -int is_pandigital(long int a, long int b, long int c) -{ - char digits[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; - char digit; - int i; - - while(a > 0) - { - digit = a % 10; - if(digit == 0 || digits[digit]++) - return 0; - a /= 10; - } - while(b > 0) - { - digit = b % 10; - if(digit == 0 || digits[digit]++) - return 0; - b /= 10; - } - while(c > 0) - { - digit = c % 10; - if(digit == 0 || digits[digit]++) - return 0; - c /= 10; - } - - for(i=1; i<10; i++) - if(digits[i] != 1) - return 0; - return 1; -} - -int main(void) -{ - long int limit = 10000; - long int a, b, c; - for(a=2; a<limit; a++) - { - for(b=2; b<limit; b++) - { - c = a * b; - if(c > limit) - break; - if(is_pandigital(a, b, c)) - printf("%ld\n", c); - } - } - - return 0; -} - diff --git a/src/projecteuler/032.py b/src/projecteuler/032.py deleted file mode 100644 index 0958625..0000000 --- a/src/projecteuler/032.py +++ /dev/null @@ -1,43 +0,0 @@ - -from common import pandigital - -pandigital = pandigital(9).numbers(5) -pandigital.remove(1) - -def is_pandigital(a, b, c): - d = [0]*10 - while a > 0: - digit = a % 10 - if d[digit] > 0: - return False - d[digit] += 1 - a /= 10 - while b > 0: - digit = b % 10 - if d[digit] > 0: - return False - d[digit] += 1 - b /= 10 - while c > 0: - digit = c % 10 - if d[digit] > 0: - return False - d[digit] += 1 - c /= 10 - return d[1:] == [1]*9 - -products = set() - -for a in pandigital: - for b in pandigital: - c = a * b - if c in pandigital and is_pandigital(a, b, c): - #print str(a), "*", str(b), "=", str(c) - products.add(c) - -sum = 0 -for p in products: - sum += p - -print sum - diff --git a/src/projecteuler/033.c b/src/projecteuler/033.c deleted file mode 100644 index 61a7ffd..0000000 --- a/src/projecteuler/033.c +++ /dev/null @@ -1,59 +0,0 @@ - -int curious_fraction(int a, int b) -{ - int a1 = a/10; - int a2 = a%10; - int b1 = b/10; - int b2 = b%10; - - float result = 1.0*a/b; - - if(a2 == 0) - return 0; - - if(a1 == b1) - { - float result2 = 1.0*a2/b2; - if(result == result2) - return 1; - } - - if(a1 == b2) - { - float result2 = 1.0*a2/b1; - if(result == result2) - return 1; - } - - if(a2 == b1) - { - float result2 = 1.0*a1/b2; - if(result == result2) - return 1; - } - - if(a2 == b2) - { - float result2 = 1.0*a1/b1; - if(result == result2) - return 1; - } - - return 0; -} - -int main() -{ - int a, b; - float product = 1.0; - - for(a=10; a<100; a++) - for(b=a+1; b<100; b++) - if(curious_fraction(a, b)) - product *= 1.0*a/b; - - printf("%d\n", (int)(1/product)); - - return 0; -} - diff --git a/src/projecteuler/033.py b/src/projecteuler/033.py deleted file mode 100644 index 9575983..0000000 --- a/src/projecteuler/033.py +++ /dev/null @@ -1,34 +0,0 @@ -def curious_fraction(a, b): - a1 = a/10 - a2 = a%10 - b1 = b/10 - b2 = b%10 - - result = 1.0*a/b; - - if a2 == 0 or b2 == 0: - return False - - if a1 == b1 and 1.0*a2/b2 == result: - return True - - if a1 == b2 and 1.0*a2/b1 == result: - return True - - if a2 == b1 and 1.0*a1/b2 == result: - return True - - if a2 == b2 and 1.0*a1/b1 == result: - return True - - return False - -product = 1.0 - -for a in range(10, 100): - for b in range(a+1, 100): - if curious_fraction(a, b): - product *= 1.0*a/b - -print int(1/product) - diff --git a/src/projecteuler/034.py b/src/projecteuler/034.py deleted file mode 100644 index 505a987..0000000 --- a/src/projecteuler/034.py +++ /dev/null @@ -1,27 +0,0 @@ -def fac(limit): - result = 1 - for i in range(1, limit+1): - result *= i - return result - - -facs = [ fac(i) for i in range(0, 10) ] - -def facsum(number): - global facs - sum = 0 - while number > 0: - digit = number % 10 - sum += facs[digit] - number = number / 10 - return sum - - -sum = 0 - -for i in xrange(10, 2540160): - if facsum(i) == i: - sum += i - -print sum - diff --git a/src/projecteuler/035.py b/src/projecteuler/035.py deleted file mode 100644 index 8f00da8..0000000 --- a/src/projecteuler/035.py +++ /dev/null @@ -1,33 +0,0 @@ -def circular_prime(number): - global number_list - result = True - number_str = str(number) - for i in range(1, len(number_str)): - rotated_str = number_str[i:] + number_str[:i] - rotated_nr = int(rotated_str) - if not number_list[rotated_nr-1]: - result = False - break - return result - - -limit = 1000000 - -number_list = [False] -for i in range(2, limit+1): - number_list.append(True) - -for i in range(2, limit+1): - x = i*2 - while(x <= len(number_list)): - number_list[x-1] = False - x += i - -count = 0 - -for i in range(1, limit+1): - if number_list[i-1] and circular_prime(i): - count += 1 - -print count - diff --git a/src/projecteuler/036.py b/src/projecteuler/036.py deleted file mode 100644 index bf800da..0000000 --- a/src/projecteuler/036.py +++ /dev/null @@ -1,40 +0,0 @@ - -binary = [ 2**x for x in range(20) ][::-1] - -def palindromic_decimal(n): - if n == int(str(n)[::-1]): - return True - return False - - -def dec2bin(n): - res = "" - for i in binary: - if n - i > 0 or n == i: - res += "1" - n -= i - else: - if len(res) > 0: # do not add leading 0s - res += "0" - return res - -def bin2dec(n): - res = 0 - for i in range(1, len(n)+1): - if n[-i] == "1": - res += binary[-i] - return res - -def palindromic_binary(n): - if n == bin2dec(dec2bin(n)[::-1]): - return True - return False - -sum = 0 - -for n in xrange(1000000): - if palindromic_decimal(n) and palindromic_binary(n): - sum += n - -print sum - diff --git a/src/projecteuler/037.py b/src/projecteuler/037.py deleted file mode 100644 index 5e506c2..0000000 --- a/src/projecteuler/037.py +++ /dev/null @@ -1,61 +0,0 @@ - -limit = 800000 - -number_list = [False] + [True]*(limit-1) -list_len = len(number_list) - -def next_prime(i): - global number_list - global list_len - x = i+1 - while(x <= list_len): - if number_list[x-1] == True: - break - x += 1 - return x - -i = 2 - -while(i*i <= list_len): - x = i*i - while(x <= list_len): - number_list[x-1] = False - x += i - i = next_prime(i) - - -primes = set() - -for i in xrange(1, limit+1): - if number_list[i-1]: - primes.add(i) - - -def truncatable(n): - # right truncatable - tmp = n/10 - while tmp > 0: - if not tmp in primes: - return False - tmp = tmp / 10 - - # left truncatable - tmp = n - modulo = 10**14 - while tmp > 0: - if not tmp in primes: - return False - modulo = modulo / 10 - tmp = tmp % modulo - - return True - - -result = [] - -for p in primes: - if truncatable(p) and p not in (2, 3, 5, 7): - result += [p] - -print sum(result) - diff --git a/src/projecteuler/038.py b/src/projecteuler/038.py deleted file mode 100644 index bc43644..0000000 --- a/src/projecteuler/038.py +++ /dev/null @@ -1,43 +0,0 @@ - -def is_pandigital(x): - digits = 10*[0] - - while x > 0: - digit = x % 10 - if digit == 0: - return False - digits[digit] += 1 - x /= 10 - - for i in range(1, 10): - if digits[i] != 1: - return False - - return True - - -def pandigital(x): - result = str(x * 1) - count = 1 - - while len(result) < 9: - count += 1 - result += str(x * count) - - if len(result) > 9: - return 0 - - if is_pandigital(int(result)): - return int(result) - - return 0 - -max_pd = 0 -for i in xrange(9876): - p = pandigital(i) - if p > max_pd: - max_pd = p - i += 1 - -print max_pd - diff --git a/src/projecteuler/039.c b/src/projecteuler/039.c deleted file mode 100644 index 202df6c..0000000 --- a/src/projecteuler/039.c +++ /dev/null @@ -1,37 +0,0 @@ - -int solutions(int p) -{ - int solution = 0; - int a, b, c; - - for(a=0; a<p/2; a++) - for(b=0; b<p-a; b++) - { - c = p - a - b; - if(a*a + b*b == c*c) - solution++; - } - return solution; -} - -int main() -{ - int max_solutions = 0; - int max_p = 0; - int p; - - for(p=3; p<=1000; p++) - { - int n = solutions(p); - if(n > max_solutions) - { - max_solutions = n; - max_p = p; - } - } - - printf("%d\n", max_p); - - return 0; -} - diff --git a/src/projecteuler/039.py b/src/projecteuler/039.py deleted file mode 100644 index 6a6bd0b..0000000 --- a/src/projecteuler/039.py +++ /dev/null @@ -1,21 +0,0 @@ - -def solutions(p): - solution = 0 - for a in xrange(1, p/2): - for b in xrange(a, p-a): - c = p - a - b - if a*a + b*b == c*c: - solution += 1 - return solution - -max_solutions = 0 -max_p = 0 - -for p in xrange(3, 1000): - n = solutions(p) - if n > max_solutions: - max_solutions = n - max_p = p - -print max_p - diff --git a/src/projecteuler/040.py b/src/projecteuler/040.py deleted file mode 100644 index 6f20325..0000000 --- a/src/projecteuler/040.py +++ /dev/null @@ -1,34 +0,0 @@ - -# liefert zurueck an welcher Stelle die x-stelligen Zahlen beginnen -def begin(x): - stelle = 1 - for i in range(1, x): - stelle += 9 * (10**(i-1)) * i - return stelle - - -def stelle(pos): - n = 0 - i = 0 - # suche nach Anfang der x-stelligen Region in der pos liegt - while n <= pos: - i += 1 - n = begin(i) - - stellen = i-1 - startpos = begin(stellen) - startvalue = 10**(stellen-1) - diff = pos - startpos - zahl = startvalue + diff/stellen - result = (zahl / (10**(stellen-(diff%stellen)-1))) % 10 - - return result - - -product = 1 - -for i in range(0, 7): - product *= stelle(10**i) - -print product - diff --git a/src/projecteuler/041.py b/src/projecteuler/041.py deleted file mode 100644 index 04a6272..0000000 --- a/src/projecteuler/041.py +++ /dev/null @@ -1,26 +0,0 @@ -from common import pandigital, sieve - -primes = list(sieve(10**6).primes()) -numbers = [x for x in pandigital(1, 9).numbers(10) if x > 10**8] -numbers += [x for x in pandigital(1, 8).numbers(10) if x > 10**7] -numbers += [x for x in pandigital(1, 7).numbers(10) if x > 10**6] -numbers += [x for x in pandigital(1, 6).numbers(10) if x > 10**5] -numbers += [x for x in pandigital(1, 5).numbers(10) if x > 10**4] -numbers += [x for x in pandigital(1, 4).numbers(10) if x > 10**3] -numbers += [x for x in pandigital(1, 3).numbers(10) if x > 10**2] -numbers += [x for x in pandigital(1, 2).numbers(10) if x > 10**1] - -numbers.sort(reverse=True) - -# check for divisibility up to sqrt(n), as sieve requires too much memory -def is_prime(n): - for p in primes: - if n % p == 0: - return False - return True - -for n in numbers: - if is_prime(n): - print n - break - diff --git a/src/projecteuler/042.py b/src/projecteuler/042.py deleted file mode 100644 index 46f08fa..0000000 --- a/src/projecteuler/042.py +++ /dev/null @@ -1,18 +0,0 @@ -def score(name): - sum = 0 - for char in name: - sum += ord(char) - 64 - return sum - -triangle_numbers = [ int(0.5*n*(n-1)) for n in range(2, 200) ] -count = 0 - -f = open('042.txt', 'r') -for word in f: - word = word.rstrip("\n") - if score(word) in triangle_numbers: - count += 1 -f.close() - -print count - diff --git a/src/projecteuler/042.txt b/src/projecteuler/042.txt deleted file mode 100644 index 124e8b6..0000000 --- a/src/projecteuler/042.txt +++ /dev/null @@ -1,1786 +0,0 @@ -A -ABILITY -ABLE -ABOUT -ABOVE -ABSENCE -ABSOLUTELY -ACADEMIC -ACCEPT -ACCESS -ACCIDENT -ACCOMPANY -ACCORDING -ACCOUNT -ACHIEVE -ACHIEVEMENT -ACID -ACQUIRE -ACROSS -ACT -ACTION -ACTIVE -ACTIVITY -ACTUAL -ACTUALLY -ADD -ADDITION -ADDITIONAL -ADDRESS -ADMINISTRATION -ADMIT -ADOPT -ADULT -ADVANCE -ADVANTAGE -ADVICE -ADVISE -AFFAIR -AFFECT -AFFORD -AFRAID -AFTER -AFTERNOON -AFTERWARDS -AGAIN -AGAINST -AGE -AGENCY -AGENT -AGO -AGREE -AGREEMENT -AHEAD -AID -AIM -AIR -AIRCRAFT -ALL -ALLOW -ALMOST -ALONE -ALONG -ALREADY -ALRIGHT -ALSO -ALTERNATIVE -ALTHOUGH -ALWAYS -AMONG -AMONGST -AMOUNT -AN -ANALYSIS -ANCIENT -AND -ANIMAL -ANNOUNCE -ANNUAL -ANOTHER -ANSWER -ANY -ANYBODY -ANYONE -ANYTHING -ANYWAY -APART -APPARENT -APPARENTLY -APPEAL -APPEAR -APPEARANCE -APPLICATION -APPLY -APPOINT -APPOINTMENT -APPROACH -APPROPRIATE -APPROVE -AREA -ARGUE -ARGUMENT -ARISE -ARM -ARMY -AROUND -ARRANGE -ARRANGEMENT -ARRIVE -ART -ARTICLE -ARTIST -AS -ASK -ASPECT -ASSEMBLY -ASSESS -ASSESSMENT -ASSET -ASSOCIATE -ASSOCIATION -ASSUME -ASSUMPTION -AT -ATMOSPHERE -ATTACH -ATTACK -ATTEMPT -ATTEND -ATTENTION -ATTITUDE -ATTRACT -ATTRACTIVE -AUDIENCE -AUTHOR -AUTHORITY -AVAILABLE -AVERAGE -AVOID -AWARD -AWARE -AWAY -AYE -BABY -BACK -BACKGROUND -BAD -BAG -BALANCE -BALL -BAND -BANK -BAR -BASE -BASIC -BASIS -BATTLE -BE -BEAR -BEAT -BEAUTIFUL -BECAUSE -BECOME -BED -BEDROOM -BEFORE -BEGIN -BEGINNING -BEHAVIOUR -BEHIND -BELIEF -BELIEVE -BELONG -BELOW -BENEATH -BENEFIT -BESIDE -BEST -BETTER -BETWEEN -BEYOND -BIG -BILL -BIND -BIRD -BIRTH -BIT -BLACK -BLOCK -BLOOD -BLOODY -BLOW -BLUE -BOARD -BOAT -BODY -BONE -BOOK -BORDER -BOTH -BOTTLE -BOTTOM -BOX -BOY -BRAIN -BRANCH -BREAK -BREATH -BRIDGE -BRIEF -BRIGHT -BRING -BROAD -BROTHER -BUDGET -BUILD -BUILDING -BURN -BUS -BUSINESS -BUSY -BUT -BUY -BY -CABINET -CALL -CAMPAIGN -CAN -CANDIDATE -CAPABLE -CAPACITY -CAPITAL -CAR -CARD -CARE -CAREER -CAREFUL -CAREFULLY -CARRY -CASE -CASH -CAT -CATCH -CATEGORY -CAUSE -CELL -CENTRAL -CENTRE -CENTURY -CERTAIN -CERTAINLY -CHAIN -CHAIR -CHAIRMAN -CHALLENGE -CHANCE -CHANGE -CHANNEL -CHAPTER -CHARACTER -CHARACTERISTIC -CHARGE -CHEAP -CHECK -CHEMICAL -CHIEF -CHILD -CHOICE -CHOOSE -CHURCH -CIRCLE -CIRCUMSTANCE -CITIZEN -CITY -CIVIL -CLAIM -CLASS -CLEAN -CLEAR -CLEARLY -CLIENT -CLIMB -CLOSE -CLOSELY -CLOTHES -CLUB -COAL -CODE -COFFEE -COLD -COLLEAGUE -COLLECT -COLLECTION -COLLEGE -COLOUR -COMBINATION -COMBINE -COME -COMMENT -COMMERCIAL -COMMISSION -COMMIT -COMMITMENT -COMMITTEE -COMMON -COMMUNICATION -COMMUNITY -COMPANY -COMPARE -COMPARISON -COMPETITION -COMPLETE -COMPLETELY -COMPLEX -COMPONENT -COMPUTER -CONCENTRATE -CONCENTRATION -CONCEPT -CONCERN -CONCERNED -CONCLUDE -CONCLUSION -CONDITION -CONDUCT -CONFERENCE -CONFIDENCE -CONFIRM -CONFLICT -CONGRESS -CONNECT -CONNECTION -CONSEQUENCE -CONSERVATIVE -CONSIDER -CONSIDERABLE -CONSIDERATION -CONSIST -CONSTANT -CONSTRUCTION -CONSUMER -CONTACT -CONTAIN -CONTENT -CONTEXT -CONTINUE -CONTRACT -CONTRAST -CONTRIBUTE -CONTRIBUTION -CONTROL -CONVENTION -CONVERSATION -COPY -CORNER -CORPORATE -CORRECT -COS -COST -COULD -COUNCIL -COUNT -COUNTRY -COUNTY -COUPLE -COURSE -COURT -COVER -CREATE -CREATION -CREDIT -CRIME -CRIMINAL -CRISIS -CRITERION -CRITICAL -CRITICISM -CROSS -CROWD -CRY -CULTURAL -CULTURE -CUP -CURRENT -CURRENTLY -CURRICULUM -CUSTOMER -CUT -DAMAGE -DANGER -DANGEROUS -DARK -DATA -DATE -DAUGHTER -DAY -DEAD -DEAL -DEATH -DEBATE -DEBT -DECADE -DECIDE -DECISION -DECLARE -DEEP -DEFENCE -DEFENDANT -DEFINE -DEFINITION -DEGREE -DELIVER -DEMAND -DEMOCRATIC -DEMONSTRATE -DENY -DEPARTMENT -DEPEND -DEPUTY -DERIVE -DESCRIBE -DESCRIPTION -DESIGN -DESIRE -DESK -DESPITE -DESTROY -DETAIL -DETAILED -DETERMINE -DEVELOP -DEVELOPMENT -DEVICE -DIE -DIFFERENCE -DIFFERENT -DIFFICULT -DIFFICULTY -DINNER -DIRECT -DIRECTION -DIRECTLY -DIRECTOR -DISAPPEAR -DISCIPLINE -DISCOVER -DISCUSS -DISCUSSION -DISEASE -DISPLAY -DISTANCE -DISTINCTION -DISTRIBUTION -DISTRICT -DIVIDE -DIVISION -DO -DOCTOR -DOCUMENT -DOG -DOMESTIC -DOOR -DOUBLE -DOUBT -DOWN -DRAW -DRAWING -DREAM -DRESS -DRINK -DRIVE -DRIVER -DROP -DRUG -DRY -DUE -DURING -DUTY -EACH -EAR -EARLY -EARN -EARTH -EASILY -EAST -EASY -EAT -ECONOMIC -ECONOMY -EDGE -EDITOR -EDUCATION -EDUCATIONAL -EFFECT -EFFECTIVE -EFFECTIVELY -EFFORT -EGG -EITHER -ELDERLY -ELECTION -ELEMENT -ELSE -ELSEWHERE -EMERGE -EMPHASIS -EMPLOY -EMPLOYEE -EMPLOYER -EMPLOYMENT -EMPTY -ENABLE -ENCOURAGE -END -ENEMY -ENERGY -ENGINE -ENGINEERING -ENJOY -ENOUGH -ENSURE -ENTER -ENTERPRISE -ENTIRE -ENTIRELY -ENTITLE -ENTRY -ENVIRONMENT -ENVIRONMENTAL -EQUAL -EQUALLY -EQUIPMENT -ERROR -ESCAPE -ESPECIALLY -ESSENTIAL -ESTABLISH -ESTABLISHMENT -ESTATE -ESTIMATE -EVEN -EVENING -EVENT -EVENTUALLY -EVER -EVERY -EVERYBODY -EVERYONE -EVERYTHING -EVIDENCE -EXACTLY -EXAMINATION -EXAMINE -EXAMPLE -EXCELLENT -EXCEPT -EXCHANGE -EXECUTIVE -EXERCISE -EXHIBITION -EXIST -EXISTENCE -EXISTING -EXPECT -EXPECTATION -EXPENDITURE -EXPENSE -EXPENSIVE -EXPERIENCE -EXPERIMENT -EXPERT -EXPLAIN -EXPLANATION -EXPLORE -EXPRESS -EXPRESSION -EXTEND -EXTENT -EXTERNAL -EXTRA -EXTREMELY -EYE -FACE -FACILITY -FACT -FACTOR -FACTORY -FAIL -FAILURE -FAIR -FAIRLY -FAITH -FALL -FAMILIAR -FAMILY -FAMOUS -FAR -FARM -FARMER -FASHION -FAST -FATHER -FAVOUR -FEAR -FEATURE -FEE -FEEL -FEELING -FEMALE -FEW -FIELD -FIGHT -FIGURE -FILE -FILL -FILM -FINAL -FINALLY -FINANCE -FINANCIAL -FIND -FINDING -FINE -FINGER -FINISH -FIRE -FIRM -FIRST -FISH -FIT -FIX -FLAT -FLIGHT -FLOOR -FLOW -FLOWER -FLY -FOCUS -FOLLOW -FOLLOWING -FOOD -FOOT -FOOTBALL -FOR -FORCE -FOREIGN -FOREST -FORGET -FORM -FORMAL -FORMER -FORWARD -FOUNDATION -FREE -FREEDOM -FREQUENTLY -FRESH -FRIEND -FROM -FRONT -FRUIT -FUEL -FULL -FULLY -FUNCTION -FUND -FUNNY -FURTHER -FUTURE -GAIN -GAME -GARDEN -GAS -GATE -GATHER -GENERAL -GENERALLY -GENERATE -GENERATION -GENTLEMAN -GET -GIRL -GIVE -GLASS -GO -GOAL -GOD -GOLD -GOOD -GOVERNMENT -GRANT -GREAT -GREEN -GREY -GROUND -GROUP -GROW -GROWING -GROWTH -GUEST -GUIDE -GUN -HAIR -HALF -HALL -HAND -HANDLE -HANG -HAPPEN -HAPPY -HARD -HARDLY -HATE -HAVE -HE -HEAD -HEALTH -HEAR -HEART -HEAT -HEAVY -HELL -HELP -HENCE -HER -HERE -HERSELF -HIDE -HIGH -HIGHLY -HILL -HIM -HIMSELF -HIS -HISTORICAL -HISTORY -HIT -HOLD -HOLE -HOLIDAY -HOME -HOPE -HORSE -HOSPITAL -HOT -HOTEL -HOUR -HOUSE -HOUSEHOLD -HOUSING -HOW -HOWEVER -HUGE -HUMAN -HURT -HUSBAND -I -IDEA -IDENTIFY -IF -IGNORE -ILLUSTRATE -IMAGE -IMAGINE -IMMEDIATE -IMMEDIATELY -IMPACT -IMPLICATION -IMPLY -IMPORTANCE -IMPORTANT -IMPOSE -IMPOSSIBLE -IMPRESSION -IMPROVE -IMPROVEMENT -IN -INCIDENT -INCLUDE -INCLUDING -INCOME -INCREASE -INCREASED -INCREASINGLY -INDEED -INDEPENDENT -INDEX -INDICATE -INDIVIDUAL -INDUSTRIAL -INDUSTRY -INFLUENCE -INFORM -INFORMATION -INITIAL -INITIATIVE -INJURY -INSIDE -INSIST -INSTANCE -INSTEAD -INSTITUTE -INSTITUTION -INSTRUCTION -INSTRUMENT -INSURANCE -INTEND -INTENTION -INTEREST -INTERESTED -INTERESTING -INTERNAL -INTERNATIONAL -INTERPRETATION -INTERVIEW -INTO -INTRODUCE -INTRODUCTION -INVESTIGATE -INVESTIGATION -INVESTMENT -INVITE -INVOLVE -IRON -IS -ISLAND -ISSUE -IT -ITEM -ITS -ITSELF -JOB -JOIN -JOINT -JOURNEY -JUDGE -JUMP -JUST -JUSTICE -KEEP -KEY -KID -KILL -KIND -KING -KITCHEN -KNEE -KNOW -KNOWLEDGE -LABOUR -LACK -LADY -LAND -LANGUAGE -LARGE -LARGELY -LAST -LATE -LATER -LATTER -LAUGH -LAUNCH -LAW -LAWYER -LAY -LEAD -LEADER -LEADERSHIP -LEADING -LEAF -LEAGUE -LEAN -LEARN -LEAST -LEAVE -LEFT -LEG -LEGAL -LEGISLATION -LENGTH -LESS -LET -LETTER -LEVEL -LIABILITY -LIBERAL -LIBRARY -LIE -LIFE -LIFT -LIGHT -LIKE -LIKELY -LIMIT -LIMITED -LINE -LINK -LIP -LIST -LISTEN -LITERATURE -LITTLE -LIVE -LIVING -LOAN -LOCAL -LOCATION -LONG -LOOK -LORD -LOSE -LOSS -LOT -LOVE -LOVELY -LOW -LUNCH -MACHINE -MAGAZINE -MAIN -MAINLY -MAINTAIN -MAJOR -MAJORITY -MAKE -MALE -MAN -MANAGE -MANAGEMENT -MANAGER -MANNER -MANY -MAP -MARK -MARKET -MARRIAGE -MARRIED -MARRY -MASS -MASTER -MATCH -MATERIAL -MATTER -MAY -MAYBE -ME -MEAL -MEAN -MEANING -MEANS -MEANWHILE -MEASURE -MECHANISM -MEDIA -MEDICAL -MEET -MEETING -MEMBER -MEMBERSHIP -MEMORY -MENTAL -MENTION -MERELY -MESSAGE -METAL -METHOD -MIDDLE -MIGHT -MILE -MILITARY -MILK -MIND -MINE -MINISTER -MINISTRY -MINUTE -MISS -MISTAKE -MODEL -MODERN -MODULE -MOMENT -MONEY -MONTH -MORE -MORNING -MOST -MOTHER -MOTION -MOTOR -MOUNTAIN -MOUTH -MOVE -MOVEMENT -MUCH -MURDER -MUSEUM -MUSIC -MUST -MY -MYSELF -NAME -NARROW -NATION -NATIONAL -NATURAL -NATURE -NEAR -NEARLY -NECESSARILY -NECESSARY -NECK -NEED -NEGOTIATION -NEIGHBOUR -NEITHER -NETWORK -NEVER -NEVERTHELESS -NEW -NEWS -NEWSPAPER -NEXT -NICE -NIGHT -NO -NOBODY -NOD -NOISE -NONE -NOR -NORMAL -NORMALLY -NORTH -NORTHERN -NOSE -NOT -NOTE -NOTHING -NOTICE -NOTION -NOW -NUCLEAR -NUMBER -NURSE -OBJECT -OBJECTIVE -OBSERVATION -OBSERVE -OBTAIN -OBVIOUS -OBVIOUSLY -OCCASION -OCCUR -ODD -OF -OFF -OFFENCE -OFFER -OFFICE -OFFICER -OFFICIAL -OFTEN -OIL -OKAY -OLD -ON -ONCE -ONE -ONLY -ONTO -OPEN -OPERATE -OPERATION -OPINION -OPPORTUNITY -OPPOSITION -OPTION -OR -ORDER -ORDINARY -ORGANISATION -ORGANISE -ORGANIZATION -ORIGIN -ORIGINAL -OTHER -OTHERWISE -OUGHT -OUR -OURSELVES -OUT -OUTCOME -OUTPUT -OUTSIDE -OVER -OVERALL -OWN -OWNER -PACKAGE -PAGE -PAIN -PAINT -PAINTING -PAIR -PANEL -PAPER -PARENT -PARK -PARLIAMENT -PART -PARTICULAR -PARTICULARLY -PARTLY -PARTNER -PARTY -PASS -PASSAGE -PAST -PATH -PATIENT -PATTERN -PAY -PAYMENT -PEACE -PENSION -PEOPLE -PER -PERCENT -PERFECT -PERFORM -PERFORMANCE -PERHAPS -PERIOD -PERMANENT -PERSON -PERSONAL -PERSUADE -PHASE -PHONE -PHOTOGRAPH -PHYSICAL -PICK -PICTURE -PIECE -PLACE -PLAN -PLANNING -PLANT -PLASTIC -PLATE -PLAY -PLAYER -PLEASE -PLEASURE -PLENTY -PLUS -POCKET -POINT -POLICE -POLICY -POLITICAL -POLITICS -POOL -POOR -POPULAR -POPULATION -POSITION -POSITIVE -POSSIBILITY -POSSIBLE -POSSIBLY -POST -POTENTIAL -POUND -POWER -POWERFUL -PRACTICAL -PRACTICE -PREFER -PREPARE -PRESENCE -PRESENT -PRESIDENT -PRESS -PRESSURE -PRETTY -PREVENT -PREVIOUS -PREVIOUSLY -PRICE -PRIMARY -PRIME -PRINCIPLE -PRIORITY -PRISON -PRISONER -PRIVATE -PROBABLY -PROBLEM -PROCEDURE -PROCESS -PRODUCE -PRODUCT -PRODUCTION -PROFESSIONAL -PROFIT -PROGRAM -PROGRAMME -PROGRESS -PROJECT -PROMISE -PROMOTE -PROPER -PROPERLY -PROPERTY -PROPORTION -PROPOSE -PROPOSAL -PROSPECT -PROTECT -PROTECTION -PROVE -PROVIDE -PROVIDED -PROVISION -PUB -PUBLIC -PUBLICATION -PUBLISH -PULL -PUPIL -PURPOSE -PUSH -PUT -QUALITY -QUARTER -QUESTION -QUICK -QUICKLY -QUIET -QUITE -RACE -RADIO -RAILWAY -RAIN -RAISE -RANGE -RAPIDLY -RARE -RATE -RATHER -REACH -REACTION -READ -READER -READING -READY -REAL -REALISE -REALITY -REALIZE -REALLY -REASON -REASONABLE -RECALL -RECEIVE -RECENT -RECENTLY -RECOGNISE -RECOGNITION -RECOGNIZE -RECOMMEND -RECORD -RECOVER -RED -REDUCE -REDUCTION -REFER -REFERENCE -REFLECT -REFORM -REFUSE -REGARD -REGION -REGIONAL -REGULAR -REGULATION -REJECT -RELATE -RELATION -RELATIONSHIP -RELATIVE -RELATIVELY -RELEASE -RELEVANT -RELIEF -RELIGION -RELIGIOUS -RELY -REMAIN -REMEMBER -REMIND -REMOVE -REPEAT -REPLACE -REPLY -REPORT -REPRESENT -REPRESENTATION -REPRESENTATIVE -REQUEST -REQUIRE -REQUIREMENT -RESEARCH -RESOURCE -RESPECT -RESPOND -RESPONSE -RESPONSIBILITY -RESPONSIBLE -REST -RESTAURANT -RESULT -RETAIN -RETURN -REVEAL -REVENUE -REVIEW -REVOLUTION -RICH -RIDE -RIGHT -RING -RISE -RISK -RIVER -ROAD -ROCK -ROLE -ROLL -ROOF -ROOM -ROUND -ROUTE -ROW -ROYAL -RULE -RUN -RURAL -SAFE -SAFETY -SALE -SAME -SAMPLE -SATISFY -SAVE -SAY -SCALE -SCENE -SCHEME -SCHOOL -SCIENCE -SCIENTIFIC -SCIENTIST -SCORE -SCREEN -SEA -SEARCH -SEASON -SEAT -SECOND -SECONDARY -SECRETARY -SECTION -SECTOR -SECURE -SECURITY -SEE -SEEK -SEEM -SELECT -SELECTION -SELL -SEND -SENIOR -SENSE -SENTENCE -SEPARATE -SEQUENCE -SERIES -SERIOUS -SERIOUSLY -SERVANT -SERVE -SERVICE -SESSION -SET -SETTLE -SETTLEMENT -SEVERAL -SEVERE -SEX -SEXUAL -SHAKE -SHALL -SHAPE -SHARE -SHE -SHEET -SHIP -SHOE -SHOOT -SHOP -SHORT -SHOT -SHOULD -SHOULDER -SHOUT -SHOW -SHUT -SIDE -SIGHT -SIGN -SIGNAL -SIGNIFICANCE -SIGNIFICANT -SILENCE -SIMILAR -SIMPLE -SIMPLY -SINCE -SING -SINGLE -SIR -SISTER -SIT -SITE -SITUATION -SIZE -SKILL -SKIN -SKY -SLEEP -SLIGHTLY -SLIP -SLOW -SLOWLY -SMALL -SMILE -SO -SOCIAL -SOCIETY -SOFT -SOFTWARE -SOIL -SOLDIER -SOLICITOR -SOLUTION -SOME -SOMEBODY -SOMEONE -SOMETHING -SOMETIMES -SOMEWHAT -SOMEWHERE -SON -SONG -SOON -SORRY -SORT -SOUND -SOURCE -SOUTH -SOUTHERN -SPACE -SPEAK -SPEAKER -SPECIAL -SPECIES -SPECIFIC -SPEECH -SPEED -SPEND -SPIRIT -SPORT -SPOT -SPREAD -SPRING -STAFF -STAGE -STAND -STANDARD -STAR -START -STATE -STATEMENT -STATION -STATUS -STAY -STEAL -STEP -STICK -STILL -STOCK -STONE -STOP -STORE -STORY -STRAIGHT -STRANGE -STRATEGY -STREET -STRENGTH -STRIKE -STRONG -STRONGLY -STRUCTURE -STUDENT -STUDIO -STUDY -STUFF -STYLE -SUBJECT -SUBSTANTIAL -SUCCEED -SUCCESS -SUCCESSFUL -SUCH -SUDDENLY -SUFFER -SUFFICIENT -SUGGEST -SUGGESTION -SUITABLE -SUM -SUMMER -SUN -SUPPLY -SUPPORT -SUPPOSE -SURE -SURELY -SURFACE -SURPRISE -SURROUND -SURVEY -SURVIVE -SWITCH -SYSTEM -TABLE -TAKE -TALK -TALL -TAPE -TARGET -TASK -TAX -TEA -TEACH -TEACHER -TEACHING -TEAM -TEAR -TECHNICAL -TECHNIQUE -TECHNOLOGY -TELEPHONE -TELEVISION -TELL -TEMPERATURE -TEND -TERM -TERMS -TERRIBLE -TEST -TEXT -THAN -THANK -THANKS -THAT -THE -THEATRE -THEIR -THEM -THEME -THEMSELVES -THEN -THEORY -THERE -THEREFORE -THESE -THEY -THIN -THING -THINK -THIS -THOSE -THOUGH -THOUGHT -THREAT -THREATEN -THROUGH -THROUGHOUT -THROW -THUS -TICKET -TIME -TINY -TITLE -TO -TODAY -TOGETHER -TOMORROW -TONE -TONIGHT -TOO -TOOL -TOOTH -TOP -TOTAL -TOTALLY -TOUCH -TOUR -TOWARDS -TOWN -TRACK -TRADE -TRADITION -TRADITIONAL -TRAFFIC -TRAIN -TRAINING -TRANSFER -TRANSPORT -TRAVEL -TREAT -TREATMENT -TREATY -TREE -TREND -TRIAL -TRIP -TROOP -TROUBLE -TRUE -TRUST -TRUTH -TRY -TURN -TWICE -TYPE -TYPICAL -UNABLE -UNDER -UNDERSTAND -UNDERSTANDING -UNDERTAKE -UNEMPLOYMENT -UNFORTUNATELY -UNION -UNIT -UNITED -UNIVERSITY -UNLESS -UNLIKELY -UNTIL -UP -UPON -UPPER -URBAN -US -USE -USED -USEFUL -USER -USUAL -USUALLY -VALUE -VARIATION -VARIETY -VARIOUS -VARY -VAST -VEHICLE -VERSION -VERY -VIA -VICTIM -VICTORY -VIDEO -VIEW -VILLAGE -VIOLENCE -VISION -VISIT -VISITOR -VITAL -VOICE -VOLUME -VOTE -WAGE -WAIT -WALK -WALL -WANT -WAR -WARM -WARN -WASH -WATCH -WATER -WAVE -WAY -WE -WEAK -WEAPON -WEAR -WEATHER -WEEK -WEEKEND -WEIGHT -WELCOME -WELFARE -WELL -WEST -WESTERN -WHAT -WHATEVER -WHEN -WHERE -WHEREAS -WHETHER -WHICH -WHILE -WHILST -WHITE -WHO -WHOLE -WHOM -WHOSE -WHY -WIDE -WIDELY -WIFE -WILD -WILL -WIN -WIND -WINDOW -WINE -WING -WINNER -WINTER -WISH -WITH -WITHDRAW -WITHIN -WITHOUT -WOMAN -WONDER -WONDERFUL -WOOD -WORD -WORK -WORKER -WORKING -WORKS -WORLD -WORRY -WORTH -WOULD -WRITE -WRITER -WRITING -WRONG -YARD -YEAH -YEAR -YES -YESTERDAY -YET -YOU -YOUNG -YOUR -YOURSELF -YOUTH diff --git a/src/projecteuler/043.py b/src/projecteuler/043.py deleted file mode 100644 index 2dd1db9..0000000 --- a/src/projecteuler/043.py +++ /dev/null @@ -1,35 +0,0 @@ -from common import pandigital - - -def check_number(i): - x = str(i) - if int(x[1:4]) & 1 != 0: - return False - if int(x[2:5]) % 3 != 0: - return False - if int(x[3:6]) % 5 != 0: - return False - if int(x[4:7]) % 7 != 0: - return False - if int(x[5:8]) % 11 != 0: - return False - if int(x[6:9]) % 13 != 0: - return False - if int(x[7:10]) % 17 != 0: - return False - return True - - -numbers = pandigital(0, 9).numbers(11) - -result = 0 - -for i in numbers: - if i < 1000000000: - continue - - if check_number(i): - result += i - -print result - diff --git a/src/projecteuler/044.py b/src/projecteuler/044.py deleted file mode 100644 index 5baae84..0000000 --- a/src/projecteuler/044.py +++ /dev/null @@ -1,9 +0,0 @@ - -pentagonal = [n*(3*n-1)/2 for n in xrange(1, 10000)] -pentagonal_set = set(pentagonal) - -for j in pentagonal: - for k in pentagonal: - if j+k in pentagonal_set and j-k in pentagonal_set: - print abs(j-k) - diff --git a/src/projecteuler/045.py b/src/projecteuler/045.py deleted file mode 100644 index 5a8bb7c..0000000 --- a/src/projecteuler/045.py +++ /dev/null @@ -1,12 +0,0 @@ - -limit = 500000 - -triangle = set([ int(n*(n+1)/2) for n in range(1, limit) ]) -pentagonal = set([ int(n*(2*n-1)) for n in range(1, limit) ]) -hexagonal = set([ int(n*(3*n-1)/2) for n in range(1, limit) ]) - -result = triangle & pentagonal & hexagonal - -for i in result: - print i - diff --git a/src/projecteuler/046.py b/src/projecteuler/046.py deleted file mode 100644 index 24a2983..0000000 --- a/src/projecteuler/046.py +++ /dev/null @@ -1,35 +0,0 @@ - -from common import sieve - -squares = set([ x*x for x in xrange(1, 1000000) ]) - -def check_number(number, prime): - square = (number - prime) >> 1 - return square in squares - -prime_set = sieve(1000000).primes() -primes = list(prime_set) -primes.sort() - -number = 3 - -while True: - number += 2 - - if number in prime_set: - continue - - conjecture = False - - for p in primes: - if p >= number: - break - if check_number(number, p): - conjecture = True - break - - if not conjecture: - break - -print number - diff --git a/src/projecteuler/047.py b/src/projecteuler/047.py deleted file mode 100644 index 19f5185..0000000 --- a/src/projecteuler/047.py +++ /dev/null @@ -1,25 +0,0 @@ -from common import sieve - -primes = list(sieve(1000000).primes()) -primes.sort() - -factors = 4 - -def check_prime_factors(x): - distinct = set() - for p in primes: - while x % p == 0: - x /= p - distinct.add(p) - if x == 1: - break - return len(distinct) == factors - -n = 644 - -while True: - if check_prime_factors(n) and check_prime_factors(n+1) and check_prime_factors(n+2) and check_prime_factors(n+3): - print n - break - n += 1 - diff --git a/src/projecteuler/048.py b/src/projecteuler/048.py deleted file mode 100644 index 7c4102e..0000000 --- a/src/projecteuler/048.py +++ /dev/null @@ -1,6 +0,0 @@ -sum = 0 -for i in range(1, 1001): - sum += i**i - -print sum % 10**10 - diff --git a/src/projecteuler/049.py b/src/projecteuler/049.py deleted file mode 100644 index 1cb2fbf..0000000 --- a/src/projecteuler/049.py +++ /dev/null @@ -1,34 +0,0 @@ -from common import sieve, permutation - -primes = sieve(10000).primes() -primes2 = [ x for x in primes if x > 1000 ] -primes2.sort() - -end = False -ignore = 1487 -result = [] - -for p in primes2: - for q in primes2: - if p == q: - continue - if permutation(p, q): - new = 0 - if q > p: - diff = q - p - new = q + diff - else: - diff = p - q - new = p + diff - - if new in primes and permutation(q, new) and not permutation(ignore, p): - result += [p, q, new] - end = True - if end: - break - if end: - break - -result.sort() -print str(result[0]) + str(result[1]) + str(result[2]) - diff --git a/src/projecteuler/050.py b/src/projecteuler/050.py deleted file mode 100644 index 615f0d5..0000000 --- a/src/projecteuler/050.py +++ /dev/null @@ -1,28 +0,0 @@ -from common import sieve - -limit = 1000000 - -prime_set = sieve(limit).primes() -prime_list = list(prime_set) -prime_list.sort() - -n = len(prime_list) - -max_sum = 0 -max_count = 0 - -for i in xrange(n): - sum = prime_list[i] - count = 1 - for j in xrange(i+1, n): - sum += prime_list[j] - count += 1 - if sum > prime_list[-1]: - break - - if sum in prime_set and count > max_count: - max_sum = sum - max_count = count - -print max_sum - diff --git a/src/projecteuler/051.c b/src/projecteuler/051.c deleted file mode 100644 index ee79ece..0000000 --- a/src/projecteuler/051.c +++ /dev/null @@ -1,121 +0,0 @@ -#include "common.h" -#include <stdlib.h> -#include <string.h> -#include <stdio.h> - -unsigned long* p; - -const int pattern_size = 1024; -unsigned long* patterns; - -void init_patterns() -{ - int i, cur; - unsigned long n, pos; - - patterns = (unsigned long*) malloc(pattern_size*sizeof(unsigned long)); - - for(i=0; i<pattern_size; i++) - { - pos = 1; - cur = i; - n = 0; - while(cur > 0) - { - n += (cur&1)*pos; - pos *= 10; - cur >>= 1; - } - patterns[i] = n; - } -} - -int valid_replacement(unsigned long prime, unsigned long number, unsigned long pattern) -{ - int digit = -1; // replaced digit in prime - - while(pattern > 0) - { - char d1 = pattern % 10; - char d2 = prime % 10; - char d3 = number % 10; - - if(d1 == 1) - { - if(digit < 0) - digit = d2; - else if(digit != d2) // not same digits replaced - return 0; - } - - if(d1 == 0 && d2 != d3) - return 0; - else if(prime == 0 && number != 0) - return 0; - - pattern /= 10; - prime /= 10; - number /= 10; - } - - if(pattern == 0 && prime != number) - return 0; - - return 1; -} - -int check_prime(unsigned long prime) -{ - int i, j; - - for(i=2; i<pattern_size; i++) - { - unsigned long pat = patterns[i]; - unsigned long tmp = prime; - int count = 1; - - if(pat >= 10*tmp) - break; - - for(j=0; j<10; j++) - { - tmp += pat; - - if(isprime(tmp, p) && valid_replacement(prime, tmp, pat)) - count++; - } - - if(count>=8) - { - printf("Pattern: %ld\n", pat); - return 1; - } - } - - return 0; -} - -int main(void) -{ - unsigned long pcount; - unsigned long pos; - - p = primes(1000000); - pcount = p[0]; - - init_patterns(); - - for(pos=1; pos<=pcount; pos++) - { - if(check_prime(p[pos])) - { - printf("Prime: %li\n", p[pos]); - break; - } - } - - free(p); - free(patterns); - return 0; -} - diff --git a/src/projecteuler/052.py b/src/projecteuler/052.py deleted file mode 100644 index 2419a72..0000000 --- a/src/projecteuler/052.py +++ /dev/null @@ -1,22 +0,0 @@ - -def digits(n): - result = [0]*10 - while n > 0: - digit = n % 10 - n /= 10 - result[digit] += 1 - return result - -def check(n): - foo = [ digits(n*x) for x in range(1, 7) ] - return foo == foo[1:]+foo[:1] # all array entries are equal - -n = 1 - -while True: - if check(n): - break - n += 1 - -print n - diff --git a/src/projecteuler/053.py b/src/projecteuler/053.py deleted file mode 100644 index 6e9461c..0000000 --- a/src/projecteuler/053.py +++ /dev/null @@ -1,14 +0,0 @@ - -facs = [1]*101 -for i in range(1, 101): - facs[i] = facs[i-1] * i - -count = 0 -for n in range(23, 101): - for r in range(n+1): - x = facs[n] / (facs[r]*facs[n-r]) - if x > 1000000: - count += 1 - -print count - diff --git a/src/projecteuler/054.py b/src/projecteuler/054.py deleted file mode 100644 index bd7d14f..0000000 --- a/src/projecteuler/054.py +++ /dev/null @@ -1,287 +0,0 @@ - -values = { -'2': 2, -'3': 3, -'4': 4, -'5': 5, -'6': 6, -'7': 7, -'8': 8, -'9': 9, -'T': 10, -'J': 11, -'Q': 12, -'K': 13, -'A': 14 -} - -colors = { -'H': 1, -'C': 2, -'S': 3, -'D': 4 -} - - -def handvalue(hand): - return values[hand[0]]*10 + colors[hand[1]] - -def count_cards(hand): - hand = [ x/10 for x in hand ] - counter = { } - for c in hand: - if c in counter: - counter[c] += 1 - else: - counter[c] = 1 - return counter - -def high_card(hand): - hand = [ x/10 for x in hand ] - hand.sort() - return hand[-1] - -def is_flush(hand): - return (hand[0]%10 == hand[1]%10 == hand[2]%10 == hand[3]%10 == hand[4]%10) - -def is_straight(hand): - hand = [ x/10 for x in hand ] - hand.sort() - return (hand[4] == hand[3]+1 == hand[2]+2 == hand[1]+3 == hand[0]+4) - -def is_straight_flush(hand): - return is_flush(hand) and is_straight(hand) - -def is_royal_flush(hand): - return is_straight_flush(hand) and high_card(hand) == values['A'] - -def is_n_of_a_kind(hand, n): - counter = count_cards(hand) - for c in counter: - if counter[c] == n: - return True - return False - -def is_four_of_a_kind(hand): - return is_n_of_a_kind(hand, 4) - -def is_three_of_a_kind(hand): - return is_n_of_a_kind(hand, 3) - -def is_one_pair(hand): - return is_n_of_a_kind(hand, 2) - -def is_two_pairs(hand): - counter = count_cards(hand) - pairs = 0 - for c in counter: - if counter[c] == 2 or counter[c] == 3: - pairs += 1 - return pairs == 2 - -def is_full_house(hand): - return is_two_pairs(hand) and is_three_of_a_kind(hand) - - -def better_hand(hand1, hand2): - # both are straight flush - if is_straight_flush(hand1): - if high_card(hand1) > high_card(hand2): - return 1 - else: - return 2 - - # both are four of a kind - if is_four_of_a_kind(hand1): - count1 = count_cards(hand1) - count2 = count_cards(hand2) - value4_1 = 0 - value4_2 = 0 - for c in count1: - if count1[c] == 4: - value4_1 = c - break - for c in count2: - if count2[c] == 4: - value4_2 = c - break - if value4_1 > value4_2: - return 1 - else: - return 2 - - # both are full house - if is_full_house(hand1): - count1 = count_cards(hand1) - count2 = count_cards(hand2) - value3_1 = 0 - value3_2 = 0 - for c in count1: - if count1[c] == 3: - value3_1 = c - break - for c in count2: - if count2[c] == 3: - value3_2 = c - break - if value3_1 > value3_2: - return 1 - else: - return 2 - - # both are flush - if is_flush(hand1): - hand1 = [ x/10 for x in hand1 ] - hand2 = [ x/10 for x in hand2 ] - hand1.sort() - hand2.sort() - for i in range(0, 5): - if hand1[4-i] > hand2[4-i]: - return 1 - elif hand2[4-i] > hand1[4-i]: - return 2 - print "ERROR: no winner with hands: ", hand1, hand2 # should never be reached - - # both are straight - if is_straight(hand1): - if high_card(hand1) > high_card(hand2): - return 1 - else: - return 2 - - # both are three of a kind - if is_three_of_a_kind(hand1): - count1 = count_cards(hand1) - count2 = count_cards(hand2) - value3_1 = 0 - value3_2 = 0 - for c in count1: - if count1[c] == 3: - value3_1 = c - break - for c in count2: - if count2[c] == 3: - value3_2 = c - break - if value3_1 > value3_2: - return 1 - else: - return 2 - - # both are two pairs - if is_two_pairs(hand1): - count1 = count_cards(hand1) - count2 = count_cards(hand2) - value2_1 = [] - value1_1 = 0 - value2_2 = [] - value1_2 = 0 - for c in count1: - if count1[c] == 2: - value2_1.append(c) - elif count1[c] == 1: - value1_1 = c - for c in count2: - if count2[c] == 2: - value2_2.append(c) - elif count1[c] == 1: - value1_2 = c - value2_1.sort() - value2_2.sort() - if value2_1[1] > value2_2[1]: - return 1 - elif value2_2[1] > value2_1[1]: - return 2 - elif value2_1[0] > value2_2[0]: - return 1 - elif value2_2[0] > value2_1[0]: - return 2 - elif value1_1 > value1_2: - return 1 - else: - return 2 - - # both are one pair - if is_one_pair(hand1): - count1 = count_cards(hand1) - count2 = count_cards(hand2) - value2_1 = 0 - value1_1 = [] - value2_2 = 0 - value1_2 = [] - for c in count1: - if count1[c] == 2: - value2_1 = c - elif count1[c] == 1: - value1_1.append(c) - for c in count2: - if count2[c] == 2: - value2_2 = c - elif count2[c] == 1: - value1_2.append(c) - value1_1.sort() - value1_2.sort() - if value2_1 > value2_2: - return 1 - elif value2_2 > value2_1: - return 2 - elif high_card(value1_1) > high_card(value1_2): - return 1 - else: - return 2 - - - # both are high card - if high_card(hand1) > high_card(hand2): - return 1 - else: - return 2 - - -def rank(hand): - if is_royal_flush(hand): - return 10 - if is_straight_flush(hand): - return 9 - if is_four_of_a_kind(hand): - return 8 - if is_full_house(hand): - return 7 - if is_flush(hand): - return 6 - if is_straight(hand): - return 5 - if is_three_of_a_kind(hand): - return 4 - if is_two_pairs(hand): - return 3 - if is_one_pair(hand): - return 2 - return 1 # high card - -def winner(hand1, hand2): - if rank(hand1) > rank(hand2): - return 1 - if rank(hand2) > rank(hand1): - return 2 - return better_hand(hand1, hand2) - -hands = [] - -f = open('054.txt', 'r') -for line in f: - line.rstrip('\n') - hands.append([ handvalue(x) for x in line.split(' ') ]) -f.close() - -count_win1 = 0 - -for h in hands: - hand1 = h[:5] - hand2 = h[5:] - if winner(hand1, hand2) == 1: - count_win1 += 1 - -print count_win1 - - diff --git a/src/projecteuler/054.txt b/src/projecteuler/054.txt deleted file mode 100644 index 231e249..0000000 --- a/src/projecteuler/054.txt +++ /dev/null @@ -1,1000 +0,0 @@ -8C TS KC 9H 4S 7D 2S 5D 3S AC
-5C AD 5D AC 9C 7C 5H 8D TD KS
-3H 7H 6S KC JS QH TD JC 2D 8S
-TH 8H 5C QS TC 9H 4D JC KS JS
-7C 5H KC QH JD AS KH 4C AD 4S
-5H KS 9C 7D 9H 8D 3S 5D 5C AH
-6H 4H 5C 3H 2H 3S QH 5S 6S AS
-TD 8C 4H 7C TC KC 4C 3H 7S KS
-7C 9C 6D KD 3H 4C QS QC AC KH
-JC 6S 5H 2H 2D KD 9D 7C AS JS
-AD QH TH 9D 8H TS 6D 3S AS AC
-2H 4S 5C 5S TC KC JD 6C TS 3C
-QD AS 6H JS 2C 3D 9H KC 4H 8S
-KD 8S 9S 7C 2S 3S 6D 6S 4H KC
-3C 8C 2D 7D 4D 9S 4S QH 4H JD
-8C KC 7S TC 2D TS 8H QD AC 5C
-3D KH QD 6C 6S AD AS 8H 2H QS
-6S 8D 4C 8S 6C QH TC 6D 7D 9D
-2S 8D 8C 4C TS 9S 9D 9C AC 3D
-3C QS 2S 4H JH 3D 2D TD 8S 9H
-5H QS 8S 6D 3C 8C JD AS 7H 7D
-6H TD 9D AS JH 6C QC 9S KD JC
-AH 8S QS 4D TH AC TS 3C 3D 5C
-5S 4D JS 3D 8H 6C TS 3S AD 8C
-6D 7C 5D 5H 3S 5C JC 2H 5S 3D
-5H 6H 2S KS 3D 5D JD 7H JS 8H
-KH 4H AS JS QS QC TC 6D 7C KS
-3D QS TS 2H JS 4D AS 9S JC KD
-QD 5H 4D 5D KH 7H 3D JS KD 4H
-2C 9H 6H 5C 9D 6C JC 2D TH 9S
-7D 6D AS QD JH 4D JS 7C QS 5C
-3H KH QD AD 8C 8H 3S TH 9D 5S
-AH 9S 4D 9D 8S 4H JS 3C TC 8D
-2C KS 5H QD 3S TS 9H AH AD 8S
-5C 7H 5D KD 9H 4D 3D 2D KS AD
-KS KC 9S 6D 2C QH 9D 9H TS TC
-9C 6H 5D QH 4D AD 6D QC JS KH
-9S 3H 9D JD 5C 4D 9H AS TC QH
-2C 6D JC 9C 3C AD 9S KH 9D 7D
-KC 9C 7C JC JS KD 3H AS 3C 7D
-QD KH QS 2C 3S 8S 8H 9H 9C JC
-QH 8D 3C KC 4C 4H 6D AD 9H 9D
-3S KS QS 7H KH 7D 5H 5D JD AD
-2H 2C 6H TH TC 7D 8D 4H 8C AS
-4S 2H AC QC 3S 6D TH 4D 4C KH
-4D TC KS AS 7C 3C 6D 2D 9H 6C
-8C TD 5D QS 2C 7H 4C 9C 3H 9H
-5H JH TS 7S TD 6H AD QD 8H 8S
-5S AD 9C 8C 7C 8D 5H 9D 8S 2S
-4H KH KS 9S 2S KC 5S AD 4S 7D
-QS 9C QD 6H JS 5D AC 8D 2S AS
-KH AC JC 3S 9D 9S 3C 9C 5S JS
-AD 3C 3D KS 3S 5C 9C 8C TS 4S
-JH 8D 5D 6H KD QS QD 3D 6C KC
-8S JD 6C 3S 8C TC QC 3C QH JS
-KC JC 8H 2S 9H 9C JH 8S 8C 9S
-8S 2H QH 4D QC 9D KC AS TH 3C
-8S 6H TH 7C 2H 6S 3C 3H AS 7S
-QH 5S JS 4H 5H TS 8H AH AC JC
-9D 8H 2S 4S TC JC 3C 7H 3H 5C
-3D AD 3C 3S 4C QC AS 5D TH 8C
-6S 9D 4C JS KH AH TS JD 8H AD
-4C 6S 9D 7S AC 4D 3D 3S TC JD
-AD 7H 6H 4H JH KC TD TS 7D 6S
-8H JH TC 3S 8D 8C 9S 2C 5C 4D
-2C 9D KC QH TH QS JC 9C 4H TS
-QS 3C QD 8H KH 4H 8D TD 8S AC
-7C 3C TH 5S 8H 8C 9C JD TC KD
-QC TC JD TS 8C 3H 6H KD 7C TD
-JH QS KS 9C 6D 6S AS 9H KH 6H
-2H 4D AH 2D JH 6H TD 5D 4H JD
-KD 8C 9S JH QD JS 2C QS 5C 7C
-4S TC 7H 8D 2S 6H 7S 9C 7C KC
-8C 5D 7H 4S TD QC 8S JS 4H KS
-AD 8S JH 6D TD KD 7C 6C 2D 7D
-JC 6H 6S JS 4H QH 9H AH 4C 3C
-6H 5H AS 7C 7S 3D KH KC 5D 5C
-JC 3D TD AS 4D 6D 6S QH JD KS
-8C 7S 8S QH 2S JD 5C 7H AH QD
-8S 3C 6H 6C 2C 8D TD 7D 4C 4D
-5D QH KH 7C 2S 7H JS 6D QC QD
-AD 6C 6S 7D TH 6H 2H 8H KH 4H
-KS JS KD 5D 2D KH 7D 9C 8C 3D
-9C 6D QD 3C KS 3S 7S AH JD 2D
-AH QH AS JC 8S 8H 4C KC TH 7D
-JC 5H TD 7C 5D KD 4C AD 8H JS
-KC 2H AC AH 7D JH KH 5D 7S 6D
-9S 5S 9C 6H 8S TD JD 9H 6C AC
-7D 8S 6D TS KD 7H AC 5S 7C 5D
-AH QC JC 4C TC 8C 2H TS 2C 7D
-KD KC 6S 3D 7D 2S 8S 3H 5S 5C
-8S 5D 8H 4C 6H KC 3H 7C 5S KD
-JH 8C 3D 3C 6C KC TD 7H 7C 4C
-JC KC 6H TS QS TD KS 8H 8C 9S
-6C 5S 9C QH 7D AH KS KC 9S 2C
-4D 4S 8H TD 9C 3S 7D 9D AS TH
-6S 7D 3C 6H 5D KD 2C 5C 9D 9C
-2H KC 3D AD 3H QD QS 8D JC 4S
-8C 3H 9C 7C AD 5D JC 9D JS AS
-5D 9H 5C 7H 6S 6C QC JC QD 9S
-JC QS JH 2C 6S 9C QC 3D 4S TC
-4H 5S 8D 3D 4D 2S KC 2H JS 2C
-TD 3S TH KD 4D 7H JH JS KS AC
-7S 8C 9S 2D 8S 7D 5C AD 9D AS
-8C 7H 2S 6C TH 3H 4C 3S 8H AC
-KD 5H JC 8H JD 2D 4H TD JH 5C
-3D AS QH KS 7H JD 8S 5S 6D 5H
-9S 6S TC QS JC 5C 5D 9C TH 8C
-5H 3S JH 9H 2S 2C 6S 7S AS KS
-8C QD JC QS TC QC 4H AC KH 6C
-TC 5H 7D JH 4H 2H 8D JC KS 4D
-5S 9C KH KD 9H 5C TS 3D 7D 2D
-5H AS TC 4D 8C 2C TS 9D 3H 8D
-6H 8D 2D 9H JD 6C 4S 5H 5S 6D
-AD 9C JC 7D 6H 9S 6D JS 9H 3C
-AD JH TC QS 4C 5D 9S 7C 9C AH
-KD 6H 2H TH 8S QD KS 9D 9H AS
-4H 8H 8D 5H 6C AH 5S AS AD 8S
-QS 5D 4S 2H TD KS 5H AC 3H JC
-9C 7D QD KD AC 6D 5H QH 6H 5S
-KC AH QH 2H 7D QS 3H KS 7S JD
-6C 8S 3H 6D KS QD 5D 5C 8H TC
-9H 4D 4S 6S 9D KH QC 4H 6C JD
-TD 2D QH 4S 6H JH KD 3C QD 8C
-4S 6H 7C QD 9D AS AH 6S AD 3C
-2C KC TH 6H 8D AH 5C 6D 8S 5D
-TD TS 7C AD JC QD 9H 3C KC 7H
-5D 4D 5S 8H 4H 7D 3H JD KD 2D
-JH TD 6H QS 4S KD 5C 8S 7D 8H
-AC 3D AS 8C TD 7H KH 5D 6C JD
-9D KS 7C 6D QH TC JD KD AS KC
-JH 8S 5S 7S 7D AS 2D 3D AD 2H
-2H 5D AS 3C QD KC 6H 9H 9S 2C
-9D 5D TH 4C JH 3H 8D TC 8H 9H
-6H KD 2C TD 2H 6C 9D 2D JS 8C
-KD 7S 3C 7C AS QH TS AD 8C 2S
-QS 8H 6C JS 4C 9S QC AD TD TS
-2H 7C TS TC 8C 3C 9H 2D 6D JC
-TC 2H 8D JH KS 6D 3H TD TH 8H
-9D TD 9H QC 5D 6C 8H 8C KC TS
-2H 8C 3D AH 4D TH TC 7D 8H KC
-TS 5C 2D 8C 6S KH AH 5H 6H KC
-5S 5D AH TC 4C JD 8D 6H 8C 6C
-KC QD 3D 8H 2D JC 9H 4H AD 2S
-TD 6S 7D JS KD 4H QS 2S 3S 8C
-4C 9H JH TS 3S 4H QC 5S 9S 9C
-2C KD 9H JS 9S 3H JC TS 5D AC
-AS 2H 5D AD 5H JC 7S TD JS 4C
-2D 4S 8H 3D 7D 2C AD KD 9C TS
-7H QD JH 5H JS AC 3D TH 4C 8H
-6D KH KC QD 5C AD 7C 2D 4H AC
-3D 9D TC 8S QD 2C JC 4H JD AH
-6C TD 5S TC 8S AH 2C 5D AS AC
-TH 7S 3D AS 6C 4C 7H 7D 4H AH
-5C 2H KS 6H 7S 4H 5H 3D 3C 7H
-3C 9S AC 7S QH 2H 3D 6S 3S 3H
-2D 3H AS 2C 6H TC JS 6S 9C 6C
-QH KD QD 6D AC 6H KH 2C TS 8C
-8H 7D 3S 9H 5D 3H 4S QC 9S 5H
-2D 9D 7H 6H 3C 8S 5H 4D 3S 4S
-KD 9S 4S TC 7S QC 3S 8S 2H 7H
-TC 3D 8C 3H 6C 2H 6H KS KD 4D
-KC 3D 9S 3H JS 4S 8H 2D 6C 8S
-6H QS 6C TC QD 9H 7D 7C 5H 4D
-TD 9D 8D 6S 6C TC 5D TS JS 8H
-4H KC JD 9H TC 2C 6S 5H 8H AS
-JS 9C 5C 6S 9D JD 8H KC 4C 6D
-4D 8D 8S 6C 7C 6H 7H 8H 5C KC
-TC 3D JC 6D KS 9S 6H 7S 9C 2C
-6C 3S KD 5H TS 7D 9H 9S 6H KH
-3D QD 4C 6H TS AC 3S 5C 2H KD
-4C AS JS 9S 7C TS 7H 9H JC KS
-4H 8C JD 3H 6H AD 9S 4S 5S KS
-4C 2C 7D 3D AS 9C 2S QS KC 6C
-8S 5H 3D 2S AC 9D 6S 3S 4D TD
-QD TH 7S TS 3D AC 7H 6C 5D QC
-TC QD AD 9C QS 5C 8D KD 3D 3C
-9D 8H AS 3S 7C 8S JD 2D 8D KC
-4C TH AC QH JS 8D 7D 7S 9C KH
-9D 8D 4C JH 2C 2S QD KD TS 4H
-4D 6D 5D 2D JH 3S 8S 3H TC KH
-AD 4D 2C QS 8C KD JH JD AH 5C
-5C 6C 5H 2H JH 4H KS 7C TC 3H
-3C 4C QC 5D JH 9C QD KH 8D TC
-3H 9C JS 7H QH AS 7C 9H 5H JC
-2D 5S QD 4S 3C KC 6S 6C 5C 4C
-5D KH 2D TS 8S 9C AS 9S 7C 4C
-7C AH 8C 8D 5S KD QH QS JH 2C
-8C 9D AH 2H AC QC 5S 8H 7H 2C
-QD 9H 5S QS QC 9C 5H JC TH 4H
-6C 6S 3H 5H 3S 6H KS 8D AC 7S
-AC QH 7H 8C 4S KC 6C 3D 3S TC
-9D 3D JS TH AC 5H 3H 8S 3S TC
-QD KH JS KS 9S QC 8D AH 3C AC
-5H 6C KH 3S 9S JH 2D QD AS 8C
-6C 4D 7S 7H 5S JC 6S 9H 4H JH
-AH 5S 6H 9S AD 3S TH 2H 9D 8C
-4C 8D 9H 7C QC AD 4S 9C KC 5S
-9D 6H 4D TC 4C JH 2S 5D 3S AS
-2H 6C 7C KH 5C AD QS TH JD 8S
-3S 4S 7S AH AS KC JS 2S AD TH
-JS KC 2S 7D 8C 5C 9C TS 5H 9D
-7S 9S 4D TD JH JS KH 6H 5D 2C
-JD JS JC TH 2D 3D QD 8C AC 5H
-7S KH 5S 9D 5D TD 4S 6H 3C 2D
-4S 5D AC 8D 4D 7C AD AS AH 9C
-6S TH TS KS 2C QC AH AS 3C 4S
-2H 8C 3S JC 5C 7C 3H 3C KH JH
-7S 3H JC 5S 6H 4C 2S 4D KC 7H
-4D 7C 4H 9S 8S 6S AD TC 6C JC
-KH QS 3S TC 4C 8H 8S AC 3C TS
-QD QS TH 3C TS 7H 7D AH TD JC
-TD JD QC 4D 9S 7S TS AD 7D AC
-AH 7H 4S 6D 7C 2H 9D KS JC TD
-7C AH JD 4H 6D QS TS 2H 2C 5C
-TC KC 8C 9S 4C JS 3C JC 6S AH
-AS 7D QC 3D 5S JC JD 9D TD KH
-TH 3C 2S 6H AH AC 5H 5C 7S 8H
-QC 2D AC QD 2S 3S JD QS 6S 8H
-KC 4H 3C 9D JS 6H 3S 8S AS 8C
-7H KC 7D JD 2H JC QH 5S 3H QS
-9H TD 3S 8H 7S AC 5C 6C AH 7C
-8D 9H AH JD TD QS 7D 3S 9C 8S
-AH QH 3C JD KC 4S 5S 5D TD KS
-9H 7H 6S JH TH 4C 7C AD 5C 2D
-7C KD 5S TC 9D 6S 6C 5D 2S TH
-KC 9H 8D 5H 7H 4H QC 3D 7C AS
-6S 8S QC TD 4S 5C TH QS QD 2S
-8S 5H TH QC 9H 6S KC 7D 7C 5C
-7H KD AH 4D KH 5C 4S 2D KC QH
-6S 2C TD JC AS 4D 6C 8C 4H 5S
-JC TC JD 5S 6S 8D AS 9D AD 3S
-6D 6H 5D 5S TC 3D 7D QS 9D QD
-4S 6C 8S 3S 7S AD KS 2D 7D 7C
-KC QH JC AC QD 5D 8D QS 7H 7D
-JS AH 8S 5H 3D TD 3H 4S 6C JH
-4S QS 7D AS 9H JS KS 6D TC 5C
-2D 5C 6H TC 4D QH 3D 9H 8S 6C
-6D 7H TC TH 5S JD 5C 9C KS KD
-8D TD QH 6S 4S 6C 8S KC 5C TC
-5S 3D KS AC 4S 7D QD 4C TH 2S
-TS 8H 9S 6S 7S QH 3C AH 7H 8C
-4C 8C TS JS QC 3D 7D 5D 7S JH
-8S 7S 9D QC AC 7C 6D 2H JH KC
-JS KD 3C 6S 4S 7C AH QC KS 5H
-KS 6S 4H JD QS TC 8H KC 6H AS
-KH 7C TC 6S TD JC 5C 7D AH 3S
-3H 4C 4H TC TH 6S 7H 6D 9C QH
-7D 5H 4S 8C JS 4D 3D 8S QH KC
-3H 6S AD 7H 3S QC 8S 4S 7S JS
-3S JD KH TH 6H QS 9C 6C 2D QD
-4S QH 4D 5H KC 7D 6D 8D TH 5S
-TD AD 6S 7H KD KH 9H 5S KC JC
-3H QC AS TS 4S QD KS 9C 7S KC
-TS 6S QC 6C TH TC 9D 5C 5D KD
-JS 3S 4H KD 4C QD 6D 9S JC 9D
-8S JS 6D 4H JH 6H 6S 6C KS KH
-AC 7D 5D TC 9S KH 6S QD 6H AS
-AS 7H 6D QH 8D TH 2S KH 5C 5H
-4C 7C 3D QC TC 4S KH 8C 2D JS
-6H 5D 7S 5H 9C 9H JH 8S TH 7H
-AS JS 2S QD KH 8H 4S AC 8D 8S
-3H 4C TD KD 8C JC 5C QS 2D JD
-TS 7D 5D 6C 2C QS 2H 3C AH KS
-4S 7C 9C 7D JH 6C 5C 8H 9D QD
-2S TD 7S 6D 9C 9S QS KH QH 5C
-JC 6S 9C QH JH 8D 7S JS KH 2H
-8D 5H TH KC 4D 4S 3S 6S 3D QS
-2D JD 4C TD 7C 6D TH 7S JC AH
-QS 7S 4C TH 9D TS AD 4D 3H 6H
-2D 3H 7D JD 3D AS 2S 9C QC 8S
-4H 9H 9C 2C 7S JH KD 5C 5D 6H
-TC 9H 8H JC 3C 9S 8D KS AD KC
-TS 5H JD QS QH QC 8D 5D KH AH
-5D AS 8S 6S 4C AH QC QD TH 7H
-3H 4H 7D 6S 4S 9H AS 8H JS 9D
-JD 8C 2C 9D 7D 5H 5S 9S JC KD
-KD 9C 4S QD AH 7C AD 9D AC TD
-6S 4H 4S 9C 8D KS TC 9D JH 7C
-5S JC 5H 4S QH AC 2C JS 2S 9S
-8C 5H AS QD AD 5C 7D 8S QC TD
-JC 4C 8D 5C KH QS 4D 6H 2H 2C
-TH 4S 2D KC 3H QD AC 7H AD 9D
-KH QD AS 8H TH KC 8D 7S QH 8C
-JC 6C 7D 8C KH AD QS 2H 6S 2D
-JC KH 2D 7D JS QC 5H 4C 5D AD
-TS 3S AD 4S TD 2D TH 6S 9H JH
-9H 2D QS 2C 4S 3D KH AS AC 9D
-KH 6S 8H 4S KD 7D 9D TS QD QC
-JH 5H AH KS AS AD JC QC 5S KH
-5D 7D 6D KS KD 3D 7C 4D JD 3S
-AC JS 8D 5H 9C 3H 4H 4D TS 2C
-6H KS KH 9D 7C 2S 6S 8S 2H 3D
-6H AC JS 7S 3S TD 8H 3H 4H TH
-9H TC QC KC 5C KS 6H 4H AC 8S
-TC 7D QH 4S JC TS 6D 6C AC KH
-QH 7D 7C JH QS QD TH 3H 5D KS
-3D 5S 8D JS 4C 2C KS 7H 9C 4H
-5H 8S 4H TD 2C 3S QD QC 3H KC
-QC JS KD 9C AD 5S 9D 7D 7H TS
-8C JC KH 7C 7S 6C TS 2C QD TH
-5S 9D TH 3C 7S QH 8S 9C 2H 5H
-5D 9H 6H 2S JS KH 3H 7C 2H 5S
-JD 5D 5S 2C TC 2S 6S 6C 3C 8S
-4D KH 8H 4H 2D KS 3H 5C 2S 9H
-3S 2D TD 7H 8S 6H JD KC 9C 8D
-6S QD JH 7C 9H 5H 8S 8H TH TD
-QS 7S TD 7D TS JC KD 7C 3C 2C
-3C JD 8S 4H 2D 2S TD AS 4D AC
-AH KS 6C 4C 4S 7D 8C 9H 6H AS
-5S 3C 9S 2C QS KD 4D 4S AC 5D
-2D TS 2C JS KH QH 5D 8C AS KC
-KD 3H 6C TH 8S 7S KH 6H 9S AC
-6H 7S 6C QS AH 2S 2H 4H 5D 5H
-5H JC QD 2C 2S JD AS QC 6S 7D
-6C TC AS KD 8H 9D 2C 7D JH 9S
-2H 4C 6C AH 8S TD 3H TH 7C TS
-KD 4S TS 6C QH 8D 9D 9C AH 7D
-6D JS 5C QD QC 9C 5D 8C 2H KD
-3C QH JH AD 6S AH KC 8S 6D 6H
-3D 7C 4C 7S 5S 3S 6S 5H JC 3C
-QH 7C 5H 3C 3S 8C TS 4C KD 9C
-QD 3S 7S 5H 7H QH JC 7C 8C KD
-3C KD KH 2S 4C TS AC 6S 2C 7C
-2C KH 3C 4C 6H 4D 5H 5S 7S QD
-4D 7C 8S QD TS 9D KS 6H KD 3C
-QS 4D TS 7S 4C 3H QD 8D 9S TC
-TS QH AC 6S 3C 9H 9D QS 8S 6H
-3S 7S 5D 4S JS 2D 6C QH 6S TH
-4C 4H AS JS 5D 3D TS 9C AC 8S
-6S 9C 7C 3S 5C QS AD AS 6H 3C
-9S 8C 7H 3H 6S 7C AS 9H JD KH
-3D 3H 7S 4D 6C 7C AC 2H 9C TH
-4H 5S 3H AC TC TH 9C 9H 9S 8D
-8D 9H 5H 4D 6C 2H QD 6S 5D 3S
-4C 5C JD QS 4D 3H TH AC QH 8C
-QC 5S 3C 7H AD 4C KS 4H JD 6D
-QS AH 3H KS 9H 2S JS JH 5H 2H
-2H 5S TH 6S TS 3S KS 3C 5H JS
-2D 9S 7H 3D KC JH 6D 7D JS TD
-AC JS 8H 2C 8C JH JC 2D TH 7S
-5D 9S 8H 2H 3D TC AH JC KD 9C
-9D QD JC 2H 6D KH TS 9S QH TH
-2C 8D 4S JD 5H 3H TH TC 9C KC
-AS 3D 9H 7D 4D TH KH 2H 7S 3H
-4H 7S KS 2S JS TS 8S 2H QD 8D
-5S 6H JH KS 8H 2S QC AC 6S 3S
-JC AS AD QS 8H 6C KH 4C 4D QD
-2S 3D TS TD 9S KS 6S QS 5C 8D
-3C 6D 4S QC KC JH QD TH KH AD
-9H AH 4D KS 2S 8D JH JC 7C QS
-2D 6C TH 3C 8H QD QH 2S 3S KS
-6H 5D 9S 4C TS TD JS QD 9D JD
-5H 8H KH 8S KS 7C TD AD 4S KD
-2C 7C JC 5S AS 6C 7D 8S 5H 9C
-6S QD 9S TS KH QS 5S QH 3C KC
-7D 3H 3C KD 5C AS JH 7H 6H JD
-9D 5C 9H KC 8H KS 4S AD 4D 2S
-3S JD QD 8D 2S 7C 5S 6S 5H TS
-6D 9S KC TD 3S 6H QD JD 5C 8D
-5H 9D TS KD 8D 6H TD QC 4C 7D
-6D 4S JD 9D AH 9S AS TD 9H QD
-2D 5S 2H 9C 6H 9S TD QC 7D TC
-3S 2H KS TS 2C 9C 8S JS 9D 7D
-3C KC 6D 5D 6C 6H 8S AS 7S QS
-JH 9S 2H 8D 4C 8H 9H AD TH KH
-QC AS 2S JS 5C 6H KD 3H 7H 2C
-QD 8H 2S 8D 3S 6D AH 2C TC 5C
-JD JS TS 8S 3H 5D TD KC JC 6H
-6S QS TC 3H 5D AH JC 7C 7D 4H
-7C 5D 8H 9C 2H 9H JH KH 5S 2C
-9C 7H 6S TH 3S QC QD 4C AC JD
-2H 5D 9S 7D KC 3S QS 2D AS KH
-2S 4S 2H 7D 5C TD TH QH 9S 4D
-6D 3S TS 6H 4H KS 9D 8H 5S 2D
-9H KS 4H 3S 5C 5D KH 6H 6S JS
-KC AS 8C 4C JC KH QC TH QD AH
-6S KH 9S 2C 5H TC 3C 7H JC 4D
-JD 4S 6S 5S 8D 7H 7S 4D 4C 2H
-7H 9H 5D KH 9C 7C TS TC 7S 5H
-4C 8D QC TS 4S 9H 3D AD JS 7C
-8C QS 5C 5D 3H JS AH KC 4S 9D
-TS JD 8S QS TH JH KH 2D QD JS
-JD QC 5D 6S 9H 3S 2C 8H 9S TS
-2S 4C AD 7H JC 5C 2D 6D 4H 3D
-7S JS 2C 4H 8C AD QD 9C 3S TD
-JD TS 4C 6H 9H 7D QD 6D 3C AS
-AS 7C 4C 6S 5D 5S 5C JS QC 4S
-KD 6S 9S 7C 3C 5S 7D JH QD JS
-4S 7S JH 2C 8S 5D 7H 3D QH AD
-TD 6H 2H 8D 4H 2D 7C AD KH 5D
-TS 3S 5H 2C QD AH 2S 5C KH TD
-KC 4D 8C 5D AS 6C 2H 2S 9H 7C
-KD JS QC TS QS KH JH 2C 5D AD
-3S 5H KC 6C 9H 3H 2H AD 7D 7S
-7S JS JH KD 8S 7D 2S 9H 7C 2H
-9H 2D 8D QC 6S AD AS 8H 5H 6C
-2S 7H 6C 6D 7D 8C 5D 9D JC 3C
-7C 9C 7H JD 2H KD 3S KH AD 4S
-QH AS 9H 4D JD KS KD TS KH 5H
-4C 8H 5S 3S 3D 7D TD AD 7S KC
-JS 8S 5S JC 8H TH 9C 4D 5D KC
-7C 5S 9C QD 2C QH JS 5H 8D KH
-TD 2S KS 3D AD KC 7S TC 3C 5D
-4C 2S AD QS 6C 9S QD TH QH 5C
-8C AD QS 2D 2S KC JD KS 6C JC
-8D 4D JS 2H 5D QD 7S 7D QH TS
-6S 7H 3S 8C 8S 9D QS 8H 6C 9S
-4S TC 2S 5C QD 4D QS 6D TH 6S
-3S 5C 9D 6H 8D 4C 7D TC 7C TD
-AH 6S AS 7H 5S KD 3H 5H AC 4C
-8D 8S AH KS QS 2C AD 6H 7D 5D
-6H 9H 9S 2H QS 8S 9C 5D 2D KD
-TS QC 5S JH 7D 7S TH 9S 9H AC
-7H 3H 6S KC 4D 6D 5C 4S QD TS
-TD 2S 7C QD 3H JH 9D 4H 7S 7H
-KS 3D 4H 5H TC 2S AS 2D 6D 7D
-8H 3C 7H TD 3H AD KC TH 9C KH
-TC 4C 2C 9S 9D 9C 5C 2H JD 3C
-3H AC TS 5D AD 8D 6H QC 6S 8C
-2S TS 3S JD 7H 8S QH 4C 5S 8D
-AC 4S 6C 3C KH 3D 7C 2D 8S 2H
-4H 6C 8S TH 2H 4S 8H 9S 3H 7S
-7C 4C 9C 2C 5C AS 5D KD 4D QH
-9H 4H TS AS 7D 8D 5D 9S 8C 2H
-QC KD AC AD 2H 7S AS 3S 2D 9S
-2H QC 8H TC 6D QD QS 5D KH 3C
-TH JD QS 4C 2S 5S AD 7H 3S AS
-7H JS 3D 6C 3S 6D AS 9S AC QS
-9C TS AS 8C TC 8S 6H 9D 8D 6C
-4D JD 9C KC 7C 6D KS 3S 8C AS
-3H 6S TC 8D TS 3S KC 9S 7C AS
-8C QC 4H 4S 8S 6C 3S TC AH AC
-4D 7D 5C AS 2H 6S TS QC AD TC
-QD QC 8S 4S TH 3D AH TS JH 4H
-5C 2D 9S 2C 3H 3C 9D QD QH 7D
-KC 9H 6C KD 7S 3C 4D AS TC 2D
-3D JS 4D 9D KS 7D TH QC 3H 3C
-8D 5S 2H 9D 3H 8C 4C 4H 3C TH
-JC TH 4S 6S JD 2D 4D 6C 3D 4C
-TS 3S 2D 4H AC 2C 6S 2H JH 6H
-TD 8S AD TC AH AC JH 9S 6S 7S
-6C KC 4S JD 8D 9H 5S 7H QH AH
-KD 8D TS JH 5C 5H 3H AD AS JS
-2D 4H 3D 6C 8C 7S AD 5D 5C 8S
-TD 5D 7S 9C 4S 5H 6C 8C 4C 8S
-JS QH 9C AS 5C QS JC 3D QC 7C
-JC 9C KH JH QS QC 2C TS 3D AD
-5D JH AC 5C 9S TS 4C JD 8C KS
-KC AS 2D KH 9H 2C 5S 4D 3D 6H
-TH AH 2D 8S JC 3D 8C QH 7S 3S
-8H QD 4H JC AS KH KS 3C 9S 6D
-9S QH 7D 9C 4S AC 7H KH 4D KD
-AH AD TH 6D 9C 9S KD KS QH 4H
-QD 6H 9C 7C QS 6D 6S 9D 5S JH
-AH 8D 5H QD 2H JC KS 4H KH 5S
-5C 2S JS 8D 9C 8C 3D AS KC AH
-JD 9S 2H QS 8H 5S 8C TH 5C 4C
-QC QS 8C 2S 2C 3S 9C 4C KS KH
-2D 5D 8S AH AD TD 2C JS KS 8C
-TC 5S 5H 8H QC 9H 6H JD 4H 9S
-3C JH 4H 9H AH 4S 2H 4C 8D AC
-8S TH 4D 7D 6D QD QS 7S TC 7C
-KH 6D 2D JD 5H JS QD JH 4H 4S
-9C 7S JH 4S 3S TS QC 8C TC 4H
-QH 9D 4D JH QS 3S 2C 7C 6C 2D
-4H 9S JD 5C 5H AH 9D TS 2D 4C
-KS JH TS 5D 2D AH JS 7H AS 8D
-JS AH 8C AD KS 5S 8H 2C 6C TH
-2H 5D AD AC KS 3D 8H TS 6H QC
-6D 4H TS 9C 5H JS JH 6S JD 4C
-JH QH 4H 2C 6D 3C 5D 4C QS KC
-6H 4H 6C 7H 6S 2S 8S KH QC 8C
-3H 3D 5D KS 4H TD AD 3S 4D TS
-5S 7C 8S 7D 2C KS 7S 6C 8C JS
-5D 2H 3S 7C 5C QD 5H 6D 9C 9H
-JS 2S KD 9S 8D TD TS AC 8C 9D
-5H QD 2S AC 8C 9H KS 7C 4S 3C
-KH AS 3H 8S 9C JS QS 4S AD 4D
-AS 2S TD AD 4D 9H JC 4C 5H QS
-5D 7C 4H TC 2D 6C JS 4S KC 3S
-4C 2C 5D AC 9H 3D JD 8S QS QH
-2C 8S 6H 3C QH 6D TC KD AC AH
-QC 6C 3S QS 4S AC 8D 5C AD KH
-5S 4C AC KH AS QC 2C 5C 8D 9C
-8H JD 3C KH 8D 5C 9C QD QH 9D
-7H TS 2C 8C 4S TD JC 9C 5H QH
-JS 4S 2C 7C TH 6C AS KS 7S JD
-JH 7C 9H 7H TC 5H 3D 6D 5D 4D
-2C QD JH 2H 9D 5S 3D TD AD KS
-JD QH 3S 4D TH 7D 6S QS KS 4H
-TC KS 5S 8D 8H AD 2S 2D 4C JH
-5S JH TC 3S 2D QS 9D 4C KD 9S
-AC KH 3H AS 9D KC 9H QD 6C 6S
-9H 7S 3D 5C 7D KC TD 8H 4H 6S
-3C 7H 8H TC QD 4D 7S 6S QH 6C
-6D AD 4C QD 6C 5D 7D 9D KS TS
-JH 2H JD 9S 7S TS KH 8D 5D 8H
-2D 9S 4C 7D 9D 5H QD 6D AC 6S
-7S 6D JC QD JH 4C 6S QS 2H 7D
-8C TD JH KD 2H 5C QS 2C JS 7S
-TC 5H 4H JH QD 3S 5S 5D 8S KH
-KS KH 7C 2C 5D JH 6S 9C 6D JC
-5H AH JD 9C JS KC 2H 6H 4D 5S
-AS 3C TH QC 6H 9C 8S 8C TD 7C
-KC 2C QD 9C KH 4D 7S 3C TS 9H
-9C QC 2S TS 8C TD 9S QD 3S 3C
-4D 9D TH JH AH 6S 2S JD QH JS
-QD 9H 6C KD 7D 7H 5D 6S 8H AH
-8H 3C 4S 2H 5H QS QH 7S 4H AC
-QS 3C 7S 9S 4H 3S AH KS 9D 7C
-AD 5S 6S 2H 2D 5H TC 4S 3C 8C
-QH TS 6S 4D JS KS JH AS 8S 6D
-2C 8S 2S TD 5H AS TC TS 6C KC
-KC TS 8H 2H 3H 7C 4C 5S TH TD
-KD AD KH 7H 7S 5D 5H 5S 2D 9C
-AD 9S 3D 7S 8C QC 7C 9C KD KS
-3C QC 9S 8C 4D 5C AS QD 6C 2C
-2H KC 8S JD 7S AC 8D 5C 2S 4D
-9D QH 3D 2S TC 3S KS 3C 9H TD
-KD 6S AC 2C 7H 5H 3S 6C 6H 8C
-QH TC 8S 6S KH TH 4H 5D TS 4D
-8C JS 4H 6H 2C 2H 7D AC QD 3D
-QS KC 6S 2D 5S 4H TD 3H JH 4C
-7S 5H 7H 8H KH 6H QS TH KD 7D
-5H AD KD 7C KH 5S TD 6D 3C 6C
-8C 9C 5H JD 7C KC KH 7H 2H 3S
-7S 4H AD 4D 8S QS TH 3D 7H 5S
-8D TC KS KD 9S 6D AD JD 5C 2S
-7H 8H 6C QD 2H 6H 9D TC 9S 7C
-8D 6D 4C 7C 6C 3C TH KH JS JH
-5S 3S 8S JS 9H AS AD 8H 7S KD
-JH 7C 2C KC 5H AS AD 9C 9S JS
-AD AC 2C 6S QD 7C 3H TH KS KD
-9D JD 4H 8H 4C KH 7S TS 8C KC
-3S 5S 2H 7S 6H 7D KS 5C 6D AD
-5S 8C 9H QS 7H 7S 2H 6C 7D TD
-QS 5S TD AC 9D KC 3D TC 2D 4D
-TD 2H 7D JD QD 4C 7H 5D KC 3D
-4C 3H 8S KD QH 5S QC 9H TC 5H
-9C QD TH 5H TS 5C 9H AH QH 2C
-4D 6S 3C AC 6C 3D 2C 2H TD TH
-AC 9C 5D QC 4D AD 8D 6D 8C KC
-AD 3C 4H AC 8D 8H 7S 9S TD JC
-4H 9H QH JS 2D TH TD TC KD KS
-5S 6S 9S 8D TH AS KH 5H 5C 8S
-JD 2S 9S 6S 5S 8S 5D 7S 7H 9D
-5D 8C 4C 9D AD TS 2C 7D KD TC
-8S QS 4D KC 5C 8D 4S KH JD KD
-AS 5C AD QH 7D 2H 9S 7H 7C TC
-2S 8S JD KH 7S 6C 6D AD 5D QC
-9H 6H 3S 8C 8H AH TC 4H JS TD
-2C TS 4D 7H 2D QC 9C 5D TH 7C
-6C 8H QC 5D TS JH 5C 5H 9H 4S
-2D QC 7H AS JS 8S 2H 4C 4H 8D
-JS 6S AC KD 3D 3C 4S 7H TH KC
-QH KH 6S QS 5S 4H 3C QD 3S 3H
-7H AS KH 8C 4H 9C 5S 3D 6S TS
-9C 7C 3H 5S QD 2C 3D AD AC 5H
-JH TD 2D 4C TS 3H KH AD 3S 7S
-AS 4C 5H 4D 6S KD JC 3C 6H 2D
-3H 6S 8C 2D TH 4S AH QH AD 5H
-7C 2S 9H 7H KC 5C 6D 5S 3H JC
-3C TC 9C 4H QD TD JH 6D 9H 5S
-7C 6S 5C 5D 6C 4S 7H 9H 6H AH
-AD 2H 7D KC 2C 4C 2S 9S 7H 3S
-TH 4C 8S 6S 3S AD KS AS JH TD
-5C TD 4S 4D AD 6S 5D TC 9C 7D
-8H 3S 4D 4S 5S 6H 5C AC 3H 3D
-9H 3C AC 4S QS 8S 9D QH 5H 4D
-JC 6C 5H TS AC 9C JD 8C 7C QD
-8S 8H 9C JD 2D QC QH 6H 3C 8D
-KS JS 2H 6H 5H QH QS 3H 7C 6D
-TC 3H 4S 7H QC 2H 3S 8C JS KH
-AH 8H 5S 4C 9H JD 3H 7S JC AC
-3C 2D 4C 5S 6C 4S QS 3S JD 3D
-5H 2D TC AH KS 6D 7H AD 8C 6H
-6C 7S 3C JD 7C 8H KS KH AH 6D
-AH 7D 3H 8H 8S 7H QS 5H 9D 2D
-JD AC 4H 7S 8S 9S KS AS 9D QH
-7S 2C 8S 5S JH QS JC AH KD 4C
-AH 2S 9H 4H 8D TS TD 6H QH JD
-4H JC 3H QS 6D 7S 9C 8S 9D 8D
-5H TD 4S 9S 4C 8C 8D 7H 3H 3D
-QS KH 3S 2C 2S 3C 7S TD 4S QD
-7C TD 4D 5S KH AC AS 7H 4C 6C
-2S 5H 6D JD 9H QS 8S 2C 2H TD
-2S TS 6H 9H 7S 4H JC 4C 5D 5S
-2C 5H 7D 4H 3S QH JC JS 6D 8H
-4C QH 7C QD 3S AD TH 8S 5S TS
-9H TC 2S TD JC 7D 3S 3D TH QH
-7D 4C 8S 5C JH 8H 6S 3S KC 3H
-JC 3H KH TC QH TH 6H 2C AC 5H
-QS 2H 9D 2C AS 6S 6C 2S 8C 8S
-9H 7D QC TH 4H KD QS AC 7S 3C
-4D JH 6S 5S 8H KS 9S QC 3S AS
-JD 2D 6S 7S TC 9H KC 3H 7D KD
-2H KH 7C 4D 4S 3H JS QD 7D KC
-4C JC AS 9D 3C JS 6C 8H QD 4D
-AH JS 3S 6C 4C 3D JH 6D 9C 9H
-9H 2D 8C 7H 5S KS 6H 9C 2S TC
-6C 8C AD 7H 6H 3D KH AS 5D TH
-KS 8C 3S TS 8S 4D 5S 9S 6C 4H
-9H 4S 4H 5C 7D KC 2D 2H 9D JH
-5C JS TC 9D 9H 5H 7S KH JC 6S
-7C 9H 8H 4D JC KH JD 2H TD TC
-8H 6C 2H 2C KH 6H 9D QS QH 5H
-AC 7D 2S 3D QD JC 2D 8D JD JH
-2H JC 2D 7H 2C 3C 8D KD TD 4H
-3S 4H 6D 8D TS 3H TD 3D 6H TH
-JH JC 3S AC QH 9H 7H 8S QC 2C
-7H TD QS 4S 8S 9C 2S 5D 4D 2H
-3D TS 3H 2S QC 8H 6H KC JC KS
-5D JD 7D TC 8C 6C 9S 3D 8D AC
-8H 6H JH 6C 5D 8D 8S 4H AD 2C
-9D 4H 2D 2C 3S TS AS TC 3C 5D
-4D TH 5H KS QS 6C 4S 2H 3D AD
-5C KC 6H 2C 5S 3C 4D 2D 9H 9S
-JD 4C 3H TH QH 9H 5S AH 8S AC
-7D 9S 6S 2H TD 9C 4H 8H QS 4C
-3C 6H 5D 4H 8C 9C KC 6S QD QS
-3S 9H KD TC 2D JS 8C 6S 4H 4S
-2S 4C 8S QS 6H KH 3H TH 8C 5D
-2C KH 5S 3S 7S 7H 6C 9D QD 8D
-8H KS AC 2D KH TS 6C JS KC 7H
-9C KS 5C TD QC AH 6C 5H 9S 7C
-5D 4D 3H 4H 6S 7C 7S AH QD TD
-2H 7D QC 6S TC TS AH 7S 9D 3H
-TH 5H QD 9S KS 7S 7C 6H 8C TD
-TH 2D 4D QC 5C 7D JD AH 9C 4H
-4H 3H AH 8D 6H QC QH 9H 2H 2C
-2D AD 4C TS 6H 7S TH 4H QS TD
-3C KD 2H 3H QS JD TC QC 5D 8H
-KS JC QD TH 9S KD 8D 8C 2D 9C
-3C QD KD 6D 4D 8D AH AD QC 8S
-8H 3S 9D 2S 3H KS 6H 4C 7C KC
-TH 9S 5C 3D 7D 6H AC 7S 4D 2C
-5C 3D JD 4D 2D 6D 5H 9H 4C KH
-AS 7H TD 6C 2H 3D QD KS 4C 4S
-JC 3C AC 7C JD JS 8H 9S QC 5D
-JD 6S 5S 2H AS 8C 7D 5H JH 3D
-8D TC 5S 9S 8S 3H JC 5H 7S AS
-5C TD 3D 7D 4H 8D 7H 4D 5D JS
-QS 9C KS TD 2S 8S 5C 2H 4H AS
-TH 7S 4H 7D 3H JD KD 5D 2S KC
-JD 7H 4S 8H 4C JS 6H QH 5S 4H
-2C QS 8C 5S 3H QC 2S 6C QD AD
-8C 3D JD TC 4H 2H AD 5S AC 2S
-5D 2C JS 2D AD 9D 3D 4C 4S JH
-8D 5H 5D 6H 7S 4D KS 9D TD JD
-3D 6D 9C 2S AS 7D 5S 5C 8H JD
-7C 8S 3S 6S 5H JD TC AD 7H 7S
-2S 9D TS 4D AC 8D 6C QD JD 3H
-9S KH 2C 3C AC 3D 5H 6H 8D 5D
-KS 3D 2D 6S AS 4C 2S 7C 7H KH
-AC 2H 3S JC 5C QH 4D 2D 5H 7S
-TS AS JD 8C 6H JC 8S 5S 2C 5D
-7S QH 7H 6C QC 8H 2D 7C JD 2S
-2C QD 2S 2H JC 9C 5D 2D JD JH
-7C 5C 9C 8S 7D 6D 8D 6C 9S JH
-2C AD 6S 5H 3S KS 7S 9D KH 4C
-7H 6C 2C 5C TH 9D 8D 3S QC AH
-5S KC 6H TC 5H 8S TH 6D 3C AH
-9C KD 4H AD TD 9S 4S 7D 6H 5D
-7H 5C 5H 6D AS 4C KD KH 4H 9D
-3C 2S 5C 6C JD QS 2H 9D 7D 3H
-AC 2S 6S 7S JS QD 5C QS 6H AD
-5H TH QC 7H TC 3S 7C 6D KC 3D
-4H 3D QC 9S 8H 2C 3S JC KS 5C
-4S 6S 2C 6H 8S 3S 3D 9H 3H JS
-4S 8C 4D 2D 8H 9H 7D 9D AH TS
-9S 2C 9H 4C 8D AS 7D 3D 6D 5S
-6S 4C 7H 8C 3H 5H JC AH 9D 9C
-2S 7C 5S JD 8C 3S 3D 4D 7D 6S
-3C KC 4S 5D 7D 3D JD 7H 3H 4H
-9C 9H 4H 4D TH 6D QD 8S 9S 7S
-2H AC 8S 4S AD 8C 2C AH 7D TC
-TS 9H 3C AD KS TC 3D 8C 8H JD
-QC 8D 2C 3C 7D 7C JD 9H 9C 6C
-AH 6S JS JH 5D AS QC 2C JD TD
-9H KD 2H 5D 2D 3S 7D TC AH TS
-TD 8H AS 5D AH QC AC 6S TC 5H
-KS 4S 7H 4D 8D 9C TC 2H 6H 3H
-3H KD 4S QD QH 3D 8H 8C TD 7S
-8S JD TC AH JS QS 2D KH KS 4D
-3C AD JC KD JS KH 4S TH 9H 2C
-QC 5S JS 9S KS AS 7C QD 2S JD
-KC 5S QS 3S 2D AC 5D 9H 8H KS
-6H 9C TC AD 2C 6D 5S JD 6C 7C
-QS KH TD QD 2C 3H 8S 2S QC AH
-9D 9H JH TC QH 3C 2S JS 5C 7H
-6C 3S 3D 2S 4S QD 2D TH 5D 2C
-2D 6H 6D 2S JC QH AS 7H 4H KH
-5H 6S KS AD TC TS 7C AC 4S 4H
-AD 3C 4H QS 8C 9D KS 2H 2D 4D
-4S 9D 6C 6D 9C AC 8D 3H 7H KD
-JC AH 6C TS JD 6D AD 3S 5D QD
-JC JH JD 3S 7S 8S JS QC 3H 4S
-JD TH 5C 2C AD JS 7H 9S 2H 7S
-8D 3S JH 4D QC AS JD 2C KC 6H
-2C AC 5H KD 5S 7H QD JH AH 2D
-JC QH 8D 8S TC 5H 5C AH 8C 6C
-3H JS 8S QD JH 3C 4H 6D 5C 3S
-6D 4S 4C AH 5H 5S 3H JD 7C 8D
-8H AH 2H 3H JS 3C 7D QC 4H KD
-6S 2H KD 5H 8H 2D 3C 8S 7S QD
-2S 7S KC QC AH TC QS 6D 4C 8D
-5S 9H 2C 3S QD 7S 6C 2H 7C 9D
-3C 6C 5C 5S JD JC KS 3S 5D TS
-7C KS 6S 5S 2S 2D TC 2H 5H QS
-AS 7H 6S TS 5H 9S 9D 3C KD 2H
-4S JS QS 3S 4H 7C 2S AC 6S 9D
-8C JH 2H 5H 7C 5D QH QS KH QC
-3S TD 3H 7C KC 8D 5H 8S KH 8C
-4H KH JD TS 3C 7H AS QC JS 5S
-AH 9D 2C 8D 4D 2D 6H 6C KC 6S
-2S 6H 9D 3S 7H 4D KH 8H KD 3D
-9C TC AC JH KH 4D JD 5H TD 3S
-7S 4H 9D AS 4C 7D QS 9S 2S KH
-3S 8D 8S KS 8C JC 5C KH 2H 5D
-8S QH 2C 4D KC JS QC 9D AC 6H
-8S 8C 7C JS JD 6S 4C 9C AC 4S
-QH 5D 2C 7D JC 8S 2D JS JH 4C
-JS 4C 7S TS JH KC KH 5H QD 4S
-QD 8C 8D 2D 6S TD 9D AC QH 5S
-QH QC JS 3D 3C 5C 4H KH 8S 7H
-7C 2C 5S JC 8S 3H QC 5D 2H KC
-5S 8D KD 6H 4H QD QH 6D AH 3D
-7S KS 6C 2S 4D AC QS 5H TS JD
-7C 2D TC 5D QS AC JS QC 6C KC
-2C KS 4D 3H TS 8S AD 4H 7S 9S
-QD 9H QH 5H 4H 4D KH 3S JC AD
-4D AC KC 8D 6D 4C 2D KH 2C JD
-2C 9H 2D AH 3H 6D 9C 7D TC KS
-8C 3H KD 7C 5C 2S 4S 5H AS AH
-TH JD 4H KD 3H TC 5C 3S AC KH
-6D 7H AH 7S QC 6H 2D TD JD AS
-JH 5D 7H TC 9S 7D JC AS 5S KH
-2H 8C AD TH 6H QD KD 9H 6S 6C
-QH KC 9D 4D 3S JS JH 4H 2C 9H
-TC 7H KH 4H JC 7D 9S 3H QS 7S
-AD 7D JH 6C 7H 4H 3S 3H 4D QH
-JD 2H 5C AS 6C QC 4D 3C TC JH
-AC JD 3H 6H 4C JC AD 7D 7H 9H
-4H TC TS 2C 8C 6S KS 2H JD 9S
-4C 3H QS QC 9S 9H 6D KC 9D 9C
-5C AD 8C 2C QH TH QD JC 8D 8H
-QC 2C 2S QD 9C 4D 3S 8D JH QS
-9D 3S 2C 7S 7C JC TD 3C TC 9H
-3C TS 8H 5C 4C 2C 6S 8D 7C 4H
-KS 7H 2H TC 4H 2C 3S AS AH QS
-8C 2D 2H 2C 4S 4C 6S 7D 5S 3S
-TH QC 5D TD 3C QS KD KC KS AS
-4D AH KD 9H KS 5C 4C 6H JC 7S
-KC 4H 5C QS TC 2H JC 9S AH QH
-4S 9H 3H 5H 3C QD 2H QC JH 8H
-5D AS 7H 2C 3D JH 6H 4C 6S 7D
-9C JD 9H AH JS 8S QH 3H KS 8H
-3S AC QC TS 4D AD 3D AH 8S 9H
-7H 3H QS 9C 9S 5H JH JS AH AC
-8D 3C JD 2H AC 9C 7H 5S 4D 8H
-7C JH 9H 6C JS 9S 7H 8C 9D 4H
-2D AS 9S 6H 4D JS JH 9H AD QD
-6H 7S JH KH AH 7H TD 5S 6S 2C
-8H JH 6S 5H 5S 9D TC 4C QC 9S
-7D 2C KD 3H 5H AS QD 7H JS 4D
-TS QH 6C 8H TH 5H 3C 3H 9C 9D
-AD KH JS 5D 3H AS AC 9S 5C KC
-2C KH 8C JC QS 6D AH 2D KC TC
-9D 3H 2S 7C 4D 6D KH KS 8D 7D
-9H 2S TC JH AC QC 3H 5S 3S 8H
-3S AS KD 8H 4C 3H 7C JH QH TS
-7S 6D 7H 9D JH 4C 3D 3S 6C AS
-4S 2H 2C 4C 8S 5H KC 8C QC QD
-3H 3S 6C QS QC 2D 6S 5D 2C 9D
-2H 8D JH 2S 3H 2D 6C 5C 7S AD
-9H JS 5D QH 8S TS 2H 7S 6S AD
-6D QC 9S 7H 5H 5C 7D KC JD 4H
-QC 5S 9H 9C 4D 6S KS 2S 4C 7C
-9H 7C 4H 8D 3S 6H 5C 8H JS 7S
-2D 6H JS TD 4H 4D JC TH 5H KC
-AC 7C 8D TH 3H 9S 2D 4C KC 4D
-KD QS 9C 7S 3D KS AD TS 4C 4H
-QH 9C 8H 2S 7D KS 7H 5D KD 4C
-9C 2S 2H JC 6S 6C TC QC JH 5C
-7S AC 8H KC 8S 6H QS JC 3D 6S
-JS 2D JH 8C 4S 6H 8H 6D 5D AD
-6H 7D 2S 4H 9H 7C AS AC 8H 5S
-3C JS 4S 6D 5H 2S QH 6S 9C 2C
-3D 5S 6S 9S 4C QS 8D QD 8S TC
-9C 3D AH 9H 5S 2C 7D AD JC 3S
-7H TC AS 3C 6S 6D 7S KH KC 9H
-3S TC 8H 6S 5H JH 8C 7D AC 2S
-QD 9D 9C 3S JC 8C KS 8H 5D 4D
-JS AH JD 6D 9D 8C 9H 9S 8H 3H
-2D 6S 4C 4D 8S AD 4S TC AH 9H
-TS AC QC TH KC 6D 4H 7S 8C 2H
-3C QD JS 9D 5S JC AH 2H TS 9H
-3H 4D QH 5D 9C 5H 7D 4S JC 3S
-8S TH 3H 7C 2H JD JS TS AC 8D
-9C 2H TD KC JD 2S 8C 5S AD 2C
-3D KD 7C 5H 4D QH QD TC 6H 7D
-7H 2C KC 5S KD 6H AH QC 7S QH
-6H 5C AC 5H 2C 9C 2D 7C TD 2S
-4D 9D AH 3D 7C JD 4H 8C 4C KS
-TH 3C JS QH 8H 4C AS 3D QS QC
-4D 7S 5H JH 6D 7D 6H JS KH 3C
-QD 8S 7D 2H 2C 7C JC 2S 5H 8C
-QH 8S 9D TC 2H AD 7C 8D QD 6S
-3S 7C AD 9H 2H 9S JD TS 4C 2D
-3S AS 4H QC 2C 8H 8S 7S TD TC
-JH TH TD 3S 4D 4H 5S 5D QS 2C
-8C QD QH TC 6D 4S 9S 9D 4H QC
-8C JS 9D 6H JD 3H AD 6S TD QC
-KC 8S 3D 7C TD 7D 8D 9H 4S 3S
-6C 4S 3D 9D KD TC KC KS AC 5S
-7C 6S QH 3D JS KD 6H 6D 2D 8C
-JD 2S 5S 4H 8S AC 2D 6S TS 5C
-5H 8C 5S 3C 4S 3D 7C 8D AS 3H
-AS TS 7C 3H AD 7D JC QS 6C 6H
-3S 9S 4C AC QH 5H 5D 9H TS 4H
-6C 5C 7H 7S TD AD JD 5S 2H 2S
-7D 6C KC 3S JD 8D 8S TS QS KH
-8S QS 8D 6C TH AC AH 2C 8H 9S
-7H TD KH QH 8S 3D 4D AH JD AS
-TS 3D 2H JC 2S JH KH 6C QC JS
-KC TH 2D 6H 7S 2S TC 8C 9D QS
-3C 9D 6S KH 8H 6D 5D TH 2C 2H
-6H TC 7D AD 4D 8S TS 9H TD 7S
-JS 6D JD JC 2H AC 6C 3D KH 8D
-KH JD 9S 5D 4H 4C 3H 7S QS 5C
-4H JD 5D 3S 3C 4D KH QH QS 7S
-JD TS 8S QD AH 4C 6H 3S 5S 2C
-QS 3D JD AS 8D TH 7C 6S QC KS
-7S 2H 8C QC 7H AC 6D 2D TH KH
-5S 6C 7H KH 7D AH 8C 5C 7S 3D
-3C KD AD 7D 6C 4D KS 2D 8C 4S
-7C 8D 5S 2D 2S AH AD 2C 9D TD
-3C AD 4S KS JH 7C 5C 8C 9C TH
-AS TD 4D 7C JD 8C QH 3C 5H 9S
-3H 9C 8S 9S 6S QD KS AH 5H JH
-QC 9C 5S 4H 2H TD 7D AS 8C 9D
-8C 2C 9D KD TC 7S 3D KH QC 3C
-4D AS 4C QS 5S 9D 6S JD QH KS
-6D AH 6C 4C 5H TS 9H 7D 3D 5S
-QS JD 7C 8D 9C AC 3S 6S 6C KH
-8H JH 5D 9S 6D AS 6S 3S QC 7H
-QD AD 5C JH 2H AH 4H AS KC 2C
-JH 9C 2C 6H 2D JS 5D 9H KC 6D
-7D 9D KD TH 3H AS 6S QC 6H AD
-JD 4H 7D KC 3H JS 3C TH 3D QS
-4C 3H 8C QD 5H 6H AS 8H AD JD
-TH 8S KD 5D QC 7D JS 5S 5H TS
-7D KC 9D QS 3H 3C 6D TS 7S AH
-7C 4H 7H AH QC AC 4D 5D 6D TH
-3C 4H 2S KD 8H 5H JH TC 6C JD
-4S 8C 3D 4H JS TD 7S JH QS KD
-7C QC KD 4D 7H 6S AD TD TC KH
-5H 9H KC 3H 4D 3D AD 6S QD 6H
-TH 7C 6H TS QH 5S 2C KC TD 6S
-7C 4D 5S JD JH 7D AC KD KH 4H
-7D 6C 8D 8H 5C JH 8S QD TH JD
-8D 7D 6C 7C 9D KD AS 5C QH JH
-9S 2C 8C 3C 4C KS JH 2D 8D 4H
-7S 6C JH KH 8H 3H 9D 2D AH 6D
-4D TC 9C 8D 7H TD KS TH KD 3C
-JD 9H 8D QD AS KD 9D 2C 2S 9C
-8D 3H 5C 7H KS 5H QH 2D 8C 9H
-2D TH 6D QD 6C KC 3H 3S AD 4C
-4H 3H JS 9D 3C TC 5H QH QC JC
-3D 5C 6H 3S 3C JC 5S 7S 2S QH
-AC 5C 8C 4D 5D 4H 2S QD 3C 3H
-2C TD AH 9C KD JS 6S QD 4C QC
-QS 8C 3S 4H TC JS 3H 7C JC AD
-5H 4D 9C KS JC TD 9S TS 8S 9H
-QD TS 7D AS AC 2C TD 6H 8H AH
-6S AD 8C 4S 9H 8D 9D KH 8S 3C
-QS 4D 2D 7S KH JS JC AD 4C 3C
-QS 9S 7H KC TD TH 5H JS AC JH
-6D AC 2S QS 7C AS KS 6S KH 5S
-6D 8H KH 3C QS 2H 5C 9C 9D 6C
-JS 2C 4C 6H 7D JC AC QD TD 3H
-4H QC 8H JD 4C KD KS 5C KC 7S
-6D 2D 3H 2S QD 5S 7H AS TH 6S
-AS 6D 8D 2C 8S TD 8H QD JC AH
-9C 9H 2D TD QH 2H 5C TC 3D 8H
-KC 8S 3D KH 2S TS TC 6S 4D JH
-9H 9D QS AC KC 6H 5D 4D 8D AH
-9S 5C QS 4H 7C 7D 2H 8S AD JS
-3D AC 9S AS 2C 2D 2H 3H JC KH
-7H QH KH JD TC KS 5S 8H 4C 8D
-2H 7H 3S 2S 5H QS 3C AS 9H KD
-AD 3D JD 6H 5S 9C 6D AC 9S 3S
-3D 5D 9C 2D AC 4S 2S AD 6C 6S
-QC 4C 2D 3H 6S KC QH QD 2H JH
-QC 3C 8S 4D 9S 2H 5C 8H QS QD
-6D KD 6S 7H 3S KH 2H 5C JC 6C
-3S 9S TC 6S 8H 2D AD 7S 8S TS
-3C 6H 9C 3H 5C JC 8H QH TD QD
-3C JS QD 5D TD 2C KH 9H TH AS
-9S TC JD 3D 5C 5H AD QH 9H KC
-TC 7H 4H 8H 3H TD 6S AC 7C 2S
-QS 9D 5D 3C JC KS 4D 6C JH 2S
-9S 6S 3C 7H TS 4C KD 6D 3D 9C
-2D 9H AH AC 7H 2S JH 3S 7C QC
-QD 9H 3C 2H AC AS 8S KD 8C KH
-2D 7S TD TH 6D JD 8D 4D 2H 5S
-8S QH KD JD QS JH 4D KC 5H 3S
-3C KH QC 6D 8H 3S AH 7D TD 2D
-5S 9H QH 4S 6S 6C 6D TS TH 7S
-6C 4C 6D QS JS 9C TS 3H 8D 8S
-JS 5C 7S AS 2C AH 2H AD 5S TC
-KD 6C 9C 9D TS 2S JC 4H 2C QD
-QS 9H TC 3H KC KS 4H 3C AD TH
-KH 9C 2H KD 9D TC 7S KC JH 2D
-7C 3S KC AS 8C 5D 9C 9S QH 3H
-2D 8C TD 4C 2H QC 5D TC 2C 7D
-KS 4D 6C QH TD KH 5D 7C AD 8D
-2S 9S 8S 4C 8C 3D 6H QD 7C 7H
-6C 8S QH 5H TS 5C 3C 4S 2S 2H
-8S 6S 2H JC 3S 3H 9D 8C 2S 7H
-QC 2C 8H 9C AC JD 4C 4H 6S 3S
-3H 3S 7D 4C 9S 5H 8H JC 3D TC
-QH 2S 2D 9S KD QD 9H AD 6D 9C
-8D 2D KS 9S JC 4C JD KC 4S TH
-KH TS 6D 4D 5C KD 5H AS 9H AD
-QD JS 7C 6D 5D 5C TH 5H QH QS
-9D QH KH 5H JH 4C 4D TC TH 6C
-KH AS TS 9D KD 9C 7S 4D 8H 5S
-KH AS 2S 7D 9D 4C TS TH AH 7C
-KS 4D AC 8S 9S 8D TH QH 9D 5C
-5D 5C 8C QS TC 4C 3D 3S 2C 8D
-9D KS 2D 3C KC 4S 8C KH 6C JC
-8H AH 6H 7D 7S QD 3C 4C 6C KC
-3H 2C QH 8H AS 7D 4C 8C 4H KC
-QD 5S 4H 2C TD AH JH QH 4C 8S
-3H QS 5S JS 8H 2S 9H 9C 3S 2C
-6H TS 7S JC QD AC TD KC 5S 3H
-QH AS QS 7D JC KC 2C 4C 5C 5S
-QH 3D AS JS 4H 8D 7H JC 2S 9C
-5D 4D 2S 4S 9D 9C 2D QS 8H 7H
-6D 7H 3H JS TS AC 2D JH 7C 8S
-JH 5H KC 3C TC 5S 9H 4C 8H 9D
-8S KC 5H 9H AD KS 9D KH 8D AH
-JC 2H 9H KS 6S 3H QC 5H AH 9C
-5C KH 5S AD 6C JC 9H QC 9C TD
-5S 5D JC QH 2D KS 8H QS 2H TS
-JH 5H 5S AH 7H 3C 8S AS TD KH
-6H 3D JD 2C 4C KC 7S AH 6C JH
-4C KS 9D AD 7S KC 7D 8H 3S 9C
-7H 5C 5H 3C 8H QC 3D KH 6D JC
-2D 4H 5D 7D QC AD AH 9H QH 8H
-KD 8C JS 9D 3S 3C 2H 5D 6D 2S
-8S 6S TS 3C 6H 8D 5S 3H TD 6C
-KS 3D JH 9C 7C 9S QS 5S 4H 6H
-7S 6S TH 4S KC KD 3S JC JH KS
-7C 3C 2S 6D QH 2C 7S 5H 8H AH
-KC 8D QD 6D KH 5C 7H 9D 3D 9C
-6H 2D 8S JS 9S 2S 6D KC 7C TC
-KD 9C JH 7H KC 8S 2S 7S 3D 6H
-4H 9H 2D 4C 8H 7H 5S 8S 2H 8D
-AD 7C 3C 7S 5S 4D 9H 3D JC KH
-5D AS 7D 6D 9C JC 4C QH QS KH
-KD JD 7D 3D QS QC 8S 6D JS QD
-6S 8C 5S QH TH 9H AS AC 2C JD
-QC KS QH 7S 3C 4C 5C KC 5D AH
-6C 4H 9D AH 2C 3H KD 3D TS 5C
-TD 8S QS AS JS 3H KD AC 4H KS
-7D 5D TS 9H 4H 4C 9C 2H 8C QC
-2C 7D 9H 4D KS 4C QH AD KD JS
-QD AD AH KH 9D JS 9H JC KD JD
-8S 3C 4S TS 7S 4D 5C 2S 6H 7C
-JS 7S 5C KD 6D QH 8S TD 2H 6S
-QH 6C TC 6H TD 4C 9D 2H QC 8H
-3D TS 4D 2H 6H 6S 2C 7H 8S 6C
-9H 9D JD JH 3S AH 2C 6S 3H 8S
-2C QS 8C 5S 3H 2S 7D 3C AD 4S
-5C QC QH AS TS 4S 6S 4C 5H JS
-JH 5C TD 4C 6H JS KD KH QS 4H
-TC KH JC 4D 9H 9D 8D KC 3C 8H
-2H TC 8S AD 9S 4H TS 7H 2C 5C
-4H 2S 6C 5S KS AH 9C 7C 8H KD
-TS QH TD QS 3C JH AH 2C 8D 7D
-5D KC 3H 5S AC 4S 7H QS 4C 2H
-3D 7D QC KH JH 6D 6C TD TH KD
-5S 8D TH 6C 9D 7D KH 8C 9S 6D
-JD QS 7S QC 2S QH JC 4S KS 8D
-7S 5S 9S JD KD 9C JC AD 2D 7C
-4S 5H AH JH 9C 5D TD 7C 2D 6S
-KC 6C 7H 6S 9C QD 5S 4H KS TD
-6S 8D KS 2D TH TD 9H JD TS 3S
-KH JS 4H 5D 9D TC TD QC JD TS
-QS QD AC AD 4C 6S 2D AS 3H KC
-4C 7C 3C TD QS 9C KC AS 8D AD
-KC 7H QC 6D 8H 6S 5S AH 7S 8C
-3S AD 9H JC 6D JD AS KH 6S JH
-AD 3D TS KS 7H JH 2D JS QD AC
-9C JD 7C 6D TC 6H 6C JC 3D 3S
-QC KC 3S JC KD 2C 8D AH QS TS
-AS KD 3D JD 8H 7C 8C 5C QD 6C
diff --git a/src/projecteuler/055.py b/src/projecteuler/055.py deleted file mode 100644 index d623d9b..0000000 --- a/src/projecteuler/055.py +++ /dev/null @@ -1,17 +0,0 @@ - -def lychrel(x): - for i in xrange(50): - t = x + int(str(x)[::-1]) - if t == int(str(t)[::-1]): - return False - x = t - return True - -count = 0 - -for i in xrange(1, 10000): - if lychrel(i): - count += 1 - -print count - diff --git a/src/projecteuler/056.py b/src/projecteuler/056.py deleted file mode 100644 index 567f41d..0000000 --- a/src/projecteuler/056.py +++ /dev/null @@ -1,18 +0,0 @@ - -def digit_sum(n): - s = 0 - while n > 0: - s += n % 10 - n /= 10 - return s - -max_sum = 0 - -for i in range(2, 100): - for j in range(2, 100): - s = digit_sum(i**j) - if s > max_sum: - max_sum = s - -print max_sum - diff --git a/src/projecteuler/057.py b/src/projecteuler/057.py deleted file mode 100644 index 8098995..0000000 --- a/src/projecteuler/057.py +++ /dev/null @@ -1,16 +0,0 @@ - -def get_fraction(c): - (n, d) = (1, 2) - for i in xrange(1, c): - (n, d) = (2*d+n, d) # add 2 - (n, d) = (d, n) # 1/x, swap entries - return (d+n, d) # add 1 - -count = 0 -for i in xrange(1, 1000): - (n, d) = get_fraction(i) - if len(str(n)) > len(str(d)): - count += 1 - -print count - diff --git a/src/projecteuler/058.py b/src/projecteuler/058.py deleted file mode 100644 index a483fac..0000000 --- a/src/projecteuler/058.py +++ /dev/null @@ -1,39 +0,0 @@ -from common import sieve - -primes = sieve(30000).primes() -prime_list = list(primes) -prime_list.sort() - -def is_prime(n): - if n in primes: - return True - for p in prime_list: - if p*p > n: - return True - if n % p == 0: - return False - return True - -def count_primes(numbers): - prime = 0 - for n in numbers: - if is_prime(n): - prime += 1 - return prime - -#numbers = [1, 3, 5, 7, 9] -prime_count = 3 -number_count = 5 -level = 2 -last = 9 - -while 10*prime_count >= number_count: - step = 2 * level - numbers = [last+step, last+2*step, last+3*step, last+4*step] - prime_count += count_primes(numbers) - number_count += 4 - level += 1 - last += 4*step - -print 2*(level-1) + 1 - diff --git a/src/projecteuler/059.py b/src/projecteuler/059.py deleted file mode 100644 index 449afb7..0000000 --- a/src/projecteuler/059.py +++ /dev/null @@ -1,28 +0,0 @@ -import string - -keys = [] - -for a in string.lowercase: - for b in string.lowercase: - for c in string.lowercase: - keys.append(a+b+c) - -f = open('059.txt', 'r') -content = f.read().split(',') -f.close() - -cipher = [ int(i) for i in content ] -cipher_len = len(cipher) - -for key in keys: - decoded = "" - for p in range(0, cipher_len): - decoded += chr(cipher[p] ^ ord(key[p%3])) - if decoded.find(" the ") != -1 and decoded.find(" and ") != -1: - break - -#print decoded -#print key - -print sum([ ord(x) for x in decoded ]) - diff --git a/src/projecteuler/059.txt b/src/projecteuler/059.txt deleted file mode 100644 index 08cee2d..0000000 --- a/src/projecteuler/059.txt +++ /dev/null @@ -1 +0,0 @@ -79,59,12,2,79,35,8,28,20,2,3,68,8,9,68,45,0,12,9,67,68,4,7,5,23,27,1,21,79,85,78,79,85,71,38,10,71,27,12,2,79,6,2,8,13,9,1,13,9,8,68,19,7,1,71,56,11,21,11,68,6,3,22,2,14,0,30,79,1,31,6,23,19,10,0,73,79,44,2,79,19,6,28,68,16,6,16,15,79,35,8,11,72,71,14,10,3,79,12,2,79,19,6,28,68,32,0,0,73,79,86,71,39,1,71,24,5,20,79,13,9,79,16,15,10,68,5,10,3,14,1,10,14,1,3,71,24,13,19,7,68,32,0,0,73,79,87,71,39,1,71,12,22,2,14,16,2,11,68,2,25,1,21,22,16,15,6,10,0,79,16,15,10,22,2,79,13,20,65,68,41,0,16,15,6,10,0,79,1,31,6,23,19,28,68,19,7,5,19,79,12,2,79,0,14,11,10,64,27,68,10,14,15,2,65,68,83,79,40,14,9,1,71,6,16,20,10,8,1,79,19,6,28,68,14,1,68,15,6,9,75,79,5,9,11,68,19,7,13,20,79,8,14,9,1,71,8,13,17,10,23,71,3,13,0,7,16,71,27,11,71,10,18,2,29,29,8,1,1,73,79,81,71,59,12,2,79,8,14,8,12,19,79,23,15,6,10,2,28,68,19,7,22,8,26,3,15,79,16,15,10,68,3,14,22,12,1,1,20,28,72,71,14,10,3,79,16,15,10,68,3,14,22,12,1,1,20,28,68,4,14,10,71,1,1,17,10,22,71,10,28,19,6,10,0,26,13,20,7,68,14,27,74,71,89,68,32,0,0,71,28,1,9,27,68,45,0,12,9,79,16,15,10,68,37,14,20,19,6,23,19,79,83,71,27,11,71,27,1,11,3,68,2,25,1,21,22,11,9,10,68,6,13,11,18,27,68,19,7,1,71,3,13,0,7,16,71,28,11,71,27,12,6,27,68,2,25,1,21,22,11,9,10,68,10,6,3,15,27,68,5,10,8,14,10,18,2,79,6,2,12,5,18,28,1,71,0,2,71,7,13,20,79,16,2,28,16,14,2,11,9,22,74,71,87,68,45,0,12,9,79,12,14,2,23,2,3,2,71,24,5,20,79,10,8,27,68,19,7,1,71,3,13,0,7,16,92,79,12,2,79,19,6,28,68,8,1,8,30,79,5,71,24,13,19,1,1,20,28,68,19,0,68,19,7,1,71,3,13,0,7,16,73,79,93,71,59,12,2,79,11,9,10,68,16,7,11,71,6,23,71,27,12,2,79,16,21,26,1,71,3,13,0,7,16,75,79,19,15,0,68,0,6,18,2,28,68,11,6,3,15,27,68,19,0,68,2,25,1,21,22,11,9,10,72,71,24,5,20,79,3,8,6,10,0,79,16,8,79,7,8,2,1,71,6,10,19,0,68,19,7,1,71,24,11,21,3,0,73,79,85,87,79,38,18,27,68,6,3,16,15,0,17,0,7,68,19,7,1,71,24,11,21,3,0,71,24,5,20,79,9,6,11,1,71,27,12,21,0,17,0,7,68,15,6,9,75,79,16,15,10,68,16,0,22,11,11,68,3,6,0,9,72,16,71,29,1,4,0,3,9,6,30,2,79,12,14,2,68,16,7,1,9,79,12,2,79,7,6,2,1,73,79,85,86,79,33,17,10,10,71,6,10,71,7,13,20,79,11,16,1,68,11,14,10,3,79,5,9,11,68,6,2,11,9,8,68,15,6,23,71,0,19,9,79,20,2,0,20,11,10,72,71,7,1,71,24,5,20,79,10,8,27,68,6,12,7,2,31,16,2,11,74,71,94,86,71,45,17,19,79,16,8,79,5,11,3,68,16,7,11,71,13,1,11,6,1,17,10,0,71,7,13,10,79,5,9,11,68,6,12,7,2,31,16,2,11,68,15,6,9,75,79,12,2,79,3,6,25,1,71,27,12,2,79,22,14,8,12,19,79,16,8,79,6,2,12,11,10,10,68,4,7,13,11,11,22,2,1,68,8,9,68,32,0,0,73,79,85,84,79,48,15,10,29,71,14,22,2,79,22,2,13,11,21,1,69,71,59,12,14,28,68,14,28,68,9,0,16,71,14,68,23,7,29,20,6,7,6,3,68,5,6,22,19,7,68,21,10,23,18,3,16,14,1,3,71,9,22,8,2,68,15,26,9,6,1,68,23,14,23,20,6,11,9,79,11,21,79,20,11,14,10,75,79,16,15,6,23,71,29,1,5,6,22,19,7,68,4,0,9,2,28,68,1,29,11,10,79,35,8,11,74,86,91,68,52,0,68,19,7,1,71,56,11,21,11,68,5,10,7,6,2,1,71,7,17,10,14,10,71,14,10,3,79,8,14,25,1,3,79,12,2,29,1,71,0,10,71,10,5,21,27,12,71,14,9,8,1,3,71,26,23,73,79,44,2,79,19,6,28,68,1,26,8,11,79,11,1,79,17,9,9,5,14,3,13,9,8,68,11,0,18,2,79,5,9,11,68,1,14,13,19,7,2,18,3,10,2,28,23,73,79,37,9,11,68,16,10,68,15,14,18,2,79,23,2,10,10,71,7,13,20,79,3,11,0,22,30,67,68,19,7,1,71,8,8,8,29,29,71,0,2,71,27,12,2,79,11,9,3,29,71,60,11,9,79,11,1,79,16,15,10,68,33,14,16,15,10,22,73
diff --git a/src/projecteuler/060.py b/src/projecteuler/060.py deleted file mode 100644 index 22d1311..0000000 --- a/src/projecteuler/060.py +++ /dev/null @@ -1,49 +0,0 @@ -from common import sieve - -# -# WARNING: uses a lot of RAM! -# -# notes: -# - limit:1000000, sieve:50000000 -> no result when starting with ["3"] or ["7"] -# - limit:800000, sieve:50000000 -> no result! -# - limit:100000, sieve:100000000 -> [['13', '5197', '5701', '6733', '8389']] -# -# - -limit = 9000 - -primes = sieve(int(str(limit)+str(limit))).primes() -prime_list = [ p for p in primes if p < limit] -prime_list.sort() -prime_list_str = [ str(p) for p in prime_list ] - -def check_list(l): - result = [] - for sublist in l: - for p in prime_list_str: - isprime = True - for n in sublist: - if int(n+p) not in primes or int(p+n) not in primes: - isprime = False - break - if isprime: - result += [ sublist+[p] ] - - return result - - -def cleanup(l): - result = [] - for sublist in l: - sublist.sort() - if sublist not in result: - result += [sublist] - return result - - -l = [ [p] for p in prime_list_str ] -for i in range(4): - l = cleanup(check_list(l)) - -print l - diff --git a/src/projecteuler/061.py b/src/projecteuler/061.py deleted file mode 100644 index d9688e1..0000000 --- a/src/projecteuler/061.py +++ /dev/null @@ -1,53 +0,0 @@ - -import sys - -triangle = set([ n*(n+1)/2 for n in range(45,141) ]) -square = set([ n*n for n in range(32,99) ]) -pentagonal = set([ n*(3*n-1)/2 for n in range(26,82) ]) -hexagonal = set([ n*(2*n-1) for n in range(23,71) ]) -heptagonal = set([ n*(5*n-3)/2 for n in range(21,64) ]) -octagonal = set([ n*(3*n-2) for n in range(19,59) ]) - -whole = set(triangle | square | pentagonal | hexagonal | heptagonal | octagonal) - - -def check_cond(testset): - check = 0 - for e in testset: - if e in octagonal: - check |= 1 - elif e in heptagonal: - check |= 2 - elif e in hexagonal: - check |= 4 - elif e in pentagonal: - check |= 8 - elif e in square: - check |= 16 - elif e in triangle: - check |= 32 - return check == 63 - -for i0 in whole: - t0 = i0 % 100 - tail0 = [ n for n in whole if t0*100 < n < (t0+1)*100 ] - for i1 in tail0: - t1 = i1 % 100 - tail1 = [ n for n in whole if t1*100 < n < (t1+1)*100 ] - for i2 in tail1: - t2 = i2 % 100 - tail2 = [ n for n in whole if t2*100 < n < (t2+1)*100 ] - for i3 in tail2: - t3 = i3 % 100 - tail3 = [ n for n in whole if t3*100 < n < (t3+1)*100 ] - for i4 in tail3: - t4 = i4 % 100 - tail4 = [ n for n in whole if t4*100 < n < (t4+1)*100 ] - for i5 in tail4: - if i5 % 100 != i0 / 100: - continue - s = set([i0, i1, i2, i3, i4, i5]) - if len(s) == 6 and check_cond(s): - print sum(s) - sys.exit(0) - diff --git a/src/projecteuler/062.c b/src/projecteuler/062.c deleted file mode 100644 index 4ba3350..0000000 --- a/src/projecteuler/062.c +++ /dev/null @@ -1,57 +0,0 @@ -#include <stdlib.h> -#include <stdio.h> -#include <string.h> - -struct number -{ - char digits[10]; -}; - -const int cubecount = 30000; -struct number* cubedigits; - -int main(void) -{ - int i, j; - - cubedigits = (struct number*) malloc(cubecount*sizeof(struct number)); - memset(cubedigits, 0, cubecount*sizeof(struct number)); - - for(i=1; i<cubecount; i++) - { - unsigned long long c = (unsigned long long)i*i*i; - int smallest = 0; - char count; - - while(c > 0) - { - char digit = c % 10; - cubedigits[i].digits[digit]++; - c /= 10; - } - - // search for permutations (i.e. same digits) - count = 0; - for(j=1; j<i; j++) - { - if(memcmp(cubedigits[i].digits, cubedigits[j].digits, sizeof(struct number)) == 0) - { - if(smallest == 0) - smallest = j; - - count++; - } - } - - if(count == 4) // 4 additional permutations - { - printf("%lli\n", (unsigned long long)smallest*smallest*smallest); - break; - } - } - - free(cubedigits); - - return 0; -} - diff --git a/src/projecteuler/063.py b/src/projecteuler/063.py deleted file mode 100644 index f80058b..0000000 --- a/src/projecteuler/063.py +++ /dev/null @@ -1,23 +0,0 @@ - -import math - -upper = 9+1 - -digits = [] - -# borders searched manually... -digits += xrange(1, upper) -digits += [x*x for x in xrange(4, upper)] -digits += [math.pow(x,3) for x in xrange(5, upper)] -digits += [math.pow(x,4) for x in xrange(6, upper)] -digits += [math.pow(x,5) for x in xrange(7, upper)] -digits += [math.pow(x,6) for x in xrange(7, upper)] -digits += [math.pow(x,7) for x in xrange(8, upper)] -digits += [math.pow(x,8) for x in xrange(8, upper)] -digits += [math.pow(x,9) for x in xrange(8, upper)] -digits += [math.pow(x,10) for x in xrange(8, upper)] -for i in xrange(11, 21+1): - digits += [math.pow(x,i) for x in xrange(9, upper)] - -print len(digits) - diff --git a/src/projecteuler/064.c b/src/projecteuler/064.c deleted file mode 100644 index 0e60211..0000000 --- a/src/projecteuler/064.c +++ /dev/null @@ -1,84 +0,0 @@ -#include <math.h> -#include <stdlib.h> -#include <stdio.h> -#include <string.h> - - -const int size = 100; -double *fraction; -int pos = 0; - -void continued_fraction(int n) -{ - double sqrtn, x, y, an, a0; - - memset(fraction, 0, size*sizeof(double)); - pos = 0; - - sqrtn = sqrt((double)n); - a0 = floor(sqrtn); - - if((int)sqrtn*sqrtn == n) // works only for rational square roots - { - fraction[pos] = sqrtn; - return; - } - - // - // floor + ( sqrt(23) - x ) / y - // nenner = (23 - x*x) - // tmp = y * (sqrt(23) + x) / nenner) - // an = floor(tmp) - // x = an*nenner/y - x - // - x = a0; - y = 1.0; - - while(1) - { - double denominator = (n - x*x); - double tmp = y * (sqrtn + x) / denominator; - an = floor(tmp); - x = (an * denominator / y) - x; - y = denominator / y; - - fraction[pos++] = an; - - if(an == 2*a0) - break; - } - - /* - // not working because of double imprecision - while(1) - { - an = floorl(a); - r = 1/(a - an); - a = r; - - fraction[++pos] = an; - - if(an == 2*a0) - break; - } - */ -} - -int main(void) -{ - int i, count=0; - - fraction = (double*) malloc(size*sizeof(double)); - - for(i=2; i<=10000; i++) - { - continued_fraction(i); - if(pos > 0 && pos&1 == 1) - count++; - } - - printf("%i\n", count); - - return 0; -} - diff --git a/src/projecteuler/065.c b/src/projecteuler/065.c deleted file mode 100644 index 94c17fd..0000000 --- a/src/projecteuler/065.c +++ /dev/null @@ -1,40 +0,0 @@ -#include <gmp.h> -#include <stdio.h> - -#define limit 100 - -unsigned int start = 2; -unsigned int factors[limit-1]; - -int main(void) -{ - int pos, k=1, sum; - mpz_t numerator, denominator; - - for(pos=0; pos<limit-1; pos++) - { - if(pos % 3 == 1) - factors[pos] = 2*(k++); - else - factors[pos] = 1; - } - - mpz_init_set_ui(numerator, 1); - mpz_init_set_ui(denominator, factors[limit-2]); - for(pos=limit-3; pos>=0; pos--) - { - mpz_addmul_ui(numerator, denominator, factors[pos]); // numerator += denominator * factors[pos] - mpz_swap(numerator, denominator); - } - - mpz_addmul_ui(numerator, denominator, start); // numerator += denominator * start - - sum = 0; - while(mpz_cmp_ui(numerator, 0) > 0) - sum += mpz_fdiv_q_ui(numerator, numerator, 10); - - printf("%li\n", sum); - - return 0; -} - diff --git a/src/projecteuler/066.c b/src/projecteuler/066.c deleted file mode 100644 index 3c1014e..0000000 --- a/src/projecteuler/066.c +++ /dev/null @@ -1,112 +0,0 @@ -#include <gmp.h> -#include <math.h> -#include <stdio.h> -#include <string.h> -#include <stdlib.h> - -// numerator/denominator pairs of continued fractions are solutions to pell's equations - -/* - * taken from problem 65 - * - * numerator, denominator: resulting num / denom are stored there - * limit: depth of continued fraction - * start: decimal part (pre-period) - * factors, factor_len: period of continued fraction with factor_len elements - * - */ -void compute(mpz_t numerator, mpz_t denominator, unsigned int limit, - unsigned long start, const unsigned int* factors, unsigned int factor_len) -{ - int i; - mpz_set_ui(numerator, 1); - mpz_set_ui(denominator, factors[limit % factor_len]); - for(i=limit-1; i>=0; i--) - { - mpz_addmul_ui(numerator, denominator, factors[i % factor_len]); - mpz_swap(numerator, denominator); - } - mpz_addmul_ui(numerator, denominator, start); -} - -// taken from problem 64 -int continued_fraction(unsigned int* fraction, unsigned int n) -{ - double sqrtn, x, y; - unsigned int an, a0, pos=0; - - sqrtn = sqrt((double)n); - a0 = (int)floor(sqrtn); - - fraction[pos++] = sqrtn; - - if((int)sqrtn*sqrtn == n) // works only for rational square roots - return 1; - - x = (double)a0; - y = 1.0; - - while(1) - { - double denominator = (n - x*x); - double tmp = y * (sqrtn + x) / denominator; - an = (int)floor(tmp); - x = (an * denominator / y) - x; - y = denominator / y; - - fraction[pos++] = an; - - if(an == 2*a0) - break; - } - - return pos; -} - -const int max_period_size = 100; - -int main(void) -{ - int d, i, maxd=0; - mpz_t maxx, numerator, denominator, tmp1, tmp2; - unsigned int* fraction = (unsigned int*) malloc(max_period_size*sizeof(unsigned int)); - - mpz_init_set_ui(maxx, 0); - mpz_init(numerator); - mpz_init(denominator); - mpz_init(tmp1); - mpz_init(tmp2); - - for(d=2; d<=1000; d++) - { - - memset(fraction, 0, max_period_size*sizeof(unsigned int)); - int frac_len = continued_fraction(fraction, d); - - if(frac_len == 1) // no solution for squares - continue; - - for(i=0;;i++) - { - compute(numerator, denominator, i, fraction[0], &(fraction[1]), frac_len-1); - - // numerator^2 - denominator^2 * d - mpz_mul(tmp1, numerator, numerator); - mpz_mul(tmp2, denominator, denominator); - mpz_submul_ui(tmp1, tmp2, d); - if(mpz_cmp_ui(tmp1, 1) == 0) - break; - } - - if(mpz_cmp(numerator, maxx) > 0) - { - mpz_set(maxx, numerator); - maxd = d; - } - } - - printf("%d\n", maxd); - - return 0; -} - diff --git a/src/projecteuler/067.py b/src/projecteuler/067.py deleted file mode 100644 index 2678fd9..0000000 --- a/src/projecteuler/067.py +++ /dev/null @@ -1,20 +0,0 @@ - -triangle = [] - -f = open('067.txt', 'r') -for line in f: - line.rstrip('\n') - row_str = line.split(' ') - row_int = [ int(x) for x in row_str ] - triangle.append(row_int) -f.close() - -for i in range(1, len(triangle)): - rowlen = len(triangle[i]) - triangle[i][0] += triangle[i-1][0] - triangle[i][rowlen-1] += triangle[i-1][rowlen-2] - for j in range(1, rowlen-1): - triangle[i][j] += max(triangle[i-1][j-1], triangle[i-1][j]) - -print max(triangle[-1]) - diff --git a/src/projecteuler/067.txt b/src/projecteuler/067.txt deleted file mode 100644 index 00f98e3..0000000 --- a/src/projecteuler/067.txt +++ /dev/null @@ -1,100 +0,0 @@ -59
-73 41
-52 40 09
-26 53 06 34
-10 51 87 86 81
-61 95 66 57 25 68
-90 81 80 38 92 67 73
-30 28 51 76 81 18 75 44
-84 14 95 87 62 81 17 78 58
-21 46 71 58 02 79 62 39 31 09
-56 34 35 53 78 31 81 18 90 93 15
-78 53 04 21 84 93 32 13 97 11 37 51
-45 03 81 79 05 18 78 86 13 30 63 99 95
-39 87 96 28 03 38 42 17 82 87 58 07 22 57
-06 17 51 17 07 93 09 07 75 97 95 78 87 08 53
-67 66 59 60 88 99 94 65 55 77 55 34 27 53 78 28
-76 40 41 04 87 16 09 42 75 69 23 97 30 60 10 79 87
-12 10 44 26 21 36 32 84 98 60 13 12 36 16 63 31 91 35
-70 39 06 05 55 27 38 48 28 22 34 35 62 62 15 14 94 89 86
-66 56 68 84 96 21 34 34 34 81 62 40 65 54 62 05 98 03 02 60
-38 89 46 37 99 54 34 53 36 14 70 26 02 90 45 13 31 61 83 73 47
-36 10 63 96 60 49 41 05 37 42 14 58 84 93 96 17 09 43 05 43 06 59
-66 57 87 57 61 28 37 51 84 73 79 15 39 95 88 87 43 39 11 86 77 74 18
-54 42 05 79 30 49 99 73 46 37 50 02 45 09 54 52 27 95 27 65 19 45 26 45
-71 39 17 78 76 29 52 90 18 99 78 19 35 62 71 19 23 65 93 85 49 33 75 09 02
-33 24 47 61 60 55 32 88 57 55 91 54 46 57 07 77 98 52 80 99 24 25 46 78 79 05
-92 09 13 55 10 67 26 78 76 82 63 49 51 31 24 68 05 57 07 54 69 21 67 43 17 63 12
-24 59 06 08 98 74 66 26 61 60 13 03 09 09 24 30 71 08 88 70 72 70 29 90 11 82 41 34
-66 82 67 04 36 60 92 77 91 85 62 49 59 61 30 90 29 94 26 41 89 04 53 22 83 41 09 74 90
-48 28 26 37 28 52 77 26 51 32 18 98 79 36 62 13 17 08 19 54 89 29 73 68 42 14 08 16 70 37
-37 60 69 70 72 71 09 59 13 60 38 13 57 36 09 30 43 89 30 39 15 02 44 73 05 73 26 63 56 86 12
-55 55 85 50 62 99 84 77 28 85 03 21 27 22 19 26 82 69 54 04 13 07 85 14 01 15 70 59 89 95 10 19
-04 09 31 92 91 38 92 86 98 75 21 05 64 42 62 84 36 20 73 42 21 23 22 51 51 79 25 45 85 53 03 43 22
-75 63 02 49 14 12 89 14 60 78 92 16 44 82 38 30 72 11 46 52 90 27 08 65 78 03 85 41 57 79 39 52 33 48
-78 27 56 56 39 13 19 43 86 72 58 95 39 07 04 34 21 98 39 15 39 84 89 69 84 46 37 57 59 35 59 50 26 15 93
-42 89 36 27 78 91 24 11 17 41 05 94 07 69 51 96 03 96 47 90 90 45 91 20 50 56 10 32 36 49 04 53 85 92 25 65
-52 09 61 30 61 97 66 21 96 92 98 90 06 34 96 60 32 69 68 33 75 84 18 31 71 50 84 63 03 03 19 11 28 42 75 45 45
-61 31 61 68 96 34 49 39 05 71 76 59 62 67 06 47 96 99 34 21 32 47 52 07 71 60 42 72 94 56 82 83 84 40 94 87 82 46
-01 20 60 14 17 38 26 78 66 81 45 95 18 51 98 81 48 16 53 88 37 52 69 95 72 93 22 34 98 20 54 27 73 61 56 63 60 34 63
-93 42 94 83 47 61 27 51 79 79 45 01 44 73 31 70 83 42 88 25 53 51 30 15 65 94 80 44 61 84 12 77 02 62 02 65 94 42 14 94
-32 73 09 67 68 29 74 98 10 19 85 48 38 31 85 67 53 93 93 77 47 67 39 72 94 53 18 43 77 40 78 32 29 59 24 06 02 83 50 60 66
-32 01 44 30 16 51 15 81 98 15 10 62 86 79 50 62 45 60 70 38 31 85 65 61 64 06 69 84 14 22 56 43 09 48 66 69 83 91 60 40 36 61
-92 48 22 99 15 95 64 43 01 16 94 02 99 19 17 69 11 58 97 56 89 31 77 45 67 96 12 73 08 20 36 47 81 44 50 64 68 85 40 81 85 52 09
-91 35 92 45 32 84 62 15 19 64 21 66 06 01 52 80 62 59 12 25 88 28 91 50 40 16 22 99 92 79 87 51 21 77 74 77 07 42 38 42 74 83 02 05
-46 19 77 66 24 18 05 32 02 84 31 99 92 58 96 72 91 36 62 99 55 29 53 42 12 37 26 58 89 50 66 19 82 75 12 48 24 87 91 85 02 07 03 76 86
-99 98 84 93 07 17 33 61 92 20 66 60 24 66 40 30 67 05 37 29 24 96 03 27 70 62 13 04 45 47 59 88 43 20 66 15 46 92 30 04 71 66 78 70 53 99
-67 60 38 06 88 04 17 72 10 99 71 07 42 25 54 05 26 64 91 50 45 71 06 30 67 48 69 82 08 56 80 67 18 46 66 63 01 20 08 80 47 07 91 16 03 79 87
-18 54 78 49 80 48 77 40 68 23 60 88 58 80 33 57 11 69 55 53 64 02 94 49 60 92 16 35 81 21 82 96 25 24 96 18 02 05 49 03 50 77 06 32 84 27 18 38
-68 01 50 04 03 21 42 94 53 24 89 05 92 26 52 36 68 11 85 01 04 42 02 45 15 06 50 04 53 73 25 74 81 88 98 21 67 84 79 97 99 20 95 04 40 46 02 58 87
-94 10 02 78 88 52 21 03 88 60 06 53 49 71 20 91 12 65 07 49 21 22 11 41 58 99 36 16 09 48 17 24 52 36 23 15 72 16 84 56 02 99 43 76 81 71 29 39 49 17
-64 39 59 84 86 16 17 66 03 09 43 06 64 18 63 29 68 06 23 07 87 14 26 35 17 12 98 41 53 64 78 18 98 27 28 84 80 67 75 62 10 11 76 90 54 10 05 54 41 39 66
-43 83 18 37 32 31 52 29 95 47 08 76 35 11 04 53 35 43 34 10 52 57 12 36 20 39 40 55 78 44 07 31 38 26 08 15 56 88 86 01 52 62 10 24 32 05 60 65 53 28 57 99
-03 50 03 52 07 73 49 92 66 80 01 46 08 67 25 36 73 93 07 42 25 53 13 96 76 83 87 90 54 89 78 22 78 91 73 51 69 09 79 94 83 53 09 40 69 62 10 79 49 47 03 81 30
-71 54 73 33 51 76 59 54 79 37 56 45 84 17 62 21 98 69 41 95 65 24 39 37 62 03 24 48 54 64 46 82 71 78 33 67 09 16 96 68 52 74 79 68 32 21 13 78 96 60 09 69 20 36
-73 26 21 44 46 38 17 83 65 98 07 23 52 46 61 97 33 13 60 31 70 15 36 77 31 58 56 93 75 68 21 36 69 53 90 75 25 82 39 50 65 94 29 30 11 33 11 13 96 02 56 47 07 49 02
-76 46 73 30 10 20 60 70 14 56 34 26 37 39 48 24 55 76 84 91 39 86 95 61 50 14 53 93 64 67 37 31 10 84 42 70 48 20 10 72 60 61 84 79 69 65 99 73 89 25 85 48 92 56 97 16
-03 14 80 27 22 30 44 27 67 75 79 32 51 54 81 29 65 14 19 04 13 82 04 91 43 40 12 52 29 99 07 76 60 25 01 07 61 71 37 92 40 47 99 66 57 01 43 44 22 40 53 53 09 69 26 81 07
-49 80 56 90 93 87 47 13 75 28 87 23 72 79 32 18 27 20 28 10 37 59 21 18 70 04 79 96 03 31 45 71 81 06 14 18 17 05 31 50 92 79 23 47 09 39 47 91 43 54 69 47 42 95 62 46 32 85
-37 18 62 85 87 28 64 05 77 51 47 26 30 65 05 70 65 75 59 80 42 52 25 20 44 10 92 17 71 95 52 14 77 13 24 55 11 65 26 91 01 30 63 15 49 48 41 17 67 47 03 68 20 90 98 32 04 40 68
-90 51 58 60 06 55 23 68 05 19 76 94 82 36 96 43 38 90 87 28 33 83 05 17 70 83 96 93 06 04 78 47 80 06 23 84 75 23 87 72 99 14 50 98 92 38 90 64 61 58 76 94 36 66 87 80 51 35 61 38
-57 95 64 06 53 36 82 51 40 33 47 14 07 98 78 65 39 58 53 06 50 53 04 69 40 68 36 69 75 78 75 60 03 32 39 24 74 47 26 90 13 40 44 71 90 76 51 24 36 50 25 45 70 80 61 80 61 43 90 64 11
-18 29 86 56 68 42 79 10 42 44 30 12 96 18 23 18 52 59 02 99 67 46 60 86 43 38 55 17 44 93 42 21 55 14 47 34 55 16 49 24 23 29 96 51 55 10 46 53 27 92 27 46 63 57 30 65 43 27 21 20 24 83
-81 72 93 19 69 52 48 01 13 83 92 69 20 48 69 59 20 62 05 42 28 89 90 99 32 72 84 17 08 87 36 03 60 31 36 36 81 26 97 36 48 54 56 56 27 16 91 08 23 11 87 99 33 47 02 14 44 73 70 99 43 35 33
-90 56 61 86 56 12 70 59 63 32 01 15 81 47 71 76 95 32 65 80 54 70 34 51 40 45 33 04 64 55 78 68 88 47 31 47 68 87 03 84 23 44 89 72 35 08 31 76 63 26 90 85 96 67 65 91 19 14 17 86 04 71 32 95
-37 13 04 22 64 37 37 28 56 62 86 33 07 37 10 44 52 82 52 06 19 52 57 75 90 26 91 24 06 21 14 67 76 30 46 14 35 89 89 41 03 64 56 97 87 63 22 34 03 79 17 45 11 53 25 56 96 61 23 18 63 31 37 37 47
-77 23 26 70 72 76 77 04 28 64 71 69 14 85 96 54 95 48 06 62 99 83 86 77 97 75 71 66 30 19 57 90 33 01 60 61 14 12 90 99 32 77 56 41 18 14 87 49 10 14 90 64 18 50 21 74 14 16 88 05 45 73 82 47 74 44
-22 97 41 13 34 31 54 61 56 94 03 24 59 27 98 77 04 09 37 40 12 26 87 09 71 70 07 18 64 57 80 21 12 71 83 94 60 39 73 79 73 19 97 32 64 29 41 07 48 84 85 67 12 74 95 20 24 52 41 67 56 61 29 93 35 72 69
-72 23 63 66 01 11 07 30 52 56 95 16 65 26 83 90 50 74 60 18 16 48 43 77 37 11 99 98 30 94 91 26 62 73 45 12 87 73 47 27 01 88 66 99 21 41 95 80 02 53 23 32 61 48 32 43 43 83 14 66 95 91 19 81 80 67 25 88
-08 62 32 18 92 14 83 71 37 96 11 83 39 99 05 16 23 27 10 67 02 25 44 11 55 31 46 64 41 56 44 74 26 81 51 31 45 85 87 09 81 95 22 28 76 69 46 48 64 87 67 76 27 89 31 11 74 16 62 03 60 94 42 47 09 34 94 93 72
-56 18 90 18 42 17 42 32 14 86 06 53 33 95 99 35 29 15 44 20 49 59 25 54 34 59 84 21 23 54 35 90 78 16 93 13 37 88 54 19 86 67 68 55 66 84 65 42 98 37 87 56 33 28 58 38 28 38 66 27 52 21 81 15 08 22 97 32 85 27
-91 53 40 28 13 34 91 25 01 63 50 37 22 49 71 58 32 28 30 18 68 94 23 83 63 62 94 76 80 41 90 22 82 52 29 12 18 56 10 08 35 14 37 57 23 65 67 40 72 39 93 39 70 89 40 34 07 46 94 22 20 05 53 64 56 30 05 56 61 88 27
-23 95 11 12 37 69 68 24 66 10 87 70 43 50 75 07 62 41 83 58 95 93 89 79 45 39 02 22 05 22 95 43 62 11 68 29 17 40 26 44 25 71 87 16 70 85 19 25 59 94 90 41 41 80 61 70 55 60 84 33 95 76 42 63 15 09 03 40 38 12 03 32
-09 84 56 80 61 55 85 97 16 94 82 94 98 57 84 30 84 48 93 90 71 05 95 90 73 17 30 98 40 64 65 89 07 79 09 19 56 36 42 30 23 69 73 72 07 05 27 61 24 31 43 48 71 84 21 28 26 65 65 59 65 74 77 20 10 81 61 84 95 08 52 23 70
-47 81 28 09 98 51 67 64 35 51 59 36 92 82 77 65 80 24 72 53 22 07 27 10 21 28 30 22 48 82 80 48 56 20 14 43 18 25 50 95 90 31 77 08 09 48 44 80 90 22 93 45 82 17 13 96 25 26 08 73 34 99 06 49 24 06 83 51 40 14 15 10 25 01
-54 25 10 81 30 64 24 74 75 80 36 75 82 60 22 69 72 91 45 67 03 62 79 54 89 74 44 83 64 96 66 73 44 30 74 50 37 05 09 97 70 01 60 46 37 91 39 75 75 18 58 52 72 78 51 81 86 52 08 97 01 46 43 66 98 62 81 18 70 93 73 08 32 46 34
-96 80 82 07 59 71 92 53 19 20 88 66 03 26 26 10 24 27 50 82 94 73 63 08 51 33 22 45 19 13 58 33 90 15 22 50 36 13 55 06 35 47 82 52 33 61 36 27 28 46 98 14 73 20 73 32 16 26 80 53 47 66 76 38 94 45 02 01 22 52 47 96 64 58 52 39
-88 46 23 39 74 63 81 64 20 90 33 33 76 55 58 26 10 46 42 26 74 74 12 83 32 43 09 02 73 55 86 54 85 34 28 23 29 79 91 62 47 41 82 87 99 22 48 90 20 05 96 75 95 04 43 28 81 39 81 01 28 42 78 25 39 77 90 57 58 98 17 36 73 22 63 74 51
-29 39 74 94 95 78 64 24 38 86 63 87 93 06 70 92 22 16 80 64 29 52 20 27 23 50 14 13 87 15 72 96 81 22 08 49 72 30 70 24 79 31 16 64 59 21 89 34 96 91 48 76 43 53 88 01 57 80 23 81 90 79 58 01 80 87 17 99 86 90 72 63 32 69 14 28 88 69
-37 17 71 95 56 93 71 35 43 45 04 98 92 94 84 96 11 30 31 27 31 60 92 03 48 05 98 91 86 94 35 90 90 08 48 19 33 28 68 37 59 26 65 96 50 68 22 07 09 49 34 31 77 49 43 06 75 17 81 87 61 79 52 26 27 72 29 50 07 98 86 01 17 10 46 64 24 18 56
-51 30 25 94 88 85 79 91 40 33 63 84 49 67 98 92 15 26 75 19 82 05 18 78 65 93 61 48 91 43 59 41 70 51 22 15 92 81 67 91 46 98 11 11 65 31 66 10 98 65 83 21 05 56 05 98 73 67 46 74 69 34 08 30 05 52 07 98 32 95 30 94 65 50 24 63 28 81 99 57
-19 23 61 36 09 89 71 98 65 17 30 29 89 26 79 74 94 11 44 48 97 54 81 55 39 66 69 45 28 47 13 86 15 76 74 70 84 32 36 33 79 20 78 14 41 47 89 28 81 05 99 66 81 86 38 26 06 25 13 60 54 55 23 53 27 05 89 25 23 11 13 54 59 54 56 34 16 24 53 44 06
-13 40 57 72 21 15 60 08 04 19 11 98 34 45 09 97 86 71 03 15 56 19 15 44 97 31 90 04 87 87 76 08 12 30 24 62 84 28 12 85 82 53 99 52 13 94 06 65 97 86 09 50 94 68 69 74 30 67 87 94 63 07 78 27 80 36 69 41 06 92 32 78 37 82 30 05 18 87 99 72 19 99
-44 20 55 77 69 91 27 31 28 81 80 27 02 07 97 23 95 98 12 25 75 29 47 71 07 47 78 39 41 59 27 76 13 15 66 61 68 35 69 86 16 53 67 63 99 85 41 56 08 28 33 40 94 76 90 85 31 70 24 65 84 65 99 82 19 25 54 37 21 46 33 02 52 99 51 33 26 04 87 02 08 18 96
-54 42 61 45 91 06 64 79 80 82 32 16 83 63 42 49 19 78 65 97 40 42 14 61 49 34 04 18 25 98 59 30 82 72 26 88 54 36 21 75 03 88 99 53 46 51 55 78 22 94 34 40 68 87 84 25 30 76 25 08 92 84 42 61 40 38 09 99 40 23 29 39 46 55 10 90 35 84 56 70 63 23 91 39
-52 92 03 71 89 07 09 37 68 66 58 20 44 92 51 56 13 71 79 99 26 37 02 06 16 67 36 52 58 16 79 73 56 60 59 27 44 77 94 82 20 50 98 33 09 87 94 37 40 83 64 83 58 85 17 76 53 02 83 52 22 27 39 20 48 92 45 21 09 42 24 23 12 37 52 28 50 78 79 20 86 62 73 20 59
-54 96 80 15 91 90 99 70 10 09 58 90 93 50 81 99 54 38 36 10 30 11 35 84 16 45 82 18 11 97 36 43 96 79 97 65 40 48 23 19 17 31 64 52 65 65 37 32 65 76 99 79 34 65 79 27 55 33 03 01 33 27 61 28 66 08 04 70 49 46 48 83 01 45 19 96 13 81 14 21 31 79 93 85 50 05
-92 92 48 84 59 98 31 53 23 27 15 22 79 95 24 76 05 79 16 93 97 89 38 89 42 83 02 88 94 95 82 21 01 97 48 39 31 78 09 65 50 56 97 61 01 07 65 27 21 23 14 15 80 97 44 78 49 35 33 45 81 74 34 05 31 57 09 38 94 07 69 54 69 32 65 68 46 68 78 90 24 28 49 51 45 86 35
-41 63 89 76 87 31 86 09 46 14 87 82 22 29 47 16 13 10 70 72 82 95 48 64 58 43 13 75 42 69 21 12 67 13 64 85 58 23 98 09 37 76 05 22 31 12 66 50 29 99 86 72 45 25 10 28 19 06 90 43 29 31 67 79 46 25 74 14 97 35 76 37 65 46 23 82 06 22 30 76 93 66 94 17 96 13 20 72
-63 40 78 08 52 09 90 41 70 28 36 14 46 44 85 96 24 52 58 15 87 37 05 98 99 39 13 61 76 38 44 99 83 74 90 22 53 80 56 98 30 51 63 39 44 30 91 91 04 22 27 73 17 35 53 18 35 45 54 56 27 78 48 13 69 36 44 38 71 25 30 56 15 22 73 43 32 69 59 25 93 83 45 11 34 94 44 39 92
-12 36 56 88 13 96 16 12 55 54 11 47 19 78 17 17 68 81 77 51 42 55 99 85 66 27 81 79 93 42 65 61 69 74 14 01 18 56 12 01 58 37 91 22 42 66 83 25 19 04 96 41 25 45 18 69 96 88 36 93 10 12 98 32 44 83 83 04 72 91 04 27 73 07 34 37 71 60 59 31 01 54 54 44 96 93 83 36 04 45
-30 18 22 20 42 96 65 79 17 41 55 69 94 81 29 80 91 31 85 25 47 26 43 49 02 99 34 67 99 76 16 14 15 93 08 32 99 44 61 77 67 50 43 55 87 55 53 72 17 46 62 25 50 99 73 05 93 48 17 31 70 80 59 09 44 59 45 13 74 66 58 94 87 73 16 14 85 38 74 99 64 23 79 28 71 42 20 37 82 31 23
-51 96 39 65 46 71 56 13 29 68 53 86 45 33 51 49 12 91 21 21 76 85 02 17 98 15 46 12 60 21 88 30 92 83 44 59 42 50 27 88 46 86 94 73 45 54 23 24 14 10 94 21 20 34 23 51 04 83 99 75 90 63 60 16 22 33 83 70 11 32 10 50 29 30 83 46 11 05 31 17 86 42 49 01 44 63 28 60 07 78 95 40
-44 61 89 59 04 49 51 27 69 71 46 76 44 04 09 34 56 39 15 06 94 91 75 90 65 27 56 23 74 06 23 33 36 69 14 39 05 34 35 57 33 22 76 46 56 10 61 65 98 09 16 69 04 62 65 18 99 76 49 18 72 66 73 83 82 40 76 31 89 91 27 88 17 35 41 35 32 51 32 67 52 68 74 85 80 57 07 11 62 66 47 22 67
-65 37 19 97 26 17 16 24 24 17 50 37 64 82 24 36 32 11 68 34 69 31 32 89 79 93 96 68 49 90 14 23 04 04 67 99 81 74 70 74 36 96 68 09 64 39 88 35 54 89 96 58 66 27 88 97 32 14 06 35 78 20 71 06 85 66 57 02 58 91 72 05 29 56 73 48 86 52 09 93 22 57 79 42 12 01 31 68 17 59 63 76 07 77
-73 81 14 13 17 20 11 09 01 83 08 85 91 70 84 63 62 77 37 07 47 01 59 95 39 69 39 21 99 09 87 02 97 16 92 36 74 71 90 66 33 73 73 75 52 91 11 12 26 53 05 26 26 48 61 50 90 65 01 87 42 47 74 35 22 73 24 26 56 70 52 05 48 41 31 18 83 27 21 39 80 85 26 08 44 02 71 07 63 22 05 52 19 08 20
-17 25 21 11 72 93 33 49 64 23 53 82 03 13 91 65 85 02 40 05 42 31 77 42 05 36 06 54 04 58 07 76 87 83 25 57 66 12 74 33 85 37 74 32 20 69 03 97 91 68 82 44 19 14 89 28 85 85 80 53 34 87 58 98 88 78 48 65 98 40 11 57 10 67 70 81 60 79 74 72 97 59 79 47 30 20 54 80 89 91 14 05 33 36 79 39
-60 85 59 39 60 07 57 76 77 92 06 35 15 72 23 41 45 52 95 18 64 79 86 53 56 31 69 11 91 31 84 50 44 82 22 81 41 40 30 42 30 91 48 94 74 76 64 58 74 25 96 57 14 19 03 99 28 83 15 75 99 01 89 85 79 50 03 95 32 67 44 08 07 41 62 64 29 20 14 76 26 55 48 71 69 66 19 72 44 25 14 01 48 74 12 98 07
-64 66 84 24 18 16 27 48 20 14 47 69 30 86 48 40 23 16 61 21 51 50 26 47 35 33 91 28 78 64 43 68 04 79 51 08 19 60 52 95 06 68 46 86 35 97 27 58 04 65 30 58 99 12 12 75 91 39 50 31 42 64 70 04 46 07 98 73 98 93 37 89 77 91 64 71 64 65 66 21 78 62 81 74 42 20 83 70 73 95 78 45 92 27 34 53 71 15
-30 11 85 31 34 71 13 48 05 14 44 03 19 67 23 73 19 57 06 90 94 72 57 69 81 62 59 68 88 57 55 69 49 13 07 87 97 80 89 05 71 05 05 26 38 40 16 62 45 99 18 38 98 24 21 26 62 74 69 04 85 57 77 35 58 67 91 79 79 57 86 28 66 34 72 51 76 78 36 95 63 90 08 78 47 63 45 31 22 70 52 48 79 94 15 77 61 67 68
-23 33 44 81 80 92 93 75 94 88 23 61 39 76 22 03 28 94 32 06 49 65 41 34 18 23 08 47 62 60 03 63 33 13 80 52 31 54 73 43 70 26 16 69 57 87 83 31 03 93 70 81 47 95 77 44 29 68 39 51 56 59 63 07 25 70 07 77 43 53 64 03 94 42 95 39 18 01 66 21 16 97 20 50 90 16 70 10 95 69 29 06 25 61 41 26 15 59 63 35
diff --git a/src/projecteuler/068.py b/src/projecteuler/068.py deleted file mode 100644 index 2357156..0000000 --- a/src/projecteuler/068.py +++ /dev/null @@ -1,5 +0,0 @@ -# 16-digit string -> 10 on the outside (used once) - -# solved on paper by "trial-and-error": -print "6531031914842725" - diff --git a/src/projecteuler/069.py b/src/projecteuler/069.py deleted file mode 100644 index 99236c5..0000000 --- a/src/projecteuler/069.py +++ /dev/null @@ -1,28 +0,0 @@ -from common import sieve - -primes = sieve(1000000).primes() -prime_list = [ p for p in primes if p < 1000 ] -prime_list.sort() - -def phi(x): - if x in primes: - return x-1 - product = x - for p in prime_list: - if p*p > x: - break - if x % p != 0: - continue - product *= (1 - 1/float(p)) - return product - -maxn = 0 -maxres = 0 - -for n in xrange(2, 1000001): - if n/phi(n) >= maxres: - maxres = n/phi(n) - maxn = n - -print maxn - diff --git a/src/projecteuler/069_2.py b/src/projecteuler/069_2.py deleted file mode 100644 index c00483b..0000000 --- a/src/projecteuler/069_2.py +++ /dev/null @@ -1,22 +0,0 @@ -# -# n/phi(n) is a maximum, if phi(n) is minimal -# -# phi(n) = n*(1-1/p1)*(1-1/p2)*...*(1-1/pi) -# n/phi(n) = 1/((1-1/p1)*(1-1/p2)*...*(1-1/pi)) -# -> smallest primes -# - -from common import sieve - -primes = sieve(100).primes() -prime_list = [ x for x in primes ] -prime_list.sort() - -x = 1 -for p in prime_list: - if x*p > 1000000: - break - x *= p - -print x - diff --git a/src/projecteuler/071.py b/src/projecteuler/071.py deleted file mode 100644 index 44c38b0..0000000 --- a/src/projecteuler/071.py +++ /dev/null @@ -1,15 +0,0 @@ - -from common import ggt -import math - -limit = 1000000 - -(n1, d1) = (1, limit) - -for d2 in xrange(limit+1): - n2 = int(math.floor(float(d2) * 3.0/7.0)) - if n2*d1 > n1*d2 and ggt(n2, d2) == 1 and d2 != 7: - (n1, d1) = (n2, d2) - -print n1 - diff --git a/src/projecteuler/072.c b/src/projecteuler/072.c deleted file mode 100644 index c886291..0000000 --- a/src/projecteuler/072.c +++ /dev/null @@ -1,16 +0,0 @@ -#include "common.h" - -const int limit = 1000000; - -int main() -{ - unsigned long* prime_list = primes(limit); - unsigned long sum = 0; - int n; - - for(n=2; n<limit; n++) - sum += phi(n, prime_list); - - printf("%ld\n", sum); -} - diff --git a/src/projecteuler/072.txt b/src/projecteuler/072.txt deleted file mode 100644 index d99267c..0000000 --- a/src/projecteuler/072.txt +++ /dev/null @@ -1,16 +0,0 @@ -solved with wolframalpha.com: - sum phi(n), n=2 to 1000000 - - 3039650753 -+ 9118948164 -+ 15198149566 -+ 21277458826 -+ 27356832366 -+ 33435937046 -+ 39515212818 -+ 45594757684 -+ 51673635564 -+ 57752969604 -------------- - 303963552391 - diff --git a/src/projecteuler/073.py b/src/projecteuler/073.py deleted file mode 100644 index 4aeb7ab..0000000 --- a/src/projecteuler/073.py +++ /dev/null @@ -1,14 +0,0 @@ - -limit = 12000 - -fractions = set() - -for d in xrange(2, limit+1): - start_n = (d+3)/3 - end_n = d/2 - - for n in xrange(start_n, end_n+1): - fractions.add(float(n)/d) - -print len(fractions) - diff --git a/src/projecteuler/074.py b/src/projecteuler/074.py deleted file mode 100644 index adee894..0000000 --- a/src/projecteuler/074.py +++ /dev/null @@ -1,48 +0,0 @@ - -fac = [1, 1, 2, 6, 24, 120, 720, 5040, 40320, 362880] -numbers = [0]*10000000 - -numbers[0] = 1 -numbers[1] = 1 -numbers[2] = 1 -numbers[145] = 1 -numbers[40585] = 1 -numbers[169] = 3 -numbers[871] = 2 -numbers[872] = 2 -numbers[45361] = 2 -numbers[45362] = 2 -numbers[1454] = 3 -numbers[363601] = 3 - -def next(n): - x = 0 - while n > 0: - x += fac[n % 10] - n /= 10 - return x - -def count(n): - if numbers[n] != 0: - return - chain = [n] - x = next(n) - while x not in chain: - chain.append(x) - if numbers[x] != 0: - break - x = next(x) - last = numbers[chain[-1]] - l = len(chain) - for j in xrange(0, l-1): - c = chain[j] - numbers[c] = l - j - 1 + last - -c = 0 -for i in xrange(10, 1000000): - count(i) - if numbers[i] == 60: - c += 1 - -print c - diff --git a/src/projecteuler/075.py b/src/projecteuler/075.py deleted file mode 100644 index 58e9136..0000000 --- a/src/projecteuler/075.py +++ /dev/null @@ -1,29 +0,0 @@ -# generating Pythagorean triplets - -limit = 1500000 -limit_search = 900 -squares = [ x*x for x in xrange(limit) ] -triangles = [ set() for x in xrange(limit+1) ] - - -for m in xrange(1, limit_search): - for n in xrange(1, m): - (a,b,c) = (squares[m] - squares[n], 2*m*n, squares[m] + squares[n]) - if a > b: - (a,b,c) = (b,a,c) - - k = 1 - while True: - if k*(a+b+c) > limit: - break - triangles[k*a + k*b + k*c].add((k*a,k*b,k*c)) - k += 1 - - -count = 0 -for t in triangles: - if len(t) == 1: - count += 1 - -print count - diff --git a/src/projecteuler/080.py b/src/projecteuler/080.py deleted file mode 100644 index 9becd19..0000000 --- a/src/projecteuler/080.py +++ /dev/null @@ -1,55 +0,0 @@ - -# schriftliches wurzelziehen: http://www.diaware.de/html/wurzel.html - -def sqrt(x, accuracy): - a = [] # vor komma - b = [] # nach komma - - groups = [] - while x > 0: - groups.append(x % 100) - x /= 100 - groups = groups[::-1] - - result = 0 - remainder = 0 - while accuracy > 0: - group = 100 * remainder - if len(groups) > 0: - group += groups[0] - - subcount = 0 - sub = 20*result + 1 - while sub < group: - group -= sub - if group < 0: - break - subcount += 1 - sub += 2 - remainder = group - if subcount == 0: - remainder *= 100 - result *= 10 - result += subcount - - if len(groups) > 0: - a.append(subcount) - del groups[0] - else: - b.append(subcount) - accuracy -= 1 - - return (a, b) - -squares = set([ x*x for x in range(11) ]) - -digitsum = 0 - -for n in xrange(100): - if n in squares: - continue - s = sqrt(n, 100) - digitsum += sum(s[0]) + sum(s[1]) - -print digitsum - diff --git a/src/projecteuler/081.py b/src/projecteuler/081.py deleted file mode 100644 index c951abf..0000000 --- a/src/projecteuler/081.py +++ /dev/null @@ -1,71 +0,0 @@ - -# uses Dijkstra's algorithm to find minimal path - -infinity = 999999 - -matrix = [] - -width = 80 -height = 80 - -f = open('081.txt', 'r') -for line in f: - line.rstrip('\n') - line_str = line.split(',') - line_int = [ int(x) for x in line_str ] - matrix.append(line_int) -f.close() - - -# initialize -distance = [infinity] * (width*height) -pre = [None] * (width*height) -distance[0] = 0 -Q = range(width*height) - -def mindistance(Q): - mind = infinity - mini = -1 - for i in Q: - if distance[i] < mind: - mind = distance[i] - mini = i - return mini - -def neighbors(u): - n = [] - row = u / width - col = u % width - if col < width-1: - n.append(row*width + col + 1) # right neighbor - if row < height-1: - n.append((row+1)*width + col) # lower neighbor - return n - -def update(u, v): - alt = distance[u] + matrix[v/width][v%width] - if alt < distance[v]: - distance[v] = alt - pre[v] = u - -# main algorithm -while len(Q) > 0: - u = mindistance(Q) - Q.remove(u) - for v in neighbors(u): - if v in Q: - update(u, v) - -# search min distance -u = width*height-1 # target node -path = [ u ] -while pre[u] != None: - u = pre[u] - path = [u] + path - -minsum = 0 -for n in path: - minsum += matrix[n/width][n%width] - -print minsum - diff --git a/src/projecteuler/081.txt b/src/projecteuler/081.txt deleted file mode 100644 index 1e9e6cd..0000000 --- a/src/projecteuler/081.txt +++ /dev/null @@ -1,80 +0,0 @@ -4445,2697,5115,718,2209,2212,654,4348,3079,6821,7668,3276,8874,4190,3785,2752,9473,7817,9137,496,7338,3434,7152,4355,4552,7917,7827,2460,2350,691,3514,5880,3145,7633,7199,3783,5066,7487,3285,1084,8985,760,872,8609,8051,1134,9536,5750,9716,9371,7619,5617,275,9721,2997,2698,1887,8825,6372,3014,2113,7122,7050,6775,5948,2758,1219,3539,348,7989,2735,9862,1263,8089,6401,9462,3168,2758,3748,5870
-1096,20,1318,7586,5167,2642,1443,5741,7621,7030,5526,4244,2348,4641,9827,2448,6918,5883,3737,300,7116,6531,567,5997,3971,6623,820,6148,3287,1874,7981,8424,7672,7575,6797,6717,1078,5008,4051,8795,5820,346,1851,6463,2117,6058,3407,8211,117,4822,1317,4377,4434,5925,8341,4800,1175,4173,690,8978,7470,1295,3799,8724,3509,9849,618,3320,7068,9633,2384,7175,544,6583,1908,9983,481,4187,9353,9377
-9607,7385,521,6084,1364,8983,7623,1585,6935,8551,2574,8267,4781,3834,2764,2084,2669,4656,9343,7709,2203,9328,8004,6192,5856,3555,2260,5118,6504,1839,9227,1259,9451,1388,7909,5733,6968,8519,9973,1663,5315,7571,3035,4325,4283,2304,6438,3815,9213,9806,9536,196,5542,6907,2475,1159,5820,9075,9470,2179,9248,1828,4592,9167,3713,4640,47,3637,309,7344,6955,346,378,9044,8635,7466,5036,9515,6385,9230
-7206,3114,7760,1094,6150,5182,7358,7387,4497,955,101,1478,7777,6966,7010,8417,6453,4955,3496,107,449,8271,131,2948,6185,784,5937,8001,6104,8282,4165,3642,710,2390,575,715,3089,6964,4217,192,5949,7006,715,3328,1152,66,8044,4319,1735,146,4818,5456,6451,4113,1063,4781,6799,602,1504,6245,6550,1417,1343,2363,3785,5448,4545,9371,5420,5068,4613,4882,4241,5043,7873,8042,8434,3939,9256,2187
-3620,8024,577,9997,7377,7682,1314,1158,6282,6310,1896,2509,5436,1732,9480,706,496,101,6232,7375,2207,2306,110,6772,3433,2878,8140,5933,8688,1399,2210,7332,6172,6403,7333,4044,2291,1790,2446,7390,8698,5723,3678,7104,1825,2040,140,3982,4905,4160,2200,5041,2512,1488,2268,1175,7588,8321,8078,7312,977,5257,8465,5068,3453,3096,1651,7906,253,9250,6021,8791,8109,6651,3412,345,4778,5152,4883,7505
-1074,5438,9008,2679,5397,5429,2652,3403,770,9188,4248,2493,4361,8327,9587,707,9525,5913,93,1899,328,2876,3604,673,8576,6908,7659,2544,3359,3883,5273,6587,3065,1749,3223,604,9925,6941,2823,8767,7039,3290,3214,1787,7904,3421,7137,9560,8451,2669,9219,6332,1576,5477,6755,8348,4164,4307,2984,4012,6629,1044,2874,6541,4942,903,1404,9125,5160,8836,4345,2581,460,8438,1538,5507,668,3352,2678,6942
-4295,1176,5596,1521,3061,9868,7037,7129,8933,6659,5947,5063,3653,9447,9245,2679,767,714,116,8558,163,3927,8779,158,5093,2447,5782,3967,1716,931,7772,8164,1117,9244,5783,7776,3846,8862,6014,2330,6947,1777,3112,6008,3491,1906,5952,314,4602,8994,5919,9214,3995,5026,7688,6809,5003,3128,2509,7477,110,8971,3982,8539,2980,4689,6343,5411,2992,5270,5247,9260,2269,7474,1042,7162,5206,1232,4556,4757
-510,3556,5377,1406,5721,4946,2635,7847,4251,8293,8281,6351,4912,287,2870,3380,3948,5322,3840,4738,9563,1906,6298,3234,8959,1562,6297,8835,7861,239,6618,1322,2553,2213,5053,5446,4402,6500,5182,8585,6900,5756,9661,903,5186,7687,5998,7997,8081,8955,4835,6069,2621,1581,732,9564,1082,1853,5442,1342,520,1737,3703,5321,4793,2776,1508,1647,9101,2499,6891,4336,7012,3329,3212,1442,9993,3988,4930,7706
-9444,3401,5891,9716,1228,7107,109,3563,2700,6161,5039,4992,2242,8541,7372,2067,1294,3058,1306,320,8881,5756,9326,411,8650,8824,5495,8282,8397,2000,1228,7817,2099,6473,3571,5994,4447,1299,5991,543,7874,2297,1651,101,2093,3463,9189,6872,6118,872,1008,1779,2805,9084,4048,2123,5877,55,3075,1737,9459,4535,6453,3644,108,5982,4437,5213,1340,6967,9943,5815,669,8074,1838,6979,9132,9315,715,5048
-3327,4030,7177,6336,9933,5296,2621,4785,2755,4832,2512,2118,2244,4407,2170,499,7532,9742,5051,7687,970,6924,3527,4694,5145,1306,2165,5940,2425,8910,3513,1909,6983,346,6377,4304,9330,7203,6605,3709,3346,970,369,9737,5811,4427,9939,3693,8436,5566,1977,3728,2399,3985,8303,2492,5366,9802,9193,7296,1033,5060,9144,2766,1151,7629,5169,5995,58,7619,7565,4208,1713,6279,3209,4908,9224,7409,1325,8540
-6882,1265,1775,3648,4690,959,5837,4520,5394,1378,9485,1360,4018,578,9174,2932,9890,3696,116,1723,1178,9355,7063,1594,1918,8574,7594,7942,1547,6166,7888,354,6932,4651,1010,7759,6905,661,7689,6092,9292,3845,9605,8443,443,8275,5163,7720,7265,6356,7779,1798,1754,5225,6661,1180,8024,5666,88,9153,1840,3508,1193,4445,2648,3538,6243,6375,8107,5902,5423,2520,1122,5015,6113,8859,9370,966,8673,2442
-7338,3423,4723,6533,848,8041,7921,8277,4094,5368,7252,8852,9166,2250,2801,6125,8093,5738,4038,9808,7359,9494,601,9116,4946,2702,5573,2921,9862,1462,1269,2410,4171,2709,7508,6241,7522,615,2407,8200,4189,5492,5649,7353,2590,5203,4274,710,7329,9063,956,8371,3722,4253,4785,1194,4828,4717,4548,940,983,2575,4511,2938,1827,2027,2700,1236,841,5760,1680,6260,2373,3851,1841,4968,1172,5179,7175,3509
-4420,1327,3560,2376,6260,2988,9537,4064,4829,8872,9598,3228,1792,7118,9962,9336,4368,9189,6857,1829,9863,6287,7303,7769,2707,8257,2391,2009,3975,4993,3068,9835,3427,341,8412,2134,4034,8511,6421,3041,9012,2983,7289,100,1355,7904,9186,6920,5856,2008,6545,8331,3655,5011,839,8041,9255,6524,3862,8788,62,7455,3513,5003,8413,3918,2076,7960,6108,3638,6999,3436,1441,4858,4181,1866,8731,7745,3744,1000
-356,8296,8325,1058,1277,4743,3850,2388,6079,6462,2815,5620,8495,5378,75,4324,3441,9870,1113,165,1544,1179,2834,562,6176,2313,6836,8839,2986,9454,5199,6888,1927,5866,8760,320,1792,8296,7898,6121,7241,5886,5814,2815,8336,1576,4314,3109,2572,6011,2086,9061,9403,3947,5487,9731,7281,3159,1819,1334,3181,5844,5114,9898,4634,2531,4412,6430,4262,8482,4546,4555,6804,2607,9421,686,8649,8860,7794,6672
-9870,152,1558,4963,8750,4754,6521,6256,8818,5208,5691,9659,8377,9725,5050,5343,2539,6101,1844,9700,7750,8114,5357,3001,8830,4438,199,9545,8496,43,2078,327,9397,106,6090,8181,8646,6414,7499,5450,4850,6273,5014,4131,7639,3913,6571,8534,9703,4391,7618,445,1320,5,1894,6771,7383,9191,4708,9706,6939,7937,8726,9382,5216,3685,2247,9029,8154,1738,9984,2626,9438,4167,6351,5060,29,1218,1239,4785
-192,5213,8297,8974,4032,6966,5717,1179,6523,4679,9513,1481,3041,5355,9303,9154,1389,8702,6589,7818,6336,3539,5538,3094,6646,6702,6266,2759,4608,4452,617,9406,8064,6379,444,5602,4950,1810,8391,1536,316,8714,1178,5182,5863,5110,5372,4954,1978,2971,5680,4863,2255,4630,5723,2168,538,1692,1319,7540,440,6430,6266,7712,7385,5702,620,641,3136,7350,1478,3155,2820,9109,6261,1122,4470,14,8493,2095
-1046,4301,6082,474,4974,7822,2102,5161,5172,6946,8074,9716,6586,9962,9749,5015,2217,995,5388,4402,7652,6399,6539,1349,8101,3677,1328,9612,7922,2879,231,5887,2655,508,4357,4964,3554,5930,6236,7384,4614,280,3093,9600,2110,7863,2631,6626,6620,68,1311,7198,7561,1768,5139,1431,221,230,2940,968,5283,6517,2146,1646,869,9402,7068,8645,7058,1765,9690,4152,2926,9504,2939,7504,6074,2944,6470,7859
-4659,736,4951,9344,1927,6271,8837,8711,3241,6579,7660,5499,5616,3743,5801,4682,9748,8796,779,1833,4549,8138,4026,775,4170,2432,4174,3741,7540,8017,2833,4027,396,811,2871,1150,9809,2719,9199,8504,1224,540,2051,3519,7982,7367,2761,308,3358,6505,2050,4836,5090,7864,805,2566,2409,6876,3361,8622,5572,5895,3280,441,7893,8105,1634,2929,274,3926,7786,6123,8233,9921,2674,5340,1445,203,4585,3837
-5759,338,7444,7968,7742,3755,1591,4839,1705,650,7061,2461,9230,9391,9373,2413,1213,431,7801,4994,2380,2703,6161,6878,8331,2538,6093,1275,5065,5062,2839,582,1014,8109,3525,1544,1569,8622,7944,2905,6120,1564,1839,5570,7579,1318,2677,5257,4418,5601,7935,7656,5192,1864,5886,6083,5580,6202,8869,1636,7907,4759,9082,5854,3185,7631,6854,5872,5632,5280,1431,2077,9717,7431,4256,8261,9680,4487,4752,4286
-1571,1428,8599,1230,7772,4221,8523,9049,4042,8726,7567,6736,9033,2104,4879,4967,6334,6716,3994,1269,8995,6539,3610,7667,6560,6065,874,848,4597,1711,7161,4811,6734,5723,6356,6026,9183,2586,5636,1092,7779,7923,8747,6887,7505,9909,1792,3233,4526,3176,1508,8043,720,5212,6046,4988,709,5277,8256,3642,1391,5803,1468,2145,3970,6301,7767,2359,8487,9771,8785,7520,856,1605,8972,2402,2386,991,1383,5963
-1822,4824,5957,6511,9868,4113,301,9353,6228,2881,2966,6956,9124,9574,9233,1601,7340,973,9396,540,4747,8590,9535,3650,7333,7583,4806,3593,2738,8157,5215,8472,2284,9473,3906,6982,5505,6053,7936,6074,7179,6688,1564,1103,6860,5839,2022,8490,910,7551,7805,881,7024,1855,9448,4790,1274,3672,2810,774,7623,4223,4850,6071,9975,4935,1915,9771,6690,3846,517,463,7624,4511,614,6394,3661,7409,1395,8127
-8738,3850,9555,3695,4383,2378,87,6256,6740,7682,9546,4255,6105,2000,1851,4073,8957,9022,6547,5189,2487,303,9602,7833,1628,4163,6678,3144,8589,7096,8913,5823,4890,7679,1212,9294,5884,2972,3012,3359,7794,7428,1579,4350,7246,4301,7779,7790,3294,9547,4367,3549,1958,8237,6758,3497,3250,3456,6318,1663,708,7714,6143,6890,3428,6853,9334,7992,591,6449,9786,1412,8500,722,5468,1371,108,3939,4199,2535
-7047,4323,1934,5163,4166,461,3544,2767,6554,203,6098,2265,9078,2075,4644,6641,8412,9183,487,101,7566,5622,1975,5726,2920,5374,7779,5631,3753,3725,2672,3621,4280,1162,5812,345,8173,9785,1525,955,5603,2215,2580,5261,2765,2990,5979,389,3907,2484,1232,5933,5871,3304,1138,1616,5114,9199,5072,7442,7245,6472,4760,6359,9053,7876,2564,9404,3043,9026,2261,3374,4460,7306,2326,966,828,3274,1712,3446
-3975,4565,8131,5800,4570,2306,8838,4392,9147,11,3911,7118,9645,4994,2028,6062,5431,2279,8752,2658,7836,994,7316,5336,7185,3289,1898,9689,2331,5737,3403,1124,2679,3241,7748,16,2724,5441,6640,9368,9081,5618,858,4969,17,2103,6035,8043,7475,2181,939,415,1617,8500,8253,2155,7843,7974,7859,1746,6336,3193,2617,8736,4079,6324,6645,8891,9396,5522,6103,1857,8979,3835,2475,1310,7422,610,8345,7615
-9248,5397,5686,2988,3446,4359,6634,9141,497,9176,6773,7448,1907,8454,916,1596,2241,1626,1384,2741,3649,5362,8791,7170,2903,2475,5325,6451,924,3328,522,90,4813,9737,9557,691,2388,1383,4021,1609,9206,4707,5200,7107,8104,4333,9860,5013,1224,6959,8527,1877,4545,7772,6268,621,4915,9349,5970,706,9583,3071,4127,780,8231,3017,9114,3836,7503,2383,1977,4870,8035,2379,9704,1037,3992,3642,1016,4303
-5093,138,4639,6609,1146,5565,95,7521,9077,2272,974,4388,2465,2650,722,4998,3567,3047,921,2736,7855,173,2065,4238,1048,5,6847,9548,8632,9194,5942,4777,7910,8971,6279,7253,2516,1555,1833,3184,9453,9053,6897,7808,8629,4877,1871,8055,4881,7639,1537,7701,2508,7564,5845,5023,2304,5396,3193,2955,1088,3801,6203,1748,3737,1276,13,4120,7715,8552,3047,2921,106,7508,304,1280,7140,2567,9135,5266
-6237,4607,7527,9047,522,7371,4883,2540,5867,6366,5301,1570,421,276,3361,527,6637,4861,2401,7522,5808,9371,5298,2045,5096,5447,7755,5115,7060,8529,4078,1943,1697,1764,5453,7085,960,2405,739,2100,5800,728,9737,5704,5693,1431,8979,6428,673,7540,6,7773,5857,6823,150,5869,8486,684,5816,9626,7451,5579,8260,3397,5322,6920,1879,2127,2884,5478,4977,9016,6165,6292,3062,5671,5968,78,4619,4763
-9905,7127,9390,5185,6923,3721,9164,9705,4341,1031,1046,5127,7376,6528,3248,4941,1178,7889,3364,4486,5358,9402,9158,8600,1025,874,1839,1783,309,9030,1843,845,8398,1433,7118,70,8071,2877,3904,8866,6722,4299,10,1929,5897,4188,600,1889,3325,2485,6473,4474,7444,6992,4846,6166,4441,2283,2629,4352,7775,1101,2214,9985,215,8270,9750,2740,8361,7103,5930,8664,9690,8302,9267,344,2077,1372,1880,9550
-5825,8517,7769,2405,8204,1060,3603,7025,478,8334,1997,3692,7433,9101,7294,7498,9415,5452,3850,3508,6857,9213,6807,4412,7310,854,5384,686,4978,892,8651,3241,2743,3801,3813,8588,6701,4416,6990,6490,3197,6838,6503,114,8343,5844,8646,8694,65,791,5979,2687,2621,2019,8097,1423,3644,9764,4921,3266,3662,5561,2476,8271,8138,6147,1168,3340,1998,9874,6572,9873,6659,5609,2711,3931,9567,4143,7833,8887
-6223,2099,2700,589,4716,8333,1362,5007,2753,2848,4441,8397,7192,8191,4916,9955,6076,3370,6396,6971,3156,248,3911,2488,4930,2458,7183,5455,170,6809,6417,3390,1956,7188,577,7526,2203,968,8164,479,8699,7915,507,6393,4632,1597,7534,3604,618,3280,6061,9793,9238,8347,568,9645,2070,5198,6482,5000,9212,6655,5961,7513,1323,3872,6170,3812,4146,2736,67,3151,5548,2781,9679,7564,5043,8587,1893,4531
-5826,3690,6724,2121,9308,6986,8106,6659,2142,1642,7170,2877,5757,6494,8026,6571,8387,9961,6043,9758,9607,6450,8631,8334,7359,5256,8523,2225,7487,1977,9555,8048,5763,2414,4948,4265,2427,8978,8088,8841,9208,9601,5810,9398,8866,9138,4176,5875,7212,3272,6759,5678,7649,4922,5422,1343,8197,3154,3600,687,1028,4579,2084,9467,4492,7262,7296,6538,7657,7134,2077,1505,7332,6890,8964,4879,7603,7400,5973,739
-1861,1613,4879,1884,7334,966,2000,7489,2123,4287,1472,3263,4726,9203,1040,4103,6075,6049,330,9253,4062,4268,1635,9960,577,1320,3195,9628,1030,4092,4979,6474,6393,2799,6967,8687,7724,7392,9927,2085,3200,6466,8702,265,7646,8665,7986,7266,4574,6587,612,2724,704,3191,8323,9523,3002,704,5064,3960,8209,2027,2758,8393,4875,4641,9584,6401,7883,7014,768,443,5490,7506,1852,2005,8850,5776,4487,4269
-4052,6687,4705,7260,6645,6715,3706,5504,8672,2853,1136,8187,8203,4016,871,1809,1366,4952,9294,5339,6872,2645,6083,7874,3056,5218,7485,8796,7401,3348,2103,426,8572,4163,9171,3176,948,7654,9344,3217,1650,5580,7971,2622,76,2874,880,2034,9929,1546,2659,5811,3754,7096,7436,9694,9960,7415,2164,953,2360,4194,2397,1047,2196,6827,575,784,2675,8821,6802,7972,5996,6699,2134,7577,2887,1412,4349,4380
-4629,2234,6240,8132,7592,3181,6389,1214,266,1910,2451,8784,2790,1127,6932,1447,8986,2492,5476,397,889,3027,7641,5083,5776,4022,185,3364,5701,2442,2840,4160,9525,4828,6602,2614,7447,3711,4505,7745,8034,6514,4907,2605,7753,6958,7270,6936,3006,8968,439,2326,4652,3085,3425,9863,5049,5361,8688,297,7580,8777,7916,6687,8683,7141,306,9569,2384,1500,3346,4601,7329,9040,6097,2727,6314,4501,4974,2829
-8316,4072,2025,6884,3027,1808,5714,7624,7880,8528,4205,8686,7587,3230,1139,7273,6163,6986,3914,9309,1464,9359,4474,7095,2212,7302,2583,9462,7532,6567,1606,4436,8981,5612,6796,4385,5076,2007,6072,3678,8331,1338,3299,8845,4783,8613,4071,1232,6028,2176,3990,2148,3748,103,9453,538,6745,9110,926,3125,473,5970,8728,7072,9062,1404,1317,5139,9862,6496,6062,3338,464,1600,2532,1088,8232,7739,8274,3873
-2341,523,7096,8397,8301,6541,9844,244,4993,2280,7689,4025,4196,5522,7904,6048,2623,9258,2149,9461,6448,8087,7245,1917,8340,7127,8466,5725,6996,3421,5313,512,9164,9837,9794,8369,4185,1488,7210,1524,1016,4620,9435,2478,7765,8035,697,6677,3724,6988,5853,7662,3895,9593,1185,4727,6025,5734,7665,3070,138,8469,6748,6459,561,7935,8646,2378,462,7755,3115,9690,8877,3946,2728,8793,244,6323,8666,4271
-6430,2406,8994,56,1267,3826,9443,7079,7579,5232,6691,3435,6718,5698,4144,7028,592,2627,217,734,6194,8156,9118,58,2640,8069,4127,3285,694,3197,3377,4143,4802,3324,8134,6953,7625,3598,3584,4289,7065,3434,2106,7132,5802,7920,9060,7531,3321,1725,1067,3751,444,5503,6785,7937,6365,4803,198,6266,8177,1470,6390,1606,2904,7555,9834,8667,2033,1723,5167,1666,8546,8152,473,4475,6451,7947,3062,3281
-2810,3042,7759,1741,2275,2609,7676,8640,4117,1958,7500,8048,1757,3954,9270,1971,4796,2912,660,5511,3553,1012,5757,4525,6084,7198,8352,5775,7726,8591,7710,9589,3122,4392,6856,5016,749,2285,3356,7482,9956,7348,2599,8944,495,3462,3578,551,4543,7207,7169,7796,1247,4278,6916,8176,3742,8385,2310,1345,8692,2667,4568,1770,8319,3585,4920,3890,4928,7343,5385,9772,7947,8786,2056,9266,3454,2807,877,2660
-6206,8252,5928,5837,4177,4333,207,7934,5581,9526,8906,1498,8411,2984,5198,5134,2464,8435,8514,8674,3876,599,5327,826,2152,4084,2433,9327,9697,4800,2728,3608,3849,3861,3498,9943,1407,3991,7191,9110,5666,8434,4704,6545,5944,2357,1163,4995,9619,6754,4200,9682,6654,4862,4744,5953,6632,1054,293,9439,8286,2255,696,8709,1533,1844,6441,430,1999,6063,9431,7018,8057,2920,6266,6799,356,3597,4024,6665
-3847,6356,8541,7225,2325,2946,5199,469,5450,7508,2197,9915,8284,7983,6341,3276,3321,16,1321,7608,5015,3362,8491,6968,6818,797,156,2575,706,9516,5344,5457,9210,5051,8099,1617,9951,7663,8253,9683,2670,1261,4710,1068,8753,4799,1228,2621,3275,6188,4699,1791,9518,8701,5932,4275,6011,9877,2933,4182,6059,2930,6687,6682,9771,654,9437,3169,8596,1827,5471,8909,2352,123,4394,3208,8756,5513,6917,2056
-5458,8173,3138,3290,4570,4892,3317,4251,9699,7973,1163,1935,5477,6648,9614,5655,9592,975,9118,2194,7322,8248,8413,3462,8560,1907,7810,6650,7355,2939,4973,6894,3933,3784,3200,2419,9234,4747,2208,2207,1945,2899,1407,6145,8023,3484,5688,7686,2737,3828,3704,9004,5190,9740,8643,8650,5358,4426,1522,1707,3613,9887,6956,2447,2762,833,1449,9489,2573,1080,4167,3456,6809,2466,227,7125,2759,6250,6472,8089
-3266,7025,9756,3914,1265,9116,7723,9788,6805,5493,2092,8688,6592,9173,4431,4028,6007,7131,4446,4815,3648,6701,759,3312,8355,4485,4187,5188,8746,7759,3528,2177,5243,8379,3838,7233,4607,9187,7216,2190,6967,2920,6082,7910,5354,3609,8958,6949,7731,494,8753,8707,1523,4426,3543,7085,647,6771,9847,646,5049,824,8417,5260,2730,5702,2513,9275,4279,2767,8684,1165,9903,4518,55,9682,8963,6005,2102,6523
-1998,8731,936,1479,5259,7064,4085,91,7745,7136,3773,3810,730,8255,2705,2653,9790,6807,2342,355,9344,2668,3690,2028,9679,8102,574,4318,6481,9175,5423,8062,2867,9657,7553,3442,3920,7430,3945,7639,3714,3392,2525,4995,4850,2867,7951,9667,486,9506,9888,781,8866,1702,3795,90,356,1483,4200,2131,6969,5931,486,6880,4404,1084,5169,4910,6567,8335,4686,5043,2614,3352,2667,4513,6472,7471,5720,1616
-8878,1613,1716,868,1906,2681,564,665,5995,2474,7496,3432,9491,9087,8850,8287,669,823,347,6194,2264,2592,7871,7616,8508,4827,760,2676,4660,4881,7572,3811,9032,939,4384,929,7525,8419,5556,9063,662,8887,7026,8534,3111,1454,2082,7598,5726,6687,9647,7608,73,3014,5063,670,5461,5631,3367,9796,8475,7908,5073,1565,5008,5295,4457,1274,4788,1728,338,600,8415,8535,9351,7750,6887,5845,1741,125
-3637,6489,9634,9464,9055,2413,7824,9517,7532,3577,7050,6186,6980,9365,9782,191,870,2497,8498,2218,2757,5420,6468,586,3320,9230,1034,1393,9886,5072,9391,1178,8464,8042,6869,2075,8275,3601,7715,9470,8786,6475,8373,2159,9237,2066,3264,5000,679,355,3069,4073,494,2308,5512,4334,9438,8786,8637,9774,1169,1949,6594,6072,4270,9158,7916,5752,6794,9391,6301,5842,3285,2141,3898,8027,4310,8821,7079,1307
-8497,6681,4732,7151,7060,5204,9030,7157,833,5014,8723,3207,9796,9286,4913,119,5118,7650,9335,809,3675,2597,5144,3945,5090,8384,187,4102,1260,2445,2792,4422,8389,9290,50,1765,1521,6921,8586,4368,1565,5727,7855,2003,4834,9897,5911,8630,5070,1330,7692,7557,7980,6028,5805,9090,8265,3019,3802,698,9149,5748,1965,9658,4417,5994,5584,8226,2937,272,5743,1278,5698,8736,2595,6475,5342,6596,1149,6920
-8188,8009,9546,6310,8772,2500,9846,6592,6872,3857,1307,8125,7042,1544,6159,2330,643,4604,7899,6848,371,8067,2062,3200,7295,1857,9505,6936,384,2193,2190,301,8535,5503,1462,7380,5114,4824,8833,1763,4974,8711,9262,6698,3999,2645,6937,7747,1128,2933,3556,7943,2885,3122,9105,5447,418,2899,5148,3699,9021,9501,597,4084,175,1621,1,1079,6067,5812,4326,9914,6633,5394,4233,6728,9084,1864,5863,1225
-9935,8793,9117,1825,9542,8246,8437,3331,9128,9675,6086,7075,319,1334,7932,3583,7167,4178,1726,7720,695,8277,7887,6359,5912,1719,2780,8529,1359,2013,4498,8072,1129,9998,1147,8804,9405,6255,1619,2165,7491,1,8882,7378,3337,503,5758,4109,3577,985,3200,7615,8058,5032,1080,6410,6873,5496,1466,2412,9885,5904,4406,3605,8770,4361,6205,9193,1537,9959,214,7260,9566,1685,100,4920,7138,9819,5637,976
-3466,9854,985,1078,7222,8888,5466,5379,3578,4540,6853,8690,3728,6351,7147,3134,6921,9692,857,3307,4998,2172,5783,3931,9417,2541,6299,13,787,2099,9131,9494,896,8600,1643,8419,7248,2660,2609,8579,91,6663,5506,7675,1947,6165,4286,1972,9645,3805,1663,1456,8853,5705,9889,7489,1107,383,4044,2969,3343,152,7805,4980,9929,5033,1737,9953,7197,9158,4071,1324,473,9676,3984,9680,3606,8160,7384,5432
-1005,4512,5186,3953,2164,3372,4097,3247,8697,3022,9896,4101,3871,6791,3219,2742,4630,6967,7829,5991,6134,1197,1414,8923,8787,1394,8852,5019,7768,5147,8004,8825,5062,9625,7988,1110,3992,7984,9966,6516,6251,8270,421,3723,1432,4830,6935,8095,9059,2214,6483,6846,3120,1587,6201,6691,9096,9627,6671,4002,3495,9939,7708,7465,5879,6959,6634,3241,3401,2355,9061,2611,7830,3941,2177,2146,5089,7079,519,6351
-7280,8586,4261,2831,7217,3141,9994,9940,5462,2189,4005,6942,9848,5350,8060,6665,7519,4324,7684,657,9453,9296,2944,6843,7499,7847,1728,9681,3906,6353,5529,2822,3355,3897,7724,4257,7489,8672,4356,3983,1948,6892,7415,4153,5893,4190,621,1736,4045,9532,7701,3671,1211,1622,3176,4524,9317,7800,5638,6644,6943,5463,3531,2821,1347,5958,3436,1438,2999,994,850,4131,2616,1549,3465,5946,690,9273,6954,7991
-9517,399,3249,2596,7736,2142,1322,968,7350,1614,468,3346,3265,7222,6086,1661,5317,2582,7959,4685,2807,2917,1037,5698,1529,3972,8716,2634,3301,3412,8621,743,8001,4734,888,7744,8092,3671,8941,1487,5658,7099,2781,99,1932,4443,4756,4652,9328,1581,7855,4312,5976,7255,6480,3996,2748,1973,9731,4530,2790,9417,7186,5303,3557,351,7182,9428,1342,9020,7599,1392,8304,2070,9138,7215,2008,9937,1106,7110
-7444,769,9688,632,1571,6820,8743,4338,337,3366,3073,1946,8219,104,4210,6986,249,5061,8693,7960,6546,1004,8857,5997,9352,4338,6105,5008,2556,6518,6694,4345,3727,7956,20,3954,8652,4424,9387,2035,8358,5962,5304,5194,8650,8282,1256,1103,2138,6679,1985,3653,2770,2433,4278,615,2863,1715,242,3790,2636,6998,3088,1671,2239,957,5411,4595,6282,2881,9974,2401,875,7574,2987,4587,3147,6766,9885,2965
-3287,3016,3619,6818,9073,6120,5423,557,2900,2015,8111,3873,1314,4189,1846,4399,7041,7583,2427,2864,3525,5002,2069,748,1948,6015,2684,438,770,8367,1663,7887,7759,1885,157,7770,4520,4878,3857,1137,3525,3050,6276,5569,7649,904,4533,7843,2199,5648,7628,9075,9441,3600,7231,2388,5640,9096,958,3058,584,5899,8150,1181,9616,1098,8162,6819,8171,1519,1140,7665,8801,2632,1299,9192,707,9955,2710,7314
-1772,2963,7578,3541,3095,1488,7026,2634,6015,4633,4370,2762,1650,2174,909,8158,2922,8467,4198,4280,9092,8856,8835,5457,2790,8574,9742,5054,9547,4156,7940,8126,9824,7340,8840,6574,3547,1477,3014,6798,7134,435,9484,9859,3031,4,1502,4133,1738,1807,4825,463,6343,9701,8506,9822,9555,8688,8168,3467,3234,6318,1787,5591,419,6593,7974,8486,9861,6381,6758,194,3061,4315,2863,4665,3789,2201,1492,4416
-126,8927,6608,5682,8986,6867,1715,6076,3159,788,3140,4744,830,9253,5812,5021,7616,8534,1546,9590,1101,9012,9821,8132,7857,4086,1069,7491,2988,1579,2442,4321,2149,7642,6108,250,6086,3167,24,9528,7663,2685,1220,9196,1397,5776,1577,1730,5481,977,6115,199,6326,2183,3767,5928,5586,7561,663,8649,9688,949,5913,9160,1870,5764,9887,4477,6703,1413,4995,5494,7131,2192,8969,7138,3997,8697,646,1028
-8074,1731,8245,624,4601,8706,155,8891,309,2552,8208,8452,2954,3124,3469,4246,3352,1105,4509,8677,9901,4416,8191,9283,5625,7120,2952,8881,7693,830,4580,8228,9459,8611,4499,1179,4988,1394,550,2336,6089,6872,269,7213,1848,917,6672,4890,656,1478,6536,3165,4743,4990,1176,6211,7207,5284,9730,4738,1549,4986,4942,8645,3698,9429,1439,2175,6549,3058,6513,1574,6988,8333,3406,5245,5431,7140,7085,6407
-7845,4694,2530,8249,290,5948,5509,1588,5940,4495,5866,5021,4626,3979,3296,7589,4854,1998,5627,3926,8346,6512,9608,1918,7070,4747,4182,2858,2766,4606,6269,4107,8982,8568,9053,4244,5604,102,2756,727,5887,2566,7922,44,5986,621,1202,374,6988,4130,3627,6744,9443,4568,1398,8679,397,3928,9159,367,2917,6127,5788,3304,8129,911,2669,1463,9749,264,4478,8940,1109,7309,2462,117,4692,7724,225,2312
-4164,3637,2000,941,8903,39,3443,7172,1031,3687,4901,8082,4945,4515,7204,9310,9349,9535,9940,218,1788,9245,2237,1541,5670,6538,6047,5553,9807,8101,1925,8714,445,8332,7309,6830,5786,5736,7306,2710,3034,1838,7969,6318,7912,2584,2080,7437,6705,2254,7428,820,782,9861,7596,3842,3631,8063,5240,6666,394,4565,7865,4895,9890,6028,6117,4724,9156,4473,4552,602,470,6191,4927,5387,884,3146,1978,3000
-4258,6880,1696,3582,5793,4923,2119,1155,9056,9698,6603,3768,5514,9927,9609,6166,6566,4536,4985,4934,8076,9062,6741,6163,7399,4562,2337,5600,2919,9012,8459,1308,6072,1225,9306,8818,5886,7243,7365,8792,6007,9256,6699,7171,4230,7002,8720,7839,4533,1671,478,7774,1607,2317,5437,4705,7886,4760,6760,7271,3081,2997,3088,7675,6208,3101,6821,6840,122,9633,4900,2067,8546,4549,2091,7188,5605,8599,6758,5229
-7854,5243,9155,3556,8812,7047,2202,1541,5993,4600,4760,713,434,7911,7426,7414,8729,322,803,7960,7563,4908,6285,6291,736,3389,9339,4132,8701,7534,5287,3646,592,3065,7582,2592,8755,6068,8597,1982,5782,1894,2900,6236,4039,6569,3037,5837,7698,700,7815,2491,7272,5878,3083,6778,6639,3589,5010,8313,2581,6617,5869,8402,6808,2951,2321,5195,497,2190,6187,1342,1316,4453,7740,4154,2959,1781,1482,8256
-7178,2046,4419,744,8312,5356,6855,8839,319,2962,5662,47,6307,8662,68,4813,567,2712,9931,1678,3101,8227,6533,4933,6656,92,5846,4780,6256,6361,4323,9985,1231,2175,7178,3034,9744,6155,9165,7787,5836,9318,7860,9644,8941,6480,9443,8188,5928,161,6979,2352,5628,6991,1198,8067,5867,6620,3778,8426,2994,3122,3124,6335,3918,8897,2655,9670,634,1088,1576,8935,7255,474,8166,7417,9547,2886,5560,3842
-6957,3111,26,7530,7143,1295,1744,6057,3009,1854,8098,5405,2234,4874,9447,2620,9303,27,7410,969,40,2966,5648,7596,8637,4238,3143,3679,7187,690,9980,7085,7714,9373,5632,7526,6707,3951,9734,4216,2146,3602,5371,6029,3039,4433,4855,4151,1449,3376,8009,7240,7027,4602,2947,9081,4045,8424,9352,8742,923,2705,4266,3232,2264,6761,363,2651,3383,7770,6730,7856,7340,9679,2158,610,4471,4608,910,6241
-4417,6756,1013,8797,658,8809,5032,8703,7541,846,3357,2920,9817,1745,9980,7593,4667,3087,779,3218,6233,5568,4296,2289,2654,7898,5021,9461,5593,8214,9173,4203,2271,7980,2983,5952,9992,8399,3468,1776,3188,9314,1720,6523,2933,621,8685,5483,8986,6163,3444,9539,4320,155,3992,2828,2150,6071,524,2895,5468,8063,1210,3348,9071,4862,483,9017,4097,6186,9815,3610,5048,1644,1003,9865,9332,2145,1944,2213
-9284,3803,4920,1927,6706,4344,7383,4786,9890,2010,5228,1224,3158,6967,8580,8990,8883,5213,76,8306,2031,4980,5639,9519,7184,5645,7769,3259,8077,9130,1317,3096,9624,3818,1770,695,2454,947,6029,3474,9938,3527,5696,4760,7724,7738,2848,6442,5767,6845,8323,4131,2859,7595,2500,4815,3660,9130,8580,7016,8231,4391,8369,3444,4069,4021,556,6154,627,2778,1496,4206,6356,8434,8491,3816,8231,3190,5575,1015
-3787,7572,1788,6803,5641,6844,1961,4811,8535,9914,9999,1450,8857,738,4662,8569,6679,2225,7839,8618,286,2648,5342,2294,3205,4546,176,8705,3741,6134,8324,8021,7004,5205,7032,6637,9442,5539,5584,4819,5874,5807,8589,6871,9016,983,1758,3786,1519,6241,185,8398,495,3370,9133,3051,4549,9674,7311,9738,3316,9383,2658,2776,9481,7558,619,3943,3324,6491,4933,153,9738,4623,912,3595,7771,7939,1219,4405
-2650,3883,4154,5809,315,7756,4430,1788,4451,1631,6461,7230,6017,5751,138,588,5282,2442,9110,9035,6349,2515,1570,6122,4192,4174,3530,1933,4186,4420,4609,5739,4135,2963,6308,1161,8809,8619,2796,3819,6971,8228,4188,1492,909,8048,2328,6772,8467,7671,9068,2226,7579,6422,7056,8042,3296,2272,3006,2196,7320,3238,3490,3102,37,1293,3212,4767,5041,8773,5794,4456,6174,7279,7054,2835,7053,9088,790,6640
-3101,1057,7057,3826,6077,1025,2955,1224,1114,6729,5902,4698,6239,7203,9423,1804,4417,6686,1426,6941,8071,1029,4985,9010,6122,6597,1622,1574,3513,1684,7086,5505,3244,411,9638,4150,907,9135,829,981,1707,5359,8781,9751,5,9131,3973,7159,1340,6955,7514,7993,6964,8198,1933,2797,877,3993,4453,8020,9349,8646,2779,8679,2961,3547,3374,3510,1129,3568,2241,2625,9138,5974,8206,7669,7678,1833,8700,4480
-4865,9912,8038,8238,782,3095,8199,1127,4501,7280,2112,2487,3626,2790,9432,1475,6312,8277,4827,2218,5806,7132,8752,1468,7471,6386,739,8762,8323,8120,5169,9078,9058,3370,9560,7987,8585,8531,5347,9312,1058,4271,1159,5286,5404,6925,8606,9204,7361,2415,560,586,4002,2644,1927,2824,768,4409,2942,3345,1002,808,4941,6267,7979,5140,8643,7553,9438,7320,4938,2666,4609,2778,8158,6730,3748,3867,1866,7181
-171,3771,7134,8927,4778,2913,3326,2004,3089,7853,1378,1729,4777,2706,9578,1360,5693,3036,1851,7248,2403,2273,8536,6501,9216,613,9671,7131,7719,6425,773,717,8803,160,1114,7554,7197,753,4513,4322,8499,4533,2609,4226,8710,6627,644,9666,6260,4870,5744,7385,6542,6203,7703,6130,8944,5589,2262,6803,6381,7414,6888,5123,7320,9392,9061,6780,322,8975,7050,5089,1061,2260,3199,1150,1865,5386,9699,6501
-3744,8454,6885,8277,919,1923,4001,6864,7854,5519,2491,6057,8794,9645,1776,5714,9786,9281,7538,6916,3215,395,2501,9618,4835,8846,9708,2813,3303,1794,8309,7176,2206,1602,1838,236,4593,2245,8993,4017,10,8215,6921,5206,4023,5932,6997,7801,262,7640,3107,8275,4938,7822,2425,3223,3886,2105,8700,9526,2088,8662,8034,7004,5710,2124,7164,3574,6630,9980,4242,2901,9471,1491,2117,4562,1130,9086,4117,6698
-2810,2280,2331,1170,4554,4071,8387,1215,2274,9848,6738,1604,7281,8805,439,1298,8318,7834,9426,8603,6092,7944,1309,8828,303,3157,4638,4439,9175,1921,4695,7716,1494,1015,1772,5913,1127,1952,1950,8905,4064,9890,385,9357,7945,5035,7082,5369,4093,6546,5187,5637,2041,8946,1758,7111,6566,1027,1049,5148,7224,7248,296,6169,375,1656,7993,2816,3717,4279,4675,1609,3317,42,6201,3100,3144,163,9530,4531
-7096,6070,1009,4988,3538,5801,7149,3063,2324,2912,7911,7002,4338,7880,2481,7368,3516,2016,7556,2193,1388,3865,8125,4637,4096,8114,750,3144,1938,7002,9343,4095,1392,4220,3455,6969,9647,1321,9048,1996,1640,6626,1788,314,9578,6630,2813,6626,4981,9908,7024,4355,3201,3521,3864,3303,464,1923,595,9801,3391,8366,8084,9374,1041,8807,9085,1892,9431,8317,9016,9221,8574,9981,9240,5395,2009,6310,2854,9255
-8830,3145,2960,9615,8220,6061,3452,2918,6481,9278,2297,3385,6565,7066,7316,5682,107,7646,4466,68,1952,9603,8615,54,7191,791,6833,2560,693,9733,4168,570,9127,9537,1925,8287,5508,4297,8452,8795,6213,7994,2420,4208,524,5915,8602,8330,2651,8547,6156,1812,6271,7991,9407,9804,1553,6866,1128,2119,4691,9711,8315,5879,9935,6900,482,682,4126,1041,428,6247,3720,5882,7526,2582,4327,7725,3503,2631
-2738,9323,721,7434,1453,6294,2957,3786,5722,6019,8685,4386,3066,9057,6860,499,5315,3045,5194,7111,3137,9104,941,586,3066,755,4177,8819,7040,5309,3583,3897,4428,7788,4721,7249,6559,7324,825,7311,3760,6064,6070,9672,4882,584,1365,9739,9331,5783,2624,7889,1604,1303,1555,7125,8312,425,8936,3233,7724,1480,403,7440,1784,1754,4721,1569,652,3893,4574,5692,9730,4813,9844,8291,9199,7101,3391,8914
-6044,2928,9332,3328,8588,447,3830,1176,3523,2705,8365,6136,5442,9049,5526,8575,8869,9031,7280,706,2794,8814,5767,4241,7696,78,6570,556,5083,1426,4502,3336,9518,2292,1885,3740,3153,9348,9331,8051,2759,5407,9028,7840,9255,831,515,2612,9747,7435,8964,4971,2048,4900,5967,8271,1719,9670,2810,6777,1594,6367,6259,8316,3815,1689,6840,9437,4361,822,9619,3065,83,6344,7486,8657,8228,9635,6932,4864
-8478,4777,6334,4678,7476,4963,6735,3096,5860,1405,5127,7269,7793,4738,227,9168,2996,8928,765,733,1276,7677,6258,1528,9558,3329,302,8901,1422,8277,6340,645,9125,8869,5952,141,8141,1816,9635,4025,4184,3093,83,2344,2747,9352,7966,1206,1126,1826,218,7939,2957,2729,810,8752,5247,4174,4038,8884,7899,9567,301,5265,5752,7524,4381,1669,3106,8270,6228,6373,754,2547,4240,2313,5514,3022,1040,9738
-2265,8192,1763,1369,8469,8789,4836,52,1212,6690,5257,8918,6723,6319,378,4039,2421,8555,8184,9577,1432,7139,8078,5452,9628,7579,4161,7490,5159,8559,1011,81,478,5840,1964,1334,6875,8670,9900,739,1514,8692,522,9316,6955,1345,8132,2277,3193,9773,3923,4177,2183,1236,6747,6575,4874,6003,6409,8187,745,8776,9440,7543,9825,2582,7381,8147,7236,5185,7564,6125,218,7991,6394,391,7659,7456,5128,5294
-2132,8992,8160,5782,4420,3371,3798,5054,552,5631,7546,4716,1332,6486,7892,7441,4370,6231,4579,2121,8615,1145,9391,1524,1385,2400,9437,2454,7896,7467,2928,8400,3299,4025,7458,4703,7206,6358,792,6200,725,4275,4136,7390,5984,4502,7929,5085,8176,4600,119,3568,76,9363,6943,2248,9077,9731,6213,5817,6729,4190,3092,6910,759,2682,8380,1254,9604,3011,9291,5329,9453,9746,2739,6522,3765,5634,1113,5789
-5304,5499,564,2801,679,2653,1783,3608,7359,7797,3284,796,3222,437,7185,6135,8571,2778,7488,5746,678,6140,861,7750,803,9859,9918,2425,3734,2698,9005,4864,9818,6743,2475,132,9486,3825,5472,919,292,4411,7213,7699,6435,9019,6769,1388,802,2124,1345,8493,9487,8558,7061,8777,8833,2427,2238,5409,4957,8503,3171,7622,5779,6145,2417,5873,5563,5693,9574,9491,1937,7384,4563,6842,5432,2751,3406,7981
diff --git a/src/projecteuler/082.py b/src/projecteuler/082.py deleted file mode 100644 index b0fd92a..0000000 --- a/src/projecteuler/082.py +++ /dev/null @@ -1,85 +0,0 @@ - -# uses Dijkstra's algorithm to find minimal path -# (based on solution for problem 81) -# -# slow, but working - -infinity = 99999999 - -matrix = [] - -width = 80 -height = 80 - -f = open('082.txt', 'r') -for line in f: - line.rstrip('\n') - line_str = line.split(',') - line_int = [ int(x) for x in line_str ] - matrix.append(line_int) -f.close() - -globalmin = 500000 - -for currentrow in range(height): - - # initialize - distance = [infinity] * (width*height) - pre = [None] * (width*height) - distance[currentrow*width] = 0 # start node - Q = range(width*height) - - def mindistance(Q): - mini = Q[0] - mind = distance[mini] - for i in Q: - if distance[i] < mind: - mind = distance[i] - mini = i - return mini - - def neighbors(u): - n = [] - row = u / width - col = u % width - if col == 0: - return[u+1] - if col < width-1: - n.append(row*width + col + 1) # right neighbor - if row < height-1: - n.append((row+1)*width + col) # lower neighbor - if row > 0: - n.append((row-1)*width + col) # upper neighbor - return n - - def update(u, v): - alt = distance[u] + matrix[v/width][v%width] - if alt < distance[v]: - distance[v] = alt - pre[v] = u - - # main algorithm - while len(Q) > 0: - u = mindistance(Q) - Q.remove(u) - for v in neighbors(u): - if v in Q: - update(u, v) - - # search min distance - for targetrow in range(height): - u = targetrow*width-1 # target node - path = [ u ] - while pre[u] != None: - u = pre[u] - path = [u] + path - - minsum = 0 - for n in path: - minsum += matrix[n/width][n%width] - - if minsum < globalmin: - globalmin = minsum - -print globalmin - diff --git a/src/projecteuler/082.txt b/src/projecteuler/082.txt deleted file mode 100644 index 1e9e6cd..0000000 --- a/src/projecteuler/082.txt +++ /dev/null @@ -1,80 +0,0 @@ -4445,2697,5115,718,2209,2212,654,4348,3079,6821,7668,3276,8874,4190,3785,2752,9473,7817,9137,496,7338,3434,7152,4355,4552,7917,7827,2460,2350,691,3514,5880,3145,7633,7199,3783,5066,7487,3285,1084,8985,760,872,8609,8051,1134,9536,5750,9716,9371,7619,5617,275,9721,2997,2698,1887,8825,6372,3014,2113,7122,7050,6775,5948,2758,1219,3539,348,7989,2735,9862,1263,8089,6401,9462,3168,2758,3748,5870
-1096,20,1318,7586,5167,2642,1443,5741,7621,7030,5526,4244,2348,4641,9827,2448,6918,5883,3737,300,7116,6531,567,5997,3971,6623,820,6148,3287,1874,7981,8424,7672,7575,6797,6717,1078,5008,4051,8795,5820,346,1851,6463,2117,6058,3407,8211,117,4822,1317,4377,4434,5925,8341,4800,1175,4173,690,8978,7470,1295,3799,8724,3509,9849,618,3320,7068,9633,2384,7175,544,6583,1908,9983,481,4187,9353,9377
-9607,7385,521,6084,1364,8983,7623,1585,6935,8551,2574,8267,4781,3834,2764,2084,2669,4656,9343,7709,2203,9328,8004,6192,5856,3555,2260,5118,6504,1839,9227,1259,9451,1388,7909,5733,6968,8519,9973,1663,5315,7571,3035,4325,4283,2304,6438,3815,9213,9806,9536,196,5542,6907,2475,1159,5820,9075,9470,2179,9248,1828,4592,9167,3713,4640,47,3637,309,7344,6955,346,378,9044,8635,7466,5036,9515,6385,9230
-7206,3114,7760,1094,6150,5182,7358,7387,4497,955,101,1478,7777,6966,7010,8417,6453,4955,3496,107,449,8271,131,2948,6185,784,5937,8001,6104,8282,4165,3642,710,2390,575,715,3089,6964,4217,192,5949,7006,715,3328,1152,66,8044,4319,1735,146,4818,5456,6451,4113,1063,4781,6799,602,1504,6245,6550,1417,1343,2363,3785,5448,4545,9371,5420,5068,4613,4882,4241,5043,7873,8042,8434,3939,9256,2187
-3620,8024,577,9997,7377,7682,1314,1158,6282,6310,1896,2509,5436,1732,9480,706,496,101,6232,7375,2207,2306,110,6772,3433,2878,8140,5933,8688,1399,2210,7332,6172,6403,7333,4044,2291,1790,2446,7390,8698,5723,3678,7104,1825,2040,140,3982,4905,4160,2200,5041,2512,1488,2268,1175,7588,8321,8078,7312,977,5257,8465,5068,3453,3096,1651,7906,253,9250,6021,8791,8109,6651,3412,345,4778,5152,4883,7505
-1074,5438,9008,2679,5397,5429,2652,3403,770,9188,4248,2493,4361,8327,9587,707,9525,5913,93,1899,328,2876,3604,673,8576,6908,7659,2544,3359,3883,5273,6587,3065,1749,3223,604,9925,6941,2823,8767,7039,3290,3214,1787,7904,3421,7137,9560,8451,2669,9219,6332,1576,5477,6755,8348,4164,4307,2984,4012,6629,1044,2874,6541,4942,903,1404,9125,5160,8836,4345,2581,460,8438,1538,5507,668,3352,2678,6942
-4295,1176,5596,1521,3061,9868,7037,7129,8933,6659,5947,5063,3653,9447,9245,2679,767,714,116,8558,163,3927,8779,158,5093,2447,5782,3967,1716,931,7772,8164,1117,9244,5783,7776,3846,8862,6014,2330,6947,1777,3112,6008,3491,1906,5952,314,4602,8994,5919,9214,3995,5026,7688,6809,5003,3128,2509,7477,110,8971,3982,8539,2980,4689,6343,5411,2992,5270,5247,9260,2269,7474,1042,7162,5206,1232,4556,4757
-510,3556,5377,1406,5721,4946,2635,7847,4251,8293,8281,6351,4912,287,2870,3380,3948,5322,3840,4738,9563,1906,6298,3234,8959,1562,6297,8835,7861,239,6618,1322,2553,2213,5053,5446,4402,6500,5182,8585,6900,5756,9661,903,5186,7687,5998,7997,8081,8955,4835,6069,2621,1581,732,9564,1082,1853,5442,1342,520,1737,3703,5321,4793,2776,1508,1647,9101,2499,6891,4336,7012,3329,3212,1442,9993,3988,4930,7706
-9444,3401,5891,9716,1228,7107,109,3563,2700,6161,5039,4992,2242,8541,7372,2067,1294,3058,1306,320,8881,5756,9326,411,8650,8824,5495,8282,8397,2000,1228,7817,2099,6473,3571,5994,4447,1299,5991,543,7874,2297,1651,101,2093,3463,9189,6872,6118,872,1008,1779,2805,9084,4048,2123,5877,55,3075,1737,9459,4535,6453,3644,108,5982,4437,5213,1340,6967,9943,5815,669,8074,1838,6979,9132,9315,715,5048
-3327,4030,7177,6336,9933,5296,2621,4785,2755,4832,2512,2118,2244,4407,2170,499,7532,9742,5051,7687,970,6924,3527,4694,5145,1306,2165,5940,2425,8910,3513,1909,6983,346,6377,4304,9330,7203,6605,3709,3346,970,369,9737,5811,4427,9939,3693,8436,5566,1977,3728,2399,3985,8303,2492,5366,9802,9193,7296,1033,5060,9144,2766,1151,7629,5169,5995,58,7619,7565,4208,1713,6279,3209,4908,9224,7409,1325,8540
-6882,1265,1775,3648,4690,959,5837,4520,5394,1378,9485,1360,4018,578,9174,2932,9890,3696,116,1723,1178,9355,7063,1594,1918,8574,7594,7942,1547,6166,7888,354,6932,4651,1010,7759,6905,661,7689,6092,9292,3845,9605,8443,443,8275,5163,7720,7265,6356,7779,1798,1754,5225,6661,1180,8024,5666,88,9153,1840,3508,1193,4445,2648,3538,6243,6375,8107,5902,5423,2520,1122,5015,6113,8859,9370,966,8673,2442
-7338,3423,4723,6533,848,8041,7921,8277,4094,5368,7252,8852,9166,2250,2801,6125,8093,5738,4038,9808,7359,9494,601,9116,4946,2702,5573,2921,9862,1462,1269,2410,4171,2709,7508,6241,7522,615,2407,8200,4189,5492,5649,7353,2590,5203,4274,710,7329,9063,956,8371,3722,4253,4785,1194,4828,4717,4548,940,983,2575,4511,2938,1827,2027,2700,1236,841,5760,1680,6260,2373,3851,1841,4968,1172,5179,7175,3509
-4420,1327,3560,2376,6260,2988,9537,4064,4829,8872,9598,3228,1792,7118,9962,9336,4368,9189,6857,1829,9863,6287,7303,7769,2707,8257,2391,2009,3975,4993,3068,9835,3427,341,8412,2134,4034,8511,6421,3041,9012,2983,7289,100,1355,7904,9186,6920,5856,2008,6545,8331,3655,5011,839,8041,9255,6524,3862,8788,62,7455,3513,5003,8413,3918,2076,7960,6108,3638,6999,3436,1441,4858,4181,1866,8731,7745,3744,1000
-356,8296,8325,1058,1277,4743,3850,2388,6079,6462,2815,5620,8495,5378,75,4324,3441,9870,1113,165,1544,1179,2834,562,6176,2313,6836,8839,2986,9454,5199,6888,1927,5866,8760,320,1792,8296,7898,6121,7241,5886,5814,2815,8336,1576,4314,3109,2572,6011,2086,9061,9403,3947,5487,9731,7281,3159,1819,1334,3181,5844,5114,9898,4634,2531,4412,6430,4262,8482,4546,4555,6804,2607,9421,686,8649,8860,7794,6672
-9870,152,1558,4963,8750,4754,6521,6256,8818,5208,5691,9659,8377,9725,5050,5343,2539,6101,1844,9700,7750,8114,5357,3001,8830,4438,199,9545,8496,43,2078,327,9397,106,6090,8181,8646,6414,7499,5450,4850,6273,5014,4131,7639,3913,6571,8534,9703,4391,7618,445,1320,5,1894,6771,7383,9191,4708,9706,6939,7937,8726,9382,5216,3685,2247,9029,8154,1738,9984,2626,9438,4167,6351,5060,29,1218,1239,4785
-192,5213,8297,8974,4032,6966,5717,1179,6523,4679,9513,1481,3041,5355,9303,9154,1389,8702,6589,7818,6336,3539,5538,3094,6646,6702,6266,2759,4608,4452,617,9406,8064,6379,444,5602,4950,1810,8391,1536,316,8714,1178,5182,5863,5110,5372,4954,1978,2971,5680,4863,2255,4630,5723,2168,538,1692,1319,7540,440,6430,6266,7712,7385,5702,620,641,3136,7350,1478,3155,2820,9109,6261,1122,4470,14,8493,2095
-1046,4301,6082,474,4974,7822,2102,5161,5172,6946,8074,9716,6586,9962,9749,5015,2217,995,5388,4402,7652,6399,6539,1349,8101,3677,1328,9612,7922,2879,231,5887,2655,508,4357,4964,3554,5930,6236,7384,4614,280,3093,9600,2110,7863,2631,6626,6620,68,1311,7198,7561,1768,5139,1431,221,230,2940,968,5283,6517,2146,1646,869,9402,7068,8645,7058,1765,9690,4152,2926,9504,2939,7504,6074,2944,6470,7859
-4659,736,4951,9344,1927,6271,8837,8711,3241,6579,7660,5499,5616,3743,5801,4682,9748,8796,779,1833,4549,8138,4026,775,4170,2432,4174,3741,7540,8017,2833,4027,396,811,2871,1150,9809,2719,9199,8504,1224,540,2051,3519,7982,7367,2761,308,3358,6505,2050,4836,5090,7864,805,2566,2409,6876,3361,8622,5572,5895,3280,441,7893,8105,1634,2929,274,3926,7786,6123,8233,9921,2674,5340,1445,203,4585,3837
-5759,338,7444,7968,7742,3755,1591,4839,1705,650,7061,2461,9230,9391,9373,2413,1213,431,7801,4994,2380,2703,6161,6878,8331,2538,6093,1275,5065,5062,2839,582,1014,8109,3525,1544,1569,8622,7944,2905,6120,1564,1839,5570,7579,1318,2677,5257,4418,5601,7935,7656,5192,1864,5886,6083,5580,6202,8869,1636,7907,4759,9082,5854,3185,7631,6854,5872,5632,5280,1431,2077,9717,7431,4256,8261,9680,4487,4752,4286
-1571,1428,8599,1230,7772,4221,8523,9049,4042,8726,7567,6736,9033,2104,4879,4967,6334,6716,3994,1269,8995,6539,3610,7667,6560,6065,874,848,4597,1711,7161,4811,6734,5723,6356,6026,9183,2586,5636,1092,7779,7923,8747,6887,7505,9909,1792,3233,4526,3176,1508,8043,720,5212,6046,4988,709,5277,8256,3642,1391,5803,1468,2145,3970,6301,7767,2359,8487,9771,8785,7520,856,1605,8972,2402,2386,991,1383,5963
-1822,4824,5957,6511,9868,4113,301,9353,6228,2881,2966,6956,9124,9574,9233,1601,7340,973,9396,540,4747,8590,9535,3650,7333,7583,4806,3593,2738,8157,5215,8472,2284,9473,3906,6982,5505,6053,7936,6074,7179,6688,1564,1103,6860,5839,2022,8490,910,7551,7805,881,7024,1855,9448,4790,1274,3672,2810,774,7623,4223,4850,6071,9975,4935,1915,9771,6690,3846,517,463,7624,4511,614,6394,3661,7409,1395,8127
-8738,3850,9555,3695,4383,2378,87,6256,6740,7682,9546,4255,6105,2000,1851,4073,8957,9022,6547,5189,2487,303,9602,7833,1628,4163,6678,3144,8589,7096,8913,5823,4890,7679,1212,9294,5884,2972,3012,3359,7794,7428,1579,4350,7246,4301,7779,7790,3294,9547,4367,3549,1958,8237,6758,3497,3250,3456,6318,1663,708,7714,6143,6890,3428,6853,9334,7992,591,6449,9786,1412,8500,722,5468,1371,108,3939,4199,2535
-7047,4323,1934,5163,4166,461,3544,2767,6554,203,6098,2265,9078,2075,4644,6641,8412,9183,487,101,7566,5622,1975,5726,2920,5374,7779,5631,3753,3725,2672,3621,4280,1162,5812,345,8173,9785,1525,955,5603,2215,2580,5261,2765,2990,5979,389,3907,2484,1232,5933,5871,3304,1138,1616,5114,9199,5072,7442,7245,6472,4760,6359,9053,7876,2564,9404,3043,9026,2261,3374,4460,7306,2326,966,828,3274,1712,3446
-3975,4565,8131,5800,4570,2306,8838,4392,9147,11,3911,7118,9645,4994,2028,6062,5431,2279,8752,2658,7836,994,7316,5336,7185,3289,1898,9689,2331,5737,3403,1124,2679,3241,7748,16,2724,5441,6640,9368,9081,5618,858,4969,17,2103,6035,8043,7475,2181,939,415,1617,8500,8253,2155,7843,7974,7859,1746,6336,3193,2617,8736,4079,6324,6645,8891,9396,5522,6103,1857,8979,3835,2475,1310,7422,610,8345,7615
-9248,5397,5686,2988,3446,4359,6634,9141,497,9176,6773,7448,1907,8454,916,1596,2241,1626,1384,2741,3649,5362,8791,7170,2903,2475,5325,6451,924,3328,522,90,4813,9737,9557,691,2388,1383,4021,1609,9206,4707,5200,7107,8104,4333,9860,5013,1224,6959,8527,1877,4545,7772,6268,621,4915,9349,5970,706,9583,3071,4127,780,8231,3017,9114,3836,7503,2383,1977,4870,8035,2379,9704,1037,3992,3642,1016,4303
-5093,138,4639,6609,1146,5565,95,7521,9077,2272,974,4388,2465,2650,722,4998,3567,3047,921,2736,7855,173,2065,4238,1048,5,6847,9548,8632,9194,5942,4777,7910,8971,6279,7253,2516,1555,1833,3184,9453,9053,6897,7808,8629,4877,1871,8055,4881,7639,1537,7701,2508,7564,5845,5023,2304,5396,3193,2955,1088,3801,6203,1748,3737,1276,13,4120,7715,8552,3047,2921,106,7508,304,1280,7140,2567,9135,5266
-6237,4607,7527,9047,522,7371,4883,2540,5867,6366,5301,1570,421,276,3361,527,6637,4861,2401,7522,5808,9371,5298,2045,5096,5447,7755,5115,7060,8529,4078,1943,1697,1764,5453,7085,960,2405,739,2100,5800,728,9737,5704,5693,1431,8979,6428,673,7540,6,7773,5857,6823,150,5869,8486,684,5816,9626,7451,5579,8260,3397,5322,6920,1879,2127,2884,5478,4977,9016,6165,6292,3062,5671,5968,78,4619,4763
-9905,7127,9390,5185,6923,3721,9164,9705,4341,1031,1046,5127,7376,6528,3248,4941,1178,7889,3364,4486,5358,9402,9158,8600,1025,874,1839,1783,309,9030,1843,845,8398,1433,7118,70,8071,2877,3904,8866,6722,4299,10,1929,5897,4188,600,1889,3325,2485,6473,4474,7444,6992,4846,6166,4441,2283,2629,4352,7775,1101,2214,9985,215,8270,9750,2740,8361,7103,5930,8664,9690,8302,9267,344,2077,1372,1880,9550
-5825,8517,7769,2405,8204,1060,3603,7025,478,8334,1997,3692,7433,9101,7294,7498,9415,5452,3850,3508,6857,9213,6807,4412,7310,854,5384,686,4978,892,8651,3241,2743,3801,3813,8588,6701,4416,6990,6490,3197,6838,6503,114,8343,5844,8646,8694,65,791,5979,2687,2621,2019,8097,1423,3644,9764,4921,3266,3662,5561,2476,8271,8138,6147,1168,3340,1998,9874,6572,9873,6659,5609,2711,3931,9567,4143,7833,8887
-6223,2099,2700,589,4716,8333,1362,5007,2753,2848,4441,8397,7192,8191,4916,9955,6076,3370,6396,6971,3156,248,3911,2488,4930,2458,7183,5455,170,6809,6417,3390,1956,7188,577,7526,2203,968,8164,479,8699,7915,507,6393,4632,1597,7534,3604,618,3280,6061,9793,9238,8347,568,9645,2070,5198,6482,5000,9212,6655,5961,7513,1323,3872,6170,3812,4146,2736,67,3151,5548,2781,9679,7564,5043,8587,1893,4531
-5826,3690,6724,2121,9308,6986,8106,6659,2142,1642,7170,2877,5757,6494,8026,6571,8387,9961,6043,9758,9607,6450,8631,8334,7359,5256,8523,2225,7487,1977,9555,8048,5763,2414,4948,4265,2427,8978,8088,8841,9208,9601,5810,9398,8866,9138,4176,5875,7212,3272,6759,5678,7649,4922,5422,1343,8197,3154,3600,687,1028,4579,2084,9467,4492,7262,7296,6538,7657,7134,2077,1505,7332,6890,8964,4879,7603,7400,5973,739
-1861,1613,4879,1884,7334,966,2000,7489,2123,4287,1472,3263,4726,9203,1040,4103,6075,6049,330,9253,4062,4268,1635,9960,577,1320,3195,9628,1030,4092,4979,6474,6393,2799,6967,8687,7724,7392,9927,2085,3200,6466,8702,265,7646,8665,7986,7266,4574,6587,612,2724,704,3191,8323,9523,3002,704,5064,3960,8209,2027,2758,8393,4875,4641,9584,6401,7883,7014,768,443,5490,7506,1852,2005,8850,5776,4487,4269
-4052,6687,4705,7260,6645,6715,3706,5504,8672,2853,1136,8187,8203,4016,871,1809,1366,4952,9294,5339,6872,2645,6083,7874,3056,5218,7485,8796,7401,3348,2103,426,8572,4163,9171,3176,948,7654,9344,3217,1650,5580,7971,2622,76,2874,880,2034,9929,1546,2659,5811,3754,7096,7436,9694,9960,7415,2164,953,2360,4194,2397,1047,2196,6827,575,784,2675,8821,6802,7972,5996,6699,2134,7577,2887,1412,4349,4380
-4629,2234,6240,8132,7592,3181,6389,1214,266,1910,2451,8784,2790,1127,6932,1447,8986,2492,5476,397,889,3027,7641,5083,5776,4022,185,3364,5701,2442,2840,4160,9525,4828,6602,2614,7447,3711,4505,7745,8034,6514,4907,2605,7753,6958,7270,6936,3006,8968,439,2326,4652,3085,3425,9863,5049,5361,8688,297,7580,8777,7916,6687,8683,7141,306,9569,2384,1500,3346,4601,7329,9040,6097,2727,6314,4501,4974,2829
-8316,4072,2025,6884,3027,1808,5714,7624,7880,8528,4205,8686,7587,3230,1139,7273,6163,6986,3914,9309,1464,9359,4474,7095,2212,7302,2583,9462,7532,6567,1606,4436,8981,5612,6796,4385,5076,2007,6072,3678,8331,1338,3299,8845,4783,8613,4071,1232,6028,2176,3990,2148,3748,103,9453,538,6745,9110,926,3125,473,5970,8728,7072,9062,1404,1317,5139,9862,6496,6062,3338,464,1600,2532,1088,8232,7739,8274,3873
-2341,523,7096,8397,8301,6541,9844,244,4993,2280,7689,4025,4196,5522,7904,6048,2623,9258,2149,9461,6448,8087,7245,1917,8340,7127,8466,5725,6996,3421,5313,512,9164,9837,9794,8369,4185,1488,7210,1524,1016,4620,9435,2478,7765,8035,697,6677,3724,6988,5853,7662,3895,9593,1185,4727,6025,5734,7665,3070,138,8469,6748,6459,561,7935,8646,2378,462,7755,3115,9690,8877,3946,2728,8793,244,6323,8666,4271
-6430,2406,8994,56,1267,3826,9443,7079,7579,5232,6691,3435,6718,5698,4144,7028,592,2627,217,734,6194,8156,9118,58,2640,8069,4127,3285,694,3197,3377,4143,4802,3324,8134,6953,7625,3598,3584,4289,7065,3434,2106,7132,5802,7920,9060,7531,3321,1725,1067,3751,444,5503,6785,7937,6365,4803,198,6266,8177,1470,6390,1606,2904,7555,9834,8667,2033,1723,5167,1666,8546,8152,473,4475,6451,7947,3062,3281
-2810,3042,7759,1741,2275,2609,7676,8640,4117,1958,7500,8048,1757,3954,9270,1971,4796,2912,660,5511,3553,1012,5757,4525,6084,7198,8352,5775,7726,8591,7710,9589,3122,4392,6856,5016,749,2285,3356,7482,9956,7348,2599,8944,495,3462,3578,551,4543,7207,7169,7796,1247,4278,6916,8176,3742,8385,2310,1345,8692,2667,4568,1770,8319,3585,4920,3890,4928,7343,5385,9772,7947,8786,2056,9266,3454,2807,877,2660
-6206,8252,5928,5837,4177,4333,207,7934,5581,9526,8906,1498,8411,2984,5198,5134,2464,8435,8514,8674,3876,599,5327,826,2152,4084,2433,9327,9697,4800,2728,3608,3849,3861,3498,9943,1407,3991,7191,9110,5666,8434,4704,6545,5944,2357,1163,4995,9619,6754,4200,9682,6654,4862,4744,5953,6632,1054,293,9439,8286,2255,696,8709,1533,1844,6441,430,1999,6063,9431,7018,8057,2920,6266,6799,356,3597,4024,6665
-3847,6356,8541,7225,2325,2946,5199,469,5450,7508,2197,9915,8284,7983,6341,3276,3321,16,1321,7608,5015,3362,8491,6968,6818,797,156,2575,706,9516,5344,5457,9210,5051,8099,1617,9951,7663,8253,9683,2670,1261,4710,1068,8753,4799,1228,2621,3275,6188,4699,1791,9518,8701,5932,4275,6011,9877,2933,4182,6059,2930,6687,6682,9771,654,9437,3169,8596,1827,5471,8909,2352,123,4394,3208,8756,5513,6917,2056
-5458,8173,3138,3290,4570,4892,3317,4251,9699,7973,1163,1935,5477,6648,9614,5655,9592,975,9118,2194,7322,8248,8413,3462,8560,1907,7810,6650,7355,2939,4973,6894,3933,3784,3200,2419,9234,4747,2208,2207,1945,2899,1407,6145,8023,3484,5688,7686,2737,3828,3704,9004,5190,9740,8643,8650,5358,4426,1522,1707,3613,9887,6956,2447,2762,833,1449,9489,2573,1080,4167,3456,6809,2466,227,7125,2759,6250,6472,8089
-3266,7025,9756,3914,1265,9116,7723,9788,6805,5493,2092,8688,6592,9173,4431,4028,6007,7131,4446,4815,3648,6701,759,3312,8355,4485,4187,5188,8746,7759,3528,2177,5243,8379,3838,7233,4607,9187,7216,2190,6967,2920,6082,7910,5354,3609,8958,6949,7731,494,8753,8707,1523,4426,3543,7085,647,6771,9847,646,5049,824,8417,5260,2730,5702,2513,9275,4279,2767,8684,1165,9903,4518,55,9682,8963,6005,2102,6523
-1998,8731,936,1479,5259,7064,4085,91,7745,7136,3773,3810,730,8255,2705,2653,9790,6807,2342,355,9344,2668,3690,2028,9679,8102,574,4318,6481,9175,5423,8062,2867,9657,7553,3442,3920,7430,3945,7639,3714,3392,2525,4995,4850,2867,7951,9667,486,9506,9888,781,8866,1702,3795,90,356,1483,4200,2131,6969,5931,486,6880,4404,1084,5169,4910,6567,8335,4686,5043,2614,3352,2667,4513,6472,7471,5720,1616
-8878,1613,1716,868,1906,2681,564,665,5995,2474,7496,3432,9491,9087,8850,8287,669,823,347,6194,2264,2592,7871,7616,8508,4827,760,2676,4660,4881,7572,3811,9032,939,4384,929,7525,8419,5556,9063,662,8887,7026,8534,3111,1454,2082,7598,5726,6687,9647,7608,73,3014,5063,670,5461,5631,3367,9796,8475,7908,5073,1565,5008,5295,4457,1274,4788,1728,338,600,8415,8535,9351,7750,6887,5845,1741,125
-3637,6489,9634,9464,9055,2413,7824,9517,7532,3577,7050,6186,6980,9365,9782,191,870,2497,8498,2218,2757,5420,6468,586,3320,9230,1034,1393,9886,5072,9391,1178,8464,8042,6869,2075,8275,3601,7715,9470,8786,6475,8373,2159,9237,2066,3264,5000,679,355,3069,4073,494,2308,5512,4334,9438,8786,8637,9774,1169,1949,6594,6072,4270,9158,7916,5752,6794,9391,6301,5842,3285,2141,3898,8027,4310,8821,7079,1307
-8497,6681,4732,7151,7060,5204,9030,7157,833,5014,8723,3207,9796,9286,4913,119,5118,7650,9335,809,3675,2597,5144,3945,5090,8384,187,4102,1260,2445,2792,4422,8389,9290,50,1765,1521,6921,8586,4368,1565,5727,7855,2003,4834,9897,5911,8630,5070,1330,7692,7557,7980,6028,5805,9090,8265,3019,3802,698,9149,5748,1965,9658,4417,5994,5584,8226,2937,272,5743,1278,5698,8736,2595,6475,5342,6596,1149,6920
-8188,8009,9546,6310,8772,2500,9846,6592,6872,3857,1307,8125,7042,1544,6159,2330,643,4604,7899,6848,371,8067,2062,3200,7295,1857,9505,6936,384,2193,2190,301,8535,5503,1462,7380,5114,4824,8833,1763,4974,8711,9262,6698,3999,2645,6937,7747,1128,2933,3556,7943,2885,3122,9105,5447,418,2899,5148,3699,9021,9501,597,4084,175,1621,1,1079,6067,5812,4326,9914,6633,5394,4233,6728,9084,1864,5863,1225
-9935,8793,9117,1825,9542,8246,8437,3331,9128,9675,6086,7075,319,1334,7932,3583,7167,4178,1726,7720,695,8277,7887,6359,5912,1719,2780,8529,1359,2013,4498,8072,1129,9998,1147,8804,9405,6255,1619,2165,7491,1,8882,7378,3337,503,5758,4109,3577,985,3200,7615,8058,5032,1080,6410,6873,5496,1466,2412,9885,5904,4406,3605,8770,4361,6205,9193,1537,9959,214,7260,9566,1685,100,4920,7138,9819,5637,976
-3466,9854,985,1078,7222,8888,5466,5379,3578,4540,6853,8690,3728,6351,7147,3134,6921,9692,857,3307,4998,2172,5783,3931,9417,2541,6299,13,787,2099,9131,9494,896,8600,1643,8419,7248,2660,2609,8579,91,6663,5506,7675,1947,6165,4286,1972,9645,3805,1663,1456,8853,5705,9889,7489,1107,383,4044,2969,3343,152,7805,4980,9929,5033,1737,9953,7197,9158,4071,1324,473,9676,3984,9680,3606,8160,7384,5432
-1005,4512,5186,3953,2164,3372,4097,3247,8697,3022,9896,4101,3871,6791,3219,2742,4630,6967,7829,5991,6134,1197,1414,8923,8787,1394,8852,5019,7768,5147,8004,8825,5062,9625,7988,1110,3992,7984,9966,6516,6251,8270,421,3723,1432,4830,6935,8095,9059,2214,6483,6846,3120,1587,6201,6691,9096,9627,6671,4002,3495,9939,7708,7465,5879,6959,6634,3241,3401,2355,9061,2611,7830,3941,2177,2146,5089,7079,519,6351
-7280,8586,4261,2831,7217,3141,9994,9940,5462,2189,4005,6942,9848,5350,8060,6665,7519,4324,7684,657,9453,9296,2944,6843,7499,7847,1728,9681,3906,6353,5529,2822,3355,3897,7724,4257,7489,8672,4356,3983,1948,6892,7415,4153,5893,4190,621,1736,4045,9532,7701,3671,1211,1622,3176,4524,9317,7800,5638,6644,6943,5463,3531,2821,1347,5958,3436,1438,2999,994,850,4131,2616,1549,3465,5946,690,9273,6954,7991
-9517,399,3249,2596,7736,2142,1322,968,7350,1614,468,3346,3265,7222,6086,1661,5317,2582,7959,4685,2807,2917,1037,5698,1529,3972,8716,2634,3301,3412,8621,743,8001,4734,888,7744,8092,3671,8941,1487,5658,7099,2781,99,1932,4443,4756,4652,9328,1581,7855,4312,5976,7255,6480,3996,2748,1973,9731,4530,2790,9417,7186,5303,3557,351,7182,9428,1342,9020,7599,1392,8304,2070,9138,7215,2008,9937,1106,7110
-7444,769,9688,632,1571,6820,8743,4338,337,3366,3073,1946,8219,104,4210,6986,249,5061,8693,7960,6546,1004,8857,5997,9352,4338,6105,5008,2556,6518,6694,4345,3727,7956,20,3954,8652,4424,9387,2035,8358,5962,5304,5194,8650,8282,1256,1103,2138,6679,1985,3653,2770,2433,4278,615,2863,1715,242,3790,2636,6998,3088,1671,2239,957,5411,4595,6282,2881,9974,2401,875,7574,2987,4587,3147,6766,9885,2965
-3287,3016,3619,6818,9073,6120,5423,557,2900,2015,8111,3873,1314,4189,1846,4399,7041,7583,2427,2864,3525,5002,2069,748,1948,6015,2684,438,770,8367,1663,7887,7759,1885,157,7770,4520,4878,3857,1137,3525,3050,6276,5569,7649,904,4533,7843,2199,5648,7628,9075,9441,3600,7231,2388,5640,9096,958,3058,584,5899,8150,1181,9616,1098,8162,6819,8171,1519,1140,7665,8801,2632,1299,9192,707,9955,2710,7314
-1772,2963,7578,3541,3095,1488,7026,2634,6015,4633,4370,2762,1650,2174,909,8158,2922,8467,4198,4280,9092,8856,8835,5457,2790,8574,9742,5054,9547,4156,7940,8126,9824,7340,8840,6574,3547,1477,3014,6798,7134,435,9484,9859,3031,4,1502,4133,1738,1807,4825,463,6343,9701,8506,9822,9555,8688,8168,3467,3234,6318,1787,5591,419,6593,7974,8486,9861,6381,6758,194,3061,4315,2863,4665,3789,2201,1492,4416
-126,8927,6608,5682,8986,6867,1715,6076,3159,788,3140,4744,830,9253,5812,5021,7616,8534,1546,9590,1101,9012,9821,8132,7857,4086,1069,7491,2988,1579,2442,4321,2149,7642,6108,250,6086,3167,24,9528,7663,2685,1220,9196,1397,5776,1577,1730,5481,977,6115,199,6326,2183,3767,5928,5586,7561,663,8649,9688,949,5913,9160,1870,5764,9887,4477,6703,1413,4995,5494,7131,2192,8969,7138,3997,8697,646,1028
-8074,1731,8245,624,4601,8706,155,8891,309,2552,8208,8452,2954,3124,3469,4246,3352,1105,4509,8677,9901,4416,8191,9283,5625,7120,2952,8881,7693,830,4580,8228,9459,8611,4499,1179,4988,1394,550,2336,6089,6872,269,7213,1848,917,6672,4890,656,1478,6536,3165,4743,4990,1176,6211,7207,5284,9730,4738,1549,4986,4942,8645,3698,9429,1439,2175,6549,3058,6513,1574,6988,8333,3406,5245,5431,7140,7085,6407
-7845,4694,2530,8249,290,5948,5509,1588,5940,4495,5866,5021,4626,3979,3296,7589,4854,1998,5627,3926,8346,6512,9608,1918,7070,4747,4182,2858,2766,4606,6269,4107,8982,8568,9053,4244,5604,102,2756,727,5887,2566,7922,44,5986,621,1202,374,6988,4130,3627,6744,9443,4568,1398,8679,397,3928,9159,367,2917,6127,5788,3304,8129,911,2669,1463,9749,264,4478,8940,1109,7309,2462,117,4692,7724,225,2312
-4164,3637,2000,941,8903,39,3443,7172,1031,3687,4901,8082,4945,4515,7204,9310,9349,9535,9940,218,1788,9245,2237,1541,5670,6538,6047,5553,9807,8101,1925,8714,445,8332,7309,6830,5786,5736,7306,2710,3034,1838,7969,6318,7912,2584,2080,7437,6705,2254,7428,820,782,9861,7596,3842,3631,8063,5240,6666,394,4565,7865,4895,9890,6028,6117,4724,9156,4473,4552,602,470,6191,4927,5387,884,3146,1978,3000
-4258,6880,1696,3582,5793,4923,2119,1155,9056,9698,6603,3768,5514,9927,9609,6166,6566,4536,4985,4934,8076,9062,6741,6163,7399,4562,2337,5600,2919,9012,8459,1308,6072,1225,9306,8818,5886,7243,7365,8792,6007,9256,6699,7171,4230,7002,8720,7839,4533,1671,478,7774,1607,2317,5437,4705,7886,4760,6760,7271,3081,2997,3088,7675,6208,3101,6821,6840,122,9633,4900,2067,8546,4549,2091,7188,5605,8599,6758,5229
-7854,5243,9155,3556,8812,7047,2202,1541,5993,4600,4760,713,434,7911,7426,7414,8729,322,803,7960,7563,4908,6285,6291,736,3389,9339,4132,8701,7534,5287,3646,592,3065,7582,2592,8755,6068,8597,1982,5782,1894,2900,6236,4039,6569,3037,5837,7698,700,7815,2491,7272,5878,3083,6778,6639,3589,5010,8313,2581,6617,5869,8402,6808,2951,2321,5195,497,2190,6187,1342,1316,4453,7740,4154,2959,1781,1482,8256
-7178,2046,4419,744,8312,5356,6855,8839,319,2962,5662,47,6307,8662,68,4813,567,2712,9931,1678,3101,8227,6533,4933,6656,92,5846,4780,6256,6361,4323,9985,1231,2175,7178,3034,9744,6155,9165,7787,5836,9318,7860,9644,8941,6480,9443,8188,5928,161,6979,2352,5628,6991,1198,8067,5867,6620,3778,8426,2994,3122,3124,6335,3918,8897,2655,9670,634,1088,1576,8935,7255,474,8166,7417,9547,2886,5560,3842
-6957,3111,26,7530,7143,1295,1744,6057,3009,1854,8098,5405,2234,4874,9447,2620,9303,27,7410,969,40,2966,5648,7596,8637,4238,3143,3679,7187,690,9980,7085,7714,9373,5632,7526,6707,3951,9734,4216,2146,3602,5371,6029,3039,4433,4855,4151,1449,3376,8009,7240,7027,4602,2947,9081,4045,8424,9352,8742,923,2705,4266,3232,2264,6761,363,2651,3383,7770,6730,7856,7340,9679,2158,610,4471,4608,910,6241
-4417,6756,1013,8797,658,8809,5032,8703,7541,846,3357,2920,9817,1745,9980,7593,4667,3087,779,3218,6233,5568,4296,2289,2654,7898,5021,9461,5593,8214,9173,4203,2271,7980,2983,5952,9992,8399,3468,1776,3188,9314,1720,6523,2933,621,8685,5483,8986,6163,3444,9539,4320,155,3992,2828,2150,6071,524,2895,5468,8063,1210,3348,9071,4862,483,9017,4097,6186,9815,3610,5048,1644,1003,9865,9332,2145,1944,2213
-9284,3803,4920,1927,6706,4344,7383,4786,9890,2010,5228,1224,3158,6967,8580,8990,8883,5213,76,8306,2031,4980,5639,9519,7184,5645,7769,3259,8077,9130,1317,3096,9624,3818,1770,695,2454,947,6029,3474,9938,3527,5696,4760,7724,7738,2848,6442,5767,6845,8323,4131,2859,7595,2500,4815,3660,9130,8580,7016,8231,4391,8369,3444,4069,4021,556,6154,627,2778,1496,4206,6356,8434,8491,3816,8231,3190,5575,1015
-3787,7572,1788,6803,5641,6844,1961,4811,8535,9914,9999,1450,8857,738,4662,8569,6679,2225,7839,8618,286,2648,5342,2294,3205,4546,176,8705,3741,6134,8324,8021,7004,5205,7032,6637,9442,5539,5584,4819,5874,5807,8589,6871,9016,983,1758,3786,1519,6241,185,8398,495,3370,9133,3051,4549,9674,7311,9738,3316,9383,2658,2776,9481,7558,619,3943,3324,6491,4933,153,9738,4623,912,3595,7771,7939,1219,4405
-2650,3883,4154,5809,315,7756,4430,1788,4451,1631,6461,7230,6017,5751,138,588,5282,2442,9110,9035,6349,2515,1570,6122,4192,4174,3530,1933,4186,4420,4609,5739,4135,2963,6308,1161,8809,8619,2796,3819,6971,8228,4188,1492,909,8048,2328,6772,8467,7671,9068,2226,7579,6422,7056,8042,3296,2272,3006,2196,7320,3238,3490,3102,37,1293,3212,4767,5041,8773,5794,4456,6174,7279,7054,2835,7053,9088,790,6640
-3101,1057,7057,3826,6077,1025,2955,1224,1114,6729,5902,4698,6239,7203,9423,1804,4417,6686,1426,6941,8071,1029,4985,9010,6122,6597,1622,1574,3513,1684,7086,5505,3244,411,9638,4150,907,9135,829,981,1707,5359,8781,9751,5,9131,3973,7159,1340,6955,7514,7993,6964,8198,1933,2797,877,3993,4453,8020,9349,8646,2779,8679,2961,3547,3374,3510,1129,3568,2241,2625,9138,5974,8206,7669,7678,1833,8700,4480
-4865,9912,8038,8238,782,3095,8199,1127,4501,7280,2112,2487,3626,2790,9432,1475,6312,8277,4827,2218,5806,7132,8752,1468,7471,6386,739,8762,8323,8120,5169,9078,9058,3370,9560,7987,8585,8531,5347,9312,1058,4271,1159,5286,5404,6925,8606,9204,7361,2415,560,586,4002,2644,1927,2824,768,4409,2942,3345,1002,808,4941,6267,7979,5140,8643,7553,9438,7320,4938,2666,4609,2778,8158,6730,3748,3867,1866,7181
-171,3771,7134,8927,4778,2913,3326,2004,3089,7853,1378,1729,4777,2706,9578,1360,5693,3036,1851,7248,2403,2273,8536,6501,9216,613,9671,7131,7719,6425,773,717,8803,160,1114,7554,7197,753,4513,4322,8499,4533,2609,4226,8710,6627,644,9666,6260,4870,5744,7385,6542,6203,7703,6130,8944,5589,2262,6803,6381,7414,6888,5123,7320,9392,9061,6780,322,8975,7050,5089,1061,2260,3199,1150,1865,5386,9699,6501
-3744,8454,6885,8277,919,1923,4001,6864,7854,5519,2491,6057,8794,9645,1776,5714,9786,9281,7538,6916,3215,395,2501,9618,4835,8846,9708,2813,3303,1794,8309,7176,2206,1602,1838,236,4593,2245,8993,4017,10,8215,6921,5206,4023,5932,6997,7801,262,7640,3107,8275,4938,7822,2425,3223,3886,2105,8700,9526,2088,8662,8034,7004,5710,2124,7164,3574,6630,9980,4242,2901,9471,1491,2117,4562,1130,9086,4117,6698
-2810,2280,2331,1170,4554,4071,8387,1215,2274,9848,6738,1604,7281,8805,439,1298,8318,7834,9426,8603,6092,7944,1309,8828,303,3157,4638,4439,9175,1921,4695,7716,1494,1015,1772,5913,1127,1952,1950,8905,4064,9890,385,9357,7945,5035,7082,5369,4093,6546,5187,5637,2041,8946,1758,7111,6566,1027,1049,5148,7224,7248,296,6169,375,1656,7993,2816,3717,4279,4675,1609,3317,42,6201,3100,3144,163,9530,4531
-7096,6070,1009,4988,3538,5801,7149,3063,2324,2912,7911,7002,4338,7880,2481,7368,3516,2016,7556,2193,1388,3865,8125,4637,4096,8114,750,3144,1938,7002,9343,4095,1392,4220,3455,6969,9647,1321,9048,1996,1640,6626,1788,314,9578,6630,2813,6626,4981,9908,7024,4355,3201,3521,3864,3303,464,1923,595,9801,3391,8366,8084,9374,1041,8807,9085,1892,9431,8317,9016,9221,8574,9981,9240,5395,2009,6310,2854,9255
-8830,3145,2960,9615,8220,6061,3452,2918,6481,9278,2297,3385,6565,7066,7316,5682,107,7646,4466,68,1952,9603,8615,54,7191,791,6833,2560,693,9733,4168,570,9127,9537,1925,8287,5508,4297,8452,8795,6213,7994,2420,4208,524,5915,8602,8330,2651,8547,6156,1812,6271,7991,9407,9804,1553,6866,1128,2119,4691,9711,8315,5879,9935,6900,482,682,4126,1041,428,6247,3720,5882,7526,2582,4327,7725,3503,2631
-2738,9323,721,7434,1453,6294,2957,3786,5722,6019,8685,4386,3066,9057,6860,499,5315,3045,5194,7111,3137,9104,941,586,3066,755,4177,8819,7040,5309,3583,3897,4428,7788,4721,7249,6559,7324,825,7311,3760,6064,6070,9672,4882,584,1365,9739,9331,5783,2624,7889,1604,1303,1555,7125,8312,425,8936,3233,7724,1480,403,7440,1784,1754,4721,1569,652,3893,4574,5692,9730,4813,9844,8291,9199,7101,3391,8914
-6044,2928,9332,3328,8588,447,3830,1176,3523,2705,8365,6136,5442,9049,5526,8575,8869,9031,7280,706,2794,8814,5767,4241,7696,78,6570,556,5083,1426,4502,3336,9518,2292,1885,3740,3153,9348,9331,8051,2759,5407,9028,7840,9255,831,515,2612,9747,7435,8964,4971,2048,4900,5967,8271,1719,9670,2810,6777,1594,6367,6259,8316,3815,1689,6840,9437,4361,822,9619,3065,83,6344,7486,8657,8228,9635,6932,4864
-8478,4777,6334,4678,7476,4963,6735,3096,5860,1405,5127,7269,7793,4738,227,9168,2996,8928,765,733,1276,7677,6258,1528,9558,3329,302,8901,1422,8277,6340,645,9125,8869,5952,141,8141,1816,9635,4025,4184,3093,83,2344,2747,9352,7966,1206,1126,1826,218,7939,2957,2729,810,8752,5247,4174,4038,8884,7899,9567,301,5265,5752,7524,4381,1669,3106,8270,6228,6373,754,2547,4240,2313,5514,3022,1040,9738
-2265,8192,1763,1369,8469,8789,4836,52,1212,6690,5257,8918,6723,6319,378,4039,2421,8555,8184,9577,1432,7139,8078,5452,9628,7579,4161,7490,5159,8559,1011,81,478,5840,1964,1334,6875,8670,9900,739,1514,8692,522,9316,6955,1345,8132,2277,3193,9773,3923,4177,2183,1236,6747,6575,4874,6003,6409,8187,745,8776,9440,7543,9825,2582,7381,8147,7236,5185,7564,6125,218,7991,6394,391,7659,7456,5128,5294
-2132,8992,8160,5782,4420,3371,3798,5054,552,5631,7546,4716,1332,6486,7892,7441,4370,6231,4579,2121,8615,1145,9391,1524,1385,2400,9437,2454,7896,7467,2928,8400,3299,4025,7458,4703,7206,6358,792,6200,725,4275,4136,7390,5984,4502,7929,5085,8176,4600,119,3568,76,9363,6943,2248,9077,9731,6213,5817,6729,4190,3092,6910,759,2682,8380,1254,9604,3011,9291,5329,9453,9746,2739,6522,3765,5634,1113,5789
-5304,5499,564,2801,679,2653,1783,3608,7359,7797,3284,796,3222,437,7185,6135,8571,2778,7488,5746,678,6140,861,7750,803,9859,9918,2425,3734,2698,9005,4864,9818,6743,2475,132,9486,3825,5472,919,292,4411,7213,7699,6435,9019,6769,1388,802,2124,1345,8493,9487,8558,7061,8777,8833,2427,2238,5409,4957,8503,3171,7622,5779,6145,2417,5873,5563,5693,9574,9491,1937,7384,4563,6842,5432,2751,3406,7981
diff --git a/src/projecteuler/083.py b/src/projecteuler/083.py deleted file mode 100644 index f1620e5..0000000 --- a/src/projecteuler/083.py +++ /dev/null @@ -1,76 +0,0 @@ - -# uses Dijkstra's algorithm to find minimal path -# (based on solution for problem 81) - -infinity = 999999 - -matrix = [] - -width = 80 -height = 80 - -f = open('083.txt', 'r') -for line in f: - line.rstrip('\n') - line_str = line.split(',') - line_int = [ int(x) for x in line_str ] - matrix.append(line_int) -f.close() - - -# initialize -distance = [infinity] * (width*height) -pre = [None] * (width*height) -distance[0] = 0 -Q = range(width*height) - -def mindistance(Q): - mind = infinity - mini = -1 - for i in Q: - if distance[i] < mind: - mind = distance[i] - mini = i - return mini - -def neighbors(u): - n = [] - row = u / width - col = u % width - if col < width-1: - n.append(row*width + col + 1) # right neighbor - if row < height-1: - n.append((row+1)*width + col) # lower neighbor - if row > 0: - n.append((row-1)*width + col) # upper neighbor - if col > 0: - n.append(row*width + col - 1) # left neighbor - return n - -def update(u, v): - alt = distance[u] + matrix[v/width][v%width] - if alt < distance[v]: - distance[v] = alt - pre[v] = u - -# main algorithm -while len(Q) > 0: - u = mindistance(Q) - Q.remove(u) - for v in neighbors(u): - if v in Q: - update(u, v) - -# search min distance -u = width*height-1 # target node -path = [ u ] -while pre[u] != None: - u = pre[u] - path = [u] + path - -minsum = 0 -for n in path: - minsum += matrix[n/width][n%width] - -print minsum - diff --git a/src/projecteuler/083.txt b/src/projecteuler/083.txt deleted file mode 100644 index 1e9e6cd..0000000 --- a/src/projecteuler/083.txt +++ /dev/null @@ -1,80 +0,0 @@ -4445,2697,5115,718,2209,2212,654,4348,3079,6821,7668,3276,8874,4190,3785,2752,9473,7817,9137,496,7338,3434,7152,4355,4552,7917,7827,2460,2350,691,3514,5880,3145,7633,7199,3783,5066,7487,3285,1084,8985,760,872,8609,8051,1134,9536,5750,9716,9371,7619,5617,275,9721,2997,2698,1887,8825,6372,3014,2113,7122,7050,6775,5948,2758,1219,3539,348,7989,2735,9862,1263,8089,6401,9462,3168,2758,3748,5870
-1096,20,1318,7586,5167,2642,1443,5741,7621,7030,5526,4244,2348,4641,9827,2448,6918,5883,3737,300,7116,6531,567,5997,3971,6623,820,6148,3287,1874,7981,8424,7672,7575,6797,6717,1078,5008,4051,8795,5820,346,1851,6463,2117,6058,3407,8211,117,4822,1317,4377,4434,5925,8341,4800,1175,4173,690,8978,7470,1295,3799,8724,3509,9849,618,3320,7068,9633,2384,7175,544,6583,1908,9983,481,4187,9353,9377
-9607,7385,521,6084,1364,8983,7623,1585,6935,8551,2574,8267,4781,3834,2764,2084,2669,4656,9343,7709,2203,9328,8004,6192,5856,3555,2260,5118,6504,1839,9227,1259,9451,1388,7909,5733,6968,8519,9973,1663,5315,7571,3035,4325,4283,2304,6438,3815,9213,9806,9536,196,5542,6907,2475,1159,5820,9075,9470,2179,9248,1828,4592,9167,3713,4640,47,3637,309,7344,6955,346,378,9044,8635,7466,5036,9515,6385,9230
-7206,3114,7760,1094,6150,5182,7358,7387,4497,955,101,1478,7777,6966,7010,8417,6453,4955,3496,107,449,8271,131,2948,6185,784,5937,8001,6104,8282,4165,3642,710,2390,575,715,3089,6964,4217,192,5949,7006,715,3328,1152,66,8044,4319,1735,146,4818,5456,6451,4113,1063,4781,6799,602,1504,6245,6550,1417,1343,2363,3785,5448,4545,9371,5420,5068,4613,4882,4241,5043,7873,8042,8434,3939,9256,2187
-3620,8024,577,9997,7377,7682,1314,1158,6282,6310,1896,2509,5436,1732,9480,706,496,101,6232,7375,2207,2306,110,6772,3433,2878,8140,5933,8688,1399,2210,7332,6172,6403,7333,4044,2291,1790,2446,7390,8698,5723,3678,7104,1825,2040,140,3982,4905,4160,2200,5041,2512,1488,2268,1175,7588,8321,8078,7312,977,5257,8465,5068,3453,3096,1651,7906,253,9250,6021,8791,8109,6651,3412,345,4778,5152,4883,7505
-1074,5438,9008,2679,5397,5429,2652,3403,770,9188,4248,2493,4361,8327,9587,707,9525,5913,93,1899,328,2876,3604,673,8576,6908,7659,2544,3359,3883,5273,6587,3065,1749,3223,604,9925,6941,2823,8767,7039,3290,3214,1787,7904,3421,7137,9560,8451,2669,9219,6332,1576,5477,6755,8348,4164,4307,2984,4012,6629,1044,2874,6541,4942,903,1404,9125,5160,8836,4345,2581,460,8438,1538,5507,668,3352,2678,6942
-4295,1176,5596,1521,3061,9868,7037,7129,8933,6659,5947,5063,3653,9447,9245,2679,767,714,116,8558,163,3927,8779,158,5093,2447,5782,3967,1716,931,7772,8164,1117,9244,5783,7776,3846,8862,6014,2330,6947,1777,3112,6008,3491,1906,5952,314,4602,8994,5919,9214,3995,5026,7688,6809,5003,3128,2509,7477,110,8971,3982,8539,2980,4689,6343,5411,2992,5270,5247,9260,2269,7474,1042,7162,5206,1232,4556,4757
-510,3556,5377,1406,5721,4946,2635,7847,4251,8293,8281,6351,4912,287,2870,3380,3948,5322,3840,4738,9563,1906,6298,3234,8959,1562,6297,8835,7861,239,6618,1322,2553,2213,5053,5446,4402,6500,5182,8585,6900,5756,9661,903,5186,7687,5998,7997,8081,8955,4835,6069,2621,1581,732,9564,1082,1853,5442,1342,520,1737,3703,5321,4793,2776,1508,1647,9101,2499,6891,4336,7012,3329,3212,1442,9993,3988,4930,7706
-9444,3401,5891,9716,1228,7107,109,3563,2700,6161,5039,4992,2242,8541,7372,2067,1294,3058,1306,320,8881,5756,9326,411,8650,8824,5495,8282,8397,2000,1228,7817,2099,6473,3571,5994,4447,1299,5991,543,7874,2297,1651,101,2093,3463,9189,6872,6118,872,1008,1779,2805,9084,4048,2123,5877,55,3075,1737,9459,4535,6453,3644,108,5982,4437,5213,1340,6967,9943,5815,669,8074,1838,6979,9132,9315,715,5048
-3327,4030,7177,6336,9933,5296,2621,4785,2755,4832,2512,2118,2244,4407,2170,499,7532,9742,5051,7687,970,6924,3527,4694,5145,1306,2165,5940,2425,8910,3513,1909,6983,346,6377,4304,9330,7203,6605,3709,3346,970,369,9737,5811,4427,9939,3693,8436,5566,1977,3728,2399,3985,8303,2492,5366,9802,9193,7296,1033,5060,9144,2766,1151,7629,5169,5995,58,7619,7565,4208,1713,6279,3209,4908,9224,7409,1325,8540
-6882,1265,1775,3648,4690,959,5837,4520,5394,1378,9485,1360,4018,578,9174,2932,9890,3696,116,1723,1178,9355,7063,1594,1918,8574,7594,7942,1547,6166,7888,354,6932,4651,1010,7759,6905,661,7689,6092,9292,3845,9605,8443,443,8275,5163,7720,7265,6356,7779,1798,1754,5225,6661,1180,8024,5666,88,9153,1840,3508,1193,4445,2648,3538,6243,6375,8107,5902,5423,2520,1122,5015,6113,8859,9370,966,8673,2442
-7338,3423,4723,6533,848,8041,7921,8277,4094,5368,7252,8852,9166,2250,2801,6125,8093,5738,4038,9808,7359,9494,601,9116,4946,2702,5573,2921,9862,1462,1269,2410,4171,2709,7508,6241,7522,615,2407,8200,4189,5492,5649,7353,2590,5203,4274,710,7329,9063,956,8371,3722,4253,4785,1194,4828,4717,4548,940,983,2575,4511,2938,1827,2027,2700,1236,841,5760,1680,6260,2373,3851,1841,4968,1172,5179,7175,3509
-4420,1327,3560,2376,6260,2988,9537,4064,4829,8872,9598,3228,1792,7118,9962,9336,4368,9189,6857,1829,9863,6287,7303,7769,2707,8257,2391,2009,3975,4993,3068,9835,3427,341,8412,2134,4034,8511,6421,3041,9012,2983,7289,100,1355,7904,9186,6920,5856,2008,6545,8331,3655,5011,839,8041,9255,6524,3862,8788,62,7455,3513,5003,8413,3918,2076,7960,6108,3638,6999,3436,1441,4858,4181,1866,8731,7745,3744,1000
-356,8296,8325,1058,1277,4743,3850,2388,6079,6462,2815,5620,8495,5378,75,4324,3441,9870,1113,165,1544,1179,2834,562,6176,2313,6836,8839,2986,9454,5199,6888,1927,5866,8760,320,1792,8296,7898,6121,7241,5886,5814,2815,8336,1576,4314,3109,2572,6011,2086,9061,9403,3947,5487,9731,7281,3159,1819,1334,3181,5844,5114,9898,4634,2531,4412,6430,4262,8482,4546,4555,6804,2607,9421,686,8649,8860,7794,6672
-9870,152,1558,4963,8750,4754,6521,6256,8818,5208,5691,9659,8377,9725,5050,5343,2539,6101,1844,9700,7750,8114,5357,3001,8830,4438,199,9545,8496,43,2078,327,9397,106,6090,8181,8646,6414,7499,5450,4850,6273,5014,4131,7639,3913,6571,8534,9703,4391,7618,445,1320,5,1894,6771,7383,9191,4708,9706,6939,7937,8726,9382,5216,3685,2247,9029,8154,1738,9984,2626,9438,4167,6351,5060,29,1218,1239,4785
-192,5213,8297,8974,4032,6966,5717,1179,6523,4679,9513,1481,3041,5355,9303,9154,1389,8702,6589,7818,6336,3539,5538,3094,6646,6702,6266,2759,4608,4452,617,9406,8064,6379,444,5602,4950,1810,8391,1536,316,8714,1178,5182,5863,5110,5372,4954,1978,2971,5680,4863,2255,4630,5723,2168,538,1692,1319,7540,440,6430,6266,7712,7385,5702,620,641,3136,7350,1478,3155,2820,9109,6261,1122,4470,14,8493,2095
-1046,4301,6082,474,4974,7822,2102,5161,5172,6946,8074,9716,6586,9962,9749,5015,2217,995,5388,4402,7652,6399,6539,1349,8101,3677,1328,9612,7922,2879,231,5887,2655,508,4357,4964,3554,5930,6236,7384,4614,280,3093,9600,2110,7863,2631,6626,6620,68,1311,7198,7561,1768,5139,1431,221,230,2940,968,5283,6517,2146,1646,869,9402,7068,8645,7058,1765,9690,4152,2926,9504,2939,7504,6074,2944,6470,7859
-4659,736,4951,9344,1927,6271,8837,8711,3241,6579,7660,5499,5616,3743,5801,4682,9748,8796,779,1833,4549,8138,4026,775,4170,2432,4174,3741,7540,8017,2833,4027,396,811,2871,1150,9809,2719,9199,8504,1224,540,2051,3519,7982,7367,2761,308,3358,6505,2050,4836,5090,7864,805,2566,2409,6876,3361,8622,5572,5895,3280,441,7893,8105,1634,2929,274,3926,7786,6123,8233,9921,2674,5340,1445,203,4585,3837
-5759,338,7444,7968,7742,3755,1591,4839,1705,650,7061,2461,9230,9391,9373,2413,1213,431,7801,4994,2380,2703,6161,6878,8331,2538,6093,1275,5065,5062,2839,582,1014,8109,3525,1544,1569,8622,7944,2905,6120,1564,1839,5570,7579,1318,2677,5257,4418,5601,7935,7656,5192,1864,5886,6083,5580,6202,8869,1636,7907,4759,9082,5854,3185,7631,6854,5872,5632,5280,1431,2077,9717,7431,4256,8261,9680,4487,4752,4286
-1571,1428,8599,1230,7772,4221,8523,9049,4042,8726,7567,6736,9033,2104,4879,4967,6334,6716,3994,1269,8995,6539,3610,7667,6560,6065,874,848,4597,1711,7161,4811,6734,5723,6356,6026,9183,2586,5636,1092,7779,7923,8747,6887,7505,9909,1792,3233,4526,3176,1508,8043,720,5212,6046,4988,709,5277,8256,3642,1391,5803,1468,2145,3970,6301,7767,2359,8487,9771,8785,7520,856,1605,8972,2402,2386,991,1383,5963
-1822,4824,5957,6511,9868,4113,301,9353,6228,2881,2966,6956,9124,9574,9233,1601,7340,973,9396,540,4747,8590,9535,3650,7333,7583,4806,3593,2738,8157,5215,8472,2284,9473,3906,6982,5505,6053,7936,6074,7179,6688,1564,1103,6860,5839,2022,8490,910,7551,7805,881,7024,1855,9448,4790,1274,3672,2810,774,7623,4223,4850,6071,9975,4935,1915,9771,6690,3846,517,463,7624,4511,614,6394,3661,7409,1395,8127
-8738,3850,9555,3695,4383,2378,87,6256,6740,7682,9546,4255,6105,2000,1851,4073,8957,9022,6547,5189,2487,303,9602,7833,1628,4163,6678,3144,8589,7096,8913,5823,4890,7679,1212,9294,5884,2972,3012,3359,7794,7428,1579,4350,7246,4301,7779,7790,3294,9547,4367,3549,1958,8237,6758,3497,3250,3456,6318,1663,708,7714,6143,6890,3428,6853,9334,7992,591,6449,9786,1412,8500,722,5468,1371,108,3939,4199,2535
-7047,4323,1934,5163,4166,461,3544,2767,6554,203,6098,2265,9078,2075,4644,6641,8412,9183,487,101,7566,5622,1975,5726,2920,5374,7779,5631,3753,3725,2672,3621,4280,1162,5812,345,8173,9785,1525,955,5603,2215,2580,5261,2765,2990,5979,389,3907,2484,1232,5933,5871,3304,1138,1616,5114,9199,5072,7442,7245,6472,4760,6359,9053,7876,2564,9404,3043,9026,2261,3374,4460,7306,2326,966,828,3274,1712,3446
-3975,4565,8131,5800,4570,2306,8838,4392,9147,11,3911,7118,9645,4994,2028,6062,5431,2279,8752,2658,7836,994,7316,5336,7185,3289,1898,9689,2331,5737,3403,1124,2679,3241,7748,16,2724,5441,6640,9368,9081,5618,858,4969,17,2103,6035,8043,7475,2181,939,415,1617,8500,8253,2155,7843,7974,7859,1746,6336,3193,2617,8736,4079,6324,6645,8891,9396,5522,6103,1857,8979,3835,2475,1310,7422,610,8345,7615
-9248,5397,5686,2988,3446,4359,6634,9141,497,9176,6773,7448,1907,8454,916,1596,2241,1626,1384,2741,3649,5362,8791,7170,2903,2475,5325,6451,924,3328,522,90,4813,9737,9557,691,2388,1383,4021,1609,9206,4707,5200,7107,8104,4333,9860,5013,1224,6959,8527,1877,4545,7772,6268,621,4915,9349,5970,706,9583,3071,4127,780,8231,3017,9114,3836,7503,2383,1977,4870,8035,2379,9704,1037,3992,3642,1016,4303
-5093,138,4639,6609,1146,5565,95,7521,9077,2272,974,4388,2465,2650,722,4998,3567,3047,921,2736,7855,173,2065,4238,1048,5,6847,9548,8632,9194,5942,4777,7910,8971,6279,7253,2516,1555,1833,3184,9453,9053,6897,7808,8629,4877,1871,8055,4881,7639,1537,7701,2508,7564,5845,5023,2304,5396,3193,2955,1088,3801,6203,1748,3737,1276,13,4120,7715,8552,3047,2921,106,7508,304,1280,7140,2567,9135,5266
-6237,4607,7527,9047,522,7371,4883,2540,5867,6366,5301,1570,421,276,3361,527,6637,4861,2401,7522,5808,9371,5298,2045,5096,5447,7755,5115,7060,8529,4078,1943,1697,1764,5453,7085,960,2405,739,2100,5800,728,9737,5704,5693,1431,8979,6428,673,7540,6,7773,5857,6823,150,5869,8486,684,5816,9626,7451,5579,8260,3397,5322,6920,1879,2127,2884,5478,4977,9016,6165,6292,3062,5671,5968,78,4619,4763
-9905,7127,9390,5185,6923,3721,9164,9705,4341,1031,1046,5127,7376,6528,3248,4941,1178,7889,3364,4486,5358,9402,9158,8600,1025,874,1839,1783,309,9030,1843,845,8398,1433,7118,70,8071,2877,3904,8866,6722,4299,10,1929,5897,4188,600,1889,3325,2485,6473,4474,7444,6992,4846,6166,4441,2283,2629,4352,7775,1101,2214,9985,215,8270,9750,2740,8361,7103,5930,8664,9690,8302,9267,344,2077,1372,1880,9550
-5825,8517,7769,2405,8204,1060,3603,7025,478,8334,1997,3692,7433,9101,7294,7498,9415,5452,3850,3508,6857,9213,6807,4412,7310,854,5384,686,4978,892,8651,3241,2743,3801,3813,8588,6701,4416,6990,6490,3197,6838,6503,114,8343,5844,8646,8694,65,791,5979,2687,2621,2019,8097,1423,3644,9764,4921,3266,3662,5561,2476,8271,8138,6147,1168,3340,1998,9874,6572,9873,6659,5609,2711,3931,9567,4143,7833,8887
-6223,2099,2700,589,4716,8333,1362,5007,2753,2848,4441,8397,7192,8191,4916,9955,6076,3370,6396,6971,3156,248,3911,2488,4930,2458,7183,5455,170,6809,6417,3390,1956,7188,577,7526,2203,968,8164,479,8699,7915,507,6393,4632,1597,7534,3604,618,3280,6061,9793,9238,8347,568,9645,2070,5198,6482,5000,9212,6655,5961,7513,1323,3872,6170,3812,4146,2736,67,3151,5548,2781,9679,7564,5043,8587,1893,4531
-5826,3690,6724,2121,9308,6986,8106,6659,2142,1642,7170,2877,5757,6494,8026,6571,8387,9961,6043,9758,9607,6450,8631,8334,7359,5256,8523,2225,7487,1977,9555,8048,5763,2414,4948,4265,2427,8978,8088,8841,9208,9601,5810,9398,8866,9138,4176,5875,7212,3272,6759,5678,7649,4922,5422,1343,8197,3154,3600,687,1028,4579,2084,9467,4492,7262,7296,6538,7657,7134,2077,1505,7332,6890,8964,4879,7603,7400,5973,739
-1861,1613,4879,1884,7334,966,2000,7489,2123,4287,1472,3263,4726,9203,1040,4103,6075,6049,330,9253,4062,4268,1635,9960,577,1320,3195,9628,1030,4092,4979,6474,6393,2799,6967,8687,7724,7392,9927,2085,3200,6466,8702,265,7646,8665,7986,7266,4574,6587,612,2724,704,3191,8323,9523,3002,704,5064,3960,8209,2027,2758,8393,4875,4641,9584,6401,7883,7014,768,443,5490,7506,1852,2005,8850,5776,4487,4269
-4052,6687,4705,7260,6645,6715,3706,5504,8672,2853,1136,8187,8203,4016,871,1809,1366,4952,9294,5339,6872,2645,6083,7874,3056,5218,7485,8796,7401,3348,2103,426,8572,4163,9171,3176,948,7654,9344,3217,1650,5580,7971,2622,76,2874,880,2034,9929,1546,2659,5811,3754,7096,7436,9694,9960,7415,2164,953,2360,4194,2397,1047,2196,6827,575,784,2675,8821,6802,7972,5996,6699,2134,7577,2887,1412,4349,4380
-4629,2234,6240,8132,7592,3181,6389,1214,266,1910,2451,8784,2790,1127,6932,1447,8986,2492,5476,397,889,3027,7641,5083,5776,4022,185,3364,5701,2442,2840,4160,9525,4828,6602,2614,7447,3711,4505,7745,8034,6514,4907,2605,7753,6958,7270,6936,3006,8968,439,2326,4652,3085,3425,9863,5049,5361,8688,297,7580,8777,7916,6687,8683,7141,306,9569,2384,1500,3346,4601,7329,9040,6097,2727,6314,4501,4974,2829
-8316,4072,2025,6884,3027,1808,5714,7624,7880,8528,4205,8686,7587,3230,1139,7273,6163,6986,3914,9309,1464,9359,4474,7095,2212,7302,2583,9462,7532,6567,1606,4436,8981,5612,6796,4385,5076,2007,6072,3678,8331,1338,3299,8845,4783,8613,4071,1232,6028,2176,3990,2148,3748,103,9453,538,6745,9110,926,3125,473,5970,8728,7072,9062,1404,1317,5139,9862,6496,6062,3338,464,1600,2532,1088,8232,7739,8274,3873
-2341,523,7096,8397,8301,6541,9844,244,4993,2280,7689,4025,4196,5522,7904,6048,2623,9258,2149,9461,6448,8087,7245,1917,8340,7127,8466,5725,6996,3421,5313,512,9164,9837,9794,8369,4185,1488,7210,1524,1016,4620,9435,2478,7765,8035,697,6677,3724,6988,5853,7662,3895,9593,1185,4727,6025,5734,7665,3070,138,8469,6748,6459,561,7935,8646,2378,462,7755,3115,9690,8877,3946,2728,8793,244,6323,8666,4271
-6430,2406,8994,56,1267,3826,9443,7079,7579,5232,6691,3435,6718,5698,4144,7028,592,2627,217,734,6194,8156,9118,58,2640,8069,4127,3285,694,3197,3377,4143,4802,3324,8134,6953,7625,3598,3584,4289,7065,3434,2106,7132,5802,7920,9060,7531,3321,1725,1067,3751,444,5503,6785,7937,6365,4803,198,6266,8177,1470,6390,1606,2904,7555,9834,8667,2033,1723,5167,1666,8546,8152,473,4475,6451,7947,3062,3281
-2810,3042,7759,1741,2275,2609,7676,8640,4117,1958,7500,8048,1757,3954,9270,1971,4796,2912,660,5511,3553,1012,5757,4525,6084,7198,8352,5775,7726,8591,7710,9589,3122,4392,6856,5016,749,2285,3356,7482,9956,7348,2599,8944,495,3462,3578,551,4543,7207,7169,7796,1247,4278,6916,8176,3742,8385,2310,1345,8692,2667,4568,1770,8319,3585,4920,3890,4928,7343,5385,9772,7947,8786,2056,9266,3454,2807,877,2660
-6206,8252,5928,5837,4177,4333,207,7934,5581,9526,8906,1498,8411,2984,5198,5134,2464,8435,8514,8674,3876,599,5327,826,2152,4084,2433,9327,9697,4800,2728,3608,3849,3861,3498,9943,1407,3991,7191,9110,5666,8434,4704,6545,5944,2357,1163,4995,9619,6754,4200,9682,6654,4862,4744,5953,6632,1054,293,9439,8286,2255,696,8709,1533,1844,6441,430,1999,6063,9431,7018,8057,2920,6266,6799,356,3597,4024,6665
-3847,6356,8541,7225,2325,2946,5199,469,5450,7508,2197,9915,8284,7983,6341,3276,3321,16,1321,7608,5015,3362,8491,6968,6818,797,156,2575,706,9516,5344,5457,9210,5051,8099,1617,9951,7663,8253,9683,2670,1261,4710,1068,8753,4799,1228,2621,3275,6188,4699,1791,9518,8701,5932,4275,6011,9877,2933,4182,6059,2930,6687,6682,9771,654,9437,3169,8596,1827,5471,8909,2352,123,4394,3208,8756,5513,6917,2056
-5458,8173,3138,3290,4570,4892,3317,4251,9699,7973,1163,1935,5477,6648,9614,5655,9592,975,9118,2194,7322,8248,8413,3462,8560,1907,7810,6650,7355,2939,4973,6894,3933,3784,3200,2419,9234,4747,2208,2207,1945,2899,1407,6145,8023,3484,5688,7686,2737,3828,3704,9004,5190,9740,8643,8650,5358,4426,1522,1707,3613,9887,6956,2447,2762,833,1449,9489,2573,1080,4167,3456,6809,2466,227,7125,2759,6250,6472,8089
-3266,7025,9756,3914,1265,9116,7723,9788,6805,5493,2092,8688,6592,9173,4431,4028,6007,7131,4446,4815,3648,6701,759,3312,8355,4485,4187,5188,8746,7759,3528,2177,5243,8379,3838,7233,4607,9187,7216,2190,6967,2920,6082,7910,5354,3609,8958,6949,7731,494,8753,8707,1523,4426,3543,7085,647,6771,9847,646,5049,824,8417,5260,2730,5702,2513,9275,4279,2767,8684,1165,9903,4518,55,9682,8963,6005,2102,6523
-1998,8731,936,1479,5259,7064,4085,91,7745,7136,3773,3810,730,8255,2705,2653,9790,6807,2342,355,9344,2668,3690,2028,9679,8102,574,4318,6481,9175,5423,8062,2867,9657,7553,3442,3920,7430,3945,7639,3714,3392,2525,4995,4850,2867,7951,9667,486,9506,9888,781,8866,1702,3795,90,356,1483,4200,2131,6969,5931,486,6880,4404,1084,5169,4910,6567,8335,4686,5043,2614,3352,2667,4513,6472,7471,5720,1616
-8878,1613,1716,868,1906,2681,564,665,5995,2474,7496,3432,9491,9087,8850,8287,669,823,347,6194,2264,2592,7871,7616,8508,4827,760,2676,4660,4881,7572,3811,9032,939,4384,929,7525,8419,5556,9063,662,8887,7026,8534,3111,1454,2082,7598,5726,6687,9647,7608,73,3014,5063,670,5461,5631,3367,9796,8475,7908,5073,1565,5008,5295,4457,1274,4788,1728,338,600,8415,8535,9351,7750,6887,5845,1741,125
-3637,6489,9634,9464,9055,2413,7824,9517,7532,3577,7050,6186,6980,9365,9782,191,870,2497,8498,2218,2757,5420,6468,586,3320,9230,1034,1393,9886,5072,9391,1178,8464,8042,6869,2075,8275,3601,7715,9470,8786,6475,8373,2159,9237,2066,3264,5000,679,355,3069,4073,494,2308,5512,4334,9438,8786,8637,9774,1169,1949,6594,6072,4270,9158,7916,5752,6794,9391,6301,5842,3285,2141,3898,8027,4310,8821,7079,1307
-8497,6681,4732,7151,7060,5204,9030,7157,833,5014,8723,3207,9796,9286,4913,119,5118,7650,9335,809,3675,2597,5144,3945,5090,8384,187,4102,1260,2445,2792,4422,8389,9290,50,1765,1521,6921,8586,4368,1565,5727,7855,2003,4834,9897,5911,8630,5070,1330,7692,7557,7980,6028,5805,9090,8265,3019,3802,698,9149,5748,1965,9658,4417,5994,5584,8226,2937,272,5743,1278,5698,8736,2595,6475,5342,6596,1149,6920
-8188,8009,9546,6310,8772,2500,9846,6592,6872,3857,1307,8125,7042,1544,6159,2330,643,4604,7899,6848,371,8067,2062,3200,7295,1857,9505,6936,384,2193,2190,301,8535,5503,1462,7380,5114,4824,8833,1763,4974,8711,9262,6698,3999,2645,6937,7747,1128,2933,3556,7943,2885,3122,9105,5447,418,2899,5148,3699,9021,9501,597,4084,175,1621,1,1079,6067,5812,4326,9914,6633,5394,4233,6728,9084,1864,5863,1225
-9935,8793,9117,1825,9542,8246,8437,3331,9128,9675,6086,7075,319,1334,7932,3583,7167,4178,1726,7720,695,8277,7887,6359,5912,1719,2780,8529,1359,2013,4498,8072,1129,9998,1147,8804,9405,6255,1619,2165,7491,1,8882,7378,3337,503,5758,4109,3577,985,3200,7615,8058,5032,1080,6410,6873,5496,1466,2412,9885,5904,4406,3605,8770,4361,6205,9193,1537,9959,214,7260,9566,1685,100,4920,7138,9819,5637,976
-3466,9854,985,1078,7222,8888,5466,5379,3578,4540,6853,8690,3728,6351,7147,3134,6921,9692,857,3307,4998,2172,5783,3931,9417,2541,6299,13,787,2099,9131,9494,896,8600,1643,8419,7248,2660,2609,8579,91,6663,5506,7675,1947,6165,4286,1972,9645,3805,1663,1456,8853,5705,9889,7489,1107,383,4044,2969,3343,152,7805,4980,9929,5033,1737,9953,7197,9158,4071,1324,473,9676,3984,9680,3606,8160,7384,5432
-1005,4512,5186,3953,2164,3372,4097,3247,8697,3022,9896,4101,3871,6791,3219,2742,4630,6967,7829,5991,6134,1197,1414,8923,8787,1394,8852,5019,7768,5147,8004,8825,5062,9625,7988,1110,3992,7984,9966,6516,6251,8270,421,3723,1432,4830,6935,8095,9059,2214,6483,6846,3120,1587,6201,6691,9096,9627,6671,4002,3495,9939,7708,7465,5879,6959,6634,3241,3401,2355,9061,2611,7830,3941,2177,2146,5089,7079,519,6351
-7280,8586,4261,2831,7217,3141,9994,9940,5462,2189,4005,6942,9848,5350,8060,6665,7519,4324,7684,657,9453,9296,2944,6843,7499,7847,1728,9681,3906,6353,5529,2822,3355,3897,7724,4257,7489,8672,4356,3983,1948,6892,7415,4153,5893,4190,621,1736,4045,9532,7701,3671,1211,1622,3176,4524,9317,7800,5638,6644,6943,5463,3531,2821,1347,5958,3436,1438,2999,994,850,4131,2616,1549,3465,5946,690,9273,6954,7991
-9517,399,3249,2596,7736,2142,1322,968,7350,1614,468,3346,3265,7222,6086,1661,5317,2582,7959,4685,2807,2917,1037,5698,1529,3972,8716,2634,3301,3412,8621,743,8001,4734,888,7744,8092,3671,8941,1487,5658,7099,2781,99,1932,4443,4756,4652,9328,1581,7855,4312,5976,7255,6480,3996,2748,1973,9731,4530,2790,9417,7186,5303,3557,351,7182,9428,1342,9020,7599,1392,8304,2070,9138,7215,2008,9937,1106,7110
-7444,769,9688,632,1571,6820,8743,4338,337,3366,3073,1946,8219,104,4210,6986,249,5061,8693,7960,6546,1004,8857,5997,9352,4338,6105,5008,2556,6518,6694,4345,3727,7956,20,3954,8652,4424,9387,2035,8358,5962,5304,5194,8650,8282,1256,1103,2138,6679,1985,3653,2770,2433,4278,615,2863,1715,242,3790,2636,6998,3088,1671,2239,957,5411,4595,6282,2881,9974,2401,875,7574,2987,4587,3147,6766,9885,2965
-3287,3016,3619,6818,9073,6120,5423,557,2900,2015,8111,3873,1314,4189,1846,4399,7041,7583,2427,2864,3525,5002,2069,748,1948,6015,2684,438,770,8367,1663,7887,7759,1885,157,7770,4520,4878,3857,1137,3525,3050,6276,5569,7649,904,4533,7843,2199,5648,7628,9075,9441,3600,7231,2388,5640,9096,958,3058,584,5899,8150,1181,9616,1098,8162,6819,8171,1519,1140,7665,8801,2632,1299,9192,707,9955,2710,7314
-1772,2963,7578,3541,3095,1488,7026,2634,6015,4633,4370,2762,1650,2174,909,8158,2922,8467,4198,4280,9092,8856,8835,5457,2790,8574,9742,5054,9547,4156,7940,8126,9824,7340,8840,6574,3547,1477,3014,6798,7134,435,9484,9859,3031,4,1502,4133,1738,1807,4825,463,6343,9701,8506,9822,9555,8688,8168,3467,3234,6318,1787,5591,419,6593,7974,8486,9861,6381,6758,194,3061,4315,2863,4665,3789,2201,1492,4416
-126,8927,6608,5682,8986,6867,1715,6076,3159,788,3140,4744,830,9253,5812,5021,7616,8534,1546,9590,1101,9012,9821,8132,7857,4086,1069,7491,2988,1579,2442,4321,2149,7642,6108,250,6086,3167,24,9528,7663,2685,1220,9196,1397,5776,1577,1730,5481,977,6115,199,6326,2183,3767,5928,5586,7561,663,8649,9688,949,5913,9160,1870,5764,9887,4477,6703,1413,4995,5494,7131,2192,8969,7138,3997,8697,646,1028
-8074,1731,8245,624,4601,8706,155,8891,309,2552,8208,8452,2954,3124,3469,4246,3352,1105,4509,8677,9901,4416,8191,9283,5625,7120,2952,8881,7693,830,4580,8228,9459,8611,4499,1179,4988,1394,550,2336,6089,6872,269,7213,1848,917,6672,4890,656,1478,6536,3165,4743,4990,1176,6211,7207,5284,9730,4738,1549,4986,4942,8645,3698,9429,1439,2175,6549,3058,6513,1574,6988,8333,3406,5245,5431,7140,7085,6407
-7845,4694,2530,8249,290,5948,5509,1588,5940,4495,5866,5021,4626,3979,3296,7589,4854,1998,5627,3926,8346,6512,9608,1918,7070,4747,4182,2858,2766,4606,6269,4107,8982,8568,9053,4244,5604,102,2756,727,5887,2566,7922,44,5986,621,1202,374,6988,4130,3627,6744,9443,4568,1398,8679,397,3928,9159,367,2917,6127,5788,3304,8129,911,2669,1463,9749,264,4478,8940,1109,7309,2462,117,4692,7724,225,2312
-4164,3637,2000,941,8903,39,3443,7172,1031,3687,4901,8082,4945,4515,7204,9310,9349,9535,9940,218,1788,9245,2237,1541,5670,6538,6047,5553,9807,8101,1925,8714,445,8332,7309,6830,5786,5736,7306,2710,3034,1838,7969,6318,7912,2584,2080,7437,6705,2254,7428,820,782,9861,7596,3842,3631,8063,5240,6666,394,4565,7865,4895,9890,6028,6117,4724,9156,4473,4552,602,470,6191,4927,5387,884,3146,1978,3000
-4258,6880,1696,3582,5793,4923,2119,1155,9056,9698,6603,3768,5514,9927,9609,6166,6566,4536,4985,4934,8076,9062,6741,6163,7399,4562,2337,5600,2919,9012,8459,1308,6072,1225,9306,8818,5886,7243,7365,8792,6007,9256,6699,7171,4230,7002,8720,7839,4533,1671,478,7774,1607,2317,5437,4705,7886,4760,6760,7271,3081,2997,3088,7675,6208,3101,6821,6840,122,9633,4900,2067,8546,4549,2091,7188,5605,8599,6758,5229
-7854,5243,9155,3556,8812,7047,2202,1541,5993,4600,4760,713,434,7911,7426,7414,8729,322,803,7960,7563,4908,6285,6291,736,3389,9339,4132,8701,7534,5287,3646,592,3065,7582,2592,8755,6068,8597,1982,5782,1894,2900,6236,4039,6569,3037,5837,7698,700,7815,2491,7272,5878,3083,6778,6639,3589,5010,8313,2581,6617,5869,8402,6808,2951,2321,5195,497,2190,6187,1342,1316,4453,7740,4154,2959,1781,1482,8256
-7178,2046,4419,744,8312,5356,6855,8839,319,2962,5662,47,6307,8662,68,4813,567,2712,9931,1678,3101,8227,6533,4933,6656,92,5846,4780,6256,6361,4323,9985,1231,2175,7178,3034,9744,6155,9165,7787,5836,9318,7860,9644,8941,6480,9443,8188,5928,161,6979,2352,5628,6991,1198,8067,5867,6620,3778,8426,2994,3122,3124,6335,3918,8897,2655,9670,634,1088,1576,8935,7255,474,8166,7417,9547,2886,5560,3842
-6957,3111,26,7530,7143,1295,1744,6057,3009,1854,8098,5405,2234,4874,9447,2620,9303,27,7410,969,40,2966,5648,7596,8637,4238,3143,3679,7187,690,9980,7085,7714,9373,5632,7526,6707,3951,9734,4216,2146,3602,5371,6029,3039,4433,4855,4151,1449,3376,8009,7240,7027,4602,2947,9081,4045,8424,9352,8742,923,2705,4266,3232,2264,6761,363,2651,3383,7770,6730,7856,7340,9679,2158,610,4471,4608,910,6241
-4417,6756,1013,8797,658,8809,5032,8703,7541,846,3357,2920,9817,1745,9980,7593,4667,3087,779,3218,6233,5568,4296,2289,2654,7898,5021,9461,5593,8214,9173,4203,2271,7980,2983,5952,9992,8399,3468,1776,3188,9314,1720,6523,2933,621,8685,5483,8986,6163,3444,9539,4320,155,3992,2828,2150,6071,524,2895,5468,8063,1210,3348,9071,4862,483,9017,4097,6186,9815,3610,5048,1644,1003,9865,9332,2145,1944,2213
-9284,3803,4920,1927,6706,4344,7383,4786,9890,2010,5228,1224,3158,6967,8580,8990,8883,5213,76,8306,2031,4980,5639,9519,7184,5645,7769,3259,8077,9130,1317,3096,9624,3818,1770,695,2454,947,6029,3474,9938,3527,5696,4760,7724,7738,2848,6442,5767,6845,8323,4131,2859,7595,2500,4815,3660,9130,8580,7016,8231,4391,8369,3444,4069,4021,556,6154,627,2778,1496,4206,6356,8434,8491,3816,8231,3190,5575,1015
-3787,7572,1788,6803,5641,6844,1961,4811,8535,9914,9999,1450,8857,738,4662,8569,6679,2225,7839,8618,286,2648,5342,2294,3205,4546,176,8705,3741,6134,8324,8021,7004,5205,7032,6637,9442,5539,5584,4819,5874,5807,8589,6871,9016,983,1758,3786,1519,6241,185,8398,495,3370,9133,3051,4549,9674,7311,9738,3316,9383,2658,2776,9481,7558,619,3943,3324,6491,4933,153,9738,4623,912,3595,7771,7939,1219,4405
-2650,3883,4154,5809,315,7756,4430,1788,4451,1631,6461,7230,6017,5751,138,588,5282,2442,9110,9035,6349,2515,1570,6122,4192,4174,3530,1933,4186,4420,4609,5739,4135,2963,6308,1161,8809,8619,2796,3819,6971,8228,4188,1492,909,8048,2328,6772,8467,7671,9068,2226,7579,6422,7056,8042,3296,2272,3006,2196,7320,3238,3490,3102,37,1293,3212,4767,5041,8773,5794,4456,6174,7279,7054,2835,7053,9088,790,6640
-3101,1057,7057,3826,6077,1025,2955,1224,1114,6729,5902,4698,6239,7203,9423,1804,4417,6686,1426,6941,8071,1029,4985,9010,6122,6597,1622,1574,3513,1684,7086,5505,3244,411,9638,4150,907,9135,829,981,1707,5359,8781,9751,5,9131,3973,7159,1340,6955,7514,7993,6964,8198,1933,2797,877,3993,4453,8020,9349,8646,2779,8679,2961,3547,3374,3510,1129,3568,2241,2625,9138,5974,8206,7669,7678,1833,8700,4480
-4865,9912,8038,8238,782,3095,8199,1127,4501,7280,2112,2487,3626,2790,9432,1475,6312,8277,4827,2218,5806,7132,8752,1468,7471,6386,739,8762,8323,8120,5169,9078,9058,3370,9560,7987,8585,8531,5347,9312,1058,4271,1159,5286,5404,6925,8606,9204,7361,2415,560,586,4002,2644,1927,2824,768,4409,2942,3345,1002,808,4941,6267,7979,5140,8643,7553,9438,7320,4938,2666,4609,2778,8158,6730,3748,3867,1866,7181
-171,3771,7134,8927,4778,2913,3326,2004,3089,7853,1378,1729,4777,2706,9578,1360,5693,3036,1851,7248,2403,2273,8536,6501,9216,613,9671,7131,7719,6425,773,717,8803,160,1114,7554,7197,753,4513,4322,8499,4533,2609,4226,8710,6627,644,9666,6260,4870,5744,7385,6542,6203,7703,6130,8944,5589,2262,6803,6381,7414,6888,5123,7320,9392,9061,6780,322,8975,7050,5089,1061,2260,3199,1150,1865,5386,9699,6501
-3744,8454,6885,8277,919,1923,4001,6864,7854,5519,2491,6057,8794,9645,1776,5714,9786,9281,7538,6916,3215,395,2501,9618,4835,8846,9708,2813,3303,1794,8309,7176,2206,1602,1838,236,4593,2245,8993,4017,10,8215,6921,5206,4023,5932,6997,7801,262,7640,3107,8275,4938,7822,2425,3223,3886,2105,8700,9526,2088,8662,8034,7004,5710,2124,7164,3574,6630,9980,4242,2901,9471,1491,2117,4562,1130,9086,4117,6698
-2810,2280,2331,1170,4554,4071,8387,1215,2274,9848,6738,1604,7281,8805,439,1298,8318,7834,9426,8603,6092,7944,1309,8828,303,3157,4638,4439,9175,1921,4695,7716,1494,1015,1772,5913,1127,1952,1950,8905,4064,9890,385,9357,7945,5035,7082,5369,4093,6546,5187,5637,2041,8946,1758,7111,6566,1027,1049,5148,7224,7248,296,6169,375,1656,7993,2816,3717,4279,4675,1609,3317,42,6201,3100,3144,163,9530,4531
-7096,6070,1009,4988,3538,5801,7149,3063,2324,2912,7911,7002,4338,7880,2481,7368,3516,2016,7556,2193,1388,3865,8125,4637,4096,8114,750,3144,1938,7002,9343,4095,1392,4220,3455,6969,9647,1321,9048,1996,1640,6626,1788,314,9578,6630,2813,6626,4981,9908,7024,4355,3201,3521,3864,3303,464,1923,595,9801,3391,8366,8084,9374,1041,8807,9085,1892,9431,8317,9016,9221,8574,9981,9240,5395,2009,6310,2854,9255
-8830,3145,2960,9615,8220,6061,3452,2918,6481,9278,2297,3385,6565,7066,7316,5682,107,7646,4466,68,1952,9603,8615,54,7191,791,6833,2560,693,9733,4168,570,9127,9537,1925,8287,5508,4297,8452,8795,6213,7994,2420,4208,524,5915,8602,8330,2651,8547,6156,1812,6271,7991,9407,9804,1553,6866,1128,2119,4691,9711,8315,5879,9935,6900,482,682,4126,1041,428,6247,3720,5882,7526,2582,4327,7725,3503,2631
-2738,9323,721,7434,1453,6294,2957,3786,5722,6019,8685,4386,3066,9057,6860,499,5315,3045,5194,7111,3137,9104,941,586,3066,755,4177,8819,7040,5309,3583,3897,4428,7788,4721,7249,6559,7324,825,7311,3760,6064,6070,9672,4882,584,1365,9739,9331,5783,2624,7889,1604,1303,1555,7125,8312,425,8936,3233,7724,1480,403,7440,1784,1754,4721,1569,652,3893,4574,5692,9730,4813,9844,8291,9199,7101,3391,8914
-6044,2928,9332,3328,8588,447,3830,1176,3523,2705,8365,6136,5442,9049,5526,8575,8869,9031,7280,706,2794,8814,5767,4241,7696,78,6570,556,5083,1426,4502,3336,9518,2292,1885,3740,3153,9348,9331,8051,2759,5407,9028,7840,9255,831,515,2612,9747,7435,8964,4971,2048,4900,5967,8271,1719,9670,2810,6777,1594,6367,6259,8316,3815,1689,6840,9437,4361,822,9619,3065,83,6344,7486,8657,8228,9635,6932,4864
-8478,4777,6334,4678,7476,4963,6735,3096,5860,1405,5127,7269,7793,4738,227,9168,2996,8928,765,733,1276,7677,6258,1528,9558,3329,302,8901,1422,8277,6340,645,9125,8869,5952,141,8141,1816,9635,4025,4184,3093,83,2344,2747,9352,7966,1206,1126,1826,218,7939,2957,2729,810,8752,5247,4174,4038,8884,7899,9567,301,5265,5752,7524,4381,1669,3106,8270,6228,6373,754,2547,4240,2313,5514,3022,1040,9738
-2265,8192,1763,1369,8469,8789,4836,52,1212,6690,5257,8918,6723,6319,378,4039,2421,8555,8184,9577,1432,7139,8078,5452,9628,7579,4161,7490,5159,8559,1011,81,478,5840,1964,1334,6875,8670,9900,739,1514,8692,522,9316,6955,1345,8132,2277,3193,9773,3923,4177,2183,1236,6747,6575,4874,6003,6409,8187,745,8776,9440,7543,9825,2582,7381,8147,7236,5185,7564,6125,218,7991,6394,391,7659,7456,5128,5294
-2132,8992,8160,5782,4420,3371,3798,5054,552,5631,7546,4716,1332,6486,7892,7441,4370,6231,4579,2121,8615,1145,9391,1524,1385,2400,9437,2454,7896,7467,2928,8400,3299,4025,7458,4703,7206,6358,792,6200,725,4275,4136,7390,5984,4502,7929,5085,8176,4600,119,3568,76,9363,6943,2248,9077,9731,6213,5817,6729,4190,3092,6910,759,2682,8380,1254,9604,3011,9291,5329,9453,9746,2739,6522,3765,5634,1113,5789
-5304,5499,564,2801,679,2653,1783,3608,7359,7797,3284,796,3222,437,7185,6135,8571,2778,7488,5746,678,6140,861,7750,803,9859,9918,2425,3734,2698,9005,4864,9818,6743,2475,132,9486,3825,5472,919,292,4411,7213,7699,6435,9019,6769,1388,802,2124,1345,8493,9487,8558,7061,8777,8833,2427,2238,5409,4957,8503,3171,7622,5779,6145,2417,5873,5563,5693,9574,9491,1937,7384,4563,6842,5432,2751,3406,7981
diff --git a/src/projecteuler/087.c b/src/projecteuler/087.c deleted file mode 100644 index e1b1ad8..0000000 --- a/src/projecteuler/087.c +++ /dev/null @@ -1,42 +0,0 @@ -#include "common.h" -#include <stdlib.h> -#include <string.h> - -const unsigned long limit = 50000000; - -int main(void) -{ - unsigned long* p = primes(8000); - unsigned long count = p[0]; - unsigned long i2, i3, i4, counter; - char* numbers = malloc(limit*sizeof(char)); - memset(numbers, 0, limit); - - for(i2=1; i2<=count; i2++) - for(i3=1; i3<=count; i3++) - for(i4=1; i4<=count; i4++) - { - unsigned long p4 = p[i4]; - unsigned long p3 = p[i3]; - unsigned long p2 = p[i2]; - unsigned long long result = (unsigned long long)p4*p4*p4*p4; - if(result >= limit) break; - result += (unsigned long long)p3*p3*p3; - if(result >= limit) break; - result += (unsigned long long)p2*p2; - if(result >= limit) break; - - numbers[result] = 1; - } - - counter = 0; - for(i2=0; i2<limit; i2++) - if(numbers[i2] == 1) - counter++; - - printf("%li\n", counter); - - free(p); - return 0; -} - diff --git a/src/projecteuler/089.py b/src/projecteuler/089.py deleted file mode 100644 index f8d36be..0000000 --- a/src/projecteuler/089.py +++ /dev/null @@ -1,97 +0,0 @@ - -def value(x): - if x == 'I': - return 1 - elif x == 'V': - return 5 - elif x == 'X': - return 10 - elif x == 'L': - return 50 - elif x == 'C': - return 100 - elif x == 'D': - return 500 - elif x == 'M': - return 1000 - else: - print "Decoding error: " + x - return None - - -def decode_roman(n): - result = 0 - for i in xrange(len(n)-1): # search for subtractive pairs - cur = value(n[i]) - nxt = value(n[i+1]) - if cur < nxt: - result -= cur - else: - result += cur - - result += value(n[-1]) - return result - - -def minimal_roman(n): - result = "" - while n > 0: - if n - 1000 >= 0: - n -= 1000 - result += "M" - elif n - 900 >= 0: - n -= 900 - result += "CM" - elif n - 500 >= 0: - n -= 500 - result += "D" - elif n - 400 >= 0: - n -= 400 - result += "CD" - elif n - 100 >= 0: - n -= 100 - result += "C" - elif n - 90 >= 0: - n -= 90 - result += "XC" - elif n - 50 >= 0: - n -= 50 - result += "L" - elif n - 40 >= 0: - n -= 40 - result += "XL" - elif n - 10 >= 0: - n -= 10 - result += "X" - elif n - 9 >= 0: - n -= 9 - result += "IX" - elif n - 5 >= 0: - n -= 5 - result += "V" - elif n - 4 >= 0: - n -= 4 - result += "IV" - elif n - 1 >= 0: - n -= 1 - result += "I" - return result - - -numbers = [] - -f = open('089.txt', 'r') -for line in f: - line = line.rstrip('\r\n') - numbers.append(line) -f.close() - -saved = 0 - -for number in numbers: - n = decode_roman(number) - m = minimal_roman(n) - saved += len(number) - len(m) - -print saved - diff --git a/src/projecteuler/089.txt b/src/projecteuler/089.txt deleted file mode 100644 index 721ab99..0000000 --- a/src/projecteuler/089.txt +++ /dev/null @@ -1,1000 +0,0 @@ -MMMMDCLXXII
-MMDCCCLXXXIII
-MMMDLXVIIII
-MMMMDXCV
-DCCCLXXII
-MMCCCVI
-MMMCDLXXXVII
-MMMMCCXXI
-MMMCCXX
-MMMMDCCCLXXIII
-MMMCCXXXVII
-MMCCCLXXXXIX
-MDCCCXXIIII
-MMCXCVI
-CCXCVIII
-MMMCCCXXXII
-MDCCXXX
-MMMDCCCL
-MMMMCCLXXXVI
-MMDCCCXCVI
-MMMDCII
-MMMCCXII
-MMMMDCCCCI
-MMDCCCXCII
-MDCXX
-CMLXXXVII
-MMMXXI
-MMMMCCCXIV
-MLXXII
-MCCLXXVIIII
-MMMMCCXXXXI
-MMDCCCLXXII
-MMMMXXXI
-MMMDCCLXXX
-MMDCCCLXXIX
-MMMMLXXXV
-MCXXI
-MDCCCXXXVII
-MMCCCLXVII
-MCDXXXV
-CCXXXIII
-CMXX
-MMMCLXIV
-MCCCLXXXVI
-DCCCXCVIII
-MMMDCCCCXXXIV
-CDXVIIII
-MMCCXXXV
-MDCCCXXXII
-MMMMD
-MMDCCLXIX
-MMMMCCCLXXXXVI
-MMDCCXLII
-MMMDCCCVIIII
-DCCLXXXIIII
-MDCCCCXXXII
-MMCXXVII
-DCCCXXX
-CCLXIX
-MMMXI
-MMMMCMLXXXXVIII
-MMMMDLXXXVII
-MMMMDCCCLX
-MMCCLIV
-CMIX
-MMDCCCLXXXIIII
-CLXXXII
-MMCCCCXXXXV
-MMMMDLXXXVIIII
-MMMDCCCXXI
-MMDCCCCLXXVI
-MCCCCLXX
-MMCDLVIIII
-MMMDCCCLIX
-MMMMCCCCXIX
-MMMDCCCLXXV
-XXXI
-CDLXXXIII
-MMMCXV
-MMDCCLXIII
-MMDXXX
-MMMMCCCLVII
-MMMDCI
-MMMMCDLXXXIIII
-MMMMCCCXVI
-CCCLXXXVIII
-MMMMCML
-MMMMXXIV
-MMMCCCCXXX
-DCCX
-MMMCCLX
-MMDXXXIII
-CCCLXIII
-MMDCCXIII
-MMMCCCXLIV
-CLXXXXI
-CXVI
-MMMMCXXXIII
-CLXX
-DCCCXVIII
-MLXVII
-DLXXXX
-MMDXXI
-MMMMDLXXXXVIII
-MXXII
-LXI
-DCCCCXLIII
-MMMMDV
-MMMMXXXIV
-MDCCCLVIII
-MMMCCLXXII
-MMMMDCCXXXVI
-MMMMLXXXIX
-MDCCCLXXXI
-MMMMDCCCXV
-MMMMCCCCXI
-MMMMCCCLIII
-MDCCCLXXI
-MMCCCCXI
-MLXV
-MMCDLXII
-MMMMDXXXXII
-MMMMDCCCXL
-MMMMCMLVI
-CCLXXXIV
-MMMDCCLXXXVI
-MMCLII
-MMMCCCCXV
-MMLXXXIII
-MMMV
-MMMV
-DCCLXII
-MMDCCCCXVI
-MMDCXLVIII
-CCLIIII
-CCCXXV
-MMDCCLXXXVIIII
-MMMMDCLXXVIII
-MMMMDCCCXCI
-MMMMCCCXX
-MMCCXLV
-MMMDCCCLXIX
-MMCCLXIIII
-MMMDCCCXLIX
-MMMMCCCLXIX
-CMLXXXXI
-MCMLXXXIX
-MMCDLXI
-MMDCLXXVIII
-MMMMDCCLXI
-MCDXXV
-DL
-CCCLXXII
-MXVIIII
-MCCCCLXVIII
-CIII
-MMMDCCLXXIIII
-MMMDVIII
-MMMMCCCLXXXXVII
-MMDXXVII
-MMDCCLXXXXV
-MMMMCXLVI
-MMMDCCLXXXII
-MMMDXXXVI
-MCXXII
-CLI
-DCLXXXIX
-MMMCLI
-MDCLXIII
-MMMMDCCXCVII
-MMCCCLXXXV
-MMMDCXXVIII
-MMMCDLX
-MMMCMLII
-MMMIV
-MMMMDCCCLVIII
-MMMDLXXXVIII
-MCXXIV
-MMMMLXXVI
-CLXXIX
-MMMCCCCXXVIIII
-DCCLXXXV
-MMMDCCCVI
-LI
-CLXXXVI
-MMMMCCCLXXVI
-MCCCLXVI
-CCXXXIX
-MMDXXXXI
-MMDCCCXLI
-DCCCLXXXVIII
-MMMMDCCCIV
-MDCCCCXV
-MMCMVI
-MMMMCMLXXXXV
-MMDCCLVI
-MMMMCCXLVIII
-DCCCCIIII
-MMCCCCIII
-MMMDCCLXXXVIIII
-MDCCCLXXXXV
-DVII
-MMMV
-DCXXV
-MMDCCCXCV
-DCVIII
-MMCDLXVI
-MCXXVIII
-MDCCXCVIII
-MMDCLX
-MMMDCCLXIV
-MMCDLXXVII
-MMDLXXXIIII
-MMMMCCCXXII
-MMMDCCCXLIIII
-DCCCCLXVII
-MMMCLXXXXIII
-MCCXV
-MMMMDCXI
-MMMMDCLXXXXV
-MMMCCCLII
-MMCMIX
-MMDCCXXV
-MMDLXXXVI
-MMMMDCXXVIIII
-DCCCCXXXVIIII
-MMCCXXXIIII
-MMDCCLXXVIII
-MDCCLXVIIII
-MMCCLXXXV
-MMMMDCCCLXXXVIII
-MMCMXCI
-MDXLII
-MMMMDCCXIV
-MMMMLI
-DXXXXIII
-MMDCCXI
-MMMMCCLXXXIII
-MMMDCCCLXXIII
-MDCLVII
-MMCD
-MCCCXXVII
-MMMMDCCIIII
-MMMDCCXLVI
-MMMCLXXXVII
-MMMCCVIIII
-MCCCCLXXIX
-DL
-DCCCLXXVI
-MMDXCI
-MMMMDCCCCXXXVI
-MMCII
-MMMDCCCXXXXV
-MMMCDXLV
-MMDCXXXXIV
-MMD
-MDCCCLXXXX
-MMDCXLIII
-MMCCXXXII
-MMDCXXXXVIIII
-DCCCLXXI
-MDXCVIIII
-MMMMCCLXXVIII
-MDCLVIIII
-MMMCCCLXXXIX
-MDCLXXXV
-MDLVIII
-MMMMCCVII
-MMMMDCXIV
-MMMCCCLXIIII
-MMIIII
-MMMMCCCLXXIII
-CCIII
-MMMCCLV
-MMMDXIII
-MMMCCCXC
-MMMDCCCXXI
-MMMMCCCCXXXII
-CCCLVI
-MMMCCCLXXXVI
-MXVIIII
-MMMCCCCXIIII
-CLXVII
-MMMCCLXX
-CCCCLXIV
-MMXXXXII
-MMMMCCLXXXX
-MXL
-CCXVI
-CCCCLVIIII
-MMCCCII
-MCCCLVIII
-MMMMCCCX
-MCDLXXXXIV
-MDCCCXIII
-MMDCCCXL
-MMMMCCCXXIII
-DXXXIV
-CVI
-MMMMDCLXXX
-DCCCVII
-MMCMLXIIII
-MMMDCCCXXXIII
-DCCC
-MDIII
-MMCCCLXVI
-MMMCCCCLXXI
-MMDCCCCXVIII
-CCXXXVII
-CCCXXV
-MDCCCXII
-MMMCMV
-MMMMCMXV
-MMMMDCXCI
-DXXI
-MMCCXLVIIII
-MMMMCMLII
-MDLXXX
-MMDCLXVI
-CXXI
-MMMDCCCLIIII
-MMMCXXI
-MCCIII
-MMDCXXXXI
-CCXCII
-MMMMDXXXV
-MMMCCCLXV
-MMMMDLXV
-MMMCCCCXXXII
-MMMCCCVIII
-DCCCCLXXXXII
-MMCLXIV
-MMMMCXI
-MLXXXXVII
-MMMCDXXXVIII
-MDXXII
-MLV
-MMMMDLXVI
-MMMCXII
-XXXIII
-MMMMDCCCXXVI
-MMMLXVIIII
-MMMLX
-MMMCDLXVII
-MDCCCLVII
-MMCXXXVII
-MDCCCCXXX
-MMDCCCLXIII
-MMMMDCXLIX
-MMMMCMXLVIII
-DCCCLXXVIIII
-MDCCCLIII
-MMMCMLXI
-MMMMCCLXI
-MMDCCCLIII
-MMMDCCCVI
-MMDXXXXIX
-MMCLXXXXV
-MMDXXX
-MMMXIII
-DCLXXIX
-DCCLXII
-MMMMDCCLXVIII
-MDCCXXXXIII
-CCXXXII
-MMMMDCXXV
-MMMCCCXXVIII
-MDCVIII
-MMMCLXXXXIIII
-CLXXXI
-MDCCCCXXXIII
-MMMMDCXXX
-MMMDCXXIV
-MMMCCXXXVII
-MCCCXXXXIIII
-CXVIII
-MMDCCCCIV
-MMMMCDLXXV
-MMMDLXIV
-MDXCIII
-MCCLXXXI
-MMMDCCCXXIV
-MCXLIII
-MMMDCCCI
-MCCLXXX
-CCXV
-MMDCCLXXI
-MMDLXXXIII
-MMMMDCXVII
-MMMCMLXV
-MCLXVIII
-MMMMCCLXXVI
-MMMDCCLXVIIII
-MMMMDCCCIX
-DLXXXXIX
-DCCCXXII
-MMMMIII
-MMMMCCCLXXVI
-DCCCXCIII
-DXXXI
-MXXXIIII
-CCXII
-MMMDCCLXXXIIII
-MMMCXX
-MMMCMXXVII
-DCCCXXXX
-MMCDXXXVIIII
-MMMMDCCXVIII
-LV
-MMMDCCCCVI
-MCCCII
-MMCMLXVIIII
-MDCCXI
-MMMMDLXVII
-MMCCCCLXI
-MMDCCV
-MMMCCCXXXIIII
-MMMMDI
-MMMDCCCXCV
-MMDCCLXXXXI
-MMMDXXVI
-MMMDCCCLVI
-MMDCXXX
-MCCCVII
-MMMMCCCLXII
-MMMMXXV
-MMCMXXV
-MMLVI
-MMDXXX
-MMMMCVII
-MDC
-MCCIII
-MMMMDCC
-MMCCLXXV
-MMDCCCXXXXVI
-MMMMCCCLXV
-CDXIIII
-MLXIIII
-CCV
-MMMCMXXXI
-CCCCLXVI
-MDXXXII
-MMMMCCCLVIII
-MMV
-MMMCLII
-MCMLI
-MMDCCXX
-MMMMCCCCXXXVI
-MCCLXXXI
-MMMCMVI
-DCCXXX
-MMMMCCCLXV
-DCCCXI
-MMMMDCCCXIV
-CCCXXI
-MMDLXXV
-CCCCLXXXX
-MCCCLXXXXII
-MMDCIX
-DCCXLIIII
-DXIV
-MMMMCLII
-CDLXI
-MMMCXXVII
-MMMMDCCCCLXIII
-MMMDCLIIII
-MCCCCXXXXII
-MMCCCLX
-CCCCLIII
-MDCCLXXVI
-MCMXXIII
-MMMMDLXXVIII
-MMDCCCCLX
-MMMCCCLXXXX
-MMMCDXXVI
-MMMDLVIII
-CCCLXI
-MMMMDCXXII
-MMDCCCXXI
-MMDCCXIII
-MMMMCLXXXVI
-MDCCCCXXVI
-MDV
-MMDCCCCLXXVI
-MMMMCCXXXVII
-MMMDCCLXXVIIII
-MMMCCCCLXVII
-DCCXLI
-MMCLXXXVIII
-MCCXXXVI
-MMDCXLVIII
-MMMMCXXXII
-MMMMDCCLXVI
-MMMMCMLI
-MMMMCLXV
-MMMMDCCCXCIV
-MCCLXXVII
-LXXVIIII
-DCCLII
-MMMCCCXCVI
-MMMCLV
-MMDCCCXXXXVIII
-DCCCXV
-MXC
-MMDCCLXXXXVII
-MMMMCML
-MMDCCCLXXVIII
-DXXI
-MCCCXLI
-DCLXXXXI
-MMCCCLXXXXVIII
-MDCCCCLXXVIII
-MMMMDXXV
-MMMDCXXXVI
-MMMCMXCVII
-MMXVIIII
-MMMDCCLXXIV
-MMMCXXV
-DXXXVIII
-MMMMCLXVI
-MDXII
-MMCCCLXX
-CCLXXI
-DXIV
-MMMCLIII
-DLII
-MMMCCCXLIX
-MMCCCCXXVI
-MMDCXLIII
-MXXXXII
-CCCLXXXV
-MDCLXXVI
-MDCXII
-MMMCCCLXXXIII
-MMDCCCCLXXXII
-MMMMCCCLXXXV
-MMDCXXI
-DCCCXXX
-MMMDCCCCLII
-MMMDCCXXII
-MMMMCDXCVIII
-MMMCCLXVIIII
-MMXXV
-MMMMCDXIX
-MMMMCCCX
-MMMCCCCLXVI
-MMMMDCLXXVIIII
-MMMMDCXXXXIV
-MMMCMXII
-MMMMXXXIII
-MMMMDLXXXII
-DCCCLIV
-MDXVIIII
-MMMCLXXXXV
-CCCCXX
-MMDIX
-MMCMLXXXVIII
-DCCXLIII
-DCCLX
-D
-MCCCVII
-MMMMCCCLXXXIII
-MDCCCLXXIIII
-MMMDCCCCLXXXVII
-MMMMCCCVII
-MMMDCCLXXXXVI
-CDXXXIV
-MCCLXVIII
-MMMMDLX
-MMMMDXII
-MMMMCCCCLIIII
-MCMLXXXXIII
-MMMMDCCCIII
-MMDCLXXXIII
-MDCCCXXXXIV
-XXXXVII
-MMMDCCCXXXII
-MMMDCCCXLII
-MCXXXV
-MDCXXVIIII
-MMMCXXXXIIII
-MMMMCDXVII
-MMMDXXIII
-MMMMCCCCLXI
-DCLXXXXVIIII
-LXXXXI
-CXXXIII
-MCDX
-MCCLVII
-MDCXXXXII
-MMMCXXIV
-MMMMLXXXX
-MMDCCCCXLV
-MLXXX
-MMDCCCCLX
-MCDLIII
-MMMCCCLXVII
-MMMMCCCLXXIV
-MMMDCVIII
-DCCCCXXIII
-MMXCI
-MMDCCIV
-MMMMDCCCXXXIV
-CCCLXXI
-MCCLXXXII
-MCMIII
-CCXXXI
-DCCXXXVIII
-MMMMDCCXLVIIII
-MMMMCMXXXV
-DCCCLXXV
-DCCXCI
-MMMMDVII
-MMMMDCCCLXVIIII
-CCCXCV
-MMMMDCCXX
-MCCCCII
-MMMCCCXC
-MMMCCCII
-MMDCCLXXVII
-MMDCLIIII
-CCXLIII
-MMMDCXVIII
-MMMCCCIX
-MCXV
-MMCCXXV
-MLXXIIII
-MDCCXXVI
-MMMCCCXX
-MMDLXX
-MMCCCCVI
-MMDCCXX
-MMMMDCCCCXCV
-MDCCCXXXII
-MMMMDCCCCXXXX
-XCIV
-MMCCCCLX
-MMXVII
-MLXXI
-MMMDXXVIII
-MDCCCCII
-MMMCMLVII
-MMCLXXXXVIII
-MDCCCCLV
-MCCCCLXXIIII
-MCCCLII
-MCDXLVI
-MMMMDXVIII
-DCCLXXXIX
-MMMDCCLXIV
-MDCCCCXLIII
-CLXXXXV
-MMMMCCXXXVI
-MMMDCCCXXI
-MMMMCDLXXVII
-MCDLIII
-MMCCXLVI
-DCCCLV
-MCDLXX
-DCLXXVIII
-MMDCXXXIX
-MMMMDCLX
-MMDCCLI
-MMCXXXV
-MMMCCXII
-MMMMCMLXII
-MMMMCCV
-MCCCCLXIX
-MMMMCCIII
-CLXVII
-MCCCLXXXXIIII
-MMMMDCVIII
-MMDCCCLXI
-MMLXXIX
-CMLXIX
-MMDCCCXLVIIII
-DCLXII
-MMMCCCXLVII
-MDCCCXXXV
-MMMMDCCXCVI
-DCXXX
-XXVI
-MMLXIX
-MMCXI
-DCXXXVII
-MMMMCCCXXXXVIII
-MMMMDCLXI
-MMMMDCLXXIIII
-MMMMVIII
-MMMMDCCCLXII
-MDCXCI
-MMCCCXXIIII
-CCCCXXXXV
-MMDCCCXXI
-MCVI
-MMDCCLXVIII
-MMMMCXL
-MLXVIII
-CMXXVII
-CCCLV
-MDCCLXXXIX
-MMMCCCCLXV
-MMDCCLXII
-MDLXVI
-MMMCCCXVIII
-MMMMCCLXXXI
-MMCXXVII
-MMDCCCLXVIII
-MMMCXCII
-MMMMDCLVIII
-MMMMDCCCXXXXII
-MMDCCCCLXXXXVI
-MDCCXL
-MDCCLVII
-MMMMDCCCLXXXVI
-DCCXXXIII
-MMMMDCCCCLXXXV
-MMCCXXXXVIII
-MMMCCLXXVIII
-MMMDCLXXVIII
-DCCCI
-MMMMLXXXXVIIII
-MMMCCCCLXXII
-MMCLXXXVII
-CCLXVI
-MCDXLIII
-MMCXXVIII
-MDXIV
-CCCXCVIII
-CLXXVIII
-MMCXXXXVIIII
-MMMDCLXXXIV
-CMLVIII
-MCDLIX
-MMMMDCCCXXXII
-MMMMDCXXXIIII
-MDCXXI
-MMMDCXLV
-MCLXXVIII
-MCDXXII
-IV
-MCDLXXXXIII
-MMMMDCCLXV
-CCLI
-MMMMDCCCXXXVIII
-DCLXII
-MCCCLXVII
-MMMMDCCCXXXVI
-MMDCCXLI
-MLXI
-MMMCDLXVIII
-MCCCCXCIII
-XXXIII
-MMMDCLXIII
-MMMMDCL
-DCCCXXXXIIII
-MMDLVII
-DXXXVII
-MCCCCXXIIII
-MCVII
-MMMMDCCXL
-MMMMCXXXXIIII
-MCCCCXXIV
-MMCLXVIII
-MMXCIII
-MDCCLXXX
-MCCCLIIII
-MMDCLXXI
-MXI
-MCMLIV
-MMMCCIIII
-DCCLXXXVIIII
-MDCLIV
-MMMDCXIX
-CMLXXXI
-DCCLXXXVII
-XXV
-MMMXXXVI
-MDVIIII
-CLXIII
-MMMCDLVIIII
-MMCCCCVII
-MMMLXX
-MXXXXII
-MMMMCCCLXVIII
-MMDCCCXXVIII
-MMMMDCXXXXI
-MMMMDCCCXXXXV
-MMMXV
-MMMMCCXVIIII
-MMDCCXIIII
-MMMXXVII
-MDCCLVIIII
-MMCXXIIII
-MCCCLXXIV
-DCLVIII
-MMMLVII
-MMMCXLV
-MMXCVII
-MMMCCCLXXXVII
-MMMMCCXXII
-DXII
-MMMDLV
-MCCCLXXVIII
-MMMCLIIII
-MMMMCLXXXX
-MMMCLXXXIIII
-MDCXXIII
-MMMMCCXVI
-MMMMDLXXXIII
-MMMDXXXXIII
-MMMMCCCCLV
-MMMDLXXXI
-MMMCCLXXVI
-MMMMXX
-MMMMDLVI
-MCCCCLXXX
-MMMXXII
-MMXXII
-MMDCCCCXXXI
-MMMDXXV
-MMMDCLXXXVIIII
-MMMDLXXXXVII
-MDLXIIII
-CMXC
-MMMXXXVIII
-MDLXXXVIII
-MCCCLXXVI
-MMCDLIX
-MMDCCCXVIII
-MDCCCXXXXVI
-MMMMCMIV
-MMMMDCIIII
-MMCCXXXV
-XXXXVI
-MMMMCCXVII
-MMCCXXIV
-MCMLVIIII
-MLXXXIX
-MMMMLXXXIX
-CLXXXXIX
-MMMDCCCCLVIII
-MMMMCCLXXIII
-MCCCC
-DCCCLIX
-MMMCCCLXXXII
-MMMCCLXVIIII
-MCLXXXV
-CDLXXXVII
-DCVI
-MMX
-MMCCXIII
-MMMMDCXX
-MMMMXXVIII
-DCCCLXII
-MMMMCCCXLIII
-MMMMCLXV
-DXCI
-MMMMCLXXX
-MMMDCCXXXXI
-MMMMXXXXVI
-DCLX
-MMMCCCXI
-MCCLXXX
-MMCDLXXII
-DCCLXXI
-MMMCCCXXXVI
-MCCCCLXXXVIIII
-CDLVIII
-DCCLVI
-MMMMDCXXXVIII
-MMCCCLXXXIII
-MMMMDCCLXXV
-MMMXXXVI
-CCCLXXXXIX
-CV
-CCCCXIII
-CCCCXVI
-MDCCCLXXXIIII
-MMDCCLXXXII
-MMMMCCCCLXXXI
-MXXV
-MMCCCLXXVIIII
-MMMCCXII
-MMMMCCXXXIII
-MMCCCLXXXVI
-MMMDCCCLVIIII
-MCCXXXVII
-MDCLXXV
-XXXV
-MMDLI
-MMMCCXXX
-MMMMCXXXXV
-CCCCLIX
-MMMMDCCCLXXIII
-MMCCCXVII
-DCCCXVI
-MMMCCCXXXXV
-MDCCCCXCV
-CLXXXI
-MMMMDCCLXX
-MMMDCCCIII
-MMCLXXVII
-MMMDCCXXIX
-MMDCCCXCIIII
-MMMCDXXIIII
-MMMMXXVIII
-MMMMDCCCCLXVIII
-MDCCCXX
-MMMMCDXXI
-MMMMDLXXXIX
-CCXVI
-MDVIII
-MMCCLXXI
-MMMDCCCLXXI
-MMMCCCLXXVI
-MMCCLXI
-MMMMDCCCXXXIV
-DLXXXVI
-MMMMDXXXII
-MMMXXIIII
-MMMMCDIV
-MMMMCCCXLVIII
-MMMMCXXXVIII
-MMMCCCLXVI
-MDCCXVIII
-MMCXX
-CCCLIX
-MMMMDCCLXXII
-MDCCCLXXV
-MMMMDCCCXXIV
-DCCCXXXXVIII
-MMMDCCCCXXXVIIII
-MMMMCCXXXV
-MDCLXXXIII
-MMCCLXXXIV
-MCLXXXXIIII
-DXXXXIII
-MCCCXXXXVIII
-MMCLXXIX
-MMMMCCLXIV
-MXXII
-MMMCXIX
-MDCXXXVII
-MMDCCVI
-MCLXXXXVIII
-MMMCXVI
-MCCCLX
-MMMCDX
-CCLXVIIII
-MMMCCLX
-MCXXVIII
-LXXXII
-MCCCCLXXXI
-MMMI
-MMMCCCLXIV
-MMMCCCXXVIIII
-CXXXVIII
-MMCCCXX
-MMMCCXXVIIII
-MCCLXVI
-MMMCCCCXXXXVI
-MMDCCXCIX
-MCMLXXI
-MMCCLXVIII
-CDLXXXXIII
-MMMMDCCXXII
-MMMMDCCLXXXVII
-MMMDCCLIV
-MMCCLXIII
-MDXXXVII
-DCCXXXIIII
-MCII
-MMMDCCCLXXI
-MMMLXXIII
-MDCCCLIII
-MMXXXVIII
-MDCCXVIIII
-MDCCCCXXXVII
-MMCCCXVI
-MCMXXII
-MMMCCCLVIII
-MMMMDCCCXX
-MCXXIII
-MMMDLXI
-MMMMDXXII
-MDCCCX
-MMDXCVIIII
-MMMDCCCCVIII
-MMMMDCCCCXXXXVI
-MMDCCCXXXV
-MMCXCIV
-MCMLXXXXIII
-MMMCCCLXXVI
-MMMMDCLXXXV
-CMLXIX
-DCXCII
-MMXXVIII
-MMMMCCCXXX
-XXXXVIIII
\ No newline at end of file diff --git a/src/projecteuler/092.c b/src/projecteuler/092.c deleted file mode 100644 index 8616cf8..0000000 --- a/src/projecteuler/092.c +++ /dev/null @@ -1,45 +0,0 @@ - - -const int limit = 10000000; - -const int squares[10] = { 0, 1, 4, 9, 16, 25, 36, 49, 64, 81 }; - -int next_chain(int number) -{ - int sum = 0; - int digit; - while(number > 0) - { - digit = number % 10; - number = number / 10; - sum += squares[digit]; - } - return sum; -} - -int main() -{ - int* numbers = calloc(limit, sizeof(int)); - int i, count; - - for(i=0; i<limit; i++) - numbers[i] = next_chain(i); - - count = 0; - - for(i=1; i<limit; i++) - { - int next = numbers[i]; - while(next != 1 && next != 89) - next = numbers[next]; - - numbers[i] = next; - if(next == 89) - count++; - } - - printf("%d\n", count); - - return 0; -} - diff --git a/src/projecteuler/096.pl b/src/projecteuler/096.pl deleted file mode 100644 index 2658358..0000000 --- a/src/projecteuler/096.pl +++ /dev/null @@ -1,173 +0,0 @@ -#!/usr/bin//perl - -use strict; -use warnings; -use List::Util qw(any); - -sub remove_numbers { - my $numbers = shift; - my $to_rem = shift; - - foreach my $n (keys %$to_rem) { - delete $numbers->{$n}; - } -} - -sub numbers_in_row { - my $field = shift; - my $row = shift; - my $numbers = {}; - - for(my $i=0; $i<9; $i++) { - my $number = $field->[9*$row + $i]; - $numbers->{$number} = 1 if $number; - } - - return $numbers; -} - -sub numbers_in_col { - my $field = shift; - my $col = shift; - my $numbers = {}; - - for(my $i=0; $i<9; $i++) { - my $number = $field->[9*$i + $col]; - $numbers->{$number} = 1 if $number; - } - - return $numbers; -} - -sub numbers_in_block { - my $field = shift; - my $block = shift; - my $numbers = {}; - - my $blk_row = int($block / 3); - my $blk_col = $block % 3; - - for(my $row=0; $row<3; $row++) { - for (my $col=0; $col<3; $col++) { - my $number = $field->[9*(3*$blk_row + $row) + (3*$blk_col + $col)]; - $numbers->{$number} = 1 if $number; - } - } - - return $numbers; -} - -sub collect_numbers { - my $field = shift; - - my $row_n = []; - my $col_n = []; - my $blk_n = []; - - for(my $i=0; $i<9; $i++) { - $row_n->[$i] = numbers_in_row($field, $i); - } - for(my $i=0; $i<9; $i++) { - $col_n->[$i] = numbers_in_col($field, $i); - } - for(my $i=0; $i<9; $i++) { - $blk_n->[$i] = numbers_in_block($field, $i); - } - - return ($row_n, $col_n, $blk_n); -} - -sub print_field { - my $field = shift || return; - - for(my $i=0; $i<9; $i++) { - for(my $j=0; $j<9; $j++) { - print $field->[9*$i + $j] . " "; - } - print "\n"; - } - print "\n"; -} - -sub find_candidates { - my $field = shift; - my ($row_n, $col_n, $blk_n) = collect_numbers($field); - -restart: - my $candidates = {}; - for(my $row=0; $row<9; $row++) { - for(my $col=0; $col<9; $col++) { - next if $field->[9*$row + $col]; - - my $blk = 3*int($row / 3) + int($col / 3); - my %numbers = map { $_ => 1 } 1..9; - remove_numbers(\%numbers, $row_n->[$row]); - remove_numbers(\%numbers, $col_n->[$col]); - remove_numbers(\%numbers, $blk_n->[$blk]); - - if (scalar keys %numbers == 1) { - # there is only one possibility -> restart search with updated field - my $n = (keys %numbers)[0]; - $field->[9*$row + $col] = $n; - $row_n->[$row]->{$n} = 1; - $col_n->[$col]->{$n} = 1; - $blk_n->[$blk]->{$n} = 1; - goto restart; - } elsif (scalar keys %numbers > 1) { - $candidates->{9*$row + $col} = [ sort keys %numbers ]; - } else { - # no candidate possible on this position - return; - } - } - } - return $candidates; -} - -sub solve { - my @field = @_; - - my $candidates = find_candidates(\@field) || return; - - if (scalar keys %$candidates == 0) { - return \@field; - } - - my @field_copy = @field; - - # iterate remaining positions with multiple possibilities - foreach my $pos (sort { scalar @{$candidates->{$a}} <=> scalar @{$candidates->{$b}} } keys %$candidates) { - @field = @field_copy; - foreach my $cand (@{$candidates->{$pos}}) { - @field[$pos] = $cand; - my $solved_field = solve(@field); - return $solved_field if $solved_field; - } - return; - } -} - -sub main { - my $content; - open FILE, "<096.txt" or die "Can't open file: $!\n"; - while(<FILE>) { - $content .= $_; - } - close FILE; - - my @sudokus = split('\n?Grid [0-9]+\n', $content); - shift @sudokus; # remove empty first element - - my $sum = 0; - - foreach my $sudoku (@sudokus) { - my @field = split("\n?", $sudoku); - my $solution = solve(@field); - $sum += 100*$solution->[0] + 10*$solution->[1] + 1*$solution->[2] . "\n"; - } - - print $sum . "\n"; -} - -main(); - diff --git a/src/projecteuler/096.txt b/src/projecteuler/096.txt deleted file mode 100644 index be23f6a..0000000 --- a/src/projecteuler/096.txt +++ /dev/null @@ -1,500 +0,0 @@ -Grid 01 -003020600 -900305001 -001806400 -008102900 -700000008 -006708200 -002609500 -800203009 -005010300 -Grid 02 -200080300 -060070084 -030500209 -000105408 -000000000 -402706000 -301007040 -720040060 -004010003 -Grid 03 -000000907 -000420180 -000705026 -100904000 -050000040 -000507009 -920108000 -034059000 -507000000 -Grid 04 -030050040 -008010500 -460000012 -070502080 -000603000 -040109030 -250000098 -001020600 -080060020 -Grid 05 -020810740 -700003100 -090002805 -009040087 -400208003 -160030200 -302700060 -005600008 -076051090 -Grid 06 -100920000 -524010000 -000000070 -050008102 -000000000 -402700090 -060000000 -000030945 -000071006 -Grid 07 -043080250 -600000000 -000001094 -900004070 -000608000 -010200003 -820500000 -000000005 -034090710 -Grid 08 -480006902 -002008001 -900370060 -840010200 -003704100 -001060049 -020085007 -700900600 -609200018 -Grid 09 -000900002 -050123400 -030000160 -908000000 -070000090 -000000205 -091000050 -007439020 -400007000 -Grid 10 -001900003 -900700160 -030005007 -050000009 -004302600 -200000070 -600100030 -042007006 -500006800 -Grid 11 -000125400 -008400000 -420800000 -030000095 -060902010 -510000060 -000003049 -000007200 -001298000 -Grid 12 -062340750 -100005600 -570000040 -000094800 -400000006 -005830000 -030000091 -006400007 -059083260 -Grid 13 -300000000 -005009000 -200504000 -020000700 -160000058 -704310600 -000890100 -000067080 -000005437 -Grid 14 -630000000 -000500008 -005674000 -000020000 -003401020 -000000345 -000007004 -080300902 -947100080 -Grid 15 -000020040 -008035000 -000070602 -031046970 -200000000 -000501203 -049000730 -000000010 -800004000 -Grid 16 -361025900 -080960010 -400000057 -008000471 -000603000 -259000800 -740000005 -020018060 -005470329 -Grid 17 -050807020 -600010090 -702540006 -070020301 -504000908 -103080070 -900076205 -060090003 -080103040 -Grid 18 -080005000 -000003457 -000070809 -060400903 -007010500 -408007020 -901020000 -842300000 -000100080 -Grid 19 -003502900 -000040000 -106000305 -900251008 -070408030 -800763001 -308000104 -000020000 -005104800 -Grid 20 -000000000 -009805100 -051907420 -290401065 -000000000 -140508093 -026709580 -005103600 -000000000 -Grid 21 -020030090 -000907000 -900208005 -004806500 -607000208 -003102900 -800605007 -000309000 -030020050 -Grid 22 -005000006 -070009020 -000500107 -804150000 -000803000 -000092805 -907006000 -030400010 -200000600 -Grid 23 -040000050 -001943600 -009000300 -600050002 -103000506 -800020007 -005000200 -002436700 -030000040 -Grid 24 -004000000 -000030002 -390700080 -400009001 -209801307 -600200008 -010008053 -900040000 -000000800 -Grid 25 -360020089 -000361000 -000000000 -803000602 -400603007 -607000108 -000000000 -000418000 -970030014 -Grid 26 -500400060 -009000800 -640020000 -000001008 -208000501 -700500000 -000090084 -003000600 -060003002 -Grid 27 -007256400 -400000005 -010030060 -000508000 -008060200 -000107000 -030070090 -200000004 -006312700 -Grid 28 -000000000 -079050180 -800000007 -007306800 -450708096 -003502700 -700000005 -016030420 -000000000 -Grid 29 -030000080 -009000500 -007509200 -700105008 -020090030 -900402001 -004207100 -002000800 -070000090 -Grid 30 -200170603 -050000100 -000006079 -000040700 -000801000 -009050000 -310400000 -005000060 -906037002 -Grid 31 -000000080 -800701040 -040020030 -374000900 -000030000 -005000321 -010060050 -050802006 -080000000 -Grid 32 -000000085 -000210009 -960080100 -500800016 -000000000 -890006007 -009070052 -300054000 -480000000 -Grid 33 -608070502 -050608070 -002000300 -500090006 -040302050 -800050003 -005000200 -010704090 -409060701 -Grid 34 -050010040 -107000602 -000905000 -208030501 -040070020 -901080406 -000401000 -304000709 -020060010 -Grid 35 -053000790 -009753400 -100000002 -090080010 -000907000 -080030070 -500000003 -007641200 -061000940 -Grid 36 -006080300 -049070250 -000405000 -600317004 -007000800 -100826009 -000702000 -075040190 -003090600 -Grid 37 -005080700 -700204005 -320000084 -060105040 -008000500 -070803010 -450000091 -600508007 -003010600 -Grid 38 -000900800 -128006400 -070800060 -800430007 -500000009 -600079008 -090004010 -003600284 -001007000 -Grid 39 -000080000 -270000054 -095000810 -009806400 -020403060 -006905100 -017000620 -460000038 -000090000 -Grid 40 -000602000 -400050001 -085010620 -038206710 -000000000 -019407350 -026040530 -900020007 -000809000 -Grid 41 -000900002 -050123400 -030000160 -908000000 -070000090 -000000205 -091000050 -007439020 -400007000 -Grid 42 -380000000 -000400785 -009020300 -060090000 -800302009 -000040070 -001070500 -495006000 -000000092 -Grid 43 -000158000 -002060800 -030000040 -027030510 -000000000 -046080790 -050000080 -004070100 -000325000 -Grid 44 -010500200 -900001000 -002008030 -500030007 -008000500 -600080004 -040100700 -000700006 -003004050 -Grid 45 -080000040 -000469000 -400000007 -005904600 -070608030 -008502100 -900000005 -000781000 -060000010 -Grid 46 -904200007 -010000000 -000706500 -000800090 -020904060 -040002000 -001607000 -000000030 -300005702 -Grid 47 -000700800 -006000031 -040002000 -024070000 -010030080 -000060290 -000800070 -860000500 -002006000 -Grid 48 -001007090 -590080001 -030000080 -000005800 -050060020 -004100000 -080000030 -100020079 -020700400 -Grid 49 -000003017 -015009008 -060000000 -100007000 -009000200 -000500004 -000000020 -500600340 -340200000 -Grid 50 -300200000 -000107000 -706030500 -070009080 -900020004 -010800050 -009040301 -000702000 -000008006
\ No newline at end of file diff --git a/src/projecteuler/097.py b/src/projecteuler/097.py deleted file mode 100644 index ec263b0..0000000 --- a/src/projecteuler/097.py +++ /dev/null @@ -1 +0,0 @@ -print (28433*(1<<7830457)+1) % 10**10 diff --git a/src/projecteuler/098.py b/src/projecteuler/098.py deleted file mode 100644 index 452e15e..0000000 --- a/src/projecteuler/098.py +++ /dev/null @@ -1,77 +0,0 @@ -from math import sqrt, ceil - -# is x anagram of y? -def anagram(x, y): - x2 = [c for c in x] - y2 = [c for c in y] - x2.sort() - y2.sort() - return x2 == y2 - - -# returns replacement list -def replacement(word, number): - digits = [False] * 10 - for char in word[::-1]: - digit = number % 10 - number /= 10 - - if char in digits and digits[digit] != char: - return None - - if digits[digit] == False: - digits[digit] = char - elif digits[digit] != char: - return None - return digits - - -# find numbers matching the specified word in descending order -def match(word, numbers): - result = [] - for n in numbers: - digits = replacement(word, n) - if digits != None: - result.append(n) - - result.sort(reverse=True) - return result - - -f = open('098.txt', 'r') -words = f.read() -f.close() - -maxlen = 14 - -words = set([ w.strip('"') for w in words.split(',') ]) -squares = [ [ x*x for x in xrange(int(ceil(sqrt(10**n)))-1, int(ceil(sqrt(10**(n-1))))-1, -1) ] for n in xrange(1, maxlen+1) ] - -maxsquare = 0 - -for l in xrange(1, maxlen+1): - cur = [ w for w in words if len(w) == l ] - - for word1 in cur: - for word2 in cur: - if word1 == word2 or word1 == word2[::-1] or not anagram(word1, word2): - continue - - m1 = match(word1, squares[l-1]) - m2 = match(word2, squares[l-1]) - - # compare result lists - for n1 in m1: - found = False - for n2 in m2: - if replacement(word1, n1) == replacement(word2, n2): - #print word1, word2, n1, n2 - if n1 > maxsquare: - maxsquare = n1 - found = True - break - if found: - break - -print maxsquare - diff --git a/src/projecteuler/098.txt b/src/projecteuler/098.txt deleted file mode 100644 index 7177624..0000000 --- a/src/projecteuler/098.txt +++ /dev/null @@ -1 +0,0 @@ -"A","ABILITY","ABLE","ABOUT","ABOVE","ABSENCE","ABSOLUTELY","ACADEMIC","ACCEPT","ACCESS","ACCIDENT","ACCOMPANY","ACCORDING","ACCOUNT","ACHIEVE","ACHIEVEMENT","ACID","ACQUIRE","ACROSS","ACT","ACTION","ACTIVE","ACTIVITY","ACTUAL","ACTUALLY","ADD","ADDITION","ADDITIONAL","ADDRESS","ADMINISTRATION","ADMIT","ADOPT","ADULT","ADVANCE","ADVANTAGE","ADVICE","ADVISE","AFFAIR","AFFECT","AFFORD","AFRAID","AFTER","AFTERNOON","AFTERWARDS","AGAIN","AGAINST","AGE","AGENCY","AGENT","AGO","AGREE","AGREEMENT","AHEAD","AID","AIM","AIR","AIRCRAFT","ALL","ALLOW","ALMOST","ALONE","ALONG","ALREADY","ALRIGHT","ALSO","ALTERNATIVE","ALTHOUGH","ALWAYS","AMONG","AMONGST","AMOUNT","AN","ANALYSIS","ANCIENT","AND","ANIMAL","ANNOUNCE","ANNUAL","ANOTHER","ANSWER","ANY","ANYBODY","ANYONE","ANYTHING","ANYWAY","APART","APPARENT","APPARENTLY","APPEAL","APPEAR","APPEARANCE","APPLICATION","APPLY","APPOINT","APPOINTMENT","APPROACH","APPROPRIATE","APPROVE","AREA","ARGUE","ARGUMENT","ARISE","ARM","ARMY","AROUND","ARRANGE","ARRANGEMENT","ARRIVE","ART","ARTICLE","ARTIST","AS","ASK","ASPECT","ASSEMBLY","ASSESS","ASSESSMENT","ASSET","ASSOCIATE","ASSOCIATION","ASSUME","ASSUMPTION","AT","ATMOSPHERE","ATTACH","ATTACK","ATTEMPT","ATTEND","ATTENTION","ATTITUDE","ATTRACT","ATTRACTIVE","AUDIENCE","AUTHOR","AUTHORITY","AVAILABLE","AVERAGE","AVOID","AWARD","AWARE","AWAY","AYE","BABY","BACK","BACKGROUND","BAD","BAG","BALANCE","BALL","BAND","BANK","BAR","BASE","BASIC","BASIS","BATTLE","BE","BEAR","BEAT","BEAUTIFUL","BECAUSE","BECOME","BED","BEDROOM","BEFORE","BEGIN","BEGINNING","BEHAVIOUR","BEHIND","BELIEF","BELIEVE","BELONG","BELOW","BENEATH","BENEFIT","BESIDE","BEST","BETTER","BETWEEN","BEYOND","BIG","BILL","BIND","BIRD","BIRTH","BIT","BLACK","BLOCK","BLOOD","BLOODY","BLOW","BLUE","BOARD","BOAT","BODY","BONE","BOOK","BORDER","BOTH","BOTTLE","BOTTOM","BOX","BOY","BRAIN","BRANCH","BREAK","BREATH","BRIDGE","BRIEF","BRIGHT","BRING","BROAD","BROTHER","BUDGET","BUILD","BUILDING","BURN","BUS","BUSINESS","BUSY","BUT","BUY","BY","CABINET","CALL","CAMPAIGN","CAN","CANDIDATE","CAPABLE","CAPACITY","CAPITAL","CAR","CARD","CARE","CAREER","CAREFUL","CAREFULLY","CARRY","CASE","CASH","CAT","CATCH","CATEGORY","CAUSE","CELL","CENTRAL","CENTRE","CENTURY","CERTAIN","CERTAINLY","CHAIN","CHAIR","CHAIRMAN","CHALLENGE","CHANCE","CHANGE","CHANNEL","CHAPTER","CHARACTER","CHARACTERISTIC","CHARGE","CHEAP","CHECK","CHEMICAL","CHIEF","CHILD","CHOICE","CHOOSE","CHURCH","CIRCLE","CIRCUMSTANCE","CITIZEN","CITY","CIVIL","CLAIM","CLASS","CLEAN","CLEAR","CLEARLY","CLIENT","CLIMB","CLOSE","CLOSELY","CLOTHES","CLUB","COAL","CODE","COFFEE","COLD","COLLEAGUE","COLLECT","COLLECTION","COLLEGE","COLOUR","COMBINATION","COMBINE","COME","COMMENT","COMMERCIAL","COMMISSION","COMMIT","COMMITMENT","COMMITTEE","COMMON","COMMUNICATION","COMMUNITY","COMPANY","COMPARE","COMPARISON","COMPETITION","COMPLETE","COMPLETELY","COMPLEX","COMPONENT","COMPUTER","CONCENTRATE","CONCENTRATION","CONCEPT","CONCERN","CONCERNED","CONCLUDE","CONCLUSION","CONDITION","CONDUCT","CONFERENCE","CONFIDENCE","CONFIRM","CONFLICT","CONGRESS","CONNECT","CONNECTION","CONSEQUENCE","CONSERVATIVE","CONSIDER","CONSIDERABLE","CONSIDERATION","CONSIST","CONSTANT","CONSTRUCTION","CONSUMER","CONTACT","CONTAIN","CONTENT","CONTEXT","CONTINUE","CONTRACT","CONTRAST","CONTRIBUTE","CONTRIBUTION","CONTROL","CONVENTION","CONVERSATION","COPY","CORNER","CORPORATE","CORRECT","COS","COST","COULD","COUNCIL","COUNT","COUNTRY","COUNTY","COUPLE","COURSE","COURT","COVER","CREATE","CREATION","CREDIT","CRIME","CRIMINAL","CRISIS","CRITERION","CRITICAL","CRITICISM","CROSS","CROWD","CRY","CULTURAL","CULTURE","CUP","CURRENT","CURRENTLY","CURRICULUM","CUSTOMER","CUT","DAMAGE","DANGER","DANGEROUS","DARK","DATA","DATE","DAUGHTER","DAY","DEAD","DEAL","DEATH","DEBATE","DEBT","DECADE","DECIDE","DECISION","DECLARE","DEEP","DEFENCE","DEFENDANT","DEFINE","DEFINITION","DEGREE","DELIVER","DEMAND","DEMOCRATIC","DEMONSTRATE","DENY","DEPARTMENT","DEPEND","DEPUTY","DERIVE","DESCRIBE","DESCRIPTION","DESIGN","DESIRE","DESK","DESPITE","DESTROY","DETAIL","DETAILED","DETERMINE","DEVELOP","DEVELOPMENT","DEVICE","DIE","DIFFERENCE","DIFFERENT","DIFFICULT","DIFFICULTY","DINNER","DIRECT","DIRECTION","DIRECTLY","DIRECTOR","DISAPPEAR","DISCIPLINE","DISCOVER","DISCUSS","DISCUSSION","DISEASE","DISPLAY","DISTANCE","DISTINCTION","DISTRIBUTION","DISTRICT","DIVIDE","DIVISION","DO","DOCTOR","DOCUMENT","DOG","DOMESTIC","DOOR","DOUBLE","DOUBT","DOWN","DRAW","DRAWING","DREAM","DRESS","DRINK","DRIVE","DRIVER","DROP","DRUG","DRY","DUE","DURING","DUTY","EACH","EAR","EARLY","EARN","EARTH","EASILY","EAST","EASY","EAT","ECONOMIC","ECONOMY","EDGE","EDITOR","EDUCATION","EDUCATIONAL","EFFECT","EFFECTIVE","EFFECTIVELY","EFFORT","EGG","EITHER","ELDERLY","ELECTION","ELEMENT","ELSE","ELSEWHERE","EMERGE","EMPHASIS","EMPLOY","EMPLOYEE","EMPLOYER","EMPLOYMENT","EMPTY","ENABLE","ENCOURAGE","END","ENEMY","ENERGY","ENGINE","ENGINEERING","ENJOY","ENOUGH","ENSURE","ENTER","ENTERPRISE","ENTIRE","ENTIRELY","ENTITLE","ENTRY","ENVIRONMENT","ENVIRONMENTAL","EQUAL","EQUALLY","EQUIPMENT","ERROR","ESCAPE","ESPECIALLY","ESSENTIAL","ESTABLISH","ESTABLISHMENT","ESTATE","ESTIMATE","EVEN","EVENING","EVENT","EVENTUALLY","EVER","EVERY","EVERYBODY","EVERYONE","EVERYTHING","EVIDENCE","EXACTLY","EXAMINATION","EXAMINE","EXAMPLE","EXCELLENT","EXCEPT","EXCHANGE","EXECUTIVE","EXERCISE","EXHIBITION","EXIST","EXISTENCE","EXISTING","EXPECT","EXPECTATION","EXPENDITURE","EXPENSE","EXPENSIVE","EXPERIENCE","EXPERIMENT","EXPERT","EXPLAIN","EXPLANATION","EXPLORE","EXPRESS","EXPRESSION","EXTEND","EXTENT","EXTERNAL","EXTRA","EXTREMELY","EYE","FACE","FACILITY","FACT","FACTOR","FACTORY","FAIL","FAILURE","FAIR","FAIRLY","FAITH","FALL","FAMILIAR","FAMILY","FAMOUS","FAR","FARM","FARMER","FASHION","FAST","FATHER","FAVOUR","FEAR","FEATURE","FEE","FEEL","FEELING","FEMALE","FEW","FIELD","FIGHT","FIGURE","FILE","FILL","FILM","FINAL","FINALLY","FINANCE","FINANCIAL","FIND","FINDING","FINE","FINGER","FINISH","FIRE","FIRM","FIRST","FISH","FIT","FIX","FLAT","FLIGHT","FLOOR","FLOW","FLOWER","FLY","FOCUS","FOLLOW","FOLLOWING","FOOD","FOOT","FOOTBALL","FOR","FORCE","FOREIGN","FOREST","FORGET","FORM","FORMAL","FORMER","FORWARD","FOUNDATION","FREE","FREEDOM","FREQUENTLY","FRESH","FRIEND","FROM","FRONT","FRUIT","FUEL","FULL","FULLY","FUNCTION","FUND","FUNNY","FURTHER","FUTURE","GAIN","GAME","GARDEN","GAS","GATE","GATHER","GENERAL","GENERALLY","GENERATE","GENERATION","GENTLEMAN","GET","GIRL","GIVE","GLASS","GO","GOAL","GOD","GOLD","GOOD","GOVERNMENT","GRANT","GREAT","GREEN","GREY","GROUND","GROUP","GROW","GROWING","GROWTH","GUEST","GUIDE","GUN","HAIR","HALF","HALL","HAND","HANDLE","HANG","HAPPEN","HAPPY","HARD","HARDLY","HATE","HAVE","HE","HEAD","HEALTH","HEAR","HEART","HEAT","HEAVY","HELL","HELP","HENCE","HER","HERE","HERSELF","HIDE","HIGH","HIGHLY","HILL","HIM","HIMSELF","HIS","HISTORICAL","HISTORY","HIT","HOLD","HOLE","HOLIDAY","HOME","HOPE","HORSE","HOSPITAL","HOT","HOTEL","HOUR","HOUSE","HOUSEHOLD","HOUSING","HOW","HOWEVER","HUGE","HUMAN","HURT","HUSBAND","I","IDEA","IDENTIFY","IF","IGNORE","ILLUSTRATE","IMAGE","IMAGINE","IMMEDIATE","IMMEDIATELY","IMPACT","IMPLICATION","IMPLY","IMPORTANCE","IMPORTANT","IMPOSE","IMPOSSIBLE","IMPRESSION","IMPROVE","IMPROVEMENT","IN","INCIDENT","INCLUDE","INCLUDING","INCOME","INCREASE","INCREASED","INCREASINGLY","INDEED","INDEPENDENT","INDEX","INDICATE","INDIVIDUAL","INDUSTRIAL","INDUSTRY","INFLUENCE","INFORM","INFORMATION","INITIAL","INITIATIVE","INJURY","INSIDE","INSIST","INSTANCE","INSTEAD","INSTITUTE","INSTITUTION","INSTRUCTION","INSTRUMENT","INSURANCE","INTEND","INTENTION","INTEREST","INTERESTED","INTERESTING","INTERNAL","INTERNATIONAL","INTERPRETATION","INTERVIEW","INTO","INTRODUCE","INTRODUCTION","INVESTIGATE","INVESTIGATION","INVESTMENT","INVITE","INVOLVE","IRON","IS","ISLAND","ISSUE","IT","ITEM","ITS","ITSELF","JOB","JOIN","JOINT","JOURNEY","JUDGE","JUMP","JUST","JUSTICE","KEEP","KEY","KID","KILL","KIND","KING","KITCHEN","KNEE","KNOW","KNOWLEDGE","LABOUR","LACK","LADY","LAND","LANGUAGE","LARGE","LARGELY","LAST","LATE","LATER","LATTER","LAUGH","LAUNCH","LAW","LAWYER","LAY","LEAD","LEADER","LEADERSHIP","LEADING","LEAF","LEAGUE","LEAN","LEARN","LEAST","LEAVE","LEFT","LEG","LEGAL","LEGISLATION","LENGTH","LESS","LET","LETTER","LEVEL","LIABILITY","LIBERAL","LIBRARY","LIE","LIFE","LIFT","LIGHT","LIKE","LIKELY","LIMIT","LIMITED","LINE","LINK","LIP","LIST","LISTEN","LITERATURE","LITTLE","LIVE","LIVING","LOAN","LOCAL","LOCATION","LONG","LOOK","LORD","LOSE","LOSS","LOT","LOVE","LOVELY","LOW","LUNCH","MACHINE","MAGAZINE","MAIN","MAINLY","MAINTAIN","MAJOR","MAJORITY","MAKE","MALE","MAN","MANAGE","MANAGEMENT","MANAGER","MANNER","MANY","MAP","MARK","MARKET","MARRIAGE","MARRIED","MARRY","MASS","MASTER","MATCH","MATERIAL","MATTER","MAY","MAYBE","ME","MEAL","MEAN","MEANING","MEANS","MEANWHILE","MEASURE","MECHANISM","MEDIA","MEDICAL","MEET","MEETING","MEMBER","MEMBERSHIP","MEMORY","MENTAL","MENTION","MERELY","MESSAGE","METAL","METHOD","MIDDLE","MIGHT","MILE","MILITARY","MILK","MIND","MINE","MINISTER","MINISTRY","MINUTE","MISS","MISTAKE","MODEL","MODERN","MODULE","MOMENT","MONEY","MONTH","MORE","MORNING","MOST","MOTHER","MOTION","MOTOR","MOUNTAIN","MOUTH","MOVE","MOVEMENT","MUCH","MURDER","MUSEUM","MUSIC","MUST","MY","MYSELF","NAME","NARROW","NATION","NATIONAL","NATURAL","NATURE","NEAR","NEARLY","NECESSARILY","NECESSARY","NECK","NEED","NEGOTIATION","NEIGHBOUR","NEITHER","NETWORK","NEVER","NEVERTHELESS","NEW","NEWS","NEWSPAPER","NEXT","NICE","NIGHT","NO","NOBODY","NOD","NOISE","NONE","NOR","NORMAL","NORMALLY","NORTH","NORTHERN","NOSE","NOT","NOTE","NOTHING","NOTICE","NOTION","NOW","NUCLEAR","NUMBER","NURSE","OBJECT","OBJECTIVE","OBSERVATION","OBSERVE","OBTAIN","OBVIOUS","OBVIOUSLY","OCCASION","OCCUR","ODD","OF","OFF","OFFENCE","OFFER","OFFICE","OFFICER","OFFICIAL","OFTEN","OIL","OKAY","OLD","ON","ONCE","ONE","ONLY","ONTO","OPEN","OPERATE","OPERATION","OPINION","OPPORTUNITY","OPPOSITION","OPTION","OR","ORDER","ORDINARY","ORGANISATION","ORGANISE","ORGANIZATION","ORIGIN","ORIGINAL","OTHER","OTHERWISE","OUGHT","OUR","OURSELVES","OUT","OUTCOME","OUTPUT","OUTSIDE","OVER","OVERALL","OWN","OWNER","PACKAGE","PAGE","PAIN","PAINT","PAINTING","PAIR","PANEL","PAPER","PARENT","PARK","PARLIAMENT","PART","PARTICULAR","PARTICULARLY","PARTLY","PARTNER","PARTY","PASS","PASSAGE","PAST","PATH","PATIENT","PATTERN","PAY","PAYMENT","PEACE","PENSION","PEOPLE","PER","PERCENT","PERFECT","PERFORM","PERFORMANCE","PERHAPS","PERIOD","PERMANENT","PERSON","PERSONAL","PERSUADE","PHASE","PHONE","PHOTOGRAPH","PHYSICAL","PICK","PICTURE","PIECE","PLACE","PLAN","PLANNING","PLANT","PLASTIC","PLATE","PLAY","PLAYER","PLEASE","PLEASURE","PLENTY","PLUS","POCKET","POINT","POLICE","POLICY","POLITICAL","POLITICS","POOL","POOR","POPULAR","POPULATION","POSITION","POSITIVE","POSSIBILITY","POSSIBLE","POSSIBLY","POST","POTENTIAL","POUND","POWER","POWERFUL","PRACTICAL","PRACTICE","PREFER","PREPARE","PRESENCE","PRESENT","PRESIDENT","PRESS","PRESSURE","PRETTY","PREVENT","PREVIOUS","PREVIOUSLY","PRICE","PRIMARY","PRIME","PRINCIPLE","PRIORITY","PRISON","PRISONER","PRIVATE","PROBABLY","PROBLEM","PROCEDURE","PROCESS","PRODUCE","PRODUCT","PRODUCTION","PROFESSIONAL","PROFIT","PROGRAM","PROGRAMME","PROGRESS","PROJECT","PROMISE","PROMOTE","PROPER","PROPERLY","PROPERTY","PROPORTION","PROPOSE","PROPOSAL","PROSPECT","PROTECT","PROTECTION","PROVE","PROVIDE","PROVIDED","PROVISION","PUB","PUBLIC","PUBLICATION","PUBLISH","PULL","PUPIL","PURPOSE","PUSH","PUT","QUALITY","QUARTER","QUESTION","QUICK","QUICKLY","QUIET","QUITE","RACE","RADIO","RAILWAY","RAIN","RAISE","RANGE","RAPIDLY","RARE","RATE","RATHER","REACH","REACTION","READ","READER","READING","READY","REAL","REALISE","REALITY","REALIZE","REALLY","REASON","REASONABLE","RECALL","RECEIVE","RECENT","RECENTLY","RECOGNISE","RECOGNITION","RECOGNIZE","RECOMMEND","RECORD","RECOVER","RED","REDUCE","REDUCTION","REFER","REFERENCE","REFLECT","REFORM","REFUSE","REGARD","REGION","REGIONAL","REGULAR","REGULATION","REJECT","RELATE","RELATION","RELATIONSHIP","RELATIVE","RELATIVELY","RELEASE","RELEVANT","RELIEF","RELIGION","RELIGIOUS","RELY","REMAIN","REMEMBER","REMIND","REMOVE","REPEAT","REPLACE","REPLY","REPORT","REPRESENT","REPRESENTATION","REPRESENTATIVE","REQUEST","REQUIRE","REQUIREMENT","RESEARCH","RESOURCE","RESPECT","RESPOND","RESPONSE","RESPONSIBILITY","RESPONSIBLE","REST","RESTAURANT","RESULT","RETAIN","RETURN","REVEAL","REVENUE","REVIEW","REVOLUTION","RICH","RIDE","RIGHT","RING","RISE","RISK","RIVER","ROAD","ROCK","ROLE","ROLL","ROOF","ROOM","ROUND","ROUTE","ROW","ROYAL","RULE","RUN","RURAL","SAFE","SAFETY","SALE","SAME","SAMPLE","SATISFY","SAVE","SAY","SCALE","SCENE","SCHEME","SCHOOL","SCIENCE","SCIENTIFIC","SCIENTIST","SCORE","SCREEN","SEA","SEARCH","SEASON","SEAT","SECOND","SECONDARY","SECRETARY","SECTION","SECTOR","SECURE","SECURITY","SEE","SEEK","SEEM","SELECT","SELECTION","SELL","SEND","SENIOR","SENSE","SENTENCE","SEPARATE","SEQUENCE","SERIES","SERIOUS","SERIOUSLY","SERVANT","SERVE","SERVICE","SESSION","SET","SETTLE","SETTLEMENT","SEVERAL","SEVERE","SEX","SEXUAL","SHAKE","SHALL","SHAPE","SHARE","SHE","SHEET","SHIP","SHOE","SHOOT","SHOP","SHORT","SHOT","SHOULD","SHOULDER","SHOUT","SHOW","SHUT","SIDE","SIGHT","SIGN","SIGNAL","SIGNIFICANCE","SIGNIFICANT","SILENCE","SIMILAR","SIMPLE","SIMPLY","SINCE","SING","SINGLE","SIR","SISTER","SIT","SITE","SITUATION","SIZE","SKILL","SKIN","SKY","SLEEP","SLIGHTLY","SLIP","SLOW","SLOWLY","SMALL","SMILE","SO","SOCIAL","SOCIETY","SOFT","SOFTWARE","SOIL","SOLDIER","SOLICITOR","SOLUTION","SOME","SOMEBODY","SOMEONE","SOMETHING","SOMETIMES","SOMEWHAT","SOMEWHERE","SON","SONG","SOON","SORRY","SORT","SOUND","SOURCE","SOUTH","SOUTHERN","SPACE","SPEAK","SPEAKER","SPECIAL","SPECIES","SPECIFIC","SPEECH","SPEED","SPEND","SPIRIT","SPORT","SPOT","SPREAD","SPRING","STAFF","STAGE","STAND","STANDARD","STAR","START","STATE","STATEMENT","STATION","STATUS","STAY","STEAL","STEP","STICK","STILL","STOCK","STONE","STOP","STORE","STORY","STRAIGHT","STRANGE","STRATEGY","STREET","STRENGTH","STRIKE","STRONG","STRONGLY","STRUCTURE","STUDENT","STUDIO","STUDY","STUFF","STYLE","SUBJECT","SUBSTANTIAL","SUCCEED","SUCCESS","SUCCESSFUL","SUCH","SUDDENLY","SUFFER","SUFFICIENT","SUGGEST","SUGGESTION","SUITABLE","SUM","SUMMER","SUN","SUPPLY","SUPPORT","SUPPOSE","SURE","SURELY","SURFACE","SURPRISE","SURROUND","SURVEY","SURVIVE","SWITCH","SYSTEM","TABLE","TAKE","TALK","TALL","TAPE","TARGET","TASK","TAX","TEA","TEACH","TEACHER","TEACHING","TEAM","TEAR","TECHNICAL","TECHNIQUE","TECHNOLOGY","TELEPHONE","TELEVISION","TELL","TEMPERATURE","TEND","TERM","TERMS","TERRIBLE","TEST","TEXT","THAN","THANK","THANKS","THAT","THE","THEATRE","THEIR","THEM","THEME","THEMSELVES","THEN","THEORY","THERE","THEREFORE","THESE","THEY","THIN","THING","THINK","THIS","THOSE","THOUGH","THOUGHT","THREAT","THREATEN","THROUGH","THROUGHOUT","THROW","THUS","TICKET","TIME","TINY","TITLE","TO","TODAY","TOGETHER","TOMORROW","TONE","TONIGHT","TOO","TOOL","TOOTH","TOP","TOTAL","TOTALLY","TOUCH","TOUR","TOWARDS","TOWN","TRACK","TRADE","TRADITION","TRADITIONAL","TRAFFIC","TRAIN","TRAINING","TRANSFER","TRANSPORT","TRAVEL","TREAT","TREATMENT","TREATY","TREE","TREND","TRIAL","TRIP","TROOP","TROUBLE","TRUE","TRUST","TRUTH","TRY","TURN","TWICE","TYPE","TYPICAL","UNABLE","UNDER","UNDERSTAND","UNDERSTANDING","UNDERTAKE","UNEMPLOYMENT","UNFORTUNATELY","UNION","UNIT","UNITED","UNIVERSITY","UNLESS","UNLIKELY","UNTIL","UP","UPON","UPPER","URBAN","US","USE","USED","USEFUL","USER","USUAL","USUALLY","VALUE","VARIATION","VARIETY","VARIOUS","VARY","VAST","VEHICLE","VERSION","VERY","VIA","VICTIM","VICTORY","VIDEO","VIEW","VILLAGE","VIOLENCE","VISION","VISIT","VISITOR","VITAL","VOICE","VOLUME","VOTE","WAGE","WAIT","WALK","WALL","WANT","WAR","WARM","WARN","WASH","WATCH","WATER","WAVE","WAY","WE","WEAK","WEAPON","WEAR","WEATHER","WEEK","WEEKEND","WEIGHT","WELCOME","WELFARE","WELL","WEST","WESTERN","WHAT","WHATEVER","WHEN","WHERE","WHEREAS","WHETHER","WHICH","WHILE","WHILST","WHITE","WHO","WHOLE","WHOM","WHOSE","WHY","WIDE","WIDELY","WIFE","WILD","WILL","WIN","WIND","WINDOW","WINE","WING","WINNER","WINTER","WISH","WITH","WITHDRAW","WITHIN","WITHOUT","WOMAN","WONDER","WONDERFUL","WOOD","WORD","WORK","WORKER","WORKING","WORKS","WORLD","WORRY","WORTH","WOULD","WRITE","WRITER","WRITING","WRONG","YARD","YEAH","YEAR","YES","YESTERDAY","YET","YOU","YOUNG","YOUR","YOURSELF","YOUTH"
\ No newline at end of file diff --git a/src/projecteuler/099.py b/src/projecteuler/099.py deleted file mode 100644 index bc72d07..0000000 --- a/src/projecteuler/099.py +++ /dev/null @@ -1,21 +0,0 @@ -import math - -numbers = [] - -f = open('099.txt', 'r') -for line in f: - line.rstrip('\n') - l = [int(x) for x in line.split(',')] - numbers.append(l[1] * math.log(l[0])) # log(x^r) = r*log(x) -f.close() - -maxline = 0 -maxn = 0 - -for n in xrange(0, len(numbers)-1): - if numbers[n] > maxn: - maxn = numbers[n] - maxline = n - -print maxline+1 - diff --git a/src/projecteuler/099.txt b/src/projecteuler/099.txt deleted file mode 100644 index 92201db..0000000 --- a/src/projecteuler/099.txt +++ /dev/null @@ -1,1000 +0,0 @@ -519432,525806
-632382,518061
-78864,613712
-466580,530130
-780495,510032
-525895,525320
-15991,714883
-960290,502358
-760018,511029
-166800,575487
-210884,564478
-555151,523163
-681146,515199
-563395,522587
-738250,512126
-923525,503780
-595148,520429
-177108,572629
-750923,511482
-440902,532446
-881418,505504
-422489,534197
-979858,501616
-685893,514935
-747477,511661
-167214,575367
-234140,559696
-940238,503122
-728969,512609
-232083,560102
-900971,504694
-688801,514772
-189664,569402
-891022,505104
-445689,531996
-119570,591871
-821453,508118
-371084,539600
-911745,504251
-623655,518600
-144361,582486
-352442,541775
-420726,534367
-295298,549387
-6530,787777
-468397,529976
-672336,515696
-431861,533289
-84228,610150
-805376,508857
-444409,532117
-33833,663511
-381850,538396
-402931,536157
-92901,604930
-304825,548004
-731917,512452
-753734,511344
-51894,637373
-151578,580103
-295075,549421
-303590,548183
-333594,544123
-683952,515042
-60090,628880
-951420,502692
-28335,674991
-714940,513349
-343858,542826
-549279,523586
-804571,508887
-260653,554881
-291399,549966
-402342,536213
-408889,535550
-40328,652524
-375856,539061
-768907,510590
-165993,575715
-976327,501755
-898500,504795
-360404,540830
-478714,529095
-694144,514472
-488726,528258
-841380,507226
-328012,544839
-22389,690868
-604053,519852
-329514,544641
-772965,510390
-492798,527927
-30125,670983
-895603,504906
-450785,531539
-840237,507276
-380711,538522
-63577,625673
-76801,615157
-502694,527123
-597706,520257
-310484,547206
-944468,502959
-121283,591152
-451131,531507
-566499,522367
-425373,533918
-40240,652665
-39130,654392
-714926,513355
-469219,529903
-806929,508783
-287970,550487
-92189,605332
-103841,599094
-671839,515725
-452048,531421
-987837,501323
-935192,503321
-88585,607450
-613883,519216
-144551,582413
-647359,517155
-213902,563816
-184120,570789
-258126,555322
-502546,527130
-407655,535678
-401528,536306
-477490,529193
-841085,507237
-732831,512408
-833000,507595
-904694,504542
-581435,521348
-455545,531110
-873558,505829
-94916,603796
-720176,513068
-545034,523891
-246348,557409
-556452,523079
-832015,507634
-173663,573564
-502634,527125
-250732,556611
-569786,522139
-216919,563178
-521815,525623
-92304,605270
-164446,576167
-753413,511364
-11410,740712
-448845,531712
-925072,503725
-564888,522477
-7062,780812
-641155,517535
-738878,512100
-636204,517828
-372540,539436
-443162,532237
-571192,522042
-655350,516680
-299741,548735
-581914,521307
-965471,502156
-513441,526277
-808682,508700
-237589,559034
-543300,524025
-804712,508889
-247511,557192
-543486,524008
-504383,526992
-326529,545039
-792493,509458
-86033,609017
-126554,589005
-579379,521481
-948026,502823
-404777,535969
-265767,554022
-266876,553840
-46631,643714
-492397,527958
-856106,506581
-795757,509305
-748946,511584
-294694,549480
-409781,535463
-775887,510253
-543747,523991
-210592,564536
-517119,525990
-520253,525751
-247926,557124
-592141,520626
-346580,542492
-544969,523902
-506501,526817
-244520,557738
-144745,582349
-69274,620858
-292620,549784
-926027,503687
-736320,512225
-515528,526113
-407549,535688
-848089,506927
-24141,685711
-9224,757964
-980684,501586
-175259,573121
-489160,528216
-878970,505604
-969546,502002
-525207,525365
-690461,514675
-156510,578551
-659778,516426
-468739,529945
-765252,510770
-76703,615230
-165151,575959
-29779,671736
-928865,503569
-577538,521605
-927555,503618
-185377,570477
-974756,501809
-800130,509093
-217016,563153
-365709,540216
-774508,510320
-588716,520851
-631673,518104
-954076,502590
-777828,510161
-990659,501222
-597799,520254
-786905,509727
-512547,526348
-756449,511212
-869787,505988
-653747,516779
-84623,609900
-839698,507295
-30159,670909
-797275,509234
-678136,515373
-897144,504851
-989554,501263
-413292,535106
-55297,633667
-788650,509637
-486748,528417
-150724,580377
-56434,632490
-77207,614869
-588631,520859
-611619,519367
-100006,601055
-528924,525093
-190225,569257
-851155,506789
-682593,515114
-613043,519275
-514673,526183
-877634,505655
-878905,505602
-1926,914951
-613245,519259
-152481,579816
-841774,507203
-71060,619442
-865335,506175
-90244,606469
-302156,548388
-399059,536557
-478465,529113
-558601,522925
-69132,620966
-267663,553700
-988276,501310
-378354,538787
-529909,525014
-161733,576968
-758541,511109
-823425,508024
-149821,580667
-269258,553438
-481152,528891
-120871,591322
-972322,501901
-981350,501567
-676129,515483
-950860,502717
-119000,592114
-392252,537272
-191618,568919
-946699,502874
-289555,550247
-799322,509139
-703886,513942
-194812,568143
-261823,554685
-203052,566221
-217330,563093
-734748,512313
-391759,537328
-807052,508777
-564467,522510
-59186,629748
-113447,594545
-518063,525916
-905944,504492
-613922,519213
-439093,532607
-445946,531981
-230530,560399
-297887,549007
-459029,530797
-403692,536075
-855118,506616
-963127,502245
-841711,507208
-407411,535699
-924729,503735
-914823,504132
-333725,544101
-176345,572832
-912507,504225
-411273,535308
-259774,555036
-632853,518038
-119723,591801
-163902,576321
-22691,689944
-402427,536212
-175769,572988
-837260,507402
-603432,519893
-313679,546767
-538165,524394
-549026,523608
-61083,627945
-898345,504798
-992556,501153
-369999,539727
-32847,665404
-891292,505088
-152715,579732
-824104,507997
-234057,559711
-730507,512532
-960529,502340
-388395,537687
-958170,502437
-57105,631806
-186025,570311
-993043,501133
-576770,521664
-215319,563513
-927342,503628
-521353,525666
-39563,653705
-752516,511408
-110755,595770
-309749,547305
-374379,539224
-919184,503952
-990652,501226
-647780,517135
-187177,570017
-168938,574877
-649558,517023
-278126,552016
-162039,576868
-658512,516499
-498115,527486
-896583,504868
-561170,522740
-747772,511647
-775093,510294
-652081,516882
-724905,512824
-499707,527365
-47388,642755
-646668,517204
-571700,522007
-180430,571747
-710015,513617
-435522,532941
-98137,602041
-759176,511070
-486124,528467
-526942,525236
-878921,505604
-408313,535602
-926980,503640
-882353,505459
-566887,522345
-3326,853312
-911981,504248
-416309,534800
-392991,537199
-622829,518651
-148647,581055
-496483,527624
-666314,516044
-48562,641293
-672618,515684
-443676,532187
-274065,552661
-265386,554079
-347668,542358
-31816,667448
-181575,571446
-961289,502320
-365689,540214
-987950,501317
-932299,503440
-27388,677243
-746701,511701
-492258,527969
-147823,581323
-57918,630985
-838849,507333
-678038,515375
-27852,676130
-850241,506828
-818403,508253
-131717,587014
-850216,506834
-904848,504529
-189758,569380
-392845,537217
-470876,529761
-925353,503711
-285431,550877
-454098,531234
-823910,508003
-318493,546112
-766067,510730
-261277,554775
-421530,534289
-694130,514478
-120439,591498
-213308,563949
-854063,506662
-365255,540263
-165437,575872
-662240,516281
-289970,550181
-847977,506933
-546083,523816
-413252,535113
-975829,501767
-361540,540701
-235522,559435
-224643,561577
-736350,512229
-328303,544808
-35022,661330
-307838,547578
-474366,529458
-873755,505819
-73978,617220
-827387,507845
-670830,515791
-326511,545034
-309909,547285
-400970,536363
-884827,505352
-718307,513175
-28462,674699
-599384,520150
-253565,556111
-284009,551093
-343403,542876
-446557,531921
-992372,501160
-961601,502308
-696629,514342
-919537,503945
-894709,504944
-892201,505051
-358160,541097
-448503,531745
-832156,507636
-920045,503924
-926137,503675
-416754,534757
-254422,555966
-92498,605151
-826833,507873
-660716,516371
-689335,514746
-160045,577467
-814642,508425
-969939,501993
-242856,558047
-76302,615517
-472083,529653
-587101,520964
-99066,601543
-498005,527503
-709800,513624
-708000,513716
-20171,698134
-285020,550936
-266564,553891
-981563,501557
-846502,506991
-334,1190800
-209268,564829
-9844,752610
-996519,501007
-410059,535426
-432931,533188
-848012,506929
-966803,502110
-983434,501486
-160700,577267
-504374,526989
-832061,507640
-392825,537214
-443842,532165
-440352,532492
-745125,511776
-13718,726392
-661753,516312
-70500,619875
-436952,532814
-424724,533973
-21954,692224
-262490,554567
-716622,513264
-907584,504425
-60086,628882
-837123,507412
-971345,501940
-947162,502855
-139920,584021
-68330,621624
-666452,516038
-731446,512481
-953350,502619
-183157,571042
-845400,507045
-651548,516910
-20399,697344
-861779,506331
-629771,518229
-801706,509026
-189207,569512
-737501,512168
-719272,513115
-479285,529045
-136046,585401
-896746,504860
-891735,505067
-684771,514999
-865309,506184
-379066,538702
-503117,527090
-621780,518717
-209518,564775
-677135,515423
-987500,501340
-197049,567613
-329315,544673
-236756,559196
-357092,541226
-520440,525733
-213471,563911
-956852,502490
-702223,514032
-404943,535955
-178880,572152
-689477,514734
-691351,514630
-866669,506128
-370561,539656
-739805,512051
-71060,619441
-624861,518534
-261660,554714
-366137,540160
-166054,575698
-601878,519990
-153445,579501
-279899,551729
-379166,538691
-423209,534125
-675310,515526
-145641,582050
-691353,514627
-917468,504026
-284778,550976
-81040,612235
-161699,576978
-616394,519057
-767490,510661
-156896,578431
-427408,533714
-254849,555884
-737217,512182
-897133,504851
-203815,566051
-270822,553189
-135854,585475
-778805,510111
-784373,509847
-305426,547921
-733418,512375
-732087,512448
-540668,524215
-702898,513996
-628057,518328
-640280,517587
-422405,534204
-10604,746569
-746038,511733
-839808,507293
-457417,530938
-479030,529064
-341758,543090
-620223,518824
-251661,556451
-561790,522696
-497733,527521
-724201,512863
-489217,528217
-415623,534867
-624610,518548
-847541,506953
-432295,533249
-400391,536421
-961158,502319
-139173,584284
-421225,534315
-579083,521501
-74274,617000
-701142,514087
-374465,539219
-217814,562985
-358972,540995
-88629,607424
-288597,550389
-285819,550812
-538400,524385
-809930,508645
-738326,512126
-955461,502535
-163829,576343
-826475,507891
-376488,538987
-102234,599905
-114650,594002
-52815,636341
-434037,533082
-804744,508880
-98385,601905
-856620,506559
-220057,562517
-844734,507078
-150677,580387
-558697,522917
-621751,518719
-207067,565321
-135297,585677
-932968,503404
-604456,519822
-579728,521462
-244138,557813
-706487,513800
-711627,513523
-853833,506674
-497220,527562
-59428,629511
-564845,522486
-623621,518603
-242689,558077
-125091,589591
-363819,540432
-686453,514901
-656813,516594
-489901,528155
-386380,537905
-542819,524052
-243987,557841
-693412,514514
-488484,528271
-896331,504881
-336730,543721
-728298,512647
-604215,519840
-153729,579413
-595687,520398
-540360,524240
-245779,557511
-924873,503730
-509628,526577
-528523,525122
-3509,847707
-522756,525555
-895447,504922
-44840,646067
-45860,644715
-463487,530404
-398164,536654
-894483,504959
-619415,518874
-966306,502129
-990922,501212
-835756,507474
-548881,523618
-453578,531282
-474993,529410
-80085,612879
-737091,512193
-50789,638638
-979768,501620
-792018,509483
-665001,516122
-86552,608694
-462772,530469
-589233,520821
-891694,505072
-592605,520594
-209645,564741
-42531,649269
-554376,523226
-803814,508929
-334157,544042
-175836,572970
-868379,506051
-658166,516520
-278203,551995
-966198,502126
-627162,518387
-296774,549165
-311803,547027
-843797,507118
-702304,514032
-563875,522553
-33103,664910
-191932,568841
-543514,524006
-506835,526794
-868368,506052
-847025,506971
-678623,515342
-876139,505726
-571997,521984
-598632,520198
-213590,563892
-625404,518497
-726508,512738
-689426,514738
-332495,544264
-411366,535302
-242546,558110
-315209,546555
-797544,509219
-93889,604371
-858879,506454
-124906,589666
-449072,531693
-235960,559345
-642403,517454
-720567,513047
-705534,513858
-603692,519870
-488137,528302
-157370,578285
-63515,625730
-666326,516041
-619226,518883
-443613,532186
-597717,520257
-96225,603069
-86940,608450
-40725,651929
-460976,530625
-268875,553508
-270671,553214
-363254,540500
-384248,538137
-762889,510892
-377941,538833
-278878,551890
-176615,572755
-860008,506412
-944392,502967
-608395,519571
-225283,561450
-45095,645728
-333798,544090
-625733,518476
-995584,501037
-506135,526853
-238050,558952
-557943,522972
-530978,524938
-634244,517949
-177168,572616
-85200,609541
-953043,502630
-523661,525484
-999295,500902
-840803,507246
-961490,502312
-471747,529685
-380705,538523
-911180,504275
-334149,544046
-478992,529065
-325789,545133
-335884,543826
-426976,533760
-749007,511582
-667067,516000
-607586,519623
-674054,515599
-188534,569675
-565185,522464
-172090,573988
-87592,608052
-907432,504424
-8912,760841
-928318,503590
-757917,511138
-718693,513153
-315141,546566
-728326,512645
-353492,541647
-638429,517695
-628892,518280
-877286,505672
-620895,518778
-385878,537959
-423311,534113
-633501,517997
-884833,505360
-883402,505416
-999665,500894
-708395,513697
-548142,523667
-756491,511205
-987352,501340
-766520,510705
-591775,520647
-833758,507563
-843890,507108
-925551,503698
-74816,616598
-646942,517187
-354923,541481
-256291,555638
-634470,517942
-930904,503494
-134221,586071
-282663,551304
-986070,501394
-123636,590176
-123678,590164
-481717,528841
-423076,534137
-866246,506145
-93313,604697
-783632,509880
-317066,546304
-502977,527103
-141272,583545
-71708,618938
-617748,518975
-581190,521362
-193824,568382
-682368,515131
-352956,541712
-351375,541905
-505362,526909
-905165,504518
-128645,588188
-267143,553787
-158409,577965
-482776,528754
-628896,518282
-485233,528547
-563606,522574
-111001,595655
-115920,593445
-365510,540237
-959724,502374
-938763,503184
-930044,503520
-970959,501956
-913658,504176
-68117,621790
-989729,501253
-567697,522288
-820427,508163
-54236,634794
-291557,549938
-124961,589646
-403177,536130
-405421,535899
-410233,535417
-815111,508403
-213176,563974
-83099,610879
-998588,500934
-513640,526263
-129817,587733
-1820,921851
-287584,550539
-299160,548820
-860621,506386
-529258,525059
-586297,521017
-953406,502616
-441234,532410
-986217,501386
-781938,509957
-461247,530595
-735424,512277
-146623,581722
-839838,507288
-510667,526494
-935085,503327
-737523,512167
-303455,548204
-992779,501145
-60240,628739
-939095,503174
-794368,509370
-501825,527189
-459028,530798
-884641,505363
-512287,526364
-835165,507499
-307723,547590
-160587,577304
-735043,512300
-493289,527887
-110717,595785
-306480,547772
-318593,546089
-179810,571911
-200531,566799
-314999,546580
-197020,567622
-301465,548487
-237808,559000
-131944,586923
-882527,505449
-468117,530003
-711319,513541
-156240,578628
-965452,502162
-992756,501148
-437959,532715
-739938,512046
-614249,519196
-391496,537356
-62746,626418
-688215,514806
-75501,616091
-883573,505412
-558824,522910
-759371,511061
-173913,573489
-891351,505089
-727464,512693
-164833,576051
-812317,508529
-540320,524243
-698061,514257
-69149,620952
-471673,529694
-159092,577753
-428134,533653
-89997,606608
-711061,513557
-779403,510081
-203327,566155
-798176,509187
-667688,515963
-636120,517833
-137410,584913
-217615,563034
-556887,523038
-667229,515991
-672276,515708
-325361,545187
-172115,573985
-13846,725685
\ No newline at end of file diff --git a/src/projecteuler/102.py b/src/projecteuler/102.py deleted file mode 100644 index a2108f6..0000000 --- a/src/projecteuler/102.py +++ /dev/null @@ -1,43 +0,0 @@ - -# check if r*(AC) + s*(AB) == P - -def point_in_triangle((x_a, y_a), (x_b, y_b), (x_c, y_c), (x_p, y_p)): - t = x_c - x_a - u = x_b - x_a - v = y_c - y_a - w = y_b - y_a - - # Cramer's rule - detA = t*w - u*v - detR = x_p*w - u*y_p - detS = t*y_p - x_p*v - - if detA == 0: - print "Not solvable" - - r = detR / float(detA) - s = detS / float(detA) - - return 0 <= r <= 1 and 0 <= s <= 1 and r + s < 1 - - -count = 0 - -f = open('102.txt', 'r') -for line in f: - line = line.rstrip('\r\n') - coords = [ int(x) for x in line.split(',') ] - - # move one point to origin, adjust other points - (a1, a2) = (coords[0], coords[1]) - A = (0, 0) - B = (coords[2]-a1, coords[3]-a2) - C = (coords[4]-a1, coords[5]-a2) - P = (-a1, -a2) - - if point_in_triangle(A, B, C, P): - count += 1 -f.close() - -print count - diff --git a/src/projecteuler/102.txt b/src/projecteuler/102.txt deleted file mode 100644 index d43312a..0000000 --- a/src/projecteuler/102.txt +++ /dev/null @@ -1,1000 +0,0 @@ --340,495,-153,-910,835,-947
--175,41,-421,-714,574,-645
--547,712,-352,579,951,-786
-419,-864,-83,650,-399,171
--429,-89,-357,-930,296,-29
--734,-702,823,-745,-684,-62
--971,762,925,-776,-663,-157
-162,570,628,485,-807,-896
-641,91,-65,700,887,759
-215,-496,46,-931,422,-30
--119,359,668,-609,-358,-494
-440,929,968,214,760,-857
--700,785,838,29,-216,411
--770,-458,-325,-53,-505,633
--752,-805,349,776,-799,687
-323,5,561,-36,919,-560
--907,358,264,320,204,274
--728,-466,350,969,292,-345
-940,836,272,-533,748,185
-411,998,813,520,316,-949
--152,326,658,-762,148,-651
-330,507,-9,-628,101,174
-551,-496,772,-541,-702,-45
--164,-489,-90,322,631,-59
-673,366,-4,-143,-606,-704
-428,-609,801,-449,740,-269
-453,-924,-785,-346,-853,111
--738,555,-181,467,-426,-20
-958,-692,784,-343,505,-569
-620,27,263,54,-439,-726
-804,87,998,859,871,-78
--119,-453,-709,-292,-115,-56
--626,138,-940,-476,-177,-274
--11,160,142,588,446,158
-538,727,550,787,330,810
-420,-689,854,-546,337,516
-872,-998,-607,748,473,-192
-653,440,-516,-985,808,-857
-374,-158,331,-940,-338,-641
-137,-925,-179,771,734,-715
--314,198,-115,29,-641,-39
-759,-574,-385,355,590,-603
--189,-63,-168,204,289,305
--182,-524,-715,-621,911,-255
-331,-816,-833,471,168,126
--514,581,-855,-220,-731,-507
-129,169,576,651,-87,-458
-783,-444,-881,658,-266,298
-603,-430,-598,585,368,899
-43,-724,962,-376,851,409
--610,-646,-883,-261,-482,-881
--117,-237,978,641,101,-747
-579,125,-715,-712,208,534
-672,-214,-762,372,874,533
--564,965,38,715,367,242
-500,951,-700,-981,-61,-178
--382,-224,-959,903,-282,-60
--355,295,426,-331,-591,655
-892,128,958,-271,-993,274
--454,-619,302,138,-790,-874
--642,601,-574,159,-290,-318
-266,-109,257,-686,54,975
-162,628,-478,840,264,-266
-466,-280,982,1,904,-810
-721,839,730,-807,777,981
--129,-430,748,263,943,96
-434,-94,410,-990,249,-704
-237,42,122,-732,44,-51
-909,-116,-229,545,292,717
-824,-768,-807,-370,-262,30
-675,58,332,-890,-651,791
-363,825,-717,254,684,240
-405,-715,900,166,-589,422
--476,686,-830,-319,634,-807
-633,837,-971,917,-764,207
--116,-44,-193,-70,908,809
--26,-252,998,408,70,-713
--601,645,-462,842,-644,-591
--160,653,274,113,-138,687
-369,-273,-181,925,-167,-693
--338,135,480,-967,-13,-840
--90,-270,-564,695,161,907
-607,-430,869,-713,461,-469
-919,-165,-776,522,606,-708
--203,465,288,207,-339,-458
--453,-534,-715,975,838,-677
--973,310,-350,934,546,-805
--835,385,708,-337,-594,-772
--14,914,900,-495,-627,594
-833,-713,-213,578,-296,699
--27,-748,484,455,915,291
-270,889,739,-57,442,-516
-119,811,-679,905,184,130
--678,-469,925,553,612,482
-101,-571,-732,-842,644,588
--71,-737,566,616,957,-663
--634,-356,90,-207,936,622
-598,443,964,-895,-58,529
-847,-467,929,-742,91,10
--633,829,-780,-408,222,-30
--818,57,275,-38,-746,198
--722,-825,-549,597,-391,99
--570,908,430,873,-103,-360
-342,-681,512,434,542,-528
-297,850,479,609,543,-357
-9,784,212,548,56,859
--152,560,-240,-969,-18,713
-140,-133,34,-635,250,-163
--272,-22,-169,-662,989,-604
-471,-765,355,633,-742,-118
--118,146,942,663,547,-376
-583,16,162,264,715,-33
--230,-446,997,-838,561,555
-372,397,-729,-318,-276,649
-92,982,-970,-390,-922,922
--981,713,-951,-337,-669,670
--999,846,-831,-504,7,-128
-455,-954,-370,682,-510,45
-822,-960,-892,-385,-662,314
--668,-686,-367,-246,530,-341
--723,-720,-926,-836,-142,757
--509,-134,384,-221,-873,-639
--803,-52,-706,-669,373,-339
-933,578,631,-616,770,555
-741,-564,-33,-605,-576,275
--715,445,-233,-730,734,-704
-120,-10,-266,-685,-490,-17
--232,-326,-457,-946,-457,-116
-811,52,639,826,-200,147
--329,279,293,612,943,955
--721,-894,-393,-969,-642,453
--688,-826,-352,-75,371,79
--809,-979,407,497,858,-248
--485,-232,-242,-582,-81,849
-141,-106,123,-152,806,-596
--428,57,-992,811,-192,478
-864,393,122,858,255,-876
--284,-780,240,457,354,-107
-956,605,-477,44,26,-678
-86,710,-533,-815,439,327
--906,-626,-834,763,426,-48
-201,-150,-904,652,475,412
--247,149,81,-199,-531,-148
-923,-76,-353,175,-121,-223
-427,-674,453,472,-410,585
-931,776,-33,85,-962,-865
--655,-908,-902,208,869,792
--316,-102,-45,-436,-222,885
--309,768,-574,653,745,-975
-896,27,-226,993,332,198
-323,655,-89,260,240,-902
-501,-763,-424,793,813,616
-993,375,-938,-621,672,-70
--880,-466,-283,770,-824,143
-63,-283,886,-142,879,-116
--964,-50,-521,-42,-306,-161
-724,-22,866,-871,933,-383
--344,135,282,966,-80,917
--281,-189,420,810,362,-582
--515,455,-588,814,162,332
-555,-436,-123,-210,869,-943
-589,577,232,286,-554,876
--773,127,-58,-171,-452,125
--428,575,906,-232,-10,-224
-437,276,-335,-348,605,878
--964,511,-386,-407,168,-220
-307,513,912,-463,-423,-416
--445,539,273,886,-18,760
--396,-585,-670,414,47,364
-143,-506,754,906,-971,-203
--544,472,-180,-541,869,-465
--779,-15,-396,890,972,-220
--430,-564,503,182,-119,456
-89,-10,-739,399,506,499
-954,162,-810,-973,127,870
-890,952,-225,158,828,237
--868,952,349,465,574,750
--915,369,-975,-596,-395,-134
--135,-601,575,582,-667,640
-413,890,-560,-276,-555,-562
--633,-269,561,-820,-624,499
-371,-92,-784,-593,864,-717
--971,655,-439,367,754,-951
-172,-347,36,279,-247,-402
-633,-301,364,-349,-683,-387
--780,-211,-713,-948,-648,543
-72,58,762,-465,-66,462
-78,502,781,-832,713,836
--431,-64,-484,-392,208,-343
--64,101,-29,-860,-329,844
-398,391,828,-858,700,395
-578,-896,-326,-604,314,180
-97,-321,-695,185,-357,852
-854,839,283,-375,951,-209
-194,96,-564,-847,162,524
--354,532,494,621,580,560
-419,-678,-450,926,-5,-924
--661,905,519,621,-143,394
--573,268,296,-562,-291,-319
--211,266,-196,158,564,-183
-18,-585,-398,777,-581,864
-790,-894,-745,-604,-418,70
-848,-339,150,773,11,851
--954,-809,-53,-20,-648,-304
-658,-336,-658,-905,853,407
--365,-844,350,-625,852,-358
-986,-315,-230,-159,21,180
--15,599,45,-286,-941,847
--613,-68,184,639,-987,550
-334,675,-56,-861,923,340
--848,-596,960,231,-28,-34
-707,-811,-994,-356,-167,-171
--470,-764,72,576,-600,-204
-379,189,-542,-576,585,800
-440,540,-445,-563,379,-334
--155,64,514,-288,853,106
--304,751,481,-520,-708,-694
--709,132,594,126,-844,63
-723,471,421,-138,-962,892
--440,-263,39,513,-672,-954
-775,809,-581,330,752,-107
--376,-158,335,-708,-514,578
--343,-769,456,-187,25,413
-548,-877,-172,300,-500,928
-938,-102,423,-488,-378,-969
--36,564,-55,131,958,-800
--322,511,-413,503,700,-847
--966,547,-88,-17,-359,-67
-637,-341,-437,-181,527,-153
--74,449,-28,3,485,189
--997,658,-224,-948,702,-807
--224,736,-896,127,-945,-850
--395,-106,439,-553,-128,124
--841,-445,-758,-572,-489,212
-633,-327,13,-512,952,771
--940,-171,-6,-46,-923,-425
--142,-442,-817,-998,843,-695
-340,847,-137,-920,-988,-658
--653,217,-679,-257,651,-719
--294,365,-41,342,74,-892
-690,-236,-541,494,408,-516
-180,-807,225,790,494,59
-707,605,-246,656,284,271
-65,294,152,824,442,-442
--321,781,-540,341,316,415
-420,371,-2,545,995,248
-56,-191,-604,971,615,449
--981,-31,510,592,-390,-362
--317,-968,913,365,97,508
-832,63,-864,-510,86,202
--483,456,-636,340,-310,676
-981,-847,751,-508,-962,-31
--157,99,73,797,63,-172
-220,858,872,924,866,-381
-996,-169,805,321,-164,971
-896,11,-625,-973,-782,76
-578,-280,730,-729,307,-905
--580,-749,719,-698,967,603
--821,874,-103,-623,662,-491
--763,117,661,-644,672,-607
-592,787,-798,-169,-298,690
-296,644,-526,-762,-447,665
-534,-818,852,-120,57,-379
--986,-549,-329,294,954,258
--133,352,-660,-77,904,-356
-748,343,215,500,317,-277
-311,7,910,-896,-809,795
-763,-602,-753,313,-352,917
-668,619,-474,-597,-650,650
--297,563,-701,-987,486,-902
--461,-740,-657,233,-482,-328
--446,-250,-986,-458,-629,520
-542,-49,-327,-469,257,-947
-121,-575,-634,-143,-184,521
-30,504,455,-645,-229,-945
--12,-295,377,764,771,125
--686,-133,225,-25,-376,-143
--6,-46,338,270,-405,-872
--623,-37,582,467,963,898
--804,869,-477,420,-475,-303
-94,41,-842,-193,-768,720
--656,-918,415,645,-357,460
--47,-486,-911,468,-608,-686
--158,251,419,-394,-655,-895
-272,-695,979,508,-358,959
--776,650,-918,-467,-690,-534
--85,-309,-626,167,-366,-429
--880,-732,-186,-924,970,-875
-517,645,-274,962,-804,544
-721,402,104,640,478,-499
-198,684,-134,-723,-452,-905
--245,745,239,238,-826,441
--217,206,-32,462,-981,-895
--51,989,526,-173,560,-676
--480,-659,-976,-580,-727,466
--996,-90,-995,158,-239,642
-302,288,-194,-294,17,924
--943,969,-326,114,-500,103
--619,163,339,-880,230,421
--344,-601,-795,557,565,-779
-590,345,-129,-202,-125,-58
--777,-195,159,674,775,411
--939,312,-665,810,121,855
--971,254,712,815,452,581
-442,-9,327,-750,61,757
--342,869,869,-160,390,-772
-620,601,565,-169,-69,-183
--25,924,-817,964,321,-970
--64,-6,-133,978,825,-379
-601,436,-24,98,-115,940
--97,502,614,-574,922,513
--125,262,-946,695,99,-220
-429,-721,719,-694,197,-558
-326,689,-70,-908,-673,338
--468,-856,-902,-254,-358,305
--358,530,542,355,-253,-47
--438,-74,-362,963,988,788
-137,717,467,622,319,-380
--86,310,-336,851,918,-288
-721,395,646,-53,255,-425
-255,175,912,84,-209,878
--632,-485,-400,-357,991,-608
-235,-559,992,-297,857,-591
-87,-71,148,130,647,578
--290,-584,-639,-788,-21,592
-386,984,625,-731,-993,-336
--538,634,-209,-828,-150,-774
--754,-387,607,-781,976,-199
-412,-798,-664,295,709,-537
--412,932,-880,-232,561,852
--656,-358,-198,-964,-433,-848
--762,-668,-632,186,-673,-11
--876,237,-282,-312,-83,682
-403,73,-57,-436,-622,781
--587,873,798,976,-39,329
--369,-622,553,-341,817,794
--108,-616,920,-849,-679,96
-290,-974,234,239,-284,-321
--22,394,-417,-419,264,58
--473,-551,69,923,591,-228
--956,662,-113,851,-581,-794
--258,-681,413,-471,-637,-817
--866,926,992,-653,-7,794
-556,-350,602,917,831,-610
-188,245,-906,361,492,174
--720,384,-818,329,638,-666
--246,846,890,-325,-59,-850
--118,-509,620,-762,-256,15
--787,-536,-452,-338,-399,813
-458,560,525,-311,-608,-419
-494,-811,-825,-127,-812,894
--801,890,-629,-860,574,925
--709,-193,-213,138,-410,-403
-861,91,708,-187,5,-222
-789,646,777,154,90,-49
--267,-830,-114,531,591,-698
--126,-82,881,-418,82,652
--894,130,-726,-935,393,-815
--142,563,654,638,-712,-597
--759,60,-23,977,100,-765
--305,595,-570,-809,482,762
--161,-267,53,963,998,-529
--300,-57,798,353,703,486
--990,696,-764,699,-565,719
--232,-205,566,571,977,369
-740,865,151,-817,-204,-293
-94,445,-768,229,537,-406
-861,620,37,-424,-36,656
-390,-369,952,733,-464,569
--482,-604,959,554,-705,-626
--396,-615,-991,108,272,-723
-143,780,535,142,-917,-147
-138,-629,-217,-908,905,115
-915,103,-852,64,-468,-642
-570,734,-785,-268,-326,-759
-738,531,-332,586,-779,24
-870,440,-217,473,-383,415
--296,-333,-330,-142,-924,950
-118,120,-35,-245,-211,-652
-61,634,153,-243,838,789
-726,-582,210,105,983,537
--313,-323,758,234,29,848
--847,-172,-593,733,-56,617
-54,255,-512,156,-575,675
--873,-956,-148,623,95,200
-700,-370,926,649,-978,157
--639,-202,719,130,747,222
-194,-33,955,943,505,114
--226,-790,28,-930,827,783
--392,-74,-28,714,218,-612
-209,626,-888,-683,-912,495
-487,751,614,933,631,445
--348,-34,-411,-106,835,321
--689,872,-29,-800,312,-542
--52,566,827,570,-862,-77
-471,992,309,-402,389,912
-24,520,-83,-51,555,503
--265,-317,283,-970,-472,690
-606,526,137,71,-651,150
-217,-518,663,66,-605,-331
--562,232,-76,-503,205,-323
-842,-521,546,285,625,-186
-997,-927,344,909,-546,974
--677,419,81,121,-705,771
-719,-379,-944,-797,784,-155
--378,286,-317,-797,-111,964
--288,-573,784,80,-532,-646
--77,407,-248,-797,769,-816
--24,-637,287,-858,-927,-333
--902,37,894,-823,141,684
-125,467,-177,-516,686,399
--321,-542,641,-590,527,-224
--400,-712,-876,-208,632,-543
--676,-429,664,-242,-269,922
--608,-273,-141,930,687,380
-786,-12,498,494,310,326
--739,-617,606,-960,804,188
-384,-368,-243,-350,-459,31
--550,397,320,-868,328,-279
-969,-179,853,864,-110,514
-910,793,302,-822,-285,488
--605,-128,218,-283,-17,-227
-16,324,667,708,750,3
-485,-813,19,585,71,930
--218,816,-687,-97,-732,-360
--497,-151,376,-23,3,315
--412,-989,-610,-813,372,964
--878,-280,87,381,-311,69
--609,-90,-731,-679,150,585
-889,27,-162,605,75,-770
-448,617,-988,0,-103,-504
--800,-537,-69,627,608,-668
-534,686,-664,942,830,920
--238,775,495,932,-793,497
--343,958,-914,-514,-691,651
-568,-136,208,359,728,28
-286,912,-794,683,556,-102
--638,-629,-484,445,-64,-497
-58,505,-801,-110,872,632
--390,777,353,267,976,369
--993,515,105,-133,358,-572
-964,996,355,-212,-667,38
--725,-614,-35,365,132,-196
-237,-536,-416,-302,312,477
--664,574,-210,224,48,-925
-869,-261,-256,-240,-3,-698
-712,385,32,-34,916,-315
-895,-409,-100,-346,728,-624
--806,327,-450,889,-781,-939
--586,-403,698,318,-939,899
-557,-57,-920,659,333,-51
--441,232,-918,-205,246,1
-783,167,-797,-595,245,-736
--36,-531,-486,-426,-813,-160
-777,-843,817,313,-228,-572
-735,866,-309,-564,-81,190
--413,645,101,719,-719,218
--83,164,767,796,-430,-459
-122,779,-15,-295,-96,-892
-462,379,70,548,834,-312
--630,-534,124,187,-737,114
--299,-604,318,-591,936,826
--879,218,-642,-483,-318,-866
--691,62,-658,761,-895,-854
--822,493,687,569,910,-202
--223,784,304,-5,541,925
--914,541,737,-662,-662,-195
--622,615,414,358,881,-878
-339,745,-268,-968,-280,-227
--364,855,148,-709,-827,472
--890,-532,-41,664,-612,577
--702,-859,971,-722,-660,-920
--539,-605,737,149,973,-802
-800,42,-448,-811,152,511
--933,377,-110,-105,-374,-937
--766,152,482,120,-308,390
--568,775,-292,899,732,890
--177,-317,-502,-259,328,-511
-612,-696,-574,-660,132,31
--119,563,-805,-864,179,-672
-425,-627,183,-331,839,318
--711,-976,-749,152,-916,261
-181,-63,497,211,262,406
--537,700,-859,-765,-928,77
-892,832,231,-749,-82,613
-816,216,-642,-216,-669,-912
--6,624,-937,-370,-344,268
-737,-710,-869,983,-324,-274
-565,952,-547,-158,374,-444
-51,-683,645,-845,515,636
--953,-631,114,-377,-764,-144
--8,470,-242,-399,-675,-730
--540,689,-20,47,-607,590
--329,-710,-779,942,-388,979
-123,829,674,122,203,563
-46,782,396,-33,386,610
-872,-846,-523,-122,-55,-190
-388,-994,-525,974,127,596
-781,-680,796,-34,-959,-62
--749,173,200,-384,-745,-446
-379,618,136,-250,-224,970
--58,240,-921,-760,-901,-626
-366,-185,565,-100,515,688
-489,999,-893,-263,-637,816
-838,-496,-316,-513,419,479
-107,676,-15,882,98,-397
--999,941,-903,-424,670,-325
-171,-979,835,178,169,-984
--609,-607,378,-681,184,402
--316,903,-575,-800,224,983
-591,-18,-460,551,-167,918
--756,405,-117,441,163,-320
-456,24,6,881,-836,-539
--489,-585,915,651,-892,-382
--177,-122,73,-711,-386,591
-181,724,530,686,-131,241
-737,288,886,216,233,33
--548,-386,-749,-153,-85,-982
--835,227,904,160,-99,25
--9,-42,-162,728,840,-963
-217,-763,870,771,47,-846
--595,808,-491,556,337,-900
--134,281,-724,441,-134,708
--789,-508,651,-962,661,315
--839,-923,339,402,41,-487
-300,-790,48,703,-398,-811
-955,-51,462,-685,960,-717
-910,-880,592,-255,-51,-776
--885,169,-793,368,-565,458
--905,940,-492,-630,-535,-988
-245,797,763,869,-82,550
--310,38,-933,-367,-650,824
--95,32,-83,337,226,990
--218,-975,-191,-208,-785,-293
--672,-953,517,-901,-247,465
-681,-148,261,-857,544,-923
-640,341,446,-618,195,769
-384,398,-846,365,671,815
-578,576,-911,907,762,-859
-548,-428,144,-630,-759,-146
-710,-73,-700,983,-97,-889
--46,898,-973,-362,-817,-717
-151,-81,-125,-900,-478,-154
-483,615,-537,-932,181,-68
-786,-223,518,25,-306,-12
--422,268,-809,-683,635,468
-983,-734,-694,-608,-110,4
--786,-196,749,-354,137,-8
--181,36,668,-200,691,-973
--629,-838,692,-736,437,-871
--208,-536,-159,-596,8,197
--3,370,-686,170,913,-376
-44,-998,-149,-993,-200,512
--519,136,859,497,536,434
-77,-985,972,-340,-705,-837
--381,947,250,360,344,322
--26,131,699,750,707,384
--914,655,299,193,406,955
--883,-921,220,595,-546,794
--599,577,-569,-404,-704,489
--594,-963,-624,-460,880,-760
--603,88,-99,681,55,-328
-976,472,139,-453,-531,-860
-192,-290,513,-89,666,432
-417,487,575,293,567,-668
-655,711,-162,449,-980,972
--505,664,-685,-239,603,-592
--625,-802,-67,996,384,-636
-365,-593,522,-666,-200,-431
--868,708,560,-860,-630,-355
--702,785,-637,-611,-597,960
--137,-696,-93,-803,408,406
-891,-123,-26,-609,-610,518
-133,-832,-198,555,708,-110
-791,617,-69,487,696,315
--900,694,-565,517,-269,-416
-914,135,-781,600,-71,-600
-991,-915,-422,-351,-837,313
--840,-398,-302,21,590,146
-62,-558,-702,-384,-625,831
--363,-426,-924,-496,792,-908
-73,361,-817,-466,400,922
--626,-164,-626,860,-524,286
-255,26,-944,809,-606,986
--457,-256,-103,50,-867,-871
--223,803,196,480,612,136
--820,-928,700,780,-977,721
-717,332,53,-933,-128,793
--602,-648,562,593,890,702
--469,-875,-527,911,-475,-222
-110,-281,-552,-536,-816,596
--981,654,413,-981,-75,-95
--754,-742,-515,894,-220,-344
-795,-52,156,408,-603,76
-474,-157,423,-499,-807,-791
-260,688,40,-52,702,-122
--584,-517,-390,-881,302,-504
-61,797,665,708,14,668
-366,166,458,-614,564,-983
-72,539,-378,796,381,-824
--485,201,-588,842,736,379
--149,-894,-298,705,-303,-406
-660,-935,-580,521,93,633
--382,-282,-375,-841,-828,171
--567,743,-100,43,144,122
--281,-786,-749,-551,296,304
-11,-426,-792,212,857,-175
-594,143,-699,289,315,137
-341,596,-390,107,-631,-804
--751,-636,-424,-854,193,651
--145,384,749,675,-786,517
-224,-865,-323,96,-916,258
--309,403,-388,826,35,-270
--942,709,222,158,-699,-103
--589,842,-997,29,-195,-210
-264,426,566,145,-217,623
-217,965,507,-601,-453,507
--206,307,-982,4,64,-292
-676,-49,-38,-701,550,883
-5,-850,-438,659,745,-773
-933,238,-574,-570,91,-33
--866,121,-928,358,459,-843
--568,-631,-352,-580,-349,189
--737,849,-963,-486,-662,970
-135,334,-967,-71,-365,-792
-789,21,-227,51,990,-275
-240,412,-886,230,591,256
--609,472,-853,-754,959,661
-401,521,521,314,929,982
--499,784,-208,71,-302,296
--557,-948,-553,-526,-864,793
-270,-626,828,44,37,14
--412,224,617,-593,502,699
-41,-908,81,562,-849,163
-165,917,761,-197,331,-341
--687,314,799,755,-969,648
--164,25,578,439,-334,-576
-213,535,874,-177,-551,24
--689,291,-795,-225,-496,-125
-465,461,558,-118,-568,-909
-567,660,-810,46,-485,878
--147,606,685,-690,-774,984
-568,-886,-43,854,-738,616
--800,386,-614,585,764,-226
--518,23,-225,-732,-79,440
--173,-291,-689,636,642,-447
--598,-16,227,410,496,211
--474,-930,-656,-321,-420,36
--435,165,-819,555,540,144
--969,149,828,568,394,648
-65,-848,257,720,-625,-851
-981,899,275,635,465,-877
-80,290,792,760,-191,-321
--605,-858,594,33,706,593
-585,-472,318,-35,354,-927
--365,664,803,581,-965,-814
--427,-238,-480,146,-55,-606
-879,-193,250,-890,336,117
--226,-322,-286,-765,-836,-218
--913,564,-667,-698,937,283
-872,-901,810,-623,-52,-709
-473,171,717,38,-429,-644
-225,824,-219,-475,-180,234
--530,-797,-948,238,851,-623
-85,975,-363,529,598,28
--799,166,-804,210,-769,851
--687,-158,885,736,-381,-461
-447,592,928,-514,-515,-661
--399,-777,-493,80,-544,-78
--884,631,171,-825,-333,551
-191,268,-577,676,137,-33
-212,-853,709,798,583,-56
--908,-172,-540,-84,-135,-56
-303,311,406,-360,-240,811
-798,-708,824,59,234,-57
-491,693,-74,585,-85,877
-509,-65,-936,329,-51,722
--122,858,-52,467,-77,-609
-850,760,547,-495,-953,-952
--460,-541,890,910,286,724
--914,843,-579,-983,-387,-460
-989,-171,-877,-326,-899,458
-846,175,-915,540,-1000,-982
--852,-920,-306,496,530,-18
-338,-991,160,85,-455,-661
--186,-311,-460,-563,-231,-414
--932,-302,959,597,793,748
--366,-402,-788,-279,514,53
--940,-956,447,-956,211,-285
-564,806,-911,-914,934,754
-575,-858,-277,15,409,-714
-848,462,100,-381,135,242
-330,718,-24,-190,860,-78
-479,458,941,108,-866,-653
-212,980,962,-962,115,841
--827,-474,-206,881,323,765
-506,-45,-30,-293,524,-133
-832,-173,547,-852,-561,-842
--397,-661,-708,819,-545,-228
-521,51,-489,852,36,-258
-227,-164,189,465,-987,-882
--73,-997,641,-995,449,-615
-151,-995,-638,415,257,-400
--663,-297,-748,537,-734,198
--585,-401,-81,-782,-80,-105
-99,-21,238,-365,-704,-368
-45,416,849,-211,-371,-1
--404,-443,795,-406,36,-933
-272,-363,981,-491,-380,77
-713,-342,-366,-849,643,911
--748,671,-537,813,961,-200
--194,-909,703,-662,-601,188
-281,500,724,286,267,197
--832,847,-595,820,-316,637
-520,521,-54,261,923,-10
-4,-808,-682,-258,441,-695
--793,-107,-969,905,798,446
--108,-739,-590,69,-855,-365
-380,-623,-930,817,468,713
-759,-849,-236,433,-723,-931
-95,-320,-686,124,-69,-329
--655,518,-210,-523,284,-866
-144,303,639,70,-171,269
-173,-333,947,-304,55,40
-274,878,-482,-888,-835,375
--982,-854,-36,-218,-114,-230
-905,-979,488,-485,-479,114
-877,-157,553,-530,-47,-321
-350,664,-881,442,-220,-284
-434,-423,-365,878,-726,584
-535,909,-517,-447,-660,-141
--966,191,50,353,182,-642
--785,-634,123,-907,-162,511
-146,-850,-214,814,-704,25
-692,1,521,492,-637,274
--662,-372,-313,597,983,-647
--962,-526,68,-549,-819,231
-740,-890,-318,797,-666,948
--190,-12,-468,-455,948,284
-16,478,-506,-888,628,-154
-272,630,-976,308,433,3
--169,-391,-132,189,302,-388
-109,-784,474,-167,-265,-31
--177,-532,283,464,421,-73
-650,635,592,-138,1,-387
--932,703,-827,-492,-355,686
-586,-311,340,-618,645,-434
--951,736,647,-127,-303,590
-188,444,903,718,-931,500
--872,-642,-296,-571,337,241
-23,65,152,125,880,470
-512,823,-42,217,823,-263
-180,-831,-380,886,607,762
-722,443,-149,-216,-115,759
--19,660,-36,901,923,231
-562,-322,-626,-968,194,-825
-204,-920,938,784,362,150
--410,-266,-715,559,-672,124
--198,446,-140,454,-461,-447
-83,-346,830,-493,-759,-382
--881,601,581,234,-134,-925
--494,914,-42,899,235,629
--390,50,956,437,774,-700
--514,514,44,-512,-576,-313
-63,-688,808,-534,-570,-399
--726,572,-896,102,-294,-28
--688,757,401,406,955,-511
--283,423,-485,480,-767,908
--541,952,-594,116,-854,451
--273,-796,236,625,-626,257
--407,-493,373,826,-309,297
--750,955,-476,641,-809,713
-8,415,695,226,-111,2
-733,209,152,-920,401,995
-921,-103,-919,66,871,-947
--907,89,-869,-214,851,-559
--307,748,524,-755,314,-711
-188,897,-72,-763,482,103
-545,-821,-232,-596,-334,-754
--217,-788,-820,388,-200,-662
-779,160,-723,-975,-142,-998
--978,-519,-78,-981,842,904
--504,-736,-295,21,-472,-482
-391,115,-705,574,652,-446
-813,-988,865,830,-263,487
-194,80,774,-493,-761,-872
--415,-284,-803,7,-810,670
--484,-4,881,-872,55,-852
--379,822,-266,324,-48,748
--304,-278,406,-60,959,-89
-404,756,577,-643,-332,658
-291,460,125,491,-312,83
-311,-734,-141,582,282,-557
--450,-661,-981,710,-177,794
-328,264,-787,971,-743,-407
--622,518,993,-241,-738,229
-273,-826,-254,-917,-710,-111
-809,770,96,368,-818,725
--488,773,502,-342,534,745
--28,-414,236,-315,-484,363
-179,-466,-566,713,-683,56
-560,-240,-597,619,916,-940
-893,473,872,-868,-642,-461
-799,489,383,-321,-776,-833
-980,490,-508,764,-512,-426
-917,961,-16,-675,440,559
--812,212,784,-987,-132,554
--886,454,747,806,190,231
-910,341,21,-66,708,725
-29,929,-831,-494,-303,389
--103,492,-271,-174,-515,529
--292,119,419,788,247,-951
-483,543,-347,-673,664,-549
--926,-871,-437,337,162,-877
-299,472,-771,5,-88,-643
--103,525,-725,-998,264,22
--505,708,550,-545,823,347
--738,931,59,147,-156,-259
-456,968,-162,889,132,-911
-535,120,968,-517,-864,-541
-24,-395,-593,-766,-565,-332
-834,611,825,-576,280,629
-211,-548,140,-278,-592,929
--999,-240,-63,-78,793,573
--573,160,450,987,529,322
-63,353,315,-187,-461,577
-189,-950,-247,656,289,241
-209,-297,397,664,-805,484
--655,452,435,-556,917,874
-253,-756,262,-888,-778,-214
-793,-451,323,-251,-401,-458
--396,619,-651,-287,-668,-781
-698,720,-349,742,-807,546
-738,280,680,279,-540,858
--789,387,530,-36,-551,-491
-162,579,-427,-272,228,710
-689,356,917,-580,729,217
--115,-638,866,424,-82,-194
-411,-338,-917,172,227,-29
--612,63,630,-976,-64,-204
--200,911,583,-571,682,-579
-91,298,396,-183,788,-955
-141,-873,-277,149,-396,916
-321,958,-136,573,541,-777
-797,-909,-469,-877,988,-653
-784,-198,129,883,-203,399
--68,-810,223,-423,-467,-512
-531,-445,-603,-997,-841,641
--274,-242,174,261,-636,-158
--574,494,-796,-798,-798,99
-95,-82,-613,-954,-753,986
--883,-448,-864,-401,938,-392
-913,930,-542,-988,310,410
-506,-99,43,512,790,-222
-724,31,49,-950,260,-134
--287,-947,-234,-700,56,588
--33,782,-144,948,105,-791
-548,-546,-652,-293,881,-520
-691,-91,76,991,-631,742
--520,-429,-244,-296,724,-48
-778,646,377,50,-188,56
--895,-507,-898,-165,-674,652
-654,584,-634,177,-349,-620
-114,-980,355,62,182,975
-516,9,-442,-298,274,-579
--238,262,-431,-896,506,-850
-47,748,846,821,-537,-293
-839,726,593,285,-297,840
-634,-486,468,-304,-887,-567
--864,914,296,-124,335,233
-88,-253,-523,-956,-554,803
--587,417,281,-62,-409,-363
--136,-39,-292,-768,-264,876
--127,506,-891,-331,-744,-430
-778,584,-750,-129,-479,-94
--876,-771,-987,-757,180,-641
--777,-694,411,-87,329,190
--347,-999,-882,158,-754,232
--105,918,188,237,-110,-591
--209,703,-838,77,838,909
--995,-339,-762,750,860,472
-185,271,-289,173,811,-300
-2,65,-656,-22,36,-139
-765,-210,883,974,961,-905
--212,295,-615,-840,77,474
-211,-910,-440,703,-11,859
--559,-4,-196,841,-277,969
--73,-159,-887,126,978,-371
--569,633,-423,-33,512,-393
-503,143,-383,-109,-649,-998
--663,339,-317,-523,-2,596
-690,-380,570,378,-652,132
-72,-744,-930,399,-525,935
-865,-983,115,37,995,826
-594,-621,-872,443,188,-241
--1000,291,754,234,-435,-869
--868,901,654,-907,59,181
--868,-793,-431,596,-446,-564
-900,-944,-680,-796,902,-366
-331,430,943,853,-851,-942
-315,-538,-354,-909,139,721
-170,-884,-225,-818,-808,-657
--279,-34,-533,-871,-972,552
-691,-986,-800,-950,654,-747
-603,988,899,841,-630,591
-876,-949,809,562,602,-536
--693,363,-189,495,738,-1000
--383,431,-633,297,665,959
--740,686,-207,-803,188,-520
--820,226,31,-339,10,121
--312,-844,624,-516,483,621
--822,-529,69,-278,800,328
-834,-82,-759,420,811,-264
--960,-240,-921,561,173,46
--324,909,-790,-814,-2,-785
-976,334,-290,-891,704,-581
-150,-798,689,-823,237,-639
--551,-320,876,-502,-622,-628
--136,845,904,595,-702,-261
--857,-377,-522,-101,-943,-805
--682,-787,-888,-459,-752,-985
--571,-81,623,-133,447,643
--375,-158,72,-387,-324,-696
--660,-650,340,188,569,526
-727,-218,16,-7,-595,-988
--966,-684,802,-783,-272,-194
-115,-566,-888,47,712,180
--237,-69,45,-272,981,-812
-48,897,439,417,50,325
-348,616,180,254,104,-784
--730,811,-548,612,-736,790
-138,-810,123,930,65,865
--768,-299,-49,-895,-692,-418
-487,-531,802,-159,-12,634
-808,-179,552,-73,470,717
-720,-644,886,-141,625,144
--485,-505,-347,-244,-916,66
-600,-565,995,-5,324,227
--771,-35,904,-482,753,-303
--701,65,426,-763,-504,-479
-409,733,-823,475,64,718
-865,975,368,893,-413,-433
-812,-597,-970,819,813,624
-193,-642,-381,-560,545,398
-711,28,-316,771,717,-865
--509,462,809,-136,786,635
-618,-49,484,169,635,547
--747,685,-882,-496,-332,82
--501,-851,870,563,290,570
--279,-829,-509,397,457,816
--508,80,850,-188,483,-326
-860,-100,360,119,-205,787
--870,21,-39,-827,-185,932
-826,284,-136,-866,-330,-97
--944,-82,745,899,-97,365
-929,262,564,632,-115,632
-244,-276,713,330,-897,-214
--890,-109,664,876,-974,-907
-716,249,816,489,723,141
--96,-560,-272,45,-70,645
-762,-503,414,-828,-254,-646
-909,-13,903,-422,-344,-10
-658,-486,743,545,50,674
--241,507,-367,18,-48,-241
-886,-268,884,-762,120,-486
--412,-528,879,-647,223,-393
-851,810,234,937,-726,797
--999,942,839,-134,-996,-189
-100,979,-527,-521,378,800
-544,-844,-832,-530,-77,-641
-43,889,31,442,-934,-503
--330,-370,-309,-439,173,547
-169,945,62,-753,-542,-597
-208,751,-372,-647,-520,70
-765,-840,907,-257,379,918
-334,-135,-689,730,-427,618
-137,-508,66,-695,78,169
--962,-123,400,-417,151,969
-328,689,666,427,-555,-642
--907,343,605,-341,-647,582
--667,-363,-571,818,-265,-399
-525,-938,904,898,725,692
--176,-802,-858,-9,780,275
-580,170,-740,287,691,-97
-365,557,-375,361,-288,859
-193,737,842,-808,520,282
--871,65,-799,836,179,-720
-958,-144,744,-789,797,-48
-122,582,662,912,68,757
-595,241,-801,513,388,186
--103,-677,-259,-731,-281,-857
-921,319,-696,683,-88,-997
-775,200,78,858,648,768
-316,821,-763,68,-290,-741
-564,664,691,504,760,787
-694,-119,973,-385,309,-760
-777,-947,-57,990,74,19
-971,626,-496,-781,-602,-239
--651,433,11,-339,939,294
--965,-728,560,569,-708,-247
diff --git a/src/projecteuler/112.c b/src/projecteuler/112.c deleted file mode 100644 index bb808be..0000000 --- a/src/projecteuler/112.c +++ /dev/null @@ -1,45 +0,0 @@ - -int isbouncy(unsigned long n) -{ - char increasing=1, decreasing=1; - char lastdigit = n % 10; - n /= 10; - - while(n > 0) - { - char digit = n % 10; - if(digit > lastdigit) - increasing = 0; - else if(digit < lastdigit) - decreasing = 0; - - if(increasing == 0 && decreasing == 0) - return 1; - - lastdigit = digit; - n /= 10; - } - return 0; -} - -int main(void) -{ - unsigned long n = 100; - unsigned long bouncycount = 0; - double ratio; - - while(1) - { - if(isbouncy(++n)) - bouncycount++; - - ratio = (double)bouncycount/n; - if(ratio == 0.99) - break; - - } - printf("%ld\n", n); - - return 0; -} - diff --git a/src/projecteuler/124.py b/src/projecteuler/124.py deleted file mode 100644 index 19486d6..0000000 --- a/src/projecteuler/124.py +++ /dev/null @@ -1,31 +0,0 @@ -from operator import itemgetter -from common import sieve - -limit = 100000 - -primes = sieve(limit).primes() -prime_list = list(primes) -prime_list.sort() - -def rad(n): - result = 1 - if n in primes: - return n - - for p in prime_list: - if result*p > n: - break - if n % p == 0: - result *= p - return result - - - -radlist = [] - -for n in xrange(1, limit+1): - radlist.append((n, rad(n))) - -radlist.sort(key=itemgetter(1)) -print radlist[10000-1][0] - diff --git a/src/projecteuler/125.py b/src/projecteuler/125.py deleted file mode 100644 index 35dae6b..0000000 --- a/src/projecteuler/125.py +++ /dev/null @@ -1,22 +0,0 @@ - -limit = 10**8 - -squares = [ x*x for x in xrange(1, 7200) ] - -def is_palindrome(n): - nstr = str(n) - return nstr == nstr[::-1] - - -palindromes = set() - -for i in xrange(len(squares)-1): # iterate over all starting positions - for j in xrange(2, len(squares)): # iterate over all possible lengths - sqrsum = sum(squares[i:i+j]) - if sqrsum >= limit: - break - if is_palindrome(sqrsum): - palindromes.add(sqrsum) - -print sum(palindromes) - diff --git a/src/projecteuler/134.c b/src/projecteuler/134.c deleted file mode 100644 index 3f6ea32..0000000 --- a/src/projecteuler/134.c +++ /dev/null @@ -1,59 +0,0 @@ -#include "common.h" -#include <stdlib.h> - -// TODO: improve performance! not yet working on 32 bit systems - -unsigned int getmod(unsigned long p1) -{ - unsigned int mod = 1; - - if(p1 < 10) - mod = 10; - else if(p1 < 100) - mod = 100; - else if(p1 < 1000) - mod = 1000; - else if(p1 < 10000) - mod = 10000; - else if(p1 < 100000) - mod = 100000; - else if(p1 < 1000000) - mod = 1000000; - else - mod = 0; // should not occur and therefore result in division by zero - - return mod; -} - -unsigned long findn(unsigned long p1, unsigned long p2) -{ - unsigned int mod = getmod(p1); - unsigned long n = mod + p1; - while(n % p2 != 0) - n += mod; - - return n; -} - -int main(void) -{ - unsigned long* p = primes(1000020); - unsigned long pcount = p[0]; - unsigned long p1, p2, pos; - unsigned long long result = 0; - - for(pos=3; p[pos]<=1000000; pos++) - { - p1 = p[pos]; - p2 = p[pos+1]; - if(pos%1000==0) - printf("p1: %li\n", p1); - result += findn(p1, p2); - } - - printf("%li\n", result); - - free(p); - return 0; -} - diff --git a/src/projecteuler/187.c b/src/projecteuler/187.c deleted file mode 100644 index 4bee151..0000000 --- a/src/projecteuler/187.c +++ /dev/null @@ -1,28 +0,0 @@ -#include "common.h" -#include <stdlib.h> -#include <string.h> - -const unsigned long limit = 100000000; - -int main(void) -{ - unsigned long* p = primes(limit/2); // sqrt(limit) - unsigned long pcount = p[0]; - unsigned long rcount = 0; - unsigned long i1, i2; - - for(i1=1; i1<=pcount; i1++) - for(i2=i1; i2<=pcount; i2++) - { - unsigned long long result = (unsigned long long) p[i1] * p[i2]; - if(result >= limit) - break; - rcount++; - } - - printf("%li\n", rcount); - - free(p); - return 0; -} - diff --git a/src/projecteuler/206.py b/src/projecteuler/206.py deleted file mode 100644 index b3eddf4..0000000 --- a/src/projecteuler/206.py +++ /dev/null @@ -1,24 +0,0 @@ - -positions = (2,4,6,8,10,12,14) -result = "1_2_3_4_5_6_7_8_9_0" - -number = 1000000030 -state = True - -while number <= 3162277630: - number += 40 if state else 60 - state = not state - - found = True - - square = str(number**2) - for i in positions: - if square[i] != result[i]: - found = False - break - - if found: - break - -print number - diff --git a/src/projecteuler/common.c b/src/projecteuler/common.c deleted file mode 100644 index 69f87c5..0000000 --- a/src/projecteuler/common.c +++ /dev/null @@ -1,154 +0,0 @@ -#include <stdlib.h> -#include <string.h> - -// returns list of primes up to limit; count stored in first element -extern unsigned long* primes(unsigned long limit) -{ - unsigned long i = 2; // start sieving with 2 - unsigned long pos, x; - char* numbers = (char*) malloc(limit*sizeof(char)); - unsigned long* primes; - unsigned long primecount = 0; - memset(numbers, 1, limit); - numbers[0] = 0; - - while(i*i <= limit) - { - // sieve current prime - x = i*i; - while(x <= limit) - { - numbers[x-1] = 0; - x += i; - } - - // search next prime - pos = i; - while(++pos <= limit) - { - if(numbers[pos-1] == 1) - break; - } - i = pos; - } - - // count primes - pos = 0; - while(++pos <= limit) - { - if(numbers[pos-1] == 1) - primecount++; - } - - // create list of primes - primes = (unsigned long*) malloc((primecount+1)*sizeof(unsigned long)); // store count at first element - primes[0] = primecount; - pos = 0; - x = 1; - while(++pos <= limit) - { - if(numbers[pos-1] == 1) - primes[x++] = pos; - } - - free(numbers); - return primes; -} - -extern int isprime(unsigned long number, const unsigned long* primes) -{ - unsigned long count = primes[0]; - unsigned long pos = count/2 + 1; - unsigned long dist = pos/2 + 1; - unsigned long minpos = 0, maxpos = count; - - if(number > primes[count] || number < 2) - return 0; - - // some kind of binary search... - while(1) - { - if(number > primes[pos]) - { - minpos = pos; - pos += dist; - } - else if(number < primes[pos]) - { - maxpos = pos; - pos -= dist; - } - else - return 1; - - dist /= 2; - - if(dist == 1) - { - while(++minpos <= maxpos) - if(primes[minpos] == number) - return 1; - break; - } - } - - return 0; -} - -extern unsigned long phi(unsigned long n, unsigned long* primelist) -{ - double product = (double) n; - unsigned long i; - - //if(isprime(n, primelist)) - // return n-1; - - for(i=1; i<=primelist[0]; i++) - { - unsigned long p = primelist[i]; - if(p > n) - break; - if(n % p != 0) - continue; - product *= (1 - 1.0/p); - } - return (unsigned long) product; -} - -extern int ispermutation(unsigned long a, unsigned long b) -{ - char digits1[10]; - char digits2[10]; - memset(digits1, 0, 10); - memset(digits2, 0, 10); - - while(a > 0 && b > 0) - { - char d1 = a % 10; - char d2 = b % 10; - digits1[d1]++; - digits2[d2]++; - a /= 10; - b /= 10; - } - - if(a > 0 || b > 0) - return 0; - - if(memcmp(digits1, digits2, 10) == 0) - return 1; - - return 0; -} - -/*int main() -{ - long* p = primes(10000); - //printf("%i\n", isprime(9973, p)); - int i; - for(i=0; i<p[0]; i++) - printf("%d: %d\n", p[i+1], isprime(p[i+1], p)); - free(p); - return 0; -}*/ - diff --git a/src/projecteuler/common.h b/src/projecteuler/common.h deleted file mode 100644 index 10b298e..0000000 --- a/src/projecteuler/common.h +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef COMMON_H -#define COMMON_H - -unsigned long* primes(unsigned long limit); -int isprime(unsigned long number, const unsigned long* primes); -unsigned long phi(unsigned long n, unsigned long* primelist); -int ispermutation(unsigned long a, unsigned long b); - -#endif // COMMON_H diff --git a/src/projecteuler/common.py b/src/projecteuler/common.py deleted file mode 100644 index 9ca2d9b..0000000 --- a/src/projecteuler/common.py +++ /dev/null @@ -1,145 +0,0 @@ -import math - -class sieve: - def __init__(self, limit): - self.limit = limit - self.number_list = [False] + [True]*(self.limit-1) - self.list_len = len(self.number_list) - - def next_prime(self, i): - x = i+1 - while(x <= self.list_len): - if self.number_list[x-1] == True: - break - x += 1 - return x - - def primes(self): - i = 2 - while(i*i <= self.list_len): - x = i*i - while(x <= self.list_len): - self.number_list[x-1] = False - x += i - i = self.next_prime(i) - - primeset = set() - for i in xrange(1, self.limit+1): - if self.number_list[i-1]: - primeset.add(i) - return primeset - -class pandigital: - # create n-digit pandigital numbers - def __init__(self, start, end): - self.digits = set() - for d in range(start, end+1): - self.digits.add(d) - - # return set of digits that are not in x - def missing(self, x): - d = set() - while x > 0: - d.add(x % 10) - x /= 10 - return self.digits - d - - def numbers(self, r): - result = set() - result |= self.digits - for i in range(2, r): - new = set() - for x in result: - for y in self.missing(x): - new.add(x*10 + y) - result |= new - return result - -def ggt(a, b): # Stein's algorithm - k = 0 - t = 0 - while a&1==0 and b&1==0: - a = a>>1 - b = b>>1 - k += 1 - if a&1==1: - t = -b - else: - t = a - while t != 0: - while t&1==0: - t = t>>1 - if t>0: - a = t - else: - b = -t - t = a - b - return a*(1<<k) - -def composite(n): # check if n = c^b - primes = sieve(int(math.sqrt(n))+1).primes() - for c in primes: - number = c - while number < n: - number *= c - if number == n: - return True - return False - -def order(n, r): - res = n % r - k = 1 - while res != 1: - res = (res * n) % r - k += 1 - return k - -def phi(x): - primes = sieve(x+1).primes() - product = x - for p in primes: - if x % p != 0: - continue - product *= (1 - 1.0/p) - return int(product) - - -def prime_test(n): # aks test - if composite(n): - return False - - logn = math.log(n, 2) - o = 0 - r = 0 - while o <= logn: - r += 1 - o = order(n, r) - - a = 1 - while a <= r: - g = ggt(a, n) - if g < n and g > 1: - return False - a += 1 - - if n <= r*r: - return True - - #for a in xrange(1, math.floor(math.sqrt(phi(r))*logn)): - # # TODO if math.pow(x+a, n) != - - return True - -def permutation(p, q): # checks whether p is a permuation of q - digits_p = [0]*10 - digits_q = [0]*10 - while p > 0: - digit = p % 10 - digits_p[digit] += 1 - p /= 10 - while q > 0: - digit = q % 10 - digits_q[digit] += 1 - q /= 10 - return digits_p == digits_q - |
