Created
March 12, 2012 21:04
-
-
Save a-r-d/2024673 to your computer and use it in GitHub Desktop.
project euler # 11 partway
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#project euler problem 11 | |
num_str = '''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''' | |
### split data into a 2d array | |
splits = num_str.split('\n') | |
grid_list = [] | |
for str in splits: | |
lineSplits = str.split(' ') | |
grid_list.append(lineSplits) | |
### convert to ints | |
int_grid = [] | |
for line in grid_list: | |
int_line = [] | |
for i in line: | |
int_line.append(int(i)) | |
int_grid.append(int_line) | |
#check conversion | |
''' | |
for line in int_grid: | |
print line | |
''' | |
### mk combos: | |
num_combos = [] | |
len_lines = len(int_grid) | |
# a line counter | |
line_num = 0 | |
for line in int_grid: | |
#combo = [] | |
#mk the to the left of i: | |
length = 20 #length of the line | |
n = 0 | |
for i in line: | |
# this is the n'th element of line | |
if n < length - 4: | |
combo = [i, line[n+1], line[n+2], line[n+3]] | |
num_combos.append(combo) | |
n += 1 | |
### is this redundant?? | |
#combo = [] | |
#mk to the the right of i: | |
n = 0 | |
for i in line: | |
if n > 3: | |
combo = [i, line[n-1], line[n-2], line[n-3]] | |
num_combos.append(combo) | |
n += 1 | |
#mk straight down combo of i: | |
nn = 0 | |
for i in line: | |
# so if n+4 down is less than the length of the num of rows - 1 | |
if line_num < (len_lines - 4): | |
#we have enough space to find one downward | |
combo = [i, int_grid[line_num + 1][nn], int_grid[line_num + 2][nn], int_grid[line_num + 3][nn]] | |
num_combos.append(combo) | |
nn += 1 | |
#mk diagonal down and left: | |
nnn = 0 | |
for i in line: | |
# so if n+4 down is less than the length of the num of rows - 1 | |
if line_num < (len_lines - 4) and nnn + 4 < length: | |
#we have enough space to find one downward | |
combo = [i, int_grid[line_num + 1][nnn + 1], int_grid[line_num + 2][nnn + 2], int_grid[line_num + 3][nnn + 3]] | |
num_combos.append(combo) | |
nn += 1 | |
#mk diagonal down and right: | |
nnnn = 0 | |
for i in line: | |
# so if n+4 down is less than the length of the num of rows - 1 | |
if line_num < (len_lines - 4) and nnnn + 4 < length: | |
#we have enough space to find one downward | |
combo = [i, int_grid[line_num + 1][nnn + 1], int_grid[line_num + 2][nnn + 2], int_grid[line_num + 3][nnn + 3]] | |
num_combos.append(combo) | |
nn += 1 | |
# another counter for which line we are on | |
line_num += 1 | |
ln = len(num_combos) | |
print "combinations:", ln | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment