1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
import numpy as np
def GetManDist(arrValidInputPnt, arrCurPnt):
return abs(arrValidInputPnt[0] - arrCurPnt[0]) + abs(arrValidInputPnt[1] - arrCurPnt[1])
## Example 1
## nX = 3
## nY = 4
## arrPnts = [[1, 2], [3, 1], [2, 4], [2, 3]]
## Example 2
## nX = 2
## nY = 5
## arrPnts = [[3, 4], [2, 3], [1, 5], [2, 5]]
## Example 3
## nX = 1
## nY = 1
## arrPnts = [[2, 2], [3, 3], [4, 4]]
## Example 4
## nX = 0
## nY = 0
## arrPnts = [[0, 1], [1, 0], [0, 2], [2, 0]]
## Example 5
nX = 5
nY = 5
arrPnts = [[5, 6], [6, 5], [5, 4], [4, 5]]
objValidPnts = {nIndx : arrPntLoop for nIndx, arrPntLoop in enumerate(arrPnts) if arrPntLoop[0] == nX or arrPntLoop[1] == nY}
if len(objValidPnts) > 0:
nMinIndx = np.argmin([GetManDist(objValidPnts[nIndxKey], [nX, nY]) for nIndxKey in objValidPnts])
print ([nIndxKey for nIndx, nIndxKey in enumerate(objValidPnts) if nIndx == nMinIndx][0])
else:
print (-1)
|