3

Question : I want to create a grid like this.

08 06 78 56 96 
45 63 68 23 51 
63 78 45 08 37 
56 73 92 73 83 
43 22 67 98 55 

Once I created this grid, I want to find the product of four adjacent numbers in the same direction (up, down, left, right, or diagonally)?

How can I do this?

I searched a lot and found an answer. They suggested to use N-dimensional array. But I don't know how to do that?

6
  • What format is your data in to start with? Commented Oct 10, 2013 at 1:55
  • Can't understand your question? Commented Oct 10, 2013 at 1:56
  • You want to create a grid of numbers like in the question, right? So how are you getting these numbers? Are they in a list? Commented Oct 10, 2013 at 1:57
  • Yeah.It's given.Thanks Commented Oct 10, 2013 at 2:01
  • 1
    You do want to use a multidimensional array and this should help: stackoverflow.com/questions/6667201/… Commented Oct 10, 2013 at 2:07

1 Answer 1

3

When you specify a backslash at the end of the string, it will allow you to continue the current string along to the next line. So let's first think about the simplest way we can stuff that grid of numbers into our code, a simple string with lines separated by newline characters!

Try doing something like this:

nums = '\
08 06 78 56 96\n\
45 63 68 23 51\n\
63 78 45 08 37\n\
56 73 92 73 83\n\
43 22 67 98 55'
grid = []
for line in nums.split('\n'):
    grid.append(map(int, line.split(' ')))

And then you can print your grid with:

>>> print grid
[[8, 6, 78, 56, 96], [45, 63, 68, 23, 51], [63, 78, 45, 8, 37], [56, 73, 92, 73,
 83], [43, 22, 67, 98, 55]]

The grid will be a two-dimensional list which can be queried by first specifying the row, then the column. For example if you wish to get an element from 4th row and the 2nd column, you could do:

>>> print grid[3][1] # it's 3, 1 because lists are 0-indexed
73

And that would correctly give you 73 because if you look at your original grid:

08 06 78 56 96 
45 63 68 23 51 
63 78 45 08 37 
56 73 92 73 83 
43 22 67 98 55

73 is on row 4 and column 2. Good luck with Project Euler.

Edit:

You might lack a nice source code editor so here is the Problem 11 grid from Project Euler nicely laid out in string format for you to parse and do what you please with it. :)

nums = '\
08 02 22 97 38 15 00 40 00 75 04 05 07 78 52 12 50 77 91 08\n\
49 49 99 40 17 81 18 57 60 87 17 40 98 43 69 48 04 56 62 00\n\
81 49 31 73 55 79 14 29 93 71 40 67 53 88 30 03 49 13 36 65\n\
52 70 95 23 04 60 11 42 69 24 68 56 01 32 56 71 37 02 36 91\n\
22 31 16 71 51 67 63 89 41 92 36 54 22 40 40 28 66 33 13 80\n\
24 47 32 60 99 03 45 02 44 75 33 53 78 36 84 20 35 17 12 50\n\
32 98 81 28 64 23 67 10 26 38 40 67 59 54 70 66 18 38 64 70\n\
67 26 20 68 02 62 12 20 95 63 94 39 63 08 40 91 66 49 94 21\n\
24 55 58 05 66 73 99 26 97 17 78 78 96 83 14 88 34 89 63 72\n\
21 36 23 09 75 00 76 44 20 45 35 14 00 61 33 97 34 31 33 95\n\
78 17 53 28 22 75 31 67 15 94 03 80 04 62 16 14 09 53 56 92\n\
16 39 05 42 96 35 31 47 55 58 88 24 00 17 54 24 36 29 85 57\n\
86 56 00 48 35 71 89 07 05 44 44 37 44 60 21 58 51 54 17 58\n\
19 80 81 68 05 94 47 69 28 73 92 13 86 52 17 77 04 89 55 40\n\
04 52 08 83 97 35 99 16 07 97 57 32 16 26 26 79 33 27 98 66\n\
88 36 68 87 57 62 20 72 03 46 33 67 46 55 12 32 63 93 53 69\n\
04 42 16 73 38 25 39 11 24 94 72 18 08 46 29 32 40 62 76 36\n\
20 69 36 41 72 30 23 88 34 62 99 69 82 67 59 85 74 04 36 16\n\
20 73 35 29 78 31 90 01 74 31 49 71 48 86 81 16 23 57 05 54\n\
01 70 54 71 83 51 54 69 16 92 33 48 61 43 52 01 89 19 67 48'
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.