Note that there are some explanatory texts on larger screens.

plurals
  1. POfinding diagonal numbers
    primarykey
    data
    text
    <p>So I have this array here:</p> <pre><code>t = [[8,2,22,97,38,15,0,40,0,75,4,5,7,78,52,12,50,77,91,8], [49,49,99,40,17,81,18,57,60,87,17,40,98,43,69,48,4,56,62,0], [81,49,31,73,55,79,14,29,93,71,40,67,53,88,30,3,49,13,36,65], [52,70,95,23,4,60,11,42,69,24,68,56,1,32,56,71,37,2,36,91], [22,31,16,71,51,67,63,89,41,92,36,54,22,40,40,28,66,33,13,80], [24,47,32,60,99,3,45,2,44,75,33,53,78,36,84,20,35,17,12,50], [32,98,81,28,64,23,67,10,26,38,40,67,59,54,70,66,18,38,64,70], [67,26,20,68,2,62,12,20,95,63,94,39,63,8,40,91,66,49,94,21], [24,55,58,5,66,73,99,26,97,17,78,78,96,83,14,88,34,89,63,72], [21,36,23,9,75,0,76,44,20,45,35,14,0,61,33,97,34,31,33,95], [78,17,53,28,22,75,31,67,15,94,3,80,4,62,16,14,9,53,56,92], [16,39,5,42,96,35,31,47,55,58,88,24,0,17,54,24,36,29,85,57], [86,56,0,48,35,71,89,7,5,44,44,37,44,60,21,58,51,54,17,58], [19,80,81,68,5,94,47,69,28,73,92,13,86,52,17,77,4,89,55,40], [4,52,8,83,97,35,99,16,7,97,57,32,16,26,26,79,33,27,98,66], [88,36,68,87,57,62,20,72,3,46,33,67,46,55,12,32,63,93,53,69], [4,42,16,73,38,25,39,11,24,94,72,18,8,46,29,32,40,62,76,36], [20,69,36,41,72,30,23,88,34,62,99,69,82,67,59,85,74,4,36,16], [20,73,35,29,78,31,90,1,74,31,49,71,48,86,81,16,23,57,5,54], [1,70,54,71,83,51,54,69,16,92,33,48,61,43,52,1,89,19,67,48]] </code></pre> <p>It's just a 2D list, what I need to do is find the four numbers diagonal to a number in any way.</p> <p>I am getting the number using an xy co-ordinate and then getting the numbers around it, I thought this would be easy. </p> <p>What I try to do is get the number and then find the 3 other numbers, I do this four times, for each direction</p> <p>Here's the code I did to try and get it to work but it doesn't want to come out with correct numbers. </p> <pre><code>def getD(t,x,y): z = [[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]] xm = 1 ym = 1 for a in range(0,4): if a == 0: xm = 1 ym = 1 elif a == 1: xm = 1 ym = -1 elif a == 2: xm = -1 ym = 1 elif a == 3: xm = -1 ym = -1 for b in range(0,4): z[a][b]=t[y+(b*ym)][x+(b+xm)] print z </code></pre> <p><code>ym</code> and <code>xm</code> is the direction that we want to move, so if <code>xm</code> is -1, go left, if 1 then go right, if <code>ym</code> is -1 then go down, else go up.</p> <p>Anyone have any way of doing this?</p> <p>If I do <code>getD(t, 0, 0)</code> then I get back <code>[[2, 99, 73, 4], [2, 54, 29, 72], [8, 49, 49, 95], [8, 1, 73, 36]]</code></p> <p>How would I emit ones that aren't valid? For example for when it is <code>getD(t,0,0)</code> and I only want the diagonal which is down and to the right because the others cant be right?</p> <hr> <p>Heres a formatted version of the array</p> <pre><code>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 </code></pre> <p>Say I wanted all the diagonals at <code>(0,0)</code> [the top corner] using <code>getD(t,0,0)</code></p> <p>Using the code above I would want something back along the lines of:</p> <pre><code>[[0, 0, 0, 0], [8, 49, 31, 23], [0, 0, 0, 0], [0, 0, 0, 0]] </code></pre> <p>or if I wanted to get diagonals at point <code>(19,19)</code> [the last bottom corner] using <code>getD(t, 19, 19)</code></p> <p>Using the code above I would want something back along the lines of:</p> <pre><code>[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [48, 5, 4, 40]] </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload