Я пытаюсь написать код для извлечения данных из матрицы, затем на основе данных извлекать соседние данные в соответствии с данными, которые я извлек. Однако, когда я закончил основную часть кода, я столкнулся с проблемой жесткого кодирования. Я бы предпочел не кодировать это жестко, так как это привело бы к примерно 1200 строкам кода, в результате я надеялся, что есть более интуитивный способ завершить этот код, при этом занимая минимальное количество строк и будучи эффективным.
def Retrieve_Adjacents(current, tile_num):
#Orientations for the Retrieval Code is based on the TileValue System with the top
#Row being 0 1 2
#Local lsit for returning Adjacent(s)
Adjacents = list()
FaceVal_Adjacents = list()
Tile_Num_Adjacents = list()
RL = list() #Retrieval 2D Array
for yrunner in range(5):
RLS = list()
for xrunner in range(5):
RLS.append(0)
RL.insert(yrunner, RLS)
WF, OF, BF, RF, GF, YF = Rubiks.Get_Cube_Data(1)
#White Face
if current == 0:
xiter = 0
altaudit = 0
for auditor in range(9):
ypos = (math.floor(auditor / 3)) + 1
if auditor == 3 or auditor == 6:
xiter = 0
xiter += 1
RL[ypos][xiter] = WF[auditor]
if auditor < 3:
if auditor == 0:
altaudit_right = 2
altaudit_left = 0
elif auditor == 1:
altaudir_right = 5
altaudit_left = 3
elif auditor == 2:
altaudit_right = 8
altaudit_left = 6
#Right / Left Faces
RL[(auditor + 1)][4] = OF[altaudit_left]
RL[(auditor + 1)][0] = RF[altaudit_right]
#Top Bottom Faces
RL[0][(auditor + 1)] = GF[(auditor + 6)]
RL[4][(auditor + 1)] = BF[(auditor)]
#Retreiver
#Vars to work
#Adjacents
#FaceVal_Adjacents
#Tile_Num_Adjacents
eventester = tile_num % 2
if eventester == 0:
if tile_num == 0 and current == 0:
#First Coord
Adjacents.append(RL[0][1])
FaceVal_Adjacents.append(4)
Tile_Num_Adjacents.append(6)
#Second Coord
Adjacents.append(RL[1][0])
FaceVal_Adjacents.append(3)
Tile_Num_Adjacents.append(2)
if tile_num == 1 and current == 0:
#First Coord
Adjacents.append(RL[0][1])
FaceVal_Adjacents.append(4)
Tile_Num_Adjacents.append(6)
#Second Coord
Adjacents.append(RL[1][0])
FaceVal_Adjacents.append(3)
Tile_Num_Adjacents.append(2)
Жесткий код, приведенный выше, - это то, что я хотел бы сделать интуитивно понятным. Смежные элементы теперь выбираются более эффективным образом, поэтому мне не нужно беспокоиться об этом, однако я бы предпочел, чтобы существовал более простой способ получения Номинальная стоимость и номер плитки для смежных. Они извлекаются из матрицы следующим образом: 0 1 1 1 0, 3 2 2 2 1, 3 2 2 2 1, 3 2 2 2 1, 0 5 5 5 0,
Где, если наша выбранная плитка 0 на грани 2, смежные будут в позициях [0] [1] или 1 и [1] [0] или 3, это необходимо сделать для всей грани 2. Если у вас есть какие-либо вопросы относительно кода пожалуйста, опубликуйте их ниже, в противном случае спасибо