|
|
|
@ -1,68 +1,70 @@
|
|
|
|
|
import numpy as np
|
|
|
|
|
from sympy.utilities.iterables import multiset_permutations
|
|
|
|
|
|
|
|
|
|
def findCoordAround(center, nbAround):
|
|
|
|
|
nbDimention = len(center)
|
|
|
|
|
find = []
|
|
|
|
|
for i in range(len(center)):
|
|
|
|
|
find = getNCoordDiff(center,find,i,nbAround)
|
|
|
|
|
for i in range(1, nbDimention + 1):
|
|
|
|
|
find = getNCoordDifferente(center, find, i, nbAround)
|
|
|
|
|
# print(len(find),(nbAround*2+1)*(nbAround*2+1))
|
|
|
|
|
# input()
|
|
|
|
|
return find
|
|
|
|
|
|
|
|
|
|
def getNCoordDiff(center,find,nbDiffValue, nbAround):
|
|
|
|
|
def getNCoordDifferente(center, find, nbDifferanteValue, nbAround):
|
|
|
|
|
coord = []
|
|
|
|
|
if (-nbAround+nbAround >= nbDiffValue):
|
|
|
|
|
return find
|
|
|
|
|
for i in range(nbDiffValue):
|
|
|
|
|
coord.append(-nbAround+i)
|
|
|
|
|
for i in range(nbDifferanteValue):
|
|
|
|
|
if -nbAround + i > nbAround:
|
|
|
|
|
return find
|
|
|
|
|
coord.append(-nbAround + i)
|
|
|
|
|
find = getCompletVariationOfCoord(center, find, coord)
|
|
|
|
|
|
|
|
|
|
while True:
|
|
|
|
|
modified = False
|
|
|
|
|
cursor = len(coord)-1
|
|
|
|
|
while(not modified):
|
|
|
|
|
if (cursor<0):
|
|
|
|
|
cursor = len(coord) - 1
|
|
|
|
|
while not modified:
|
|
|
|
|
if cursor < 0 or cursor == len(coord):
|
|
|
|
|
return find
|
|
|
|
|
if (coord[cursor]+len(coord)-1-cursor<nbAround):
|
|
|
|
|
if coord[cursor] + len(coord) - 1 - cursor < nbAround:
|
|
|
|
|
modified = True
|
|
|
|
|
coord[cursor] += 1
|
|
|
|
|
val = coord[cursor] +1
|
|
|
|
|
val = coord[cursor] + 1
|
|
|
|
|
cursor += 1
|
|
|
|
|
while(cursor<len(coord)):
|
|
|
|
|
while cursor < len(coord):
|
|
|
|
|
coord[cursor] = val
|
|
|
|
|
cursor +=1
|
|
|
|
|
cursor += 1
|
|
|
|
|
val += 1
|
|
|
|
|
else:
|
|
|
|
|
cursor -= 1
|
|
|
|
|
find = getCompletVariationOfCoord(center,find,coord)
|
|
|
|
|
return find
|
|
|
|
|
find = getCompletVariationOfCoord(center, find, coord)
|
|
|
|
|
|
|
|
|
|
def getCompletVariationOfCoord(center,find,partialCoord):
|
|
|
|
|
coord = []
|
|
|
|
|
for i in range(len(partialCoord)):
|
|
|
|
|
coord.append(partialCoord[i])
|
|
|
|
|
def getCompletVariationOfCoord(center, find, partialCoord):
|
|
|
|
|
coord = partialCoord[:]
|
|
|
|
|
while len(coord) != len(center):
|
|
|
|
|
coord.append(partialCoord[0])
|
|
|
|
|
find = getPermutationOfCoord(center,find,coord)
|
|
|
|
|
find = getPermutationOfCoord(center, find, coord)
|
|
|
|
|
|
|
|
|
|
while True:
|
|
|
|
|
cursor = len(coord)-1
|
|
|
|
|
modified = False
|
|
|
|
|
cursor = len(coord) - 1
|
|
|
|
|
while not modified:
|
|
|
|
|
if (cursor == len(partialCoord)-1):
|
|
|
|
|
if cursor == len(partialCoord) - 1:
|
|
|
|
|
return find
|
|
|
|
|
if (coord[cursor]!=partialCoord[len(partialCoord)-1]):
|
|
|
|
|
if coord[cursor] != partialCoord[len(partialCoord) - 1]:
|
|
|
|
|
modified = True
|
|
|
|
|
afterCursor = 0
|
|
|
|
|
while afterCursor<len(partialCoord) and coord[cursor] != partialCoord[afterCursor]:
|
|
|
|
|
afterCursor +=1
|
|
|
|
|
while afterCursor < len(partialCoord) and coord[cursor] != partialCoord[afterCursor]:
|
|
|
|
|
afterCursor += 1
|
|
|
|
|
afterCursor += 1
|
|
|
|
|
while(cursor<len(coord)):
|
|
|
|
|
while cursor < len(coord):
|
|
|
|
|
coord[cursor] = partialCoord[afterCursor]
|
|
|
|
|
cursor += 1
|
|
|
|
|
else:
|
|
|
|
|
cursor -= 1
|
|
|
|
|
find = getPermutationOfCoord(center,find,coord)
|
|
|
|
|
return find
|
|
|
|
|
find = getPermutationOfCoord(center, find, coord)
|
|
|
|
|
|
|
|
|
|
def getPermutationOfCoord(center,find,coord):
|
|
|
|
|
find.append(coord)
|
|
|
|
|
def getPermutationOfCoord(center, find, coord):
|
|
|
|
|
for perm in multiset_permutations(coord):
|
|
|
|
|
find.append(perm)
|
|
|
|
|
find.append(list(perm))
|
|
|
|
|
return find
|
|
|
|
|
|
|
|
|
|
def applySapceAroundToCase(center,spaceAround,space):
|
|
|
|
@ -72,9 +74,9 @@ def applySapceAroundToCase(center,spaceAround,space):
|
|
|
|
|
for i in range(len(spaceAround[y])):
|
|
|
|
|
if not estBon:
|
|
|
|
|
continue
|
|
|
|
|
spaceAround[y][i] += center[i]
|
|
|
|
|
estBon = estBon and space.minCoord < spaceAround[y][i] < space.maxCoord
|
|
|
|
|
else :
|
|
|
|
|
spaceAround[y][i] += center[i]
|
|
|
|
|
estBon = estBon and 0 <= spaceAround[y][i] <= space.nbSubdivisions-1
|
|
|
|
|
if estBon:
|
|
|
|
|
reelSpaceAround.append(spaceAround[y])
|
|
|
|
|
print(reelSpaceAround)
|
|
|
|
|
return reelSpaceAround
|