[Tutor] locations
Alan Gauld
alan.gauld at freenet.co.uk
Fri Apr 21 17:49:26 CEST 2006
> ---------------------
I have a question. in the LIST M=
[[1,1,1,1],
[0,1,1,1],
[1,1,0,1],
[1,1,1,1]]
If treat them as the locations of 16 points, I want to generate another list
N to hold the corresponding value for each point to its nearest 0.
> ------------------
Your explanation of the problem is clear up to this point, but...
> -----------------------
For example:
the nearest 0 point to M[0][0] is M[1][0], so N[0][0]=1;
> ----------------------
You lost me there, how do you calculate the 1?
Is it the linear distance? The number of hops?
related to the index numbering? I'm confused.
> M[0][1]'s nearest 0 is also at M[1][0], so N[0][1]=2;
Linearly this is root 2 in distance not 2 so I assume you
are counting hops?
> but N[0][3]=3 because 0 at M[2][2] is much nearer;
If you are counting hops then 3 is valid but its only one hop
nearer not *much* nearer!
> -------------------
N should be
[[1,2,2,3],
[0,1,1,2],
[1,1,0,1],
[2,2,1,2]]
> -------------------
Assuming you mean hops... (and there probably is a proper
mathematical algorithm for this.) I would do this:
Locate the first zero(1,1) in this case.
Mark all boxes with their distance to it.
N looks like this (forget the python syntax
for now, focus on the problem):
1234
0123
1234
2345
Can you figure out the algorithm for doing that?
Now find the next zero in M and do the same, except you
only overwrite values where the new value is less than
previously. Thus the values:
4323
3212
2101
3212
becomes
1223
0112
1101
2212
when overlaid on the previous matrix.
Which is your required matrix N - QED.
Does that help?
Alan G
Author of the learn to program web tutor
http://www.freenetpages.co.uk/hp/alan.gauld
More information about the Tutor
mailing list