gen_successors (351)
# 603xxxxx21 1 (2020-09-20 23:33) def gen_successors(node): successors = [] if node.index(0) == 0: successors = [node[3],node[1],node[2],node[0],node[4],node[5],node[6],node[7],node[8],node[9]+"D",\ node[1],node[0],node[2],node[3],node[4],node[5],node[6],node[7],node[8],node[9]+"R"] elif node.index(0) == 1: successors = [node[0],node[4],node[2],node[3],node[1],node[5],node[6],node[7],node[8],node[9]+"D",\ node[1],node[0],node[2],node[3],node[4],node[5],node[6],node[7],node[8],node[9]+"L",\ node[0],node[2],node[1],node[3],node[4],node[5],node[6],node[7],node[8],node[9]+"R"] elif node.index(0) == 2: successors = [node[0],node[1],node[5],node[3],node[4],node[2],node[6],node[7],node[8],node[9]+"D",\ node[0],node[2],node[1],node[3],node[4],node[5],node[6],node[7],node[8],node[9]+"L"] elif node.index(0) == 3: successors = [node[3],node[1],node[2],node[0],node[4],node[5],node[6],node[7],node[8],node[9]+"U",\ node[0],node[1],node[2],node[6],node[4],node[5],node[3],node[7],node[8],node[9]+"D",\ node[0],node[1],node[2],node[4],node[3],node[5],node[6],node[7],node[8],node[9]+"R"] elif node.index(0) == 4: successors = [node[0],node[4],node[2],node[3],node[1],node[5],node[6],node[7],node[8],node[9]+"U",\ node[0],node[1],node[2],node[3],node[7],node[5],node[6],node[4],node[8],node[9]+"D",\ node[0],node[1],node[2],node[4],node[3],node[5],node[6],node[7],node[8],node[9]+"L",\ node[0],node[1],node[2],node[3],node[5],node[4],node[6],node[7],node[8],node[9]+"R"] elif node.index(0) == 5: successors = [node[0],node[1],node[5],node[3],node[4],node[2],node[6],node[7],node[8],node[9]+"U",\ node[0],node[1],node[2],node[3],node[4],node[8],node[6],node[7],node[5],node[9]+"D",\ node[0],node[1],node[2],node[3],node[5],node[4],node[6],node[7],node[8],node[9]+"L"] elif node.index(0) == 6: successors = [node[0],node[1],node[2],node[6],node[4],node[5],node[3],node[7],node[8],node[9]+"U",\ node[0],node[1],node[2],node[3],node[4],node[5],node[7],node[6],node[8],node[9]+"R"] elif node.index(0) == 7: successors = [node[0],node[1],node[2],node[3],node[7],node[5],node[6],node[4],node[8],node[9]+"U",\ node[0],node[1],node[2],node[3],node[4],node[5],node[7],node[6],node[8],node[9]+"L",\ node[0],node[1],node[2],node[3],node[4],node[5],node[6],node[8],node[7],node[9]+"R"] elif node.index(0) == 8: successors = [node[0],node[1],node[2],node[3],node[4],node[8],node[6],node[7],node[5],node[9]+"U",\ node[0],node[1],node[2],node[3],node[4],node[5],node[6],node[8],node[7],node[9]+"L"] return successors #------------------------------------------ |
# 603xxxxx21 2 (2020-09-20 23:05) def gen_successors(node): successors = [] idx=node.index(0) if idx%3==0: out=list(node) out[-1]+='R' out[idx],out[idx+1]=out[idx+1],out[idx] for c in out: successors.append(c) elif idx%3==1: out=list(node) out[-1]+='R' out[idx],out[idx+1]=out[idx+1],out[idx] for c in out: successors.append(c) out=list(node) out[-1]+='L' out[idx-1],out[idx]=out[idx],out[idx-1] for c in out: successors.append(c) elif idx%3==2: out=list(node) out[-1]+='L' out[idx-1],out[idx]=out[idx],out[idx-1] for c in out: successors.append(c) if idx//3==0: out=list(node) out[-1]+='D' out[idx],out[idx+3]=out[idx+3],out[idx] for c in out: successors.append(c) elif idx//3==1: out=list(node) out[-1]+='D' out[idx],out[idx+3]=out[idx+3],out[idx] for c in out: successors.append(c) out=list(node) out[-1]+='U' out[idx-3],out[idx]=out[idx],out[idx-3] for c in out: successors.append(c) elif idx//3==2: out=list(node) out[-1]+='U' out[idx-3],out[idx]=out[idx],out[idx-3] for c in out: successors.append(c) return successors #------------------------------------------ |
# 603xxxxx21 3 (2020-09-20 16:54) def gen_successors(node): successors = [] direction = node[-1] zero_position = node.index(0) titles = len(node[:-1]) dim = int(titles**0.5) row = zero_position // dim col = zero_position % dim #if... if row in range(1,dim): temp = node[:-1] temp[zero_position],temp[zero_position-dim] = temp[zero_position-dim],temp[zero_position] temp += [direction+'U'] successors += temp if row in range(0,dim-1) : temp = node[:-1] temp[zero_position],temp[zero_position+dim] = temp[zero_position+dim],temp[zero_position] temp += [direction+'D'] successors += temp if col != 0 : temp = node[:-1] temp[zero_position],temp[zero_position -1] = temp[zero_position -1],temp[zero_position] temp += [direction+'L'] successors += temp if col != dim-1 : temp = node[:-1] temp[zero_position],temp[zero_position +1] = temp[zero_position +1],temp[zero_position] temp += [direction+'R'] successors += temp return successors #------------------------------------------ |
# 603xxxxx21 4 (2020-09-20 18:13) def gen_successors(node): successors = [] position0 = node.index(0) if not (position0 > 5): temp=list(node) temp[position0],temp[position0+3] = temp[position0+3],temp[position0] temp[-1] = temp[-1]+ "D" successors += temp if not (position0 < 3): temp=list(node) temp[position0],temp[position0-3] = temp[position0-3],temp[position0] temp[-1] = temp[-1]+ "U" successors += temp if not (position0 % 3 == 0): temp=list(node) temp[position0],temp[position0-1] = temp[position0-1],temp[position0] temp[-1] = temp[-1]+ "L" successors += temp if not (position0 % 3 == 2): temp=list(node) temp[position0],temp[position0+1] = temp[position0+1],temp[position0] temp[-1] = temp[-1]+ "R" successors += temp return successors #------------------------------------------ |
# 603xxxxx21 5 (2020-09-20 23:12) def gen_successors(node): found = False for i in range(len(node)): if node[i] == 0 and i == 0: successors = [node[i+3]]+node[1:3]+[node[i]]+node[4:-1]+[node[-1]+'D']+\ [node[i+1],node[i]]+node[i+2:-1]+[node[-1]+'R'] found = True break elif node[i] == 0 and i == 2: successors = node[0:2]+[node[i+3]]+node[3:5]+[node[i]]+node[6:-1]+[node[-1]+'D']+\ [node[0],node[i],node[i-1]]+node[3:-1]+[node[-1]+'L'] found = True break elif node[i] == 0 and i == 6: successors = node[0:3]+[node[i]]+node[4:6]+[node[i-3]]+node[7:-1]+[node[-1]+'U']+\ node[0:6]+[node[i+1],node[i]]+[node[-2]]+[node[-1]+'R'] found = True break elif node[i] == 0 and i == 8: successors = node[0:5]+[node[i]]+node[6:8]+[node[i-3]]+[node[-1]+'U']+\ node[0:7]+[node[i],node[i-1]]+[node[-1]+'L'] found = True break elif node[i] == 0 and i == 1: successors = [node[0],node[4],node[2],node[3],node[1]]+node[5:-1]+[node[-1]+'D']+\ [node[i],node[i-1]]+node[2:-1]+[node[-1]+'L']+\ [node[0],node[2],node[1]]+node[3:-1]+[node[-1]+'R'] found = True break elif node[i] == 0 and i == 3: successors = [node[3]]+node[1:3]+[node[0]]+node[4:-1]+[node[-1]+'U']+\ node[0:3]+[node[6]]+node[4:6]+[node[3]]+node[7:-1]+[node[-1]+'D']+\ node[0:3]+[node[4],node[3]]+node[5:-1]+[node[-1]+'R'] found = True break elif node[i] == 0 and i == 5: successors = node[0:2]+[node[5]]+node[3:5]+[node[2]]+node[6:-1]+[node[-1]+'U']+\ node[0:4]+[node[5],node[4]]+node[6:-1]+[node[-1]+'L']+\ node[0:5]+[node[8],node[6],node[7],node[5]]+[node[-1]+'D'] found = True break elif node[i] == 0 and i == 7: successors = node[0:4]+[node[7]]+node[5:7]+[node[4],node[8]]+[node[-1]+'U']+\ node[0:6]+[node[7],node[6],node[8]]+[node[-1]+'L']+\ node[0:7]+[node[8],node[7]]+[node[-1]+'R'] found = True break elif node[i] == 0 and i == 4: successors = [node[0],node[4],node[2],node[3],node[1]]+node[5:-1]+[node[-1]+'U']+\ node[0:4]+[node[7],node[5],node[6],node[4],node[8]]+[node[-1]+'D']+\ node[0:3]+[node[4],node[3]]+node[5:-1]+[node[-1]+'L']+\ node[0:4]+[node[5],node[4]]+node[6:-1]+[node[-1]+'R'] found = True break return successors #------------------------------------------ |
# 603xxxxx21 6 (2020-09-20 20:06) def gen_successors(node): successors = [] zero_pos = node.index(0) if node[0] != 0 and node[3] != 0 and node[6] != 0 : n = list(node) n[zero_pos] , n[zero_pos - 1 ] = n[zero_pos -1 ] , n[zero_pos] n[9] += "L" for x in n : successors.append(x) if 0 not in node[0:3] : n = list(node) n[zero_pos] , n[zero_pos - 3 ] = n[zero_pos - 3 ] , n[zero_pos] n[9] += "U" for x in n : successors.append(x) if node[2] != 0 and node[5] != 0 and node[8] != 0 : n = list(node) n[zero_pos] , n[zero_pos + 1 ] = n[zero_pos + 1 ] , n[zero_pos] n[9] += "R" for x in n : successors.append(x) if 0 not in node[6:9] : n = list(node) n[zero_pos] , n[zero_pos + 3 ] = n[zero_pos + 3 ] , n[zero_pos] n[9] += "D" for x in n : successors.append(x) return successors #------------------------------------------ |
# 604xxxxx28 7 (2020-09-18 13:11) def gen_successors(node): successors = [] for cmd in "udlr": simulated = list(node) if do_move(cmd, simulated): successors += simulated return successors #--------------------------------------- def do_move(move: str, board: list, board_is_node: bool=True) -> bool: global board_size, board_items move = move.lower() if move not in "udlr": return False if not can_move(move, board): return False source_index = board.index(0) dest_index = None if move == 'u': dest_index = source_index - board_size elif move == 'd': dest_index = source_index + board_size elif move == 'l': dest_index = source_index - 1 elif move == 'r': dest_index = source_index + 1 try: board[source_index], board[dest_index] = board[dest_index], board[source_index] if board_is_node: board[-1] += move.upper() return True except IndexError: pass return False # Exact unmodified functions given in sample code are below def can_move(move: str, board: list) -> bool: global board_size, board_items move = move.lower() index = board.index(0) if move == 'u': return index - board_size >= 0 if move == 'd': return index + board_size < board_items if move == 'l': return (index % board_size) - 1 >= 0 if move == 'r': return (index % board_size) + 1 < board_size return False |
# 614xxxxx28 8 (2020-09-20 21:16) def gen_successors (node): successors = [] A = node.index(0) if A in [3,4,5,6,7,8]: #U nodecopy = node[0:] nodecopy[A] = nodecopy[A-3] nodecopy[A-3] = 0 nodecopy[-1]+= 'U' successors += nodecopy if A in [0,1,2,3,4,5]: #D nodecopy = node[0:] nodecopy[A] = nodecopy[A+3] nodecopy[A+3] = 0 nodecopy[-1]+= 'D' successors += nodecopy if A in [1,2,4,5,7,8]: #L nodecopy = node[0:] nodecopy.pop(A) nodecopy.insert(A-1,0) nodecopy[-1]+= 'L' successors += nodecopy if A in [0,1,3,4,6,7]: #R nodecopy = node[0:] nodecopy.pop(A) nodecopy.insert(A+1,0) nodecopy[-1]+= 'R' successors += nodecopy return successors # ------------------------------------------ |
# 623xxxxx21 9 (2020-09-20 21:37) def gen_successors(node): successors = [] A = node.index(0) if A == 0: route = ["R", "D"] for e in route: new = list(node) if e == "R": new[1] = node[0] new[0] = node[1] elif e == "D": new[3] = node[0] new[0] = node[3] new[-1] += e successors += new elif A == 1: route = ["R", "L", "D"] for e in route: new = list(node) if e == "R": new[2] = node[1] new[1] = node[2] elif e == "L": new[0] = node[1] new[1] = node[0] elif e == "D": new[4] = node[1] new[1] = node[4] new[-1] += e successors += new elif A == 2: route = ["L", "D"] for e in route: new = list(node) if e == "L": new[1] = node[2] new[2] = node[1] elif e == "D": new[5] = node[2] new[2] = node[5] new[-1] += e successors += new elif A == 3: route = ["U", "R", "D"] for e in route: new = list(node) if e == "U": new[0] = node[3] new[3] = node[0] elif e == "R": new[4] = node[3] new[3] = node[4] elif e == "D": new[6] = node[3] new[3] = node[6] new[-1] += e successors += new elif A == 4: route = ["U", "D", "R", "L"] for e in route: new = list(node) if e == "U": new[1] = node[4] new[4] = node[1] elif e == "D": new[7] = node[4] new[4] = node[7] elif e == "R": new[5] = node[4] new[4] = node[5] elif e == "L": new[3] = node[4] new[4] = node[3] new[-1] += e successors += new elif A == 5: route = ["U", "L", "D"] for e in route: new = list(node) if e == "U": new[2] = node[5] new[5] = node[2] elif e == "L": new[4] = node[5] new[5] = node[4] elif e == "D": new[8] = node[5] new[5] = node[8] new[-1] += e successors += new elif A == 6: route = ["U", "R"] for e in route: new = list(node) if e == "U": new[3] = node[6] new[6] = node[3] elif e == "R": new[7] = node[6] new[6] = node[7] new[-1] += e successors += new elif A == 7: route = ["U", "R", "L"] for e in route: new = list(node) if e == "U": new[4] = node[7] new[7] = node[4] elif e == "R": new[8] = node[7] new[7] = node[8] elif e == "L": new[6] = node[7] new[7] = node[6] new[-1] += e successors += new elif A == 8: route = ["U", "L"] for e in route: new = list(node) if e == "U": new[5] = node[8] new[8] = node[5] elif e == "L": new[7] = node[8] new[8] = node[7] new[-1] += e successors += new return successors #------------------------------------------ |
# 623xxxxx21 10 (2020-09-20 19:06) def gen_successors(node): successors = [] a = node.index(0) if a==0: way=["D","R"] for i in way: tmp = list(node) if i =="D": tmp[3] = node[0] tmp[0] = node[3] elif i=="R": tmp[1] = node[0] tmp[0] = node[1] tmp[-1] += i successors += tmp elif a==1: way=["D","R","L"] for i in way: tmp = list(node) if i=="D": tmp[4] = node[1] tmp[1] = node[4] elif i=="R": tmp[2] = node[1] tmp[1] = node[2] elif i=="L": tmp[0] = node[1] tmp[1] = node[0] tmp[-1] += i successors += tmp elif a==2: way=["D","L"] for i in way: tmp = list(node) if i=="D": tmp[5] = node[2] tmp[2] = node[5] elif i=="L": tmp[1] = node[2] tmp[2] = node[1] tmp[-1] += i successors += tmp elif a==3: way=["D","R","U"] for i in way: tmp = list(node) if i=="D": tmp[6] = node[3] tmp[3] = node[6] elif i=="R": tmp[4] = node[3] tmp[3] = node[4] elif i=="U": tmp[0] = node[3] tmp[3] = node[0] tmp[-1] += i successors += tmp elif a==4: way=["D","R","L","U"] for i in way: tmp = list(node) if i=="D": tmp[4] = node[7] tmp[7] = node[4] elif i=="R": tmp[4] = node[5] tmp[5] = node[4] elif i=="L": tmp[3] = node[4] tmp[4] = node[3] elif i=="U": tmp[4] = node[1] tmp[1] = node[4] tmp[-1] += i successors += tmp elif a==5: way=["D","L","U"] for i in way: tmp = list(node) if i=="D": tmp[5] = node[8] tmp[8] = node[5] elif i=="L": tmp[5] = node[4] tmp[4] = node[5] elif i=="U": tmp[2] = node[5] tmp[5] = node[2] tmp[-1] += i successors += tmp elif a==6: way=["U","R"] for i in way: tmp = list(node) if i=="U": tmp[3] = node[6] tmp[6] = node[3] elif i=="R": tmp[6] = node[7] tmp[7] = node[6] tmp[-1] += i successors += tmp elif a==7: way=["U","L","R"] for i in way: tmp = list(node) if i=="U": tmp[7] = node[4] tmp[4] = node[7] elif i=="L": tmp[7] = node[6] tmp[6] = node[7] elif i=="R": tmp[7] = node[8] tmp[8] = node[7] tmp[-1] += i successors += tmp elif a==8: way=["U","L"] for i in way: tmp = list(node) if i=="U": tmp[8] = node[5] tmp[5] = node[8] elif i=="L": tmp[8] = node[7] tmp[7] = node[8] tmp[-1] += i successors += tmp return successors #------------------------------------------ |
# 623xxxxx21 11 (2020-09-17 22:49) def gen_successors(node): successors = [] m = node[-1] #UDLR b = node[:9] #123456780 v = b.index(0) #ตำแหน่ง0 #บรรทัดแรก if int(v) == 0 : m1 = m+'R' b1 = b[:] b1[0],b1[1] = b1[1],b1[0] successors += b1 successors.append(m1) m2 = m+'D' b2 = b[:] b2[0],b2[3] = b2[3],b2[0] successors += b2 successors.append(m2) elif v == 1 : m1 = m+'L' b1 = b[:] b1[0],b1[1] = b1[1],b1[0] successors += b1 successors.append(m1) m2 = m+'R' b2 = b[:] b2[1],b2[2] = b2[2],b2[1] successors += b2 successors.append(m2) m3 = m+'D' b3 = b[:] b3[1],b3[4] = b3[4],b3[1] successors += b3 successors.append(m3) elif v == 2 : m1 = m+'L' b1 = b[:] b1[2],b1[1] = b1[1],b1[2] successors += b1 successors.append(m1) m2 = m+'D' b2 = b[:] b2[2],b2[5] = b2[5],b2[2] successors += b2 successors.append(m2) #บรรทัด2 elif (v) == 3 : m1 = m+'U' b1 = b[:] b1[0],b1[3] = b1[3],b1[0] successors += b1 successors.append(m1) m2 = m+'R' b2 = b[:] b2[3],b2[4] = b2[4],b2[3] successors += b2 successors.append(m2) m3 = m+'D' b3 = b[:] b3[3],b3[5] = b3[5],b3[3] successors += b3 successors.append(m3) elif (v) == 4: m1 = m+'U' b1 = b[:] b1[4],b1[1] = b1[1],b1[4] successors += b1 successors.append(m1) m2 = m+'R' b2 = b[:] b2[5],b2[4] = b2[4],b2[5] successors += b2 successors.append(m2) m3 = m+'D' b3 = b[:] b3[4],b3[7] = b3[7],b3[4] successors += b3 successors.append(m3) m4 = m+'L' b4 = b[:] b4[4],b4[3] = b4[3],b4[4] successors += b4 successors.append(m4) elif (v) == 5 : m1 = m+'U' b1 = b[:] b1[5],b1[2] = b1[2],b1[5] successors += b1 successors.append(m1) m2 = m+'L' b2 = b[:] b2[5],b2[4] = b2[4],b2[5] successors += b2 successors.append(m2) m3 = m+'D' b3 = b[:] b3[8],b3[5] = b3[5],b3[8] successors += b3 successors.append(m3) #บรรทัดสุดท้าย elif (v) == 6 : m1 = m+'R' b1 = b[:] b1[6],b1[7] = b1[7],b1[6] successors += b1 successors.append(m1) m2 = m+'U' b2 = b[:] b2[6],b2[3] = b2[3],b2[6] successors += b2 successors.append(m2) elif (v) == 7 : m1 = m+'L' b1 = b[:] b1[7],b1[6] = b1[6],b1[7] successors += b1 successors.append(m1) m2 = m+'R' b2 = b[:] b2[7],b2[8] = b2[8],b2[7] successors += b2 successors.append(m2) m3 = m+'U' b3 = b[:] b3[7],b3[4] = b3[4],b3[7] successors += b3 successors.append(m3) elif (v) == 8 : m1 = m+'L' b1 = b[:] b1[8],b1[7] = b1[7],b1[8] successors += b1 successors.append(m1) m2 = m+'U' b2 = b[:] b2[8],b2[5] = b2[5],b2[8] successors += b2 successors.append(m2) return successors #------------------------------------------ |
# 623xxxxx21 12 (2020-09-20 23:38) def gen_successors(node): successors = [] y=node[0:9:1] z=node[-1] x= node.index(0,0) moves=str() if x ==0 : moves="RD" elif x== 1 : moves="LRD" elif x== 2 : moves="LD" elif x== 3 : moves="URD" elif x== 4 : moves="ULRD" elif x== 5 : moves="ULD" elif x== 6 : moves="UR" elif x== 7 : moves="LRU" elif x== 8 : moves="LU" for k in range(len(moves)): if moves[k]=='L': y[x],y[x-1]=y[x-1],y[x] z=["UDRL"] successors+=y+z if moves[k]=='R': y[x],y[x+1]=y[x+1],y[x] z=["UDRR"] successors+=y+z if moves[k]=='U': y[x],y[x-3]=y[x-3],y[x] z=["UDRU"] successors+=y+z if moves[k]=='D': y[x],y[x+3]=y[x+3],y[x] z=["UDRD"] successors+=y+z y=node[0:9:1] return successors #------------------------------------------ |
# 623xxxxx21 13 (2020-09-20 09:18) def gen_successors(node): successors = [] node = [4,11,3,10,5,0,6,13,15,12,2,7,1,9,14,8,'RLD'] successors = [4,0,3,10,5,11,6,13,15,12,2,7,1,9,14,8,'RLDU',4,11,3,10,5,6,0,13,15,12,2,7,1,9,14,8,'RLDR',4,11,3,10,0,5,6,13,15,12,2,7,1,9,14,8,'RLDL',4,11,3,10,5,12,6,13,15,0,2,7,1,9,14,8,'RLDD'] return successors #------------------------------------------ #def print_moves(board, moves): # bonus function: optional # return #------------------------------------------ |
# 623xxxxx21 14 (2020-09-19 16:52) def gen_successors(node): successors=[] p=node.index(0) if p==0 : D=list(node) D[p],D[p+3]=D[p+3],D[p] D[9]+="D" R=list(node) R[p],R[p+1]=R[p+1],R[p] R[9]+="R" successors+=(D) successors+=(R) elif p==1 : D=list(node) D[p],D[p+3]=D[p+3],D[p] D[9]+="D" L=list(node) L[p],L[p-1]=L[p-1],L[p] L[9]+="L" R=list(node) R[p],R[p+1]=R[p+1],R[p] R[9]+="R" successors+=(D) successors+=(L) successors+=(R) elif p==2 : D=list(node) D[p],D[p+3]=D[p+3],D[p] D[9]+="D" L=list(node) L[p],L[p-1]=L[p-1],L[p] L[9]+="L" successors+=(D) successors+=(L) elif p==3 : D=list(node) D[p],D[p+3]=D[p+3],D[p] D[9]+="D" U=list(node) U[p],U[p-3]=U[p-3],U[p] U[9]+="U" R=list(node) R[p],R[p+1]=R[p+1],R[p] R[9]+="R" successors+=(D) successors+=(U) successors+=(R) elif p==4 : D=list(node) D[p],D[p+3]=D[p+3],D[p] D[9]+="D" U=list(node) U[p],U[p-3]=U[p-3],U[p] U[9]+="U" R=list(node) R[p],R[p+1]=R[p+1],R[p] R[9]+="R" L=list(node) L[p],L[p-1]=L[p-1],L[p] L[9]+="L" successors+=(D) successors+=(U) successors+=(R) successors+=(L) elif p==5 : D=list(node) D[p],D[p+3]=D[p+3],D[p] D[9]+="D" U=list(node) U[p],U[p-3]=U[p-3],U[p] U[9]+="U" L=list(node) L[p],L[p-1]=L[p-1],L[p] L[9]+="L" successors+=(D) successors+=(U) successors+=(L) elif p==6 : U=list(node) U[p],U[p-3]=U[p-3],U[p] U[9]+="U" R=list(node) R[p],R[p+1]=R[p+1],R[p] R[9]+="R" successors+=(U) successors+=(R) elif p==7 : U=list(node) U[p],U[p-3]=U[p-3],U[p] U[9]+="U" R=list(node) R[p],R[p+1]=R[p+1],R[p] R[9]+="R" L=list(node) L[p],L[p-1]=L[p-1],L[p] L[9]+="L" successors+=(U) successors+=(R) successors+=(L) elif p==8 : U=list(node) U[p],U[p-3]=U[p-3],U[p] U[9]+="U" L=list(node) L[p],L[p-1]=L[p-1],L[p] L[9]+="L" successors+=U successors+=L return successors #------------------------------------------ |
# 623xxxxx21 15 (2020-09-20 15:10) def gen_successors(node): successors = [] if not 0<=node.index(0)<=2: u=list(node) u[node.index(0)-3],u[node.index(0)]=u[node.index(0)],u[node.index(0)-3] u[9]+='U' successors+=u if not 6<=node.index(0)<=8: d=list(node) d[node.index(0)+3],d[node.index(0)]=d[node.index(0)],d[node.index(0)+3] d[9]+='D' successors+=d if not node.index(0)%3==0: l=list(node) l[node.index(0)-1],l[node.index(0)]=l[node.index(0)],l[node.index(0)-1] l[9]+='L' successors+=l if not node.index(0)%3==2: r=list(node) r[node.index(0)+1],r[node.index(0)]=r[node.index(0)],r[node.index(0)+1] r[9]+='R' successors+=r return successors #------------------------------------------ |
# 623xxxxx21 16 (2020-09-19 20:22) def gen_successors(node): j = node.index(0) #ตำแหน่งของเลข 0 clm1 = int(j%3) #ไว้ดูหลัก clm2 = int(j/3) #ไว้ดูแถว a = upslide(node,clm1,j) b = downslide(node,clm1,j) c = leftslide(node,clm2,j) d = rightslide(node,clm2,j) successors = a+b+c+d return successors #กรณี right def leftslide (node,clm2,j) : pic = [] for i in range (0,9,3): pic.append(node[i:i+3:]) if j not in [1,2,4,5,7,8] : return [] afL = [] ; stL = [] if j in [1,4,7] : stL += [pic[clm2][1]]+[pic[clm2][0]]+[pic[clm2][2]] else : stL += [pic[clm2][0]]+[pic[clm2][2]]+[pic[clm2][1]] if clm2 == 0 : afL += stL + pic[1] + pic[2] + [node[9]+'L'] elif clm2 == 1 : afL += pic[0] + stL + pic[2] + [node[9]+'L'] else : afL += pic[0] + pic[1] + stL + [node[9]+'L'] return afL #------------------------------------------ def upslide (node,clm1,j) : pic = [] for i in range (0,9,3): pic.append(node[i:i+3:]) if j not in [3,4,5,6,7,8] : return [] afU = [] if j in [3,4,6,7] : stU1 = pic[0] stU2 = pic[1][0:clm1:]+[pic[2][clm1]]+pic[1][clm1+1::] stU3 = pic[2][0:clm1:]+[pic[1][clm1]]+pic[2][clm1+1::] else : stU1 = pic[0] stU2 = pic[1][0:clm1:]+[pic[2][clm1]] stU3 = pic[2][0:clm1:]+[pic[1][clm1]] afU += stU1+stU2+stU3+[node[9]+'U'] return afU #ได้กรณี left def rightslide (node,clm2,j) : pic = [] for i in range (0,9,3): pic.append(node[i:i+3:]) if j not in [0,1,3,4,6,7] : return [] afR = [] ; stR =[] if j in [0,3,6] : stR += [pic[clm2][1]]+[pic[clm2][0]]+[pic[clm2][2]] else : stR += [pic[clm2][0]]+[pic[clm2][2]]+[pic[clm2][1]] if clm2 == 0 : afR += stR + pic[1] + pic[2] + [node[9]+'R'] elif clm2 == 1 : afR += pic[0] + stR + pic[2] + [node[9]+'R'] else : afR += pic[0] + pic[1] + stR + [node[9]+'R'] return afR #กรณี down def downslide (node,clm1,j) : pic = [] for i in range (0,9,3): pic.append(node[i:i+3:]) if j not in [0,1,2,3,4,5] : return [] afD = [] if j in [0,1,3,4] : stD1 = pic[0][0:clm1:]+[pic[1][clm1]]+pic[0][clm1+1::] stD2 = pic[1][0:clm1:]+[pic[0][clm1]]+pic[1][clm1+1::] stD3 = pic[2] else : stD1 = pic[0][0:clm1:]+[pic[1][clm1]] stD2 = pic[1][0:clm1:]+[pic[0][clm1]] stD3 = pic[2] afD += stD1+stD2+stD3+[node[9]+'D'] return afD #กรณี up |
# 623xxxxx21 17 (2020-09-17 17:32) def gen_successors(node): successors = [] pos = node.index(0) l = int((len(node) - 1 )**0.5) upper_left = 0 upper_right = l-1 lower_left = (l**2) - l lower_right = (l**2) - 1 if pos == upper_left: #upper left moves =["D", "R"] elif upper_right > pos > upper_left: #top moves =["D", "L", "R"] elif pos == upper_right: #upper right moves =["D", "L"] elif pos in [e for e in range(l, l**2-l, l)]: #left moves =["U", "D", "R"] elif pos in [e for e in range(2*l - 1, l**2 - 1, l)]: #right moves =["U", "D", "L"] elif pos == lower_left: #lower left moves =["U", "R"] elif lower_right > pos > lower_left: #bottom moves =["U", "L", "R"] elif pos == lower_right: #lower right moves =["U", "L"] else: #middle moves =["U", "D", "L", "R"] for move in moves: temp_node = [e for e in node] if move == "R": temp_node[pos], temp_node[pos+1] = temp_node[pos+1], temp_node[pos] temp_node[-1] += "R" elif move == "L": temp_node[pos], temp_node[pos-1] = temp_node[pos-1], temp_node[pos] temp_node[-1] += "L" elif move == "U": temp_node[pos], temp_node[pos-l] = temp_node[pos-l], temp_node[pos] temp_node[-1] += "U" elif move == "D": temp_node[pos], temp_node[pos+l] = temp_node[pos+l], temp_node[pos] temp_node[-1] += "D" successors += temp_node return successors #------------------------------------------ |
# 623xxxxx21 18 (2020-09-20 23:40) def gen_successors(node): successors = [] num0 = node.index(0) if num0 in [3,4,5,6,7,8]: #up noden = node[0:9] new = [''] moven = node[-1] num0u = num0-3 noden.remove(0) noden.insert(num0u, 0) moven = [moven+'U'] new = noden[0:9]+moven successors += new if num0 in [0,1,2,3,4,5]: #down noden = node[0:9] new = [''] moven = node[-1] num0d = num0+3 noden.remove(0) noden.insert(num0d, 0) moven = [moven+'D'] new = noden[0:9]+moven successors += new if num0 in [1,2,4,5,7,8]: #left noden = node[0:9] new = [''] moven = node[-1] num0L = num0-1 noden.remove(0) noden.insert(num0L, 0) moven = [moven+'L'] new = noden[0:9]+moven successors += new if num0 in [0,1,3,4,6,7]: #right noden = node[0:9] new = [''] moven = node[-1] num0u = num0+1 noden.remove(0) noden.insert(num0u, 0) moven = [moven+'R'] new = noden[0:9]+moven successors += new return successors #------------------------------------------ |
# 623xxxxx21 19 (2020-09-20 14:33) def gen_successors(node): successors = [] x = 0 y = "" while y != 0 : y = node[x] x += 1 if x == 1 : R = [node[1],node[0],node[2],node[3],node[4],node[5],node[6],node[7],node[8],node[9]+'R'] L = [] U = [] D = [node[3],node[1],node[2],node[0],node[4],node[5],node[6],node[7],node[8],node[9]+'D'] elif x== 2 : R = [node[0],node[2],node[1],node[3],node[4],node[5],node[6],node[7],node[8],node[9]+'R'] L = [node[1],node[0],node[2],node[3],node[4],node[5],node[6],node[7],node[8],node[9]+'L'] U = [] D = [node[0],node[4],node[2],node[3],node[1],node[5],node[6],node[7],node[8],node[9]+'D'] elif x ==3 : R = [] L = [node[0],node[2],node[1],node[3],node[4],node[5],node[6],node[7],node[8],node[9]+'L'] U = [] D = [node[0],node[1],node[5],node[3],node[4],node[2],node[6],node[7],node[8],node[9]+'D'] elif x == 4 : R = [node[0],node[1],node[2],node[4],node[3],node[5],node[6],node[7],node[8],node[9]+'R'] L = [] U = [node[3],node[1],node[2],node[0],node[4],node[5],node[6],node[7],node[8],node[9]+'U'] D = [node[0],node[1],node[2],node[6],node[4],node[5],node[3],node[7],node[8],node[9]+'D'] elif x == 5 : R = [node[0],node[1],node[2],node[3],node[5],node[4],node[6],node[7],node[8],node[9]+'R'] L = [node[0],node[1],node[2],node[4],node[3],node[5],node[6],node[7],node[8],node[9]+'L'] U = [node[0],node[4],node[2],node[3],node[1],node[5],node[6],node[7],node[8],node[9]+'U'] D = [node[0],node[1],node[2],node[3],node[7],node[5],node[6],node[4],node[8],node[9]+'D'] elif x == 6 : R = [] L = [node[0],node[1],node[2],node[3],node[5],node[4],node[6],node[7],node[8],node[9]+'L'] U = [node[0],node[1],node[5],node[3],node[4],node[2],node[6],node[7],node[8],node[9]+'U'] D = [node[0],node[1],node[2],node[3],node[4],node[8],node[6],node[7],node[5],node[9]+'D'] elif x == 7 : R = [node[0],node[1],node[2],node[3],node[4],node[5],node[7],node[6],node[8],node[9]+'R'] L = [] U = [node[0],node[1],node[2],node[6],node[4],node[5],node[3],node[7],node[8],node[9]+'U'] D = [] elif x == 8 : R = [node[0],node[1],node[2],node[3],node[4],node[5],node[6],node[8],node[7],node[9]+'R'] L = [node[0],node[1],node[2],node[3],node[4],node[5],node[7],node[6],node[8],node[9]+'L'] U = [node[0],node[1],node[2],node[3],node[7],node[5],node[6],node[4],node[8],node[9]+'U'] D = [] elif x == 9 : R = [] L = [node[0],node[1],node[2],node[3],node[4],node[5],node[6],node[8],node[7],node[9]+'L'] U = [node[0],node[1],node[2],node[3],node[4],node[8],node[6],node[7],node[5],node[9]+'U'] D = [] else : pass successors = U+D+L+R return successors #------------------------------------------ |
# 623xxxxx21 20 (2020-09-20 23:04) def gen_successors(node): successors = [] d = [] a = node[-1] node = node[0:-1] if node.index(0) == 0: d.append("D") d.append("R") elif node.index(0) == 1: d.append("L") d.append("D") d.append("R") elif node.index(0) == 2: d.append("L") d.append("D") elif node.index(0) == 3: d.append("R") d.append("D") d.append("U") elif node.index(0) == 4: d.append("R") d.append("D") d.append("U") d.append("L") elif node.index(0) == 5: d.append("L") d.append("D") d.append("U") elif node.index(0) == 6: d.append("R") d.append("U") elif node.index(0) == 7: d.append("R") d.append("U") d.append("L") elif node.index(0) == 8: d.append("L") d.append("U") for e in d : b=list(node) if e == "L": b[node.index(0)-1],b[node.index(0)]=b[node.index(0)],b[node.index(0)-1] b.append(a+"L") elif e == "R": b[node.index(0)+1],b[node.index(0)]=b[node.index(0)],b[node.index(0)+1] b.append(a+"R") elif e == "U": b[node.index(0)-3],b[node.index(0)]=b[node.index(0)],b[node.index(0)-3] b.append(a+"U") elif e == "D": b[node.index(0)+3],b[node.index(0)]=b[node.index(0)],b[node.index(0)+3] b.append(a+"D") for r in b : successors.append(r) return successors #------------------------------------------ |
# 623xxxxx21 21 (2020-09-20 21:19) def gen_successors(node): successors = [] temp = node[:-1] command = node[-1] pos = temp.index(0) canMoveUp = (pos//3) >= 1 canMoveDown = (pos//3) < 2 canMoveRight = (pos+1)%3 != 0 canMoveLeft = (pos)%3 != 0 if (canMoveUp) : board = list(temp) board[pos],board[pos-3] = board[pos-3],board[pos] successors += board successors.append(command+"U") if (canMoveDown) : board = list(temp) board[pos],board[pos+3] = board[pos+3],board[pos] successors += board successors.append(command+"D") if (canMoveRight) : board = list(temp) board[pos],board[pos+1] = board[pos+1],board[pos] successors += board successors.append(command+"R") if (canMoveLeft) : board = list(temp) board[pos],board[pos-1] = board[pos-1],board[pos] successors += board successors.append(command+"L") return successors #------------------------------------------ |
# 623xxxxx21 22 (2020-09-20 17:29) def gen_successors(node): successors = [] temp = node[:-1] command = node[-1] pos = temp.index(0) canMoveUp = pos >= 3 canMoveDown = pos <= 5 canMoveRight = (pos+1)%3 != 0 canMoveLeft = (pos)%3 != 0 if (canMoveUp) : board = list(temp) board[pos],board[pos-3] = board[pos-3],board[pos] successors += board successors.append(command+"U") if (canMoveDown) : board = list(temp) board[pos],board[pos+3] = board[pos+3],board[pos] successors += board successors.append(command+"D") if (canMoveRight) : board = list(temp) board[pos],board[pos+1] = board[pos+1],board[pos] successors += board successors.append(command+"R") if (canMoveLeft) : board = list(temp) board[pos],board[pos-1] = board[pos-1],board[pos] successors += board successors.append(command+"L") return successors #------------------------------------------ |
# 623xxxxx21 23 (2020-09-19 23:44) def gen_successors(node): successors = [] index = node.index(0) #up if index not in [0,1,2]: num = node[index-3] temp = node[:] temp[index] = num temp[index-3] = 0 successors = successors + temp[:9] successors.append(node[9]+"U") #down if index not in [6,7,8]: num = node[index+3] temp = node[:] temp[index] = num temp[index+3] = 0 successors = successors + temp[:9] successors.append(node[9]+"D") #right if index not in [2,5,8]: num = node[index+1] temp = node[:] temp[index] = num temp[index+1] = 0 successors = successors + temp[:9] successors.append(node[9]+"R") #left if index not in [0,3,6]: num = node[index-1] temp = node[:] temp[index] = num temp[index-1] = 0 successors = successors + temp[:9] successors.append(node[9]+"L") return successors #------------------------------------------ |
# 623xxxxx21 24 (2020-09-20 22:13) def gen_successors(node): tm = node[:-1] mon = node[-1] ha = tm.index(0) left = (ha)%3 != 0 right = (ha+1)%3 != 0 up = ha >= 3 down = ha <= 5 successors = [] if (right) : board = list(tm) board[ha],board[ha+1] = board[ha+1],board[ha] successors = successors+board successors.append(mon+"R") if (left) : board = list(tm) board[ha],board[ha-1] = board[ha-1],board[ha] successors = successors+board successors.append(mon+"L") if (up) : board = list(tm) board[ha],board[ha-3] = board[ha-3],board[ha] successors = successors+board successors.append(mon+"U") if (down) : board = list(tm) board[ha],board[ha+3] = board[ha+3],board[ha] successors = successors+board successors.append(mon+"D") return successors #------------------------------------------ |
# 623xxxxx21 25 (2020-09-20 23:32) def gen_successors(node): successors = [] a = 0 k = '' M = 0 while k != 0 : k = node[a] a = a+1 if a == 1 : M = 2 x1 = 'R' x2 = [] y1 = [] y2 = 'D' R = [node[1],node[0],node[2],node[3],node[4],node[5],node[6],node[7],node[8],node[9]+'R'] #0 1 L = [] U = [] D = [node[3],node[1],node[2],node[0],node[4],node[5],node[6],node[7],node[8],node[9]+'D'] #0 3 elif a == 2 : M = 3 x1 = 'R' x2 = 'L' y1 = '' y2 = 'D' R = [node[0],node[2],node[1],node[3],node[4],node[5],node[6],node[7],node[8],node[9]+'R'] #1 2 L = [node[1],node[0],node[2],node[3],node[4],node[5],node[6],node[7],node[8],node[9]+'L'] #1 0 U = [] D = [node[0],node[4],node[2],node[3],node[1],node[5],node[6],node[7],node[8],node[9]+'D'] #1 4 elif a == 3 : M = 3 x1 = '' x2 = 'L' y1 = '' y2 = 'D' R = [] L = [node[0],node[2],node[1],node[3],node[4],node[5],node[6],node[7],node[8],node[9]+'L'] #2 1 U = [] D = [node[0],node[1],node[5],node[3],node[4],node[2],node[6],node[7],node[8],node[9]+'D'] #2 5 elif a == 4 : M = 3 x1 = 'R' x2 = '' y1 = 'U' y2 = 'D' R = [node[0],node[1],node[2],node[4],node[3],node[5],node[6],node[7],node[8],node[9]+'R'] #3 4 L = [] U = [node[3],node[1],node[2],node[0],node[4],node[5],node[6],node[7],node[8],node[9]+'U'] #3 0 D = [node[0],node[1],node[2],node[6],node[4],node[5],node[3],node[7],node[8],node[9]+'D'] #3 6 elif a == 5 : M = 3 x1 = 'R' x2 = 'L' y1 = 'U' y2 = 'D' R = [node[0],node[1],node[2],node[3],node[5],node[4],node[6],node[7],node[8],node[9]+'R'] #4 5 L = [node[0],node[1],node[2],node[4],node[3],node[5],node[6],node[7],node[8],node[9]+'L'] #4 3 U = [node[0],node[4],node[2],node[3],node[1],node[5],node[6],node[7],node[8],node[9]+'U'] #4 1 D = [node[0],node[1],node[2],node[3],node[7],node[5],node[6],node[4],node[8],node[9]+'D'] #4 7 elif a == 6 : M = 3 x1 = '' x2 = 'L' y1 = 'U' y2 = 'D' R = [] L = [node[0],node[1],node[2],node[3],node[5],node[4],node[6],node[7],node[8],node[9]+'L'] #5 4 U = [node[0],node[1],node[5],node[3],node[4],node[2],node[6],node[7],node[8],node[9]+'U'] #5 2 D = [node[0],node[1],node[2],node[3],node[4],node[8],node[6],node[7],node[5],node[9]+'D'] #5 8 elif a == 7 : M = 2 x1 = 'R' x2 = '' y1 = 'U' y2 = '' R = [node[0],node[1],node[2],node[3],node[4],node[5],node[7],node[6],node[8],node[9]+'R'] #6 7 L = [] U = [node[0],node[1],node[2],node[6],node[4],node[5],node[3],node[7],node[8],node[9]+'U'] #6 3 D = [] elif a == 8 : M = 3 x1 = 'R' x2 = 'L' y1 = 'U' y2 = '' R = [node[0],node[1],node[2],node[3],node[4],node[5],node[6],node[8],node[7],node[9]+'R'] #7 8 L = [node[0],node[1],node[2],node[3],node[4],node[5],node[7],node[6],node[8],node[9]+'L'] #7 6 U = [node[0],node[1],node[2],node[3],node[7],node[5],node[6],node[4],node[8],node[9]+'U'] #7 4 D = [] elif a == 9 : M = 2 x1 = '' x2 = 'L' y1 = 'U' y2 = '' R = [] L = [node[0],node[1],node[2],node[3],node[4],node[5],node[6],node[8],node[7],node[9]+'L'] #8 7 U = [node[0],node[1],node[2],node[3],node[4],node[8],node[6],node[7],node[5],node[9]+'U'] #8 5 D = [] else : pass successors = U+D+L+R return successors #------------------------------------------ |
# 623xxxxx21 26 (2020-09-20 19:09) def gen_successors(node): successors = [] a=[] n=node[0:-1] s=node[-1] if n.index(0) == 0: # มุมซ้ายบน a.append('D') a.append('R') elif n.index(0) == 2: # มุมขวาบน a.append('D') a.append('L') elif n.index(0) == 6: # มุมซ้ายล่าง a.append('U') a.append('R') elif n.index(0) == 8: # มุมขวาล่าง a.append('U') a.append('L') elif n.index(0) == 1: # ด้านบน a.append('L') a.append('R') a.append('D') elif n.index(0) == 3: # ด้านซ้าย a.append('U') a.append('D') a.append('R') elif n.index(0) == 5: # ด้านขวา a.append('U') a.append('D') a.append('L') elif n.index(0) == 7: # ด้านล่าง a.append('L') a.append('R') a.append('U') else: #ตรงกลาง a.append('L') a.append('R') a.append('U') a.append('D') for i in range(len(a)): m=list(n) if a[i] =='U': m[n.index(0)],m[n.index(0)-3]=m[n.index(0)-3],m[n.index(0)] m.append(s+'U') elif a[i] == 'D': m[n.index(0)],m[n.index(0)+3]=m[n.index(0)+3],m[n.index(0)] m.append(s+'D') elif a[i] == 'L': m[n.index(0)-1],m[n.index(0)]=m[n.index(0)],m[n.index(0)-1] m.append(s+'L') elif a[i] == 'R': m[n.index(0)],m[n.index(0)+1]=m[n.index(0)+1],m[n.index(0)] m.append(s+'R') for e in m: successors.append(e) return successors #------------------------------------------ |
# 623xxxxx21 27 (2020-09-20 22:56) def gen_successors(node): successors = [] d = [] a = node[-1] node = node[0:-1] if node.index(0) == 0: d.append("R") d.append("D") elif node.index(0) == 1: d.append("L") d.append("D") d.append("R") elif node.index(0) == 2: d.append("L") d.append("D") elif node.index(0) == 3: d.append("R") d.append("U") d.append("D") elif node.index(0) == 4: d.append("R") d.append("D") d.append("U") d.append("L") elif node.index(0) == 5: d.append("L") d.append("D") d.append("U") elif node.index(0) == 6: d.append("R") d.append("U") elif node.index(0) == 7: d.append("R") d.append("U") d.append("L") elif node.index(0) == 8: d.append("L") d.append("U") for e in d : b=list(node) if e == "L": b[node.index(0)-1],b[node.index(0)]=b[node.index(0)],b[node.index(0)-1] b.append(a+"L") elif e == "R": b[node.index(0)+1],b[node.index(0)]=b[node.index(0)],b[node.index(0)+1] b.append(a+"R") elif e == "U": b[node.index(0)-3],b[node.index(0)]=b[node.index(0)],b[node.index(0)-3] b.append(a+"U") elif e == "D": b[node.index(0)+3],b[node.index(0)]=b[node.index(0)],b[node.index(0)+3] b.append(a+"D") for r in b : successors.append(r) return successors #------------------------------------------ |
# 623xxxxx21 28 (2020-09-20 23:36) def gen_successors(node): successors = [] x = 0 k = '' while k != 0 : k = node[x] x += 1 if x == 1 : #ว่างบนซ้าย o1 = 'D' o2 = 'R' U = [] D = [node[3],node[1],node[2],node[0],node[4],node[5],node[6],node[7],node[8],node[9]+'D'] L = [] R = [node[1],node[0],node[2],node[3],node[4],node[5],node[6],node[7],node[8],node[9]+'R'] elif x == 2 :#ว่างบนกลาง o1 = 'D' o2 = 'L' o3 = 'R' U = [] D = [node[0],node[4],node[2],node[3],node[1],node[5],node[6],node[7],node[8],node[9]+'D'] L = [node[1],node[0],node[2],node[3],node[4],node[5],node[6],node[7],node[8],node[9]+'L'] R = [node[0],node[2],node[1],node[3],node[4],node[5],node[6],node[7],node[8],node[9]+'R'] elif x == 3 :#ว่างบนขวา o1 = 'D' o2 = 'L' U = [] D = [node[0],node[1],node[5],node[3],node[4],node[2],node[6],node[7],node[8],node[9]+'D'] L = [node[0],node[2],node[1],node[3],node[4],node[5],node[6],node[7],node[8],node[9]+'L'] R = [] elif x == 4 :#ว่างกลางซ้าย o1 = 'U' o2 = 'D' o3 = 'R' U = [node[3],node[1],node[2],node[0],node[4],node[5],node[6],node[7],node[8],node[9]+'U'] D = [node[0],node[1],node[2],node[6],node[4],node[5],node[3],node[7],node[8],node[9]+'D'] L = [] R = [node[0],node[1],node[2],node[4],node[3],node[5],node[6],node[7],node[8],node[9]+'R'] elif x == 5 :#ว่างกลางกลาง o1 = 'U' o2 = 'D' o3 = 'L' o4 = 'R' U = [node[0],node[4],node[2],node[3],node[1],node[5],node[6],node[7],node[8],node[9]+'U'] D = [node[0],node[1],node[2],node[3],node[7],node[5],node[6],node[4],node[8],node[9]+'D'] L = [node[0],node[1],node[2],node[4],node[3],node[5],node[6],node[7],node[8],node[9]+'L'] R = [node[0],node[1],node[2],node[3],node[5],node[4],node[6],node[7],node[8],node[9]+'R'] elif x == 6 :#ว่างกลางขวา o1 = 'U' o2 = 'D' o3 = 'L' U = [node[0],node[1],node[5],node[3],node[4],node[2],node[6],node[7],node[8],node[9]+'U'] D = [node[0],node[1],node[2],node[3],node[4],node[8],node[6],node[7],node[5],node[9]+'D'] L = [node[0],node[1],node[2],node[3],node[5],node[4],node[6],node[7],node[8],node[9]+'L'] R = [] elif x == 7 :#ว่างล่างซ้าย o1 = 'U' o2 = 'R' U = [node[0],node[1],node[2],node[6],node[4],node[5],node[3],node[7],node[8],node[9]+'U'] D = [] L = [] R = [node[0],node[1],node[2],node[3],node[4],node[5],node[7],node[6],node[8],node[9]+'R'] elif x == 8 :#ว่างล่างกลาง o1 = 'U' o2 = 'L' o3 = 'R' U = [node[0],node[1],node[2],node[3],node[7],node[5],node[6],node[4],node[8],node[9]+'U'] D = [] L = [node[0],node[1],node[2],node[3],node[4],node[5],node[7],node[6],node[8],node[9]+'L'] R = [node[0],node[1],node[2],node[3],node[4],node[5],node[6],node[8],node[7],node[9]+'R'] elif x == 9 :#ว่างล่างขวา o1 = 'U' o2 = 'L' U = [node[0],node[1],node[2],node[3],node[4],node[8],node[6],node[7],node[5],node[9]+'U'] D = [] L = [node[0],node[1],node[2],node[3],node[4],node[5],node[6],node[8],node[7],node[9]+'L'] R = [] successors = U+D+L+R return successors #------------------------------------------ |
# 623xxxxx21 29 (2020-09-20 15:36) def gen_successors(node): successors = [] M = 0 a = 0 n = '' while n != 0 : n = node[a] a = a+1 if a == 1 : M=2 R = [node[1],node[0],node[2],node[3],node[4],node[5],node[6],node[7],node[8],node[9]+'R'] D = [node[3],node[1],node[2],node[0],node[4],node[5],node[6],node[7],node[8],node[9]+'D'] successors = R+D elif a == 2 : M=3 R = [node[0],node[2],node[1],node[3],node[4],node[5],node[6],node[7],node[8],node[9]+'R'] L = [node[1],node[0],node[2],node[3],node[4],node[5],node[6],node[7],node[8],node[9]+'L'] D = [node[0],node[4],node[2],node[3],node[1],node[5],node[6],node[7],node[8],node[9]+'D'] successors = R+L+D elif a == 3 : M=2 L = [node[0],node[2],node[1],node[3],node[4],node[5],node[6],node[7],node[8],node[9]+'L'] D = [node[0],node[1],node[5],node[3],node[4],node[2],node[6],node[7],node[8],node[9]+'D'] successors = L+D elif a == 4 : M=3 R = [node[0],node[1],node[2],node[4],node[3],node[5],node[6],node[7],node[8],node[9]+'R'] U = [node[3],node[1],node[2],node[0],node[4],node[5],node[6],node[7],node[8],node[9]+'U'] D = [node[0],node[1],node[2],node[6],node[4],node[5],node[3],node[7],node[8],node[9]+'D'] successors = R+U+D elif a == 5 : M=4 R = [node[0],node[1],node[2],node[3],node[5],node[4],node[6],node[7],node[8],node[9]+'R'] L = [node[0],node[1],node[2],node[4],node[3],node[5],node[6],node[7],node[8],node[9]+'L'] U = [node[0],node[4],node[2],node[3],node[1],node[5],node[6],node[7],node[8],node[9]+'U'] D = [node[0],node[1],node[2],node[3],node[7],node[5],node[6],node[4],node[8],node[9]+'D'] successors = R+L+U+D elif a == 6 : M=3 L = [node[0],node[1],node[2],node[3],node[5],node[4],node[6],node[7],node[8],node[9]+'L'] U = [node[0],node[1],node[5],node[3],node[4],node[2],node[6],node[7],node[8],node[9]+'U'] D = [node[0],node[1],node[2],node[3],node[4],node[8],node[6],node[7],node[5],node[9]+'D'] successors = L+U+D elif a == 7 : M=2 R = [node[0],node[1],node[2],node[3],node[4],node[5],node[7],node[6],node[8],node[9]+'R'] U = [node[0],node[1],node[2],node[6],node[4],node[5],node[3],node[7],node[8],node[9]+'U'] successors = R+U elif a == 8 : M=3 R = [node[0],node[1],node[2],node[3],node[4],node[5],node[6],node[8],node[7],node[9]+'R'] L = [node[0],node[1],node[2],node[3],node[4],node[5],node[7],node[6],node[8],node[9]+'L'] U = [node[0],node[1],node[2],node[3],node[7],node[5],node[6],node[4],node[8],node[9]+'U'] successors = R+L+U elif a == 9 : M=2 L = [node[0],node[1],node[2],node[3],node[4],node[5],node[6],node[8],node[7],node[9]+'L'] U = [node[0],node[1],node[2],node[3],node[4],node[8],node[6],node[7],node[5],node[9]+'U'] successors = L+U return successors |
# 623xxxxx21 30 (2020-09-20 20:54) def gen_successors(node): if node[0] == 0 : M = 2 successors = [''] * (M*10) i = 0 while i < len(node) : successors[i] = node[i] successors[i+10] = node [i] i = i+1 successors[0],successors[3] = successors[3],successors[0] successors[9] += 'D' successors[10],successors[11] = successors[11],successors[10] successors[19] += 'R' if node[1] == 0 : M = 3 successors = [''] * (M*10) i = 0 while i < len(node) : successors[i] = node[i] successors[i+10] = node [i] successors[i+20] = node [i] i = i+1 successors[1],successors[4] = successors[4],successors[1] successors[9] += 'D' successors[11],successors[10] = successors[10],successors[11] successors[19] += 'L' successors[21],successors[22] = successors[22],successors[21] successors[29] += 'R' if node[2] == 0 : M = 2 successors = [''] * (M*10) i = 0 while i < len(node) : successors[i] = node[i] successors[i+10] = node [i] i = i+1 successors[2],successors[5] = successors[5],successors[2] successors[9] += 'D' successors[12],successors[11] = successors[11],successors[12] successors[19] += 'L' if node[3] == 0 : M = 3 successors = [''] * (M*10) i = 0 while i < len(node) : successors[i] = node[i] successors[i+10] = node [i] successors[i+20] = node [i] i = i+1 successors[3],successors[0] = successors[0],successors[3] successors[9] += 'U' successors[13],successors[16] = successors[16],successors[13] successors[19] += 'D' successors[23],successors[24] = successors[24],successors[23] successors[29] += 'R' if node[4] == 0 : M = 4 successors = [''] * (M*10) i = 0 while i < len(node) : successors[i] = node[i] successors[i+10] = node [i] successors[i+20] = node [i] successors[i+30] = node [i] i = i+1 successors[4],successors[1] = successors[1],successors[4] successors[9] += 'U' successors[14],successors[17] = successors[17],successors[14] successors[19] += 'D' successors[24],successors[23] = successors[23],successors[24] successors[29] += 'L' successors[34],successors[35] = successors[35],successors[34] successors[39] += 'R' if node[5] == 0 : M = 3 successors = [''] * (M*10) i = 0 while i < len(node) : successors[i] = node[i] successors[i+10] = node [i] successors[i+20] = node [i] i = i+1 successors[5],successors[2] = successors[2],successors[5] successors[9] += 'U' successors[15],successors[18] = successors[18],successors[15] successors[19] += 'D' successors[25],successors[24] = successors[24],successors[25] successors[29] += 'L' if node[6] == 0 : M = 2 successors = [''] * (M*10) i = 0 while i < len(node) : successors[i] = node[i] successors[i+10] = node [i] i = i+1 successors[6],successors[3] = successors[3],successors[6] successors[9] += 'U' successors[16],successors[17] = successors[17],successors[16] successors[19] += 'R' if node[7] == 0 : M = 3 successors = [''] * (M*10) i = 0 while i < len(node) : successors[i] = node[i] successors[i+10] = node [i] successors[i+20] = node [i] i = i+1 successors[7],successors[4] = successors[4],successors[7] successors[9] += 'U' successors[17],successors[16] = successors[16],successors[17] successors[19] += 'L' successors[27],successors[28] = successors[28],successors[27] successors[29] += 'R' if node[8] == 0 : M = 2 successors = [''] * (M*10) i = 0 while i < len(node) : successors[i] = node[i] successors[i+10] = node [i] i = i+1 successors[8],successors[5] = successors[5],successors[8] successors[9] += 'U' successors[18],successors[17] = successors[17],successors[18] successors[19] += 'L' return successors #------------------------------------------ |
# 623xxxxx21 31 (2020-09-20 22:42) def gen_successors(node): if node[0] == 0 : successors = [0] * (20) for i in range (0,len(node)) : successors[i] = node[i] successors[i+10] = node [i] successors[0],successors[1] = successors[1],successors[0] successors[9] += 'R' successors[10],successors[13] = successors[13],successors[10] successors[19] += 'D' if node[2] == 0 : successors = [0] * (20) for i in range (0,len(node)) : successors[i] = node[i] successors[i+10] = node [i] successors[2],successors[1] = successors[1],successors[2] successors[9] += 'L' successors[12],successors[15] = successors[15],successors[12] successors[19] += 'D' if node[6] == 0 : successors = [0] * (20) for i in range (0,len(node)) : successors[i] = node[i] successors[i+10] = node [i] successors[6],successors[7] = successors[7],successors[6] successors[9] += 'R' successors[16],successors[13] = successors[13],successors[16] successors[19] += 'U' if node[8] == 0 : successors = [0] * (20) for i in range (0,len(node)) : successors[i] = node[i] successors[i+10] = node [i] successors[8],successors[7] = successors[7],successors[8] successors[9] += 'L' successors[18],successors[15] = successors[15],successors[18] successors[19] += 'U' if node[1] == 0 : successors = [0] * (30) for i in range (0,len(node)) : successors[i] = node[i] successors[i+10] = node [i] successors[i+20] = node [i] successors[1],successors[0] = successors[0],successors[1] successors[9] += 'L' successors[11],successors[12] = successors[12],successors[11] successors[19] += 'R' successors[21],successors[24] = successors[24],successors[21] successors[29] += 'D' if node[3] == 0 : successors = [0] * (30) for i in range (0,len(node)) : successors[i] = node[i] successors[i+10] = node [i] successors[i+20] = node [i] successors[3],successors[4] = successors[4],successors[3] successors[9] += 'R' successors[13],successors[10] = successors[10],successors[13] successors[19] += 'U' successors[23],successors[26] = successors[26],successors[23] successors[29] += 'D' if node[5] == 0 : successors = [0] * (30) for i in range (0,len(node)) : successors[i] = node[i] successors[i+10] = node [i] successors[i+20] = node [i] successors[5],successors[4] = successors[4],successors[5] successors[9] += 'L' successors[15],successors[12] = successors[12],successors[15] successors[19] += 'U' successors[25],successors[28] = successors[28],successors[25] successors[29] += 'D' if node[7] == 0 : successors = [0] * (30) for i in range (0,len(node)) : successors[i] = node[i] successors[i+10] = node [i] successors[i+20] = node [i] successors[7],successors[6] = successors[6],successors[7] successors[9] += 'L' successors[17],successors[18] = successors[18],successors[17] successors[19] += 'R' successors[27],successors[24] = successors[24],successors[27] successors[29] += 'U' if node[4] == 0 : successors = [0] * (40) for i in range (0,len(node)) : successors[i] = node[i] successors[i+10] = node [i] successors[i+20] = node [i] successors[i+30] = node [i] successors[4],successors[3] = successors[3],successors[4] successors[9] += 'L' successors[14],successors[15] = successors[15],successors[14] successors[19] += 'R' successors[24],successors[21] = successors[21],successors[24] successors[29] += 'U' successors[34],successors[37] = successors[37],successors[34] successors[39] += 'D' return successors #------------------------------------------ |
# 623xxxxx21 32 (2020-09-19 23:08) def gen_successors(node): successors = [] b = node.copy() a = node.index(0) if a == 0: node[a],node[a+1] = node[a+1],node[a] node[-1] += 'R' successors += node node = b node[a],node[a+3] = node[a+3],node[a] node[-1] += 'D' successors +=node elif a == 1: node[a],node[a-1] = node[a-1],node[a] node[-1] += 'L' successors += node node = b node[a],node[a+1] = node[a+1],node[a] node[-1] += 'R' successors +=node node = b node[a],node[a+3] = node[a+3],node[a] node[-1] += 'D' successors +=node elif a==2: node[a],node[a-1] = node[a-1],node[a] node[-1] += 'L' successors += node node = b node[a],node[a+3] = node[a+3],node[a] node[-1] += 'D' successors +=node elif a==3: node[a],node[a-3] = node[a-3],node[a] node[-1] += 'U' successors += node node = b node[a],node[a+1] = node[a+1],node[a] node[-1] += 'R' successors +=node node = b node[a],node[a+3] = node[a+3],node[a] node[-1] += 'D' successors +=node elif a==4: node[a],node[a-3] = node[a-3],node[a] node[-1] += 'U' successors += node node = b node[a],node[a+1] = node[a+1],node[a] node[-1] += 'R' successors +=node node = b node[a],node[a+3] = node[a+3],node[a] node[-1] += 'D' successors +=node node = b node[a],node[a-1] = node[a-1],node[a] node[-1] += 'L' successors +=node elif a==5: node[a],node[a-3] = node[a-3],node[a] node[-1] += 'U' successors += node node = b node[a],node[a-1] = node[a-1],node[a] node[-1] += 'L' successors +=node node = b node[a],node[a+3] = node[a+3],node[a] node[-1] += 'D' successors +=node elif a==6 : node[a],node[a-3] = node[a-3],node[a] node[-1] += 'U' successors += node node = b node[a],node[a+1] = node[a+1],node[a] node[-1] += 'R' successors +=node elif a==7 : node[a],node[a-1] = node[a-1],node[a] node[-1] += 'L' successors += node node = b node[a],node[a+1] = node[a+1],node[a] node[-1] += 'R' successors +=node node = b node[a],node[a-3] = node[a-3],node[a] node[-1] += 'U' else: node[a],node[a-3] = node[a-3],node[a] node[-1] += 'U' successors += node node = b node[a],node[a-1] = node[a-1],node[a] node[-1] += 'L' successors +=node return successors #------------------------------------------ |
# 623xxxxx21 33 (2020-09-19 19:54) def gen_successors(node): if 0 == node[0] or 0 == node[2] or 0 == node[6] or 0 == node[8]: M = 2 successors = [0]*(M*10) for i in range(len(node)): successors[i] = node[i] successors[i+10] = node[i] if node[0] == 0: successors[0],successors[1] = successors[1],successors[0] successors[9] += 'R' successors[10],successors[13] = successors[13],successors[10] successors[19] += 'D' elif node[2] == 0: successors[2],successors[1] = successors[1],successors[2] successors[9] += 'L' successors[12],successors[15] = successors[15],successors[12] successors[19] += 'D' elif node[6] == 0: successors[3],successors[6] = successors[6],successors[3] successors[9] += 'U' successors[16],successors[17] = successors[17],successors[16] successors[19] += 'R' elif node[8] == 0: successors[5],successors[8] = successors[8],successors[5] successors[9] += 'U' successors[17],successors[18] = successors[18],successors[17] successors[19] += 'L' elif 0 == node[1] or 0 == node[3] or 0 == node[5] or 0 == node[7]: M = 3 successors = [0]*(M*10) for i in range(len(node)): successors[i] = node[i] successors[i+10] = node[i] successors[i+20] = node[i] if node[1] == 0: successors[0],successors[1] = successors[1],successors[0] successors[9] += 'L' successors[11],successors[12] = successors[12],successors[11] successors[19] += 'R' successors[21],successors[24] = successors[24],successors[21] successors[29] += 'D' elif node[3] == 0: successors[3],successors[0] = successors[0],successors[3] successors[9] += 'U' successors[13],successors[14] = successors[14],successors[13] successors[19] += 'R' successors[23],successors[26] = successors[26],successors[23] successors[29] += 'D' elif node[5] == 0: successors[5],successors[4] = successors[4],successors[5] successors[9] += 'L' successors[15],successors[12] = successors[12],successors[15] successors[19] += 'U' successors[25],successors[28] = successors[28],successors[25] successors[29] += 'D' elif node[7] == 0: successors[7],successors[6] = successors[6],successors[7] successors[9] += 'L' successors[17],successors[18] = successors[18],successors[17] successors[19] += 'R' successors[14],successors[17] = successors[17],successors[14] successors[29] += 'U' elif 0 == node[4]: M = 4 successors = [0]*M*10 for i in range(len(node)): successors[i] = node[i] successors[i+10] = node[i] successors[i+20] = node[i] successors[i+30] = node[i] successors[9] += 'U' successors[19] += 'D' successors[29] += 'L' successors[39] += 'R' successors[1], successors[4] = successors[4] ,successors[1] successors[17],successors[14] = successors[14],successors[17] successors[23],successors[24] = successors[24],successors[23] successors[35],successors[34] = successors[34],successors[35] return successors #------------------------------------------ |
# 623xxxxx21 34 (2020-09-20 23:53) def gen_successors(node): successors = [] Maiwhailaew=int((len(node[:-1]))**(1/2)) successors=node # list[0] == choice 1+= possible relocate corner=[0] upper_rim=[] lower_rim=[] left_rim=[] right_rim=[] centre=[] # do corner possible relocate corner.append(Maiwhailaew-1) # up right corner.append(Maiwhailaew*(Maiwhailaew-1)) # down left corner.append((Maiwhailaew-1)+(Maiwhailaew*(Maiwhailaew-1))) # down right if Maiwhailaew>2: # do rim possible relocate for i in range(Maiwhailaew-2): upper_rim.append(i+1) # upper rim lower_rim.append((Maiwhailaew*(Maiwhailaew-1))+1+i) # lower rim left_rim.append(Maiwhailaew+Maiwhailaew*i) # left rim right_rim.append(2*Maiwhailaew-1+Maiwhailaew*i) # right rim # do centre possible relocate for i in range(Maiwhailaew-2): # i for x relocate for j in range(Maiwhailaew-2): # j for y relocate centre.append(Maiwhailaew+1+i+Maiwhailaew*j) # find location of 0 on board for i in range(Maiwhailaew*Maiwhailaew): if node[i]==0: location=i # relocate if 0 locate at corner if location in corner: successors*=2 if location==corner[0]: # UL relocate R D successors[0], successors[1]=successors[1], successors[0] successors[Maiwhailaew*Maiwhailaew]+='R' successors[Maiwhailaew*Maiwhailaew+1], successors[Maiwhailaew*Maiwhailaew+1+Maiwhailaew]=successors[Maiwhailaew*Maiwhailaew+1+Maiwhailaew], successors[Maiwhailaew*Maiwhailaew+1] successors[Maiwhailaew*Maiwhailaew*2+1]+='D' elif location==corner[1]: # UR relocate L D successors[Maiwhailaew-1], successors[Maiwhailaew-2]=successors[Maiwhailaew-2], successors[Maiwhailaew-1] successors[Maiwhailaew*Maiwhailaew]+='L' successors[Maiwhailaew*Maiwhailaew+Maiwhailaew], successors[Maiwhailaew*Maiwhailaew+2*Maiwhailaew]=successors[Maiwhailaew*Maiwhailaew+2*Maiwhailaew], successors[Maiwhailaew*Maiwhailaew+Maiwhailaew] successors[Maiwhailaew*Maiwhailaew*2+1]+='D' elif location==corner[2]: # DL relocate R U successors[Maiwhailaew*(Maiwhailaew-1)], successors[Maiwhailaew*(Maiwhailaew-1)+1]=successors[Maiwhailaew*(Maiwhailaew-1)+1], successors[Maiwhailaew*(Maiwhailaew-1)] successors[Maiwhailaew*Maiwhailaew]+='R' successors[Maiwhailaew*(Maiwhailaew-1)*2+Maiwhailaew+1], successors[Maiwhailaew*(Maiwhailaew-1)*2+1]=successors[Maiwhailaew*(Maiwhailaew-1)*2+1], \ successors[Maiwhailaew*(Maiwhailaew-1)*2+Maiwhailaew+1] successors[Maiwhailaew*Maiwhailaew*2+1]+='U' elif location==corner[3]: # DR relocate L U successors[(Maiwhailaew-1)+(Maiwhailaew*(Maiwhailaew-1))], successors[(Maiwhailaew-1)+(Maiwhailaew*(Maiwhailaew-1))-1]= \ successors[(Maiwhailaew-1)+(Maiwhailaew*(Maiwhailaew-1))-1], successors[(Maiwhailaew-1)+(Maiwhailaew*(Maiwhailaew-1))] successors[Maiwhailaew*Maiwhailaew]+='L' successors[(Maiwhailaew+(Maiwhailaew*(Maiwhailaew-1)))*2], successors[(Maiwhailaew+(Maiwhailaew*(Maiwhailaew-1)))*2-Maiwhailaew]= \ successors[(Maiwhailaew+(Maiwhailaew*(Maiwhailaew-1)))*2-Maiwhailaew], successors[(Maiwhailaew+(Maiwhailaew*(Maiwhailaew-1)))*2] successors[Maiwhailaew*Maiwhailaew*2+1]+='U' elif location in left_rim: # can relocate by R U D successors*=3 for j in range(len(left_rim)): if location==left_rim[j]: successors[Maiwhailaew+Maiwhailaew*j], successors[Maiwhailaew+Maiwhailaew*j+1]=successors[Maiwhailaew+Maiwhailaew*j+1], successors[Maiwhailaew+Maiwhailaew*j] # relocate R successors[Maiwhailaew*Maiwhailaew]+='R' successors[Maiwhailaew+Maiwhailaew*j+Maiwhailaew*Maiwhailaew+1], successors[Maiwhailaew*j+1+Maiwhailaew*Maiwhailaew]=successors[Maiwhailaew*j+1+Maiwhailaew*Maiwhailaew], successors[Maiwhailaew+Maiwhailaew*j+Maiwhailaew*Maiwhailaew+1] # relocate U successors[Maiwhailaew*Maiwhailaew*2+1]+='U' successors[Maiwhailaew+Maiwhailaew*j+2*(Maiwhailaew*Maiwhailaew+1)], successors[Maiwhailaew*j+2*(1+Maiwhailaew*Maiwhailaew)+2*Maiwhailaew]= \ successors[Maiwhailaew*j+2*(1+Maiwhailaew*Maiwhailaew)+2*Maiwhailaew], successors[Maiwhailaew+Maiwhailaew*j+2*(Maiwhailaew*Maiwhailaew+1)] # relocate D successors[Maiwhailaew*Maiwhailaew*3+2]+='D' elif location in right_rim: # can relocate by L U D successors*=3 for j in range(len(right_rim)): if location==right_rim[j]: successors[Maiwhailaew+Maiwhailaew*j+Maiwhailaew-1], successors[Maiwhailaew+Maiwhailaew*j+Maiwhailaew-2]=successors[Maiwhailaew+Maiwhailaew*j+Maiwhailaew-2], successors[Maiwhailaew+Maiwhailaew*j+Maiwhailaew-1] # relocate L successors[Maiwhailaew*Maiwhailaew]+='L' successors[Maiwhailaew+Maiwhailaew*j+Maiwhailaew*Maiwhailaew+Maiwhailaew], successors[Maiwhailaew*j+Maiwhailaew+Maiwhailaew*Maiwhailaew]=successors[Maiwhailaew*j+Maiwhailaew+Maiwhailaew*Maiwhailaew], successors[Maiwhailaew+Maiwhailaew*j+Maiwhailaew*Maiwhailaew+Maiwhailaew] # relocate U successors[Maiwhailaew*Maiwhailaew*2+1]+='U' successors[Maiwhailaew+Maiwhailaew*j+2*(Maiwhailaew*Maiwhailaew+1)+Maiwhailaew-1], successors[Maiwhailaew*j+2*(1+Maiwhailaew*Maiwhailaew)+2*Maiwhailaew+Maiwhailaew-1]= \ successors[Maiwhailaew*j+2*(1+Maiwhailaew*Maiwhailaew)+2*Maiwhailaew+Maiwhailaew-1], successors[Maiwhailaew+Maiwhailaew*j+2*(Maiwhailaew*Maiwhailaew+1)+Maiwhailaew-1] # relocate D successors[Maiwhailaew*Maiwhailaew*3+2]+='D' # relocate if 0 on rim elif location in upper_rim: # can relocate by L R D successors*=3 for i in range(len(upper_rim)): # search position of location in Urim length Maiwhailaew-2 if location==upper_rim[i]: i+=1 successors[i], successors[i-1]=successors[i-1], successors[i] # relocate L successors[Maiwhailaew*Maiwhailaew]+='L' successors[i+Maiwhailaew*Maiwhailaew+1], successors[i+Maiwhailaew*Maiwhailaew+2]=successors[i+Maiwhailaew*Maiwhailaew+2], \ successors[i+Maiwhailaew*Maiwhailaew+1] # relocate R successors[Maiwhailaew*Maiwhailaew*2+1]+='R' successors[i+2*(Maiwhailaew*Maiwhailaew+1)], successors[i+2*(Maiwhailaew*Maiwhailaew+1)+Maiwhailaew]= \ successors[i+2*(Maiwhailaew*Maiwhailaew+1)+Maiwhailaew], successors[i+2*(Maiwhailaew*Maiwhailaew+1)] # relocate D successors[Maiwhailaew*Maiwhailaew*3+2]+='D' elif location in lower_rim: # can relocate by L R U successors*=3 for i in range(len(lower_rim)): if location==lower_rim[i]: successors[Maiwhailaew*(Maiwhailaew-1)+i+1], successors[Maiwhailaew*(Maiwhailaew-1)+i]= \ successors[Maiwhailaew*(Maiwhailaew-1)+i], successors[Maiwhailaew*(Maiwhailaew-1)+i+1] # relocate L successors[Maiwhailaew*Maiwhailaew]+='L' successors[Maiwhailaew*(Maiwhailaew-1)+i+Maiwhailaew*Maiwhailaew+3], successors[Maiwhailaew*(Maiwhailaew-1)+i+Maiwhailaew*Maiwhailaew+2]= \ successors[Maiwhailaew*(Maiwhailaew-1)+i+Maiwhailaew*Maiwhailaew+2], successors[Maiwhailaew*(Maiwhailaew-1)+i+Maiwhailaew*Maiwhailaew+3] # relocate R successors[Maiwhailaew*Maiwhailaew*2+1]+='R' successors[Maiwhailaew*(Maiwhailaew-1)+i+2*(Maiwhailaew*Maiwhailaew+1)+1], successors[Maiwhailaew*(Maiwhailaew-1)+i+2*(Maiwhailaew*Maiwhailaew+1)+1-Maiwhailaew]= \ successors[Maiwhailaew*(Maiwhailaew-1)+i+2*(Maiwhailaew*Maiwhailaew+1)+1-Maiwhailaew], successors[Maiwhailaew*(Maiwhailaew-1)+i+2*(Maiwhailaew*Maiwhailaew+1)+1] # relocate U successors[Maiwhailaew*Maiwhailaew*3+2]+='U' elif location in centre: # relocate if 0 locate at center of this board , can relocate by 4 directions successors*=4 for j in range(Maiwhailaew-2): # this is y for i in range(Maiwhailaew-2): # this is x if successors[j*(Maiwhailaew+1+i)+(Maiwhailaew+1+i)]==0: successors[j*(Maiwhailaew+1+i)+(Maiwhailaew+1+i)-1], successors[j*(Maiwhailaew+1+i)+(Maiwhailaew+1+i)]= \ successors[j*(Maiwhailaew+1+i)+(Maiwhailaew+1+i)], successors[j*(+1+i)+(Maiwhailaew+1+i)-1] # relocate L successors[Maiwhailaew*Maiwhailaew]+='L' successors[j*(Maiwhailaew+1+i)+(Maiwhailaew+1+i)+Maiwhailaew*Maiwhailaew+1], successors[j*(Maiwhailaew+1+i)+(Maiwhailaew+1+i)+Maiwhailaew*Maiwhailaew+2]= \ successors[j*(Maiwhailaew+1+i)+(Maiwhailaew+1+i)+Maiwhailaew*Maiwhailaew+2], successors[j*(Maiwhailaew+1+i)+(Maiwhailaew+1+i)+Maiwhailaew*Maiwhailaew+1] # relocate R successors[Maiwhailaew*Maiwhailaew*2+1]+='R' successors[j*(Maiwhailaew+1+i)+(Maiwhailaew+1+i)+2*(Maiwhailaew*Maiwhailaew+1)], successors[j*(Maiwhailaew+1+i)+(Maiwhailaew+1+i)+2*(Maiwhailaew*Maiwhailaew+1)-Maiwhailaew] \ =successors[j*(Maiwhailaew+1+i)+(Maiwhailaew+1+i)+2*(Maiwhailaew*Maiwhailaew+1)-Maiwhailaew], successors[j*(Maiwhailaew+1+i)+(Maiwhailaew+1+i)+2*(Maiwhailaew*Maiwhailaew+1)] # relocate U successors[Maiwhailaew*Maiwhailaew*3+2]+='U' successors[j*(Maiwhailaew+1+i)+(Maiwhailaew+1+i)+3*(Maiwhailaew*Maiwhailaew+1)], successors[j*(Maiwhailaew+1+i)+(Maiwhailaew+1+i)+3*(Maiwhailaew*Maiwhailaew+1)+Maiwhailaew] \ =successors[j*(Maiwhailaew+1+i)+(Maiwhailaew+1+i)+3*(Maiwhailaew*Maiwhailaew+1)+Maiwhailaew], successors[j*(Maiwhailaew+1+i)+(Maiwhailaew+1+i)+3*(Maiwhailaew*Maiwhailaew+1)] # relocate D successors[Maiwhailaew*Maiwhailaew*4+3]+='D' return successors #------------------------------------------ |
# 623xxxxx21 35 (2020-09-20 23:45) def gen_successors(node): successors = [] q = int(len(node[:-1])**0.5) k = node.index(0); l = 0; found = False for i in range(1,q+1): if l == k//q: a = k%q - 1; x = k%q + 1; b = k - q; w = k + q if a >= 0: c = node[:-1] c.remove(0); c.insert(k-1,0); successors += c + [node[-1]+ 'L'] if b >= 0: s = node[:-1] s.remove(0); s.insert(b,0) s.remove(s[b+1]); s.insert(k,node[b]) successors += s + [node[-1]+ 'U'] if w < q**2: g = node[:-1] g.remove(0); g.insert(w,0) g.remove(g[w-1]); g.insert(k,node[w]) successors += g + [node[-1]+ 'D'] if x < q: p = node[:-1] p.remove(0); p.insert(k+1,0) successors += p + [node[-1]+ 'R'] found = True if found == True: break else: l += 1 return successors #------------------------------------------ |
# 623xxxxx21 36 (2020-09-20 17:47) def gen_successors(node): successors = [] i = node.index(0) if i%3==0 or i%3==1: list = node.copy() x = node[i+1] list[i+1] = 0 list[i] = x successors = successors + list[:9] successors = successors + [node[9]+"R"] if i%3!=0: list = node.copy() x = node[i-1] list[i-1] = 0 list[i] = x successors = successors + list[:9] successors = successors + [node[9]+"L"] if i>=3 and i<=8: list = node.copy() x = node[i-3] list[i-3] = 0 list[i] = x successors = successors + list[:9] successors = successors + [node[9]+"U"] if i>=0 and i<=5: list = node.copy() x = node[i+3] list[i+3] = 0 list[i] = x successors = successors + list[:9] successors = successors + [node[9]+"D"] return successors #------------------------------------------ |
# 623xxxxx21 37 (2020-09-20 21:46) def gen_successors(node): successors = [] i = node.index(0) #หาตัวเลข0อยู่ตำแหน่งใด if str(i) in '345678' : #go up #n=345678 y = i//3 x = i%3 output = list(node) output[-1] += 'U' j = ((y-1)*3) + x output[i] , output[j] = output[j] , output[i] successors += output if str(i) in '012345' : #go down #n=012345 y = i//3 x = i%3 output = list(node) output[-1] += 'D' j = ((y+1)*3) + x output[i] , output[j] = output[j] , output[i] successors += output if str(i) in '124578' : #go left #n=124578 y = i//3 x = i%3 output = list(node) output[-1] += 'L' j = (x-1) + y*3 output[i] , output[j] = output[j] , output[i] successors += output if str(i) in '013467' : #go right #n=013467 y = i//3 x = i%3 output = list(node) output[-1] += 'R' j = (x+1) + y*3 output[i] , output[j] = output[j] , output[i] successors += output return successors #------------------------------------------ |
# 623xxxxx21 38 (2020-09-20 22:36) def gen_successors(node): successors=[] N=int((len(node[:-1]))**(1/2)) successors=node # list[0] == choice 1+= possible move corner=[0] upper_rim=[] lower_rim=[] left_rim=[] right_rim=[] centre=[] # do corner possile move corner.append(N-1) # up right corner.append(N*(N-1)) # down left corner.append((N-1)+(N*(N-1))) # down right if N>2: for i in range(N-2): # do rim possible move upper_rim.append(i+1) # upper rim lower_rim.append((N*(N-1))+1+i) # lower rim left_rim.append(N+N*i) # left rim right_rim.append(2*N-1+N*i) # right rim # do centre possible move for i in range(N-2): # i for x move for j in range(N-2): # j for y move centre.append(N+1+i+N*j) # find 0 location on board for i in range(N*N): if node[i]==0: location=i # do move if 0 on corner if location in corner: successors*=2 if location==corner[0]: # UL move R D successors[0], successors[1]=successors[1], successors[0] successors[N*N]+='R' successors[N*N+1], successors[N*N+1+N]=successors[N*N+1+N], successors[N*N+1] successors[N*N*2+1]+='D' elif location==corner[1]: # UR move L D successors[N-1], successors[N-2]=successors[N-2], successors[N-1] successors[N*N]+='L' successors[N*N+N], successors[N*N+2*N]=successors[N*N+2*N], successors[N*N+N] successors[N*N*2+1]+='D' elif location==corner[2]: # DL move R U successors[N*(N-1)], successors[N*(N-1)+1]=successors[N*(N-1)+1], successors[N*(N-1)] successors[N*N]+='R' successors[N*(N-1)*2+N+1], successors[N*(N-1)*2+1]=successors[N*(N-1)*2+1], \ successors[N*(N-1)*2+N+1] successors[N*N*2+1]+='U' elif location==corner[3]: # DR move L U successors[(N-1)+(N*(N-1))], successors[(N-1)+(N*(N-1))-1]= \ successors[(N-1)+(N*(N-1))-1], successors[(N-1)+(N*(N-1))] successors[N*N]+='L' successors[(N+(N*(N-1)))*2], successors[(N+(N*(N-1)))*2-N]= \ successors[(N+(N*(N-1)))*2-N], successors[(N+(N*(N-1)))*2] successors[N*N*2+1]+='U' # do move if 0 on rim elif location in upper_rim: # Urim move L R D successors*=3 for i in range(len(upper_rim)): # search possition of location in Urim length N-2 ex N5[#,0,1,2,#] if location==upper_rim[i]: i+=1 successors[i], successors[i-1]=successors[i-1], successors[i] # move L successors[N*N]+='L' successors[i+N*N+1], successors[i+N*N+2]=successors[i+N*N+2], \ successors[i+N*N+1] # move R successors[N*N*2+1]+='R' successors[i+2*(N*N+1)], successors[i+2*(N*N+1)+N]= \ successors[i+2*(N*N+1)+N], successors[i+2*(N*N+1)] # move D successors[N*N*3+2]+='D' elif location in lower_rim: # Lwrim movve L R U successors*=3 for i in range(len(lower_rim)): if location==lower_rim[i]: successors[N*(N-1)+i+1], successors[N*(N-1)+i]= \ successors[N*(N-1)+i], successors[N*(N-1)+i+1] # move L successors[N*N]+='L' successors[N*(N-1)+i+N*N+3], successors[N*(N-1)+i+N*N+2]= \ successors[N*(N-1)+i+N*N+2], successors[N*(N-1)+i+N*N+3] # move R successors[N*N*2+1]+='R' successors[N*(N-1)+i+2*(N*N+1)+1], successors[N*(N-1)+i+2*(N*N+1)+1-N]= \ successors[N*(N-1)+i+2*(N*N+1)+1-N], successors[N*(N-1)+i+2*(N*N+1)+1] # move U successors[N*N*3+2]+='U' elif location in left_rim: # Lrim move R U D successors*=3 for j in range(len(left_rim)): if location==left_rim[j]: successors[N+N*j], successors[N+N*j+1]=successors[N+N*j+1], successors[N+N*j] # move R successors[N*N]+='R' successors[N+N*j+N*N+1], successors[N*j+1+N*N]=successors[N*j+1+N*N], successors[N+N*j+N*N+1] #move U successors[N*N*2+1]+='U' successors[N+N*j+2*(N*N+1)], successors[N*j+2*(1+N*N)+2*N]= \ successors[N*j+2*(1+N*N)+2*N], successors[N+N*j+2*(N*N+1)] # move D successors[N*N*3+2]+='D' elif location in right_rim: # Rrim move L U D successors*=3 for j in range(len(right_rim)): if location==right_rim[j]: successors[N+N*j+N-1], successors[N+N*j+N-2]=successors[N+N*j+N-2], successors[N+N*j+N-1] # move L successors[N*N]+='L' successors[N+N*j+N*N+N], successors[N*j+N+N*N]=successors[N*j+N+N*N], successors[N+N*j+N*N+N] # move U successors[N*N*2+1]+='U' successors[N+N*j+2*(N*N+1)+N-1], successors[N*j+2*(1+N*N)+2*N+N-1]= \ successors[N*j+2*(1+N*N)+2*N+N-1], successors[N+N*j+2*(N*N+1)+N-1] # move D successors[N*N*3+2]+='D' elif location in centre: # do move if 0 in centre successors*=4 for j in range(N-2): # y for i in range(N-2): # x if successors[j*(N+1+i)+(N+1+i)]==0: successors[j*(N+1+i)+(N+1+i)-1], successors[j*(N+1+i)+(N+1+i)]= \ successors[j*(N+1+i)+(N+1+i)], successors[j*(N+1+i)+(N+1+i)-1] # move L successors[N*N]+='L' successors[j*(N+1+i)+(N+1+i)+N*N+1], successors[j*(N+1+i)+(N+1+i)+N*N+2]= \ successors[j*(N+1+i)+(N+1+i)+N*N+2], successors[j*(N+1+i)+(N+1+i)+N*N+1] # move R successors[N*N*2+1]+='R' successors[j*(N+1+i)+(N+1+i)+2*(N*N+1)], successors[j*(N+1+i)+(N+1+i)+2*(N*N+1)-N] \ =successors[j*(N+1+i)+(N+1+i)+2*(N*N+1)-N], successors[j*(N+1+i)+(N+1+i)+2*(N*N+1)] # move U successors[N*N*3+2]+='U' successors[j*(N+1+i)+(N+1+i)+3*(N*N+1)], successors[j*(N+1+i)+(N+1+i)+3*(N*N+1)+N] \ =successors[j*(N+1+i)+(N+1+i)+3*(N*N+1)+N], successors[j*(N+1+i)+(N+1+i)+3*(N*N+1)] # move D successors[N*N*4+3]+='D' return successors # ------------------------------------------ |
# 623xxxxx21 39 (2020-09-20 19:08) def gen_successors(node): successors = [] x = node.index(0) if x in [3,4,5,6,7,8]: #up noden = node[0:9] new=[''] moven=node[-1] xu= x-3 noden.remove(0) noden.insert(xu,0) noden.remove(node[xu]) noden.insert(x,node[xu]) moven=[moven+'U'] new = noden[0:9]+moven successors+=new if x in [0,1,2,3,4,5]: #down noden = node[0:9] new = [''] moven=node[-1] xu=x+3 noden.remove(0) noden.insert(xu,0) noden.remove(node[xu]) noden.insert(x,node[xu]) moven = [moven+'D'] new = noden[0:9]+moven successors+=new if x in [1,2,4,5,7,8]: #left noden = node[0:9] new = [''] moven = node[-1] xu = x-1 noden.remove(0) noden.insert(xu,0) noden.remove(node[xu]) noden.insert(x,node[xu]) moven = [moven+'L'] new = noden[0:9]+moven successors+=new if x in [0,1,3,4,6,7]: # right noden = node[0:9] new =[''] moven = node[-1] xu = x+1 noden.remove(0) noden.insert(xu,0) noden.remove(node[xu]) noden.insert(x,node[xu]) moven = [moven+'R'] new = noden[0:9]+moven successors+=new return successors #------------------------------------------ |
# 623xxxxx21 40 (2020-09-20 23:06) def gen_successors(node): successors=[] a=int((len(node[:-1]))**(1/2)) successors=node corner=[0] upper=[] lower=[] left=[] right=[] centre=[] corner.append(a-1) corner.append(a*(a-1)) corner.append((a-1)+(a*(a-1))) if a>2: for x in range(a-2): upper.append(x+1) lower.append((a*(a-1))+1+x) left.append(a+a*x) right.append(2*a-1+a*x) for x in range(a-2): for j in range(a-2): centre.append(a+1+x+a*j) for x in range(a*a): if node[x]==0: location=x if location in corner: successors*=2 if location==corner[0]: successors[0], successors[1]=successors[1], successors[0] successors[a*a]+='R' successors[a*a+1], successors[a*a+1+a]=successors[a*a+1+a], successors[a*a+1] successors[a*a*2+1]+='D' elif location==corner[1]: successors[a-1], successors[a-2]=successors[a-2], successors[a-1] successors[a*a]+='L' successors[a*a+a], successors[a*a+2*a]=successors[a*a+2*a], successors[a*a+a] successors[a*a*2+1]+='D' elif location==corner[2]: successors[a*(a-1)], successors[a*(a-1)+1]=successors[a*(a-1)+1], successors[a*(a-1)] successors[a*a]+='R' successors[a*(a-1)*2+a+1], successors[a*(a-1)*2+1]=successors[a*(a-1)*2+1], \ successors[a*(a-1)*2+a+1] successors[a*a*2+1]+='U' elif location==corner[3]: successors[(a-1)+(a*(a-1))], successors[(a-1)+(a*(a-1))-1]= \ successors[(a-1)+(a*(a-1))-1], successors[(a-1)+(a*(a-1))] successors[a*a]+='L' successors[(a+(a*(a-1)))*2], successors[(a+(a*(a-1)))*2-a]= \ successors[(a+(a*(a-1)))*2-a], successors[(a+(a*(a-1)))*2] successors[a*a*2+1]+='U' elif location in upper: successors*=3 for x in range(len(upper)): if location==upper[x]: x+=1 successors[x], successors[x-1]=successors[x-1], successors[x] successors[a*a]+='L' successors[x+a*a+1], successors[x+a*a+2]=successors[x+a*a+2], \ successors[x+a*a+1] successors[a*a*2+1]+='R' successors[x+2*(a*a+1)], successors[x+2*(a*a+1)+a]= \ successors[x+2*(a*a+1)+a], successors[x+2*(a*a+1)] successors[a*a*3+2]+='D' elif location in lower: successors*=3 for x in range(len(lower)): if location==lower[x]: successors[a*(a-1)+x+1], successors[a*(a-1)+x]= \ successors[a*(a-1)+x], successors[a*(a-1)+x+1] successors[a*a]+='L' successors[a*(a-1)+x+a*a+3], successors[a*(a-1)+x+a*a+2]= \ successors[a*(a-1)+x+a*a+2], successors[a*(a-1)+x+a*a+3] successors[a*a*2+1]+='R' successors[a*(a-1)+x+2*(a*a+1)+1], successors[a*(a-1)+x+2*(a*a+1)+1-a]= \ successors[a*(a-1)+x+2*(a*a+1)+1-a], successors[a*(a-1)+x+2*(a*a+1)+1] successors[a*a*3+2]+='U' elif location in left: successors*=3 for j in range(len(left)): if location==left[j]: successors[a+a*j], successors[a+a*j+1]=successors[a+a*j+1], successors[a+a*j] successors[a*a]+='R' successors[a+a*j+a*a+1], successors[a*j+1+a*a]=successors[a*j+1+a*a], successors[a+a*j+a*a+1] successors[a*a*2+1]+='U' successors[a+a*j+2*(a*a+1)], successors[a*j+2*(1+a*a)+2*a]= \ successors[a*j+2*(1+a*a)+2*a], successors[a+a*j+2*(a*a+1)] successors[a*a*3+2]+='D' elif location in right: successors*=3 for j in range(len(right)): if location==right[j]: successors[a+a*j+a-1], successors[a+a*j+a-2]=successors[a+a*j+a-2], successors[a+a*j+a-1] successors[a*a]+='L' successors[a+a*j+a*a+a], successors[a*j+a+a*a]=successors[a*j+a+a*a], successors[a+a*j+a*a+a] successors[a*a*2+1]+='U' successors[a+a*j+2*(a*a+1)+a-1], successors[a*j+2*(1+a*a)+2*a+a-1]= \ successors[a*j+2*(1+a*a)+2*a+a-1], successors[a+a*j+2*(a*a+1)+a-1] successors[a*a*3+2]+='D' elif location in centre: successors*=4 for j in range(a-2): for x in range(a-2): if successors[j*(a+1+x)+(a+1+x)]==0: successors[j*(a+1+x)+(a+1+x)-1], successors[j*(a+1+x)+(a+1+x)]= \ successors[j*(a+1+x)+(a+1+x)], successors[j*(a+1+x)+(a+1+x)-1] successors[a*a]+='L' successors[j*(a+1+x)+(a+1+x)+a*a+1], successors[j*(a+1+x)+(a+1+x)+a*a+2]= \ successors[j*(a+1+x)+(a+1+x)+a*a+2], successors[j*(a+1+x)+(a+1+x)+a*a+1] successors[a*a*2+1]+='R' successors[j*(a+1+x)+(a+1+x)+2*(a*a+1)], successors[j*(a+1+x)+(a+1+x)+2*(a*a+1)-a] \ =successors[j*(a+1+x)+(a+1+x)+2*(a*a+1)-a], successors[j*(a+1+x)+(a+1+x)+2*(a*a+1)] successors[a*a*3+2]+='U' successors[j*(a+1+x)+(a+1+x)+3*(a*a+1)], successors[j*(a+1+x)+(a+1+x)+3*(a*a+1)+a] \ =successors[j*(a+1+x)+(a+1+x)+3*(a*a+1)+a], successors[j*(a+1+x)+(a+1+x)+3*(a*a+1)] successors[a*a*4+3]+='D' return successors # ------------------------------------------ |
# 623xxxxx21 41 (2020-09-20 23:54) def gen_successors(node): successors = [] size = int(len(node[:-1])**0.5) num = node.index(0) add = 0 found = False for i in range(1,size+1): if add == num//size: a = num%size - 1 b = num%size + 1 c = num - size d = num + size if a >= 0: e = node[:-1] e.remove(0) e.insert(num-1,0) successors += e + [node[-1]+ 'L'] if c >= 0: f = node[:-1] f.remove(0) f.insert(c,0) f.remove(f[c+1]) f.insert(num,node[c]) successors += f + [node[-1]+ 'U'] if d < size**2: g = node[:-1] g.remove(0) g.insert(d,0) g.remove(g[d-1]) g.insert(num,node[d]) successors += g + [node[-1]+ 'D'] if b < size: h = node[:-1] h.remove(0) h.insert(num+1,0) successors += h + [node[-1]+ 'R'] found = True if found == True: break else: add += 1 return successors #------------------------------------------ |
# 623xxxxx21 42 (2020-09-20 20:59) def gen_successors(node): successors = [] a = int(len(node[:-1])**0.5) b = node.index(0); m = 0; found = False for i in range(1,a+1): if m == b//a: x = b%a - 1; y = b%a + 1; z = b - a; w = b + a if x >= 0: c = node[:-1] c.remove(0); c.insert(b-1,0); successors += c + [node[-1]+ 'L'] if z >= 0: s = node[:-1] s.remove(0); s.insert(z,0) s.remove(s[z+1]); s.insert(b,node[z]) successors += s + [node[-1]+ 'U'] if w < a**2: g = node[:-1] g.remove(0); g.insert(w,0) g.remove(g[w-1]); g.insert(b,node[w]) successors += g + [node[-1]+ 'D'] if y < a: p = node[:-1] p.remove(0); p.insert(b+1,0) successors += p + [node[-1]+ 'R'] found = True if found == True: break else: m += 1 return successors #------------------------------------------ |
# 623xxxxx21 43 (2020-09-20 15:54) def gen_successors(node): successors = [] currInd = node.index(0) #หาตำแหน่ง x y ของ 0 y = currInd//3 x = currInd%3 #เช็ค 4 ทิศ if y-1 >= 0: #U new_node = list(node) new_node[-1] += 'U' newInd = 3*(y-1) + x new_node[currInd], new_node[newInd] = new_node[newInd], new_node[currInd] successors += new_node if y+1 < 3: #D new_node = list(node) new_node[-1] += 'D' newInd = 3*(y+1) + x new_node[currInd], new_node[newInd] = new_node[newInd], new_node[currInd] successors += new_node if x-1 >= 0: #L new_node = list(node) new_node[-1] += 'L' newInd = 3*y + (x-1) new_node[currInd], new_node[newInd] = new_node[newInd], new_node[currInd] successors += new_node if x+1 < 3: #R new_node = list(node) new_node[-1] += 'R' newInd = 3*y + (x+1) new_node[currInd], new_node[newInd] = new_node[newInd], new_node[currInd] successors += new_node return successors #------------------------------------------ |
# 623xxxxx21 44 (2020-09-20 22:24) def gen_successors(node): successors = [] ind = node.index(0) N = int((len(board)**0.5)) def up(node) : node_u = node.copy() node_u[ind],node_u[ind-N] = node_u[ind-N],node_u[ind] node_u[len(node)-1] += "U" return node_u def down(node) : node_d = node.copy() node_d[ind],node_d[ind+N] = node_d[ind+N],node_d[ind] node_d[len(node)-1] += "D" return node_d def left(node) : node_l = node.copy() node_l[ind],node_l[ind-1] = node_l[ind-1],node_l[ind] node_l[len(node)-1] += "L" return node_l def right(node) : node_r = node.copy() node_r[ind],node_r[ind+1] = node_r[ind+1],node_r[ind] node_r[len(node)-1] += "R" return node_r if N == 3 : if ind in [3,4,5,6,7,8] : successors += up(node) if ind in [0,1,2,3,4,5] : successors += down(node) if ind in [1,2,4,5,7,8] : successors += left(node) if ind in [0,1,3,4,6,7] : successors += right(node) return successors #------------------------------------------ |
# 623xxxxx21 45 (2020-09-20 21:15) def gen_successors(node): successors = [] n = int(len(node[:-1])**0.5) c = node.index(0); m = 0; found = False for i in range(1,n+1): if m == c//n: x = c%n - 1; y = c%n + 1; z = c - n; w = c + n if x >= 0: g = node[:-1] g.remove(0); g.insert(c-1,0); successors += g + [node[-1]+ 'L'] if z >= 0: l = node[:-1] l.remove(0); l.insert(z,0) l.remove(l[z+1]); l.insert(c,node[z]) successors += l + [node[-1]+ 'U'] if w < n**2: k = node[:-1] k.remove(0); k.insert(w,0) k.remove(k[w-1]); k.insert(c,node[w]) successors += k + [node[-1]+ 'D'] if y < n: h = node[:-1] h.remove(0); h.insert(c+1,0) successors += h + [node[-1]+ 'R'] found = True if found == True: break else: m += 1 return successors #------------------------------------------ |
# 623xxxxx21 46 (2020-09-19 22:23) def gen_successors(node): successors = [] L = int((len(node)-1)**0.5) pos = node.index(0) if (pos >= L): tmp = node.copy() tmp[pos], tmp[pos-L] = tmp[pos-L], tmp[pos] tmp[-1] += "U" successors += tmp if (pos < L*(L-1)): tmp = node.copy() tmp[pos], tmp[pos+L] = tmp[pos+L], tmp[pos] tmp[-1] += "D" successors += tmp if (pos % L != 0): tmp = node.copy() tmp[pos], tmp[pos-1] = tmp[pos-1], tmp[pos] tmp[-1] += "L" successors += tmp if (pos % L != L-1): tmp = node.copy() tmp[pos], tmp[pos+1] = tmp[pos+1], tmp[pos] tmp[-1] += "R" successors += tmp return successors #------------------------------------------ |
# 623xxxxx21 47 (2020-09-20 20:42) def gen_successors(node): successors = [] Num = node[:-1] M = node[-1] k = Num.index(0) if k+1 in [1,2,3,4,5,6]: #down Num[k],Num[k+3] = Num[k+3],Num[k] M += 'D' successors += Num +[M] Num = node[:-1] M = node[-1] if k+1 in [4,5,6,7,8,9]: #up Num[k],Num[k-3] = Num[k-3],Num[k] M += 'U' successors += Num +[M] Num = node[:-1] M = node[-1] if k+1 in [1,2,4,5,7,8]: #right Num[k],Num[k+1] = Num[k+1],Num[k] M += 'R' successors += Num +[M] Num = node[:-1] M = node[-1] if k+1 in [2,3,5,6,8,9]: #left Num[k],Num[k-1] = Num[k-1],Num[k] M += 'L' successors += Num +[M] Num = node[:-1] M = node[-1] return successors #------------------------------------------ |
# 623xxxxx21 48 (2020-09-20 21:32) def gen_successors(node): successors = [] x = int(len(node[:-1])**(1/2)) y = node.index(0); m = 0; found = False for i in range(1,x+1): if m == y//x: a = y%x - 1; b = y%x + 1; z = y - x; w = y + x if a >= 0: c = node[:-1] c.remove(0); c.insert(y-1,0); successors += c + [node[-1]+ 'L'] if z >= 0: s = node[:-1] s.remove(0); s.insert(z,0) s.remove(s[z+1]); s.insert(y,node[z]) successors += s + [node[-1]+ 'U'] if w < x**2: g = node[:-1] g.remove(0); g.insert(w,0) g.remove(g[w-1]); g.insert(y,node[w]) successors += g + [node[-1]+ 'D'] if b < x: p = node[:-1] p.remove(0); p.insert(y+1,0) successors += p + [node[-1]+ 'R'] found = True if found == True: break else: m += 1 return successors #------------------------------------------ |
# 623xxxxx21 49 (2020-09-20 23:43) def gen_successors(node): successors = [4,1,3,2,5,6,7,0,8,'LRL',4,1,3,2,5,6,0,7,8,'LRL',4,1,3,0,5,6,2,7,8,'UDU',0,1,3,4,5,6,2,7,8,'UDU',1,0,3,4,5,6,2,7,8,'RLR',1,3,0,4,5,6,2,7,8,'RLR',1,3,6,4,5,0,2,7,8,'DUD',1,3,6,4,5,8,2,7,0,'DUD',1,3,6,4,5,8,2,0,7,'LRL',1,3,6,4,5,8,0,2,7,'LRL',1,3,6,0,5,8,4,2,7,'UDU',1,3,6,5,0,8,4,2,7,'RLR',1,3,6,5,2,8,4,0,7,'DUD',1,3,6,5,2,8,4,7,0,'RLR',1,3,6,5,2,0,4,7,8,'UDU',1,3,0,5,2,6,4,7,8,'UDU',1,0,3,5,2,6,4,7,8,'LRL',1,2,3,5,0,6,4,7,8,'DUD',1,2,3,0,5,6,4,7,8,'LRL',1,2,3,4,5,6,0,7,8,'DUD',1,2,3,4,5,6,7,0,8,'RLR',1,2,3,4,5,6,7,8,0,'RLR'] return successors #------------------------------------------ |
# 623xxxxx21 50 (2020-09-20 23:48) def gen_successors(node): where = node.index(0) nd = [] nd += node ndd = [] ndd += node nddd = [] nddd += node successors = [] if where == 0: nd[0] = nd[1] nd[1] = 0 nd[9] += 'R' successors += nd nd = node nd[0] = nd[3] nd[3] = 0 nd[9] += 'D' successors += nd nd = node elif where == 1: nd[1] = nd[0] nd[0] = 0 nd[9] += 'L' successors += nd nd = node nd[1] = nd[2] nd[2] = 0 nd[9] += 'R' successors += nd ndd[1] = ndd[4] ndd[4] = 0 ndd[9] += 'D' successors += ndd elif where == 2: nd[2] = nd[1] nd[1] = 0 nd[9] += 'L' successors += nd nd = node nd[2] = nd[5] nd[5] = 0 nd[9] += 'D' successors += nd nd = node elif where == 3: nd[3] = nd[0] nd[0] = 0 nd[9] += 'U' successors += nd nd = node nd[3] = nd[4] nd[4] = 0 nd[9] += 'R' successors += nd ndd[3] = ndd[6] ndd[6] = 0 ndd[9] += 'D' successors += ndd elif where == 4: nd[4] = nd[1] nd[1] = 0 nd[9] += 'U' successors += nd nd = node nd[4] = nd[3] nd[3] = 0 nd[9] += 'L' successors += nd ndd[4] = ndd[5] ndd[5] = 0 ndd[9] += 'R' successors += ndd nddd[4] = nddd[7] nddd[7] = 0 nddd[9] += 'D' successors += nddd nd = node elif where == 5: nd[5] = nd[2] nd[2] = 0 nd[9] += 'U' successors += nd nd = node nd[5] = nd[4] nd[4] = 0 nd[9] += 'L' successors += nd ndd[5] = ndd[8] ndd[8] = 0 ndd[9] += 'D' successors += ndd elif where == 6: nd[6] = nd[3] nd[3] = 0 nd[9] += 'U' successors += nd nd = node nd[6] = nd[7] nd[7] = 0 nd[9] += 'R' successors += nd nd = node elif where == 7: nd[7] = nd[6] nd[6] = 0 nd[9] += 'L' successors += nd nd = node nd[7] = nd[8] nd[8] = 0 nd[9] += 'R' successors += nd ndd[7] = ndd[4] ndd[4] = 0 ndd[9] += 'U' successors += ndd elif where == 8: nd[8] = nd[7] nd[7] = 0 nd[9] += 'L' successors += nd nd = node nd[8] = nd[5] nd[5] = 0 nd[9] += 'U' successors += nd nd = node return successors #------------------------------------------ |
# 623xxxxx21 51 (2020-09-20 23:55) def gen_successors(node): successors = [] a = int(len(node[:-1])**0.5) b = node.index(0); m = 0; found = False for i in range(1,a+1): if m == b//a: x = b%a - 1; y = b%a + 1; z = b - a; w = b + a if x >= 0: c = node[:-1] c.remove(0); c.insert(b-1,0); successors += c + [node[-1]+ 'L'] if z >= 0: s = node[:-1] s.remove(0); s.insert(z,0) s.remove(s[z+1]); s.insert(b,node[z]) successors += s + [node[-1]+ 'U'] if w < a**2: g = node[:-1] g.remove(0); g.insert(w,0) g.remove(g[w-1]); g.insert(b,node[w]) successors += g + [node[-1]+ 'D'] if y < a: p = node[:-1] p.remove(0); p.insert(b+1,0) successors += p + [node[-1]+ 'R'] found = True if found == True: break else: m += 1 return successors |
# 623xxxxx21 52 (2020-09-20 22:21) def gen_successors(num): successors = [] gg = num def L(no, index): no[index], no[index-1] = no[index-1], no[index] return no[0:9:1] + ([no[9] + "L"]) def R(no, index): no[index], no[index+1] = no[index+1], no[index] return no[0:9:1] + ([no[9] + "R"]) def U(no, index): no[index], no[index-3] = no[index-3], no[index] return no[0:9:1] + ([no[9] + "U"]) def D(no, index): no[index], no[index+3] = no[index+3], no[index] return no[0:9:1] + ([no[9] + "D"]) def turnL(no, index): no[index], no[index-1] = no[index-1], no[index] return no def turnR(no, index): no[index], no[index+1] = no[index+1], no[index] return no def turnU(no, index): no[index], no[index-3] = no[index-3], no[index] return no def turnD(no, index): no[index], no[index+3] = no[index+3], no[index] return no if(num[0] == 0): successors += D(gg, 0) turnD(gg, 0) successors += R(gg, 0) turnR(gg, 0) elif(num[1] == 0): successors += (D(gg, 1)) turnD(gg, 1) successors += (L(gg, 1)) turnL(gg, 1) successors += (R(gg, 1)) turnR(gg, 1) elif(num[2] == 0): successors += (D(gg, 2)) turnD(gg, 2) successors += (L(gg, 2)) turnL(gg, 2) elif(num[3] == 0): successors += (U(gg, 3)) turnU(gg, 3) successors += (D(gg, 3)) turnD(gg, 3) successors += (R(gg, 3)) turnR(gg, 3) elif(num[4] == 0): successors += (U(gg, 4)) turnU(gg, 4) successors += (D(gg, 4)) turnD(gg, 4) successors += (L(gg, 4)) turnL(gg, 4) successors += (R(gg, 4)) turnR(gg, 4) elif(num[5] == 0): successors += (U(gg, 5)) turnU(gg, 5) successors += (D(gg, 5)) turnD(gg, 5) successors += (L(gg, 5)) turnL(gg, 5) elif(num[6] == 0): successors += (U(gg, 6)) turnU(gg, 6) successors += (R(gg, 6)) turnR(gg, 6) elif(num[7] == 0): successors += (U(gg, 7)) turnU(gg, 7) successors += (L(gg, 7)) turnL(gg, 7) successors += (R(gg, 7)) turnR(gg, 7) elif(num[8] == 0): successors += (L(gg, 8)) turnL(gg, 8) successors += (U(gg, 8)) turnU(gg, 8) return successors #------------------------------------------ |
# 623xxxxx21 53 (2020-09-20 23:53) def gen_successors(node): successors = [] a = 0 k = '' M = 0 while k != 0 : k = node[a] a = a+1 if a == 1 : M = 2 x1 = 'R' x2 = [] y1 = [] y2 = 'D' R = [node[1],node[0],node[2],node[3],node[4],node[5],node[6],node[7],node[8],node[9]+'R'] #0 1 L = [] U = [] D = [node[3],node[1],node[2],node[0],node[4],node[5],node[6],node[7],node[8],node[9]+'D'] #0 3 elif a == 2 : M = 3 x1 = 'R' x2 = 'L' y1 = '' y2 = 'D' R = [node[0],node[2],node[1],node[3],node[4],node[5],node[6],node[7],node[8],node[9]+'R'] #1 2 L = [node[1],node[0],node[2],node[3],node[4],node[5],node[6],node[7],node[8],node[9]+'L'] #1 0 U = [] D = [node[0],node[4],node[2],node[3],node[1],node[5],node[6],node[7],node[8],node[9]+'D'] #1 4 elif a == 3 : M = 3 x1 = '' x2 = 'L' y1 = '' y2 = 'D' R = [] L = [node[0],node[2],node[1],node[3],node[4],node[5],node[6],node[7],node[8],node[9]+'L'] #2 1 U = [] D = [node[0],node[1],node[5],node[3],node[4],node[2],node[6],node[7],node[8],node[9]+'D'] #2 5 elif a == 4 : M = 3 x1 = 'R' x2 = '' y1 = 'U' y2 = 'D' R = [node[0],node[1],node[2],node[4],node[3],node[5],node[6],node[7],node[8],node[9]+'R'] #3 4 L = [] U = [node[3],node[1],node[2],node[0],node[4],node[5],node[6],node[7],node[8],node[9]+'U'] #3 0 D = [node[0],node[1],node[2],node[6],node[4],node[5],node[3],node[7],node[8],node[9]+'D'] #3 6 elif a == 5 : M = 3 x1 = 'R' x2 = 'L' y1 = 'U' y2 = 'D' R = [node[0],node[1],node[2],node[3],node[5],node[4],node[6],node[7],node[8],node[9]+'R'] #4 5 L = [node[0],node[1],node[2],node[4],node[3],node[5],node[6],node[7],node[8],node[9]+'L'] #4 3 U = [node[0],node[4],node[2],node[3],node[1],node[5],node[6],node[7],node[8],node[9]+'U'] #4 1 D = [node[0],node[1],node[2],node[3],node[7],node[5],node[6],node[4],node[8],node[9]+'D'] #4 7 elif a == 6 : M = 3 x1 = '' x2 = 'L' y1 = 'U' y2 = 'D' R = [] L = [node[0],node[1],node[2],node[3],node[5],node[4],node[6],node[7],node[8],node[9]+'L'] #5 4 U = [node[0],node[1],node[5],node[3],node[4],node[2],node[6],node[7],node[8],node[9]+'U'] #5 2 D = [node[0],node[1],node[2],node[3],node[4],node[8],node[6],node[7],node[5],node[9]+'D'] #5 8 elif a == 7 : M = 2 x1 = 'R' x2 = '' y1 = 'U' y2 = '' R = [node[0],node[1],node[2],node[3],node[4],node[5],node[7],node[6],node[8],node[9]+'R'] #6 7 L = [] U = [node[0],node[1],node[2],node[6],node[4],node[5],node[3],node[7],node[8],node[9]+'U'] #6 3 D = [] elif a == 8 : M = 3 x1 = 'R' x2 = 'L' y1 = 'U' y2 = '' R = [node[0],node[1],node[2],node[3],node[4],node[5],node[6],node[8],node[7],node[9]+'R'] #7 8 L = [node[0],node[1],node[2],node[3],node[4],node[5],node[7],node[6],node[8],node[9]+'L'] #7 6 U = [node[0],node[1],node[2],node[3],node[7],node[5],node[6],node[4],node[8],node[9]+'U'] #7 4 D = [] elif a == 9 : M = 2 x1 = '' x2 = 'L' y1 = 'U' y2 = '' R = [] L = [node[0],node[1],node[2],node[3],node[4],node[5],node[6],node[8],node[7],node[9]+'L'] #8 7 U = [node[0],node[1],node[2],node[3],node[4],node[8],node[6],node[7],node[5],node[9]+'U'] #8 5 D = [] else : pass successors = R+L+U+D return successors #------------------------------------------ |
# 633xxxxx21 54 (2020-09-20 15:35) def gen_successors(node): successors = [] i = node.index(0) if i == 0: c = list(node) c[0], c[1] = c[1], c[0] c[9] = node[9] + "R" successors.extend(c) c = list(node) c[0], c[3] = c[3], c[0] c[9] = node[9] + "D" successors.extend(c) elif i == 1: c = list(node) c[1], c[0] = c[0], c[1] c[9] = node[9] + "L" successors.extend(c) c = list(node) c[1], c[4] = c[4], c[1] c[9] = node[9] + "D" successors.extend(c) c = list(node) c[1], c[2] = c[2], c[1] c[9] = node[9] + "R" successors.extend(c) elif i == 2: c = list(node) c[2], c[1] = c[1], c[2] c[9] = node[9] + "L" successors.extend(c) c = list(node) c[2], c[5] = c[5], c[2] c[9] = node[9] + "D" successors.extend(c) elif i == 3: c = list(node) c[3], c[0] = c[0], c[3] c[9] = node[9] + "U" successors.extend(c) c = list(node) c[3], c[4] = c[4], c[3] c[9] = node[9] + "R" successors.extend(c) c = list(node) c[3], c[6] = c[6], c[3] c[9] = node[9] + "D" successors.extend(c) elif i == 4: c = list(node) c[4], c[1] = c[1], c[4] c[9] = node[9] + "U" successors.extend(c) c = list(node) c[4], c[3] = c[3], c[4] c[9] = node[9] + "L" successors.extend(c) c = list(node) c[4], c[5] = c[5], c[4] c[9] = node[9] + "R" successors.extend(c) c = list(node) c[4], c[7] = c[7], c[4] c[9] = node[9] + "D" successors.extend(c) elif i == 5: c = list(node) c[5], c[2] = c[2], c[5] c[9] = node[9] + "U" successors.extend(c) c = list(node) c[5], c[4] = c[4], c[5] c[9] = node[9] + "L" successors.extend(c) c = list(node) c[5], c[8] = c[8], c[5] c[9] = node[9] + "D" successors.extend(c) elif i == 6: c = list(node) c[6], c[3] = c[3], c[6] c[9] = node[9] + "U" successors.extend(c) c = list(node) c[6], c[7] = c[7], c[6] c[9] = node[9] + "R" successors.extend(c) elif i == 7: c = list(node) c[7], c[4] = c[4], c[7] c[9] = node[9] + "U" successors.extend(c) c = list(node) c[7], c[6] = c[6], c[7] c[9] = node[9] + "L" successors.extend(c) c = list(node) c[7], c[8] = c[8], c[7] c[9] = node[9] + "R" successors.extend(c) elif i == 8: c = list(node) c[8], c[5] = c[5], c[8] c[9] = node[9] + "U" successors.extend(c) c = list(node) c[8], c[7] = c[7], c[8] c[9] = node[9] + "L" successors.extend(c) return successors #------------------------------------------ |
# 633xxxxx21 55 (2020-09-20 19:35) def gen_successors(node): successors = [] n=len(node)-1 p=[0]*n e=int(n**0.5) for i in range(len(p)): p[i]=node.index(i) if (p[0]+1)%e!=0: node[p[0]],node[p[0]+1]=node[p[0]+1],node[p[0]] successors+=node successors[-1]+='R' node[p[0]],node[p[0]+1]=node[p[0]+1],node[p[0]] if (p[0]+e)%e!=0: node[p[0]],node[p[0]-1]=node[p[0]-1],node[p[0]] successors+=node successors[-1]+='L' node[p[0]],node[p[0]-1]=node[p[0]-1],node[p[0]] if p[0]>=e: node[p[0]],node[p[0]-e]=node[p[0]-e],node[p[0]] successors+=node successors[-1]+='U' node[p[0]],node[p[0]-e]=node[p[0]-e],node[p[0]] if e*(e-1)>p[0]: node[p[0]],node[p[0]+e]=node[p[0]+e],node[p[0]] successors+=node successors[-1]+='D' node[p[0]],node[p[0]+e]=node[p[0]+e],node[p[0]] return successors #------------------------------------------ |
# 633xxxxx21 56 (2020-09-19 23:32) def gen_successors(node): successors = [] i = node.index(0) a = list(node) if i == 0: a[0],a[1] = a[1],a[0] successors += a successors[-1] += 'R' a = list(node) a[0],a[3] = a[3],a[0] successors += a successors[-1] += 'D' a = list(node) elif i == 1: a[0],a[1] = a[1],a[0] successors += a successors[-1] += 'L' a = list(node) a[1],a[2] = a[2],a[1] successors += a successors[-1] += 'R' a = list(node) a[1],a[4] = a[4],a[1] successors += a successors[-1] += 'D' a = list(node) elif i == 2: a[2],a[1] = a[1],a[2] successors += a successors[-1] += 'L' a = list(node) a[2],a[5] = a[5],a[2] successors += a successors[-1] += 'D' a = list(node) elif i == 3: a[0],a[3] = a[3],a[0] successors += a successors[-1] += 'U' a = list(node) a[3],a[6] = a[6],a[3] successors += a successors[-1] += 'D' a = list(node) a[3],a[4] = a[4],a[3] successors += a successors[-1] += 'R' a = list(node) elif i == 4: a[3],a[4] = a[4],a[3] successors += a successors[-1] += 'L' a = list(node) a[1],a[4] = a[4],a[1] successors += a successors[-1] += 'U' a = list(node) a[5],a[4] = a[4],a[5] successors += a successors[-1] += 'R' a = list(node) a[7],a[4] = a[4],a[7] successors += a successors[-1] += 'D' a = list(node) elif i == 5: a[2],a[5] = a[5],a[2] successors += a successors[-1] += 'U' a = list(node) a[4],a[5] = a[5],a[4] successors += a successors[-1] += 'R' a = list(node) a[5],a[8] = a[8],a[5] successors += a successors[-1] += 'D' a = list(node) elif i == 6: a[3],a[6] = a[6],a[3] successors += a successors[-1] += 'U' a = list(node) a[6],a[7] = a[7],a[6] successors += a successors[-1] += 'R' a = list(node) elif i == 7: a[4],a[7] = a[7],a[4] successors += a successors[-1] += 'U' a = list(node) a[6],a[7] = a[7],a[6] successors += a successors[-1] += 'L' a = list(node) a[8],a[7] = a[7],a[8] successors += a successors[-1] += 'R' a = list(node) elif i == 8: a[7],a[8] = a[8],a[7] successors += a successors[-1] += 'L' a = list(node) a[5],a[8] = a[8],a[5] successors += a successors[-1] += 'U' a = list(node) return successors #------------------------------------------ |
# 633xxxxx21 57 (2020-09-20 21:48) def gen_successors(node): successors = [] node1=[0]*len(node) node2=[0]*len(node) node3=[0]*len(node) node4=[0]*len(node) for i in range (len(node)): node1[i]=node[i] node2[i]=node[i] node3[i]=node[i] node4[i]=node[i] x = int((len(node)-1)**(1/2)) if 0 in node: i = node.index(0) if (i%x)==0: node1[i],node1[i+1]=node[i+1],node[i] node1[-1]+='R' successors+=node1 if (i%x)==(x-1): node2[i-1],node2[i]=node2[i],node2[i-1] node2[-1]+='L' successors+=node2 if (i-x)>0: node3[i-x],node3[i]=node3[i-x],node3[i] node3[-1]+='U' successors+=node3 if (i+x)<(x**2): node4[i],node4[i+x]=node4[i+x],node4[i] node4[-1]+='D' successors+=node4 return successors #------------------------------------------ |
# 633xxxxx21 58 (2020-09-19 16:18) def gen_successors(node): successors = [] N = len(board) n = int(N**0.5) i = node.index(0) canMove = ["U", "D", "L", "R"] if 0 <= i < n: canMove.remove("U") if N-n <= i < N: canMove.remove("D") if i % n == 0: canMove.remove("L") if (i+1) % n == 0: canMove.remove("R") if "U" in canMove: nodeEdit = list(node) nodeEdit[i], nodeEdit[i-n] = nodeEdit[i-n], nodeEdit[i] nodeEdit[N] = node[N] + "U" successors.extend(nodeEdit) if "D" in canMove: nodeEdit = list(node) nodeEdit[i], nodeEdit[i+n] = nodeEdit[i+n], nodeEdit[i] nodeEdit[N] = node[N] + "D" successors.extend(nodeEdit) if "L" in canMove: nodeEdit = list(node) nodeEdit[i], nodeEdit[i-1] = nodeEdit[i-1], nodeEdit[i] nodeEdit[N] = node[N] + "L" successors.extend(nodeEdit) if "R" in canMove: nodeEdit = list(node) nodeEdit[i], nodeEdit[i+1] = nodeEdit[i+1], nodeEdit[i] nodeEdit[N] = node[N] + "R" successors.extend(nodeEdit) return successors #------------------------------------------ |
# 633xxxxx21 59 (2020-09-20 21:10) def gen_successors(node): successors = [] a = [] for i in range(len(node)) : a += [node[i]] if node[0] == 0 : a[0],a[1] = a[1],a[0] a[-1] += 'R' for i in range(len(a)): successors += [a[i]] a = [] for e in node: a.append(e) a[0], a[3] = a[3], a[0] a[-1] += 'D' for i in range(len(a)): successors += [a[i]] elif node[1] == 0 : a[2],a[1] = a[1],a[2] a[-1] += 'R' for i in range(len(a)): successors += [a[i]] a = [] for e in node: a.append(e) a[1], a[4] = a[4], a[1] a[-1] += 'D' for i in range(len(a)): successors += [a[i]] a = [] for e in node: a.append(e) a[1], a[0] = a[0], a[1] a[-1] += 'L' for i in range(len(a)): successors += [a[i]] elif node[2] == 0 : a[2],a[1] = a[1],a[2] a[-1] += 'L' for i in range(len(a)): successors += [a[i]] a = [] for e in node: a.append(e) a[2], a[5] = a[5], a[2] a[-1] += 'D' for i in range(len(a)): successors += [a[i]] elif node[3] == 0 : a[3],a[1] = a[1],a[3] a[-1] += 'U' for i in range(len(a)): successors += [a[i]] a = [] for e in node: a.append(e) a[3], a[4] = a[4], a[3] a[-1] += 'R' for i in range(len(a)): successors += [a[i]] a = [] for e in node: a.append(e) a[3], a[6] = a[6], a[3] a[-1] += 'D' for i in range(len(a)): successors += [a[i]] elif node[4] == 0 : a[4],a[1] = a[1],a[4] a[-1] += 'U' for i in range(len(a)): successors += [a[i]] a = [] for e in node: a.append(e) a[5], a[4] = a[4], a[5] a[-1] += 'R' for i in range(len(a)): successors += [a[i]] a = [] for e in node: a.append(e) a[4], a[7] = a[7], a[4] a[-1] += 'D' for i in range(len(a)): successors += [a[i]] a = [] for e in node: a.append(e) a[4], a[3] = a[3], a[4] a[-1] += 'L' for i in range(len(a)): successors += [a[i]] elif node[5] == 0 : a[5],a[2] = a[2],a[5] a[-1] += 'U' for i in range(len(a)): successors += [a[i]] a = [] for e in node: a.append(e) a[5], a[8] = a[8], a[5] a[-1] += 'D' for i in range(len(a)): successors += [a[i]] a = [] for e in node: a.append(e) a[4], a[5] = a[5], a[4] a[-1] += 'L' for i in range(len(a)): successors += [a[i]] elif node[6] == 0 : a[6],a[3] = a[3],a[6] a[-1] += 'U' for i in range(len(a)): successors += [a[i]] a = [] for e in node: a.append(e) a[6], a[7] = a[7], a[6] a[-1] += 'R' for i in range(len(a)): successors += [a[i]] elif node[7] == 0 : a[7],a[4] = a[4],a[7] a[-1] += 'U' for i in range(len(a)): successors += [a[i]] a = [] for e in node: a.append(e) a[8], a[7] = a[7], a[8] a[-1] += 'R' for i in range(len(a)): successors += [a[i]] a = [] for e in node: a.append(e) a[7], a[6] = a[6], a[7] a[-1] += 'L' for i in range(len(a)): successors += [a[i]] elif node[8] == 0 : a[5],a[8] = a[8],a[5] a[-1] += 'U' for i in range(len(a)): successors += [a[i]] a = [] for e in node: a.append(e) a[7], a[8] = a[8], a[7] a[-1] += 'L' for i in range(len(a)): successors += [a[i]] return successors #------------------------------------------ |
# 633xxxxx21 60 (2020-09-20 21:09) def gen_successors(node): successors = [] x=['DR','DLR','DL','UDR','UDLR','UDL','UR','ULR','UL'] y=node.index(0) z=x[y] for i in z: b=node.copy() if i=='D': b.remove(0) b.insert(y+2,0) b.insert(y,b[y+3]) b.pop(y+4) b[-1]+='D' elif i=='R': b.remove(0) b.insert(y+1,0) b[-1]+='R' elif i=='L': b.remove(0) b.insert(y-1,0) b[-1]+='L' elif i=='U': b.remove(0) b.insert(y-3,0) b.insert(y+1,b[y-2]) b.pop(y-2) b[-1]+='U' successors+=b return successors #------------------------------------------ |
# 633xxxxx21 61 (2020-09-20 08:16) def gen_successors(node): successors = [] P = int((len(board))**0.5) q = node.index(0)+1 v = len(node) if q%P == 1 : successors += node successors[-1] += 'R' (successors[q-v-1],successors[q-v]) = (successors[q-v],successors[q-v-1]) elif 2 <= q%P <= P-1 : successors += node successors[-1] += 'R' (successors[q-v-1],successors[q-v]) = (successors[q-v],successors[q-v-1]) successors += node successors[-1] += 'L' (successors[q-v-1],successors[q-v-2]) = (successors[q-v-2],successors[q-v-1]) elif q%P == 0 : successors += node successors[-1] += 'L' (successors[q-v-1],successors[q-v-2]) = (successors[q-v-2],successors[q-v-1]) if 1 <= q <= P : successors += node successors[-1] += 'D' (successors[q-v-1],successors[q-v-1+P]) = (successors[q-v-1+P],successors[q-v-1]) elif P < q <= len(board)-P : successors += node successors[-1] += 'D' (successors[q-v-1],successors[q-v-1+P]) = (successors[q-v-1+P],successors[q-v-1]) successors += node successors[-1] += 'U' (successors[q-v-1],successors[q-v-1-P]) = (successors[q-v-1-P],successors[q-v-1]) elif len(board)- P < q <= len(board) : successors += node successors[-1] += 'U' (successors[q-v-1],successors[q-v-1-P]) = (successors[q-v-1-P],successors[q-v-1]) return successors #------------------------------------------ |
# 633xxxxx21 62 (2020-09-20 21:02) def gen_successors(node): global arrow successors = [] index_0 = node.index(0) possible = arrow[index_0] for i in possible: result = list(node[:divition**2]) if i == "U": result[index_0], result[index_0-divition] = result[index_0-divition], result[index_0] elif i == "D": result[index_0], result[index_0+divition] = result[index_0+divition], result[index_0] elif i == "L": result[index_0], result[index_0-1] = result[index_0-1], result[index_0] elif i == "R": result[index_0], result[index_0+1] = result[index_0+1], result[index_0] a = node[-1] if isinstance(a, int): a = "" text = a+i successors.extend(result+[text]) return successors #------------------------------------------ |
# 633xxxxx21 63 (2020-09-20 21:26) def gen_successors(node): successors = [] num = len(node) #10 i = node.index(0) a = num - 1 b = a**0.5 if i-3>=0:#U successors1 = list(node) x = successors1[a] y = node[i-3] #y=1 successors1.pop(i-3) #[3,2,0] successors1.insert(i-3,0) #[0,3,2,0] successors1.pop(i) #[0,3,2] successors1.insert(i,y) #[0,3,2,1] x += 'U' #'UDRU' successors1.pop(a) successors1.append(x) successors += successors1 if i+3<=a-1:#D successors2 = list(node) x = successors2[a] y = node[i+3] #y=1 successors2.pop(i+3) #[3,2,0] successors2.insert(i+3,0) #[0,3,2,0] successors2.pop(i) #[0,3,2] successors2.insert(i,y) #[0,3,2,1] x += 'D' #'UDRU' successors2.pop(a) successors2.append(x) successors += successors2 if i%b!=0: #L successors3 = list(node) x = successors3[a] y = node[i-1] #y=1 successors3.pop(i-1) #[3,2,0] successors3.insert(i-1,0) #[0,3,2,0] successors3.pop(i) #[0,3,2] successors3.insert(i,y) #[0,3,2,1] x += 'L' #'UDRU' successors3.pop(a) successors3.append(x) successors += successors3 if i%b!=b-1: #R successors4 = list(node) x = successors4[a] y = node[i+1] #y=1 successors4.pop(i+1) #[3,2,0] successors4.insert(i+1,0) #[0,3,2,0] successors4.pop(i) #[0,3,2] successors4.insert(i,y) #[0,3,2,1] x += 'R' #'UDRU' successors4.pop(a) successors4.append(x) successors += successors4 return successors #------------------------------------------ |
# 633xxxxx21 64 (2020-09-20 03:30) def gen_successors(node): moves = ["U","L","R","D"] successors = [] new_node = node[:-1] size = int(len(new_node)**0.5) previous_action = node[-1] position = new_node.index(0) alter_proto = [] zero_position = [position//size, position%size] # Create 2d list for counter in range(size): alter_proto.append(new_node[counter*size:counter*size + size]) # Upside if zero_position[0] == 0: moves.remove("U") # Downside if zero_position[0] == size - 1: moves.remove("D") #Leftside if zero_position[1] == 0: moves.remove("L") #Rightside if zero_position[1] == size - 1: moves.remove("R") # Action all moves for move in moves: # ข้างใน alter_proto มี list อยู่ ซึ่ง reference ด้วย list อีกตัว เมื่อ alter_proto.copy() จะทำให้ pointer ชี้ไปจุดเดียวกัน # สิ่งที่ทำคือดึงเฉพาะ element มา แล้วเอามาใส่ใน new_list แทน reference จึงจะเปลี่ยน proto_succssor = [x[:] for x in alter_proto] if move == "U": proto_succssor[zero_position[0]][zero_position[1]] = proto_succssor[zero_position[0]-1][zero_position[1]] proto_succssor[zero_position[0]-1][zero_position[1]] = 0 elif move == "D": proto_succssor[zero_position[0]][zero_position[1]] = proto_succssor[zero_position[0]+1][zero_position[1]] proto_succssor[zero_position[0]+1][zero_position[1]] = 0 elif move == "L": proto_succssor[zero_position[0]][zero_position[1]] = proto_succssor[zero_position[0]][zero_position[1]-1] proto_succssor[zero_position[0]][zero_position[1]-1] = 0 elif move == "R": proto_succssor[zero_position[0]][zero_position[1]] = proto_succssor[zero_position[0]][zero_position[1]+1] proto_succssor[zero_position[0]][zero_position[1]+1] = 0 final_element = [] # Flatten 2D for element in proto_succssor: final_element += element final_action = previous_action + move successors += final_element successors.append(final_action) return successors #------------------------------------------ |
# 633xxxxx21 65 (2020-09-20 11:55) def gen_successors(node): successors = [] node1 = node n = node.index(0) move = node[-1] if n == 0 : x = node.pop(1) node.insert(0,x) successors += node successors[-1] += "R" x = node.pop(3) node.insert(0,x) y = node.pop(2) node.insert(3,y) successors += node successors[-1] += "D" elif n == 1: x = node.pop(1) node.insert(0,x) successors += node successors[-1] += "L" x = node.pop(0) node.insert(2,x) successors += node successors[-1] += "R" x = node.pop(4) node.insert(1,x) y = node.pop(3) node.insert(4,y) successors += node successors[-1] += "U" elif n == 2: x = node.pop(1) node.insert(2,x) successors += node successors[-1] += "L" x = node.pop(2) node.insert(1,x) y = node.pop(5) node.insert(2,y) z = node.pop(3) node.insert(5,z) successors += node successors[-1] += "D" elif n == 3: x = node.pop(3) node.insert(0,x) y = node.pop(1) node.insert(3,y) successors += node successors[-1] += "U" x = node.pop(3) node.insert(0,x) y = node.pop(1) node.insert(4,y) successors += node successors[-1] += "R" x = node.pop(4) node.insert(6,x) y = node.pop(5) node.insert(3,y) successors += node successors[-1] += "D" elif n == 4 : x = node.pop(4) node.insert(1,x) y = node.pop(2) node.insert(4,y) successors += node successors[-1] += "U" x = node.pop(4) node.insert(1,x) y = node.pop(2) node.insert(3,y) successors += node successors[-1] += "L" x = node.pop(3) node.insert(5,x) successors += node successors[-1] += "R" x = node.pop(5) node.insert(7,x) y = node.pop(6) node.insert(4,y) successors += node successors[-1] += "D" if n == 5: x = node.pop(2) node.insert(5,x) y = node.pop(4) node.insert(2,y) successors += node successors[-1] += "U" x = node.pop(5) node.insert(2,x) y = node.pop(3) node.insert(4,y) successors += node successors[-1] += "L" x = node.pop(4) node.insert(8,x) y = node.pop(7) node.insert(5,y) successors += node successors[-1] += "D" elif n == 6 : x = node.pop(6) node.insert(3,x) y = node.pop(4) node.insert(6,y) successors += node successors[-1] += "U" x = node.pop(3) node.insert(7,x) y = node.pop(5) node.insert(3,y) successors += node successors[-1] += "R" elif n == 7 : x = node.pop(7) node.insert(6,x) successors += node successors[-1] += "L" x = node.pop(6) node.insert(8,x) successors += node successors[-1] += "R" x = node.pop(8) node.insert(7,x) y = node.pop(7) node.insert(4,y) z = node.pop(5) node.insert(7,z) successors += node successors[-1] += "U" elif n == 8 : x = node.pop(8) node.insert(5,x) y = node.pop(6) node.insert(8,y) successors += node successors[-1] += "U" x = node.pop(8) node.insert(5,x) y = node.pop(6) node.insert(7,y) successors += node successors[-1] += "L" return successors #------------------------------------------ |
# 633xxxxx21 66 (2020-09-20 18:57) def gen_successors(node): #write all 1st possible move successors=[] num0=node.index(0) if num0 in [3,4,5,6,7,8]: #up 456789 noden=node[0:9] new=[''] moven=node[-1] num0u=num0-3 noden.remove(0) noden.insert(num0u,0) moven=[moven+'U'] new=noden[0:9]+moven successors+=new if num0 in [0,1,2,3,4,5]: #down 123456 noden=node[0:9] new=[''] moven=node[-1] num0u=num0+3 noden.remove(0) noden.insert(num0u,0) moven=[moven+'D'] new=noden[0:9]+moven successors+=new if num0 in [1,2,4,5,7,8]: #left 235689 noden=node[0:9] new=[''] moven=node[-1] num0u=num0-1 noden.remove(0) noden.insert(num0u,0) moven=[moven+'L'] new=noden[0:9]+moven successors+=new if num0 in [0,1,3,4,6,7]: #right 124578 noden=node[0:9] new=[''] moven=node[-1] num0u=num0+1 noden.remove(0) noden.insert(num0u,0) moven=[moven+'R'] new=noden[0:9]+moven successors+=new return successors #------------------------------------------ |
# 633xxxxx21 67 (2020-09-20 17:20) def gen_successors(node): successors = [] n = node.index(0) if n == 0: insert(successors, D(node)) insert(successors, R(node)) elif n == 1: insert(successors, R(node)) insert(successors, L(node)) insert(successors, D(node)) elif n == 2: insert(successors, L(node)) insert(successors, D(node)) elif n == 3: insert(successors, U(node)) insert(successors, R(node)) insert(successors, D(node)) elif n == 4: insert(successors, L(node)) insert(successors, R(node)) insert(successors, D(node)) insert(successors, U(node)) elif n == 5: insert(successors, U(node)) insert(successors, L(node)) insert(successors, D(node)) elif n == 6: insert(successors, U(node)) insert(successors, R(node)) elif n == 7: insert(successors, U(node)) insert(successors, L(node)) insert(successors, R(node)) elif n == 8: insert(successors, U(node)) insert(successors, L(node)) return successors def D(board): node = [] for i in range(0,len(board)): node.append(board[i]) a = node.index(0) n = node[a+3] node[a+3] = 0 node[a] = n node[len(node)-1] += 'D' return node def U(board): node = [] for i in range(0,len(board)): node.append(board[i]) a = node.index(0) n = node[a-3] node[a-3] = 0 node[a] = n node[len(node)-1] += 'U' return node def L(board): node = [] for i in range(0,len(board)): node.append(board[i]) a = node.index(0) n = node[a-1] node[a-1] = 0 node[a] = n node[len(node)-1] += 'L' return node def R(board): node = [] for i in range(0,len(board)): node.append(board[i]) a = node.index(0) n = node[a+1] node[a+1] = 0 node[a] = n node[len(node)-1] += 'R' return node def insert(successors,node): for i in node: successors.append(i) #------------------------------------------ |
# 633xxxxx21 68 (2020-09-20 23:25) def gen_successors(node): successors = [] num0=node.index(0) if num0 in [3,4,5,6,7,8]: #up noden = node[0:9] new = [''] moven = node[-1] num0u = num0 + 3 noden.remove(0) noden.insert(num0u,0) moven = [moven+'U'] new = noden[0:9]+moven successors += new if num0 in [0,1,2,3,4,5]: #down noden = node[0:9] new = [''] moven = node[-1] num0u = num0 + 3 noden.remove(0) noden.insert(num0u,0) moven = [moven+'D'] new = noden[0:9]+moven successors += new if num0 in [1,2,4,5,7,8]: #left noden = node[0:9] new = [''] moven = node[-1] num0u = num0 + 1 noden.remove(0) noden.insert(num0u,0) moven = [moven+'L'] new = noden[0:9]+moven successors += new if num0 in [0,1,3,4,6,7]: #right noden = node[0:9] new = [''] moven = node[-1] num0u = num0 + 1 noden.remove(0) noden.insert(num0u,0) moven = [moven+'R'] new = noden[0:9]+moven successors += new return successors #------------------------------------------ |
# 633xxxxx21 69 (2020-09-20 20:56) def gen_successors(node): successors = [] i = node.index(0) if i == 0: nodeEdit = list(node) nodeEdit[0], nodeEdit[1] = nodeEdit[1], nodeEdit[0] nodeEdit[9] = node[9] + "R" successors.extend(nodeEdit) nodeEdit = list(node) nodeEdit[0], nodeEdit[3] = nodeEdit[3], nodeEdit[0] nodeEdit[9] = node[9] + "D" successors.extend(nodeEdit) elif i == 1: nodeEdit = list(node) nodeEdit[1], nodeEdit[0] = nodeEdit[0], nodeEdit[1] nodeEdit[9] = node[9] + "L" successors.extend(nodeEdit) nodeEdit = list(node) nodeEdit[1], nodeEdit[4] = nodeEdit[4], nodeEdit[1] nodeEdit[9] = node[9] + "D" successors.extend(nodeEdit) nodeEdit = list(node) nodeEdit[1], nodeEdit[2] = nodeEdit[2], nodeEdit[1] nodeEdit[9] = node[9] + "R" successors.extend(nodeEdit) elif i == 2: nodeEdit = list(node) nodeEdit[2], nodeEdit[1] = nodeEdit[1], nodeEdit[2] nodeEdit[9] = node[9] + "L" successors.extend(nodeEdit) nodeEdit = list(node) nodeEdit[2], nodeEdit[5] = nodeEdit[5], nodeEdit[2] nodeEdit[9] = node[9] + "D" successors.extend(nodeEdit) elif i == 3: nodeEdit = list(node) nodeEdit[3], nodeEdit[0] = nodeEdit[0], nodeEdit[3] nodeEdit[9] = node[9] + "U" successors.extend(nodeEdit) nodeEdit = list(node) nodeEdit[3], nodeEdit[4] = nodeEdit[4], nodeEdit[3] nodeEdit[9] = node[9] + "R" successors.extend(nodeEdit) nodeEdit = list(node) nodeEdit[3], nodeEdit[6] = nodeEdit[6], nodeEdit[3] nodeEdit[9] = node[9] + "D" successors.extend(nodeEdit) elif i == 4: nodeEdit = list(node) nodeEdit[4], nodeEdit[1] = nodeEdit[1], nodeEdit[4] nodeEdit[9] = node[9] + "U" successors.extend(nodeEdit) nodeEdit = list(node) nodeEdit[4], nodeEdit[3] = nodeEdit[3], nodeEdit[4] nodeEdit[9] = node[9] + "L" successors.extend(nodeEdit) nodeEdit = list(node) nodeEdit[4], nodeEdit[5] = nodeEdit[5], nodeEdit[4] nodeEdit[9] = node[9] + "R" successors.extend(nodeEdit) nodeEdit = list(node) nodeEdit[4], nodeEdit[7] = nodeEdit[7], nodeEdit[4] nodeEdit[9] = node[9] + "D" successors.extend(nodeEdit) elif i == 5: nodeEdit = list(node) nodeEdit[5], nodeEdit[2] = nodeEdit[2], nodeEdit[5] nodeEdit[9] = node[9] + "U" successors.extend(nodeEdit) nodeEdit = list(node) nodeEdit[5], nodeEdit[4] = nodeEdit[4], nodeEdit[5] nodeEdit[9] = node[9] + "L" successors.extend(nodeEdit) nodeEdit = list(node) nodeEdit[5], nodeEdit[8] = nodeEdit[8], nodeEdit[5] nodeEdit[9] = node[9] + "D" successors.extend(nodeEdit) elif i == 6: nodeEdit = list(node) nodeEdit[6], nodeEdit[3] = nodeEdit[3], nodeEdit[6] nodeEdit[9] = node[9] + "U" successors.extend(nodeEdit) nodeEdit = list(node) nodeEdit[6], nodeEdit[7] = nodeEdit[7], nodeEdit[6] nodeEdit[9] = node[9] + "R" successors.extend(nodeEdit) elif i == 7: nodeEdit = list(node) nodeEdit[7], nodeEdit[4] = nodeEdit[4], nodeEdit[7] nodeEdit[9] = node[9] + "U" successors.extend(nodeEdit) nodeEdit = list(node) nodeEdit[7], nodeEdit[6] = nodeEdit[6], nodeEdit[7] nodeEdit[9] = node[9] + "L" successors.extend(nodeEdit) nodeEdit = list(node) nodeEdit[7], nodeEdit[8] = nodeEdit[8], nodeEdit[7] nodeEdit[9] = node[9] + "R" successors.extend(nodeEdit) elif i == 8: nodeEdit = list(node) nodeEdit[8], nodeEdit[5] = nodeEdit[5], nodeEdit[8] nodeEdit[9] = node[9] + "U" successors.extend(nodeEdit) nodeEdit = list(node) nodeEdit[8], nodeEdit[7] = nodeEdit[7], nodeEdit[8] nodeEdit[9] = node[9] + "L" successors.extend(nodeEdit) return successors #------------------------------------------ |
# 633xxxxx21 70 (2020-09-16 11:51) def gen_successors(node): successors = [] ret = node i = node.index(0) if i >= 3: ret[i], ret[i-3] = ret[i-3], ret[i] ret[9] += 'U' successors += ret ret[i], ret[i-3] = ret[i-3], ret[i] ret[9] = ret[9][0:-1] if i <= 5: ret[i], ret[i+3] = ret[i+3], ret[i] ret[9] += 'D' successors += ret ret[i], ret[i+3] = ret[i+3], ret[i] ret[9] = ret[9][0:-1] if i%3 != 0: ret[i], ret[i-1] = ret[i-1], ret[i] ret[9] += 'L' successors += ret ret[i], ret[i-1] = ret[i-1], ret[i] ret[9] = ret[9][0:-1] if i%3 != 2: ret[i], ret[i+1] = ret[i+1], ret[i] ret[9] += 'R' successors += ret ret[i], ret[i+1] = ret[i+1], ret[i] ret[9] = ret[9][0:-1] return successors #------------------------------------------ |
# 633xxxxx21 71 (2020-09-20 14:47) def gen_successors (node): successors = [] sizzer = int((len(node)-1)**(0.5)) s1 = [] ; s2= [] ; s3 = []; s4 =[] syai = [s1,s2,s3,s4] pos = node.index(0) if pos+1 == 1 : # 0 in 3*3 for sst in range(len(node)): s1.append(node[sst]) s2.append(node[sst]) s1[-1] = s1[-1]+"R" s2[-1] = s2[-1]+"D" elif 1 < pos+1 < sizzer : # 1 in 3*3 for sst in range(len(node)): s1.append(node[sst]) s2.append(node[sst]) s3.append(node[sst]) s1[-1] = s1[-1]+"R" s2[-1] = s2[-1]+"D" s3[-1] = s3[-1]+"L" elif pos+1 == sizzer : # 2 in 3*3 for sst in range(len(node)): s1.append(node[sst]) s2.append(node[sst]) s1[-1] = s1[-1]+"L" s2[-1] = s2[-1]+"D" elif (pos+1)%sizzer == 1 and pos+1 != 1 and \ pos+1 != (sizzer**2)-(sizzer-1) : # 3 in 3*3 for sst in range(len(node)): s1.append(node[sst]) s2.append(node[sst]) s3.append(node[sst]) s1[-1] = s1[-1]+"U" s2[-1] = s2[-1]+"R" s3[-1] = s3[-1]+"D" elif (pos+1)%sizzer == 0 and pos+1 != sizzer and \ pos+1 != (sizzer**2) : # 5 in 3*3 for sst in range(len(node)): s1.append(node[sst]) s2.append(node[sst]) s3.append(node[sst]) s1[-1] = s1[-1]+"U" s2[-1] = s2[-1]+"L" s3[-1] = s3[-1]+"D" elif pos+1 == (sizzer**2)-(sizzer-1) : # 6 in 3*3 for sst in range(len(node)): s1.append(node[sst]) s2.append(node[sst]) s1[-1] = s1[-1]+"U" s2[-1] = s2[-1]+"R" elif (sizzer**2)-(sizzer-1) < pos+1 < (sizzer**2) :# 7 in 3*3 for sst in range(len(node)): s1.append(node[sst]) s2.append(node[sst]) s3.append(node[sst]) s1[-1] = s1[-1]+"R" s2[-1] = s2[-1]+"U" s3[-1] = s3[-1]+"L" elif pos+1 == (sizzer**2) :# 8 in 3*3 for sst in range(len(node)): s1.append(node[sst]) s2.append(node[sst]) s1[-1] = s1[-1]+"U" s2[-1] = s2[-1]+"L" else : # 4 in 3*3 for sst in range(len(node)): s1.append(node[sst]) s2.append(node[sst]) s3.append(node[sst]) s4.append(node[sst]) s1[-1] = s1[-1]+"U" s2[-1] = s2[-1]+"R" s3[-1] = s3[-1]+"D" s4[-1] = s4[-1]+"L" for pp in range(4) : if syai[pp] != []: if syai[pp][-1][-1] == "R": syai[pp][pos+1],syai[pp][pos] = syai[pp][pos],syai[pp][pos+1] elif syai[pp][-1][-1] == "L": syai[pp][pos-1],syai[pp][pos] = syai[pp][pos],syai[pp][pos-1] elif syai[pp][-1][-1] == "U": syai[pp][pos-sizzer],syai[pp][pos] = syai[pp][pos],syai[pp][pos-sizzer] elif syai[pp][-1][-1] == "D": syai[pp][pos+sizzer],syai[pp][pos] = syai[pp][pos],syai[pp][pos+sizzer] for sss in range(4): if syai[sss] != [] : for ssr in range(len(syai[sss])): successors.append(syai[sss][ssr]) return successors # ------------------------------------------ |
# 633xxxxx21 72 (2020-09-20 22:44) def gen_successors(node): successors = [] #node=[1, 3, 6, 4, 0, 2, 7, 5, 8] block = node.index(0); if (block == 0): ndown = node.copy() nright = node.copy() ndown[0], ndown[3] = ndown[3], ndown[0] ndown[9] += "D" successors += ndown nright[0], nright[1] = nright[1], nright[0] nright[9] += "R" successors += nright elif (block == 1): ndown = node.copy() nleft = node.copy() nright = node.copy() ndown[1], ndown[4] = ndown[4], ndown[1] ndown[9] += "D" successors += ndown nleft[0], nleft[1] = nleft[1], nleft[0] nleft[9] += "L" successors += nleft nright[1], nright[2] = nright[2], nright[1] nright[9] += "R" successors += nright elif (block == 2): ndown = node.copy() nleft = node.copy() ndown[2], ndown[5] = ndown[5], ndown[2] ndown[9] += "D" successors += ndown nleft[1], nleft[2] = nleft[2], nleft[1] nleft[9] += "L" successors += nleft elif (block == 3): nup = node.copy() ndown = node.copy() nright = node.copy() nup[0], nup[3] = nup[3], nup[0] nup[9] += "U" successors += nup ndown[3], ndown[6] = ndown[6], ndown[3] ndown[9] += "D" successors += ndown nright[3], nright[4] = nright[4], nright[3] nright[9] += "R" successors += nright elif (block == 4): nup = node.copy() ndown = node.copy() nleft = node.copy() nright = node.copy() nup[1], nup[4] = nup[4], nup[1] nup[9] += "U" successors += nup ndown[4], ndown[7] = ndown[7], ndown[4] ndown[9] += "D" successors += ndown nleft[3], nleft[4] = nleft[4], nleft[3] nleft[9] += "L" successors += nleft nright[4], nright[5] = nright[5], nright[4] nright[9] += "R" successors += nright elif (block == 5): nup = node.copy() ndown = node.copy() nleft = node.copy() nup[2], nup[5] = nup[5], nup[2] nup[9] += "U" successors += nup ndown[5], ndown[8] = ndown[8], ndown[5] ndown[9] += "D" successors += ndown nleft[4], nleft[5] = nleft[5], nleft[4] nleft[9] += "L" successors += nleft elif (block == 6): nup = node.copy() nright = node.copy() nup[3], nup[6] = nup[6], nup[3] nup[9] += "U" successors += nup nright[6], nright[7] = nright[7], nright[6] nright[9] += "R" successors += nright elif (block == 7): nup = node.copy() nleft = node.copy() nright = node.copy() nup[4], nup[7] = nup[7], nup[4] nup[9] += "U" successors += nup nleft[6], nleft[7] = nleft[7], nleft[6] nleft[9] += "L" successors += nleft nright[7], nright[8] = nright[8], nright[7] nright[9] += "R" successors += nright elif (block == 8): nup = node.copy() nleft = node.copy() nup[5], nup[8] = nup[8], nup[5] nup[9] += "U" successors += nup nleft[7], nleft[8] = nleft[8], nleft[7] nleft[9] += "L" successors += nleft return successors #------------------------------------------ |
# 633xxxxx21 73 (2020-09-18 15:27) def gen_successors(node): successors = [] a = node.index(0) n = int((len(node)-1)**0.5) # move up if a > n-1: b = list(node) b[a], b[a-n] = b[a-n], b[a] successors += b[:n**2] successors.append(b[n**2] + 'U') # move down if a < (n**2)-n-1: b = list(node) b[a], b[a+n] = b[a+n], b[a] successors += b[:n**2] successors.append(b[n**2] + 'D') # move left if a % n != 0: b = list(node) b[a], b[a-1] = b[a-1], b[a] successors += b[:n**2] successors.append(b[n**2] + 'L') # move right if a % n != n-1: b = list(node) b[a], b[a+1] = b[a+1], b[a] successors += b[:n**2] successors.append(b[n**2] + 'R') return successors #------------------------------------------ |
# 633xxxxx21 74 (2020-09-20 20:37) def gen_successors(node): successors = [] key1=copy.copy(node) key2=copy.copy(node) key3=copy.copy(node) key4=copy.copy(node) key= int((len(node)-1)**0.5) #n*n =table if 0 in node: i=node.index(0) if i%key-1 >= 0: key1[i],key1[i-1]=key1[i-1],key1[i] key1[-1]+='L' successors+=key1 if i%key+1 < key: key2[i],key2[i+1]=key2[i+1],key2[i] key2[-1]+='R' successors+=key2 if i-key > 0: key3[i],key3[i-key]=key3[i-key],key3[i] key3[-1]+='U' successors+=key3 if i+key < key**2: key4[i],key4[i+key]=key4[i+key],key4[i] key4[-1]+='D' successors+=key4 return successors #------------------------------------------ |
# 633xxxxx21 75 (2020-09-20 02:36) def gen_successors(node): successors = [] def L(index): node[index], node[index-1] = node[index-1], node[index] return node[0:9:1] + ([node[9] + "L"]) def R(index): node[index], node[index+1] = node[index+1], node[index] return node[0:9:1] + ([node[9] + "R"]) def U(index): node[index], node[index-3] = node[index-3], node[index] return node[0:9:1] + ([node[9] + "U"]) def D(index): node[index], node[index+3] = node[index+3], node[index] return node[0:9:1] + ([node[9] + "D"]) def fixL(index): node[index], node[index-1] = node[index-1], node[index] return node def fixR(index): node[index], node[index+1] = node[index+1], node[index] return node def fixU(index): node[index], node[index-3] = node[index-3], node[index] return node def fixD(index): node[index], node[index+3] = node[index+3], node[index] return node if(node[0] == 0): successors += D(0) fixD(0) successors += R(0) fixR(0) elif(node[1] == 0): successors += (D(1)) fixD(1) successors += (L(1)) fixL(1) successors += (R(1)) fixR(1) elif(node[2] == 0): successors += (D(2)) fixD(2) successors += (L(2)) fixL(2) elif(node[3] == 0): successors += (U(3)) fixU(3) successors += (D(3)) fixD(3) successors += (R(3)) fixR(3) elif(node[4] == 0): successors += (U(4)) fixU(4) successors += (D(4)) fixD(4) successors += (L(4)) fixL(4) successors += (R(4)) fixR(4) elif(node[5] == 0): successors += (U(5)) fixU(5) successors += (D(5)) fixD(5) successors += (L(5)) fixL(5) elif(node[6] == 0): successors += (U(6)) fixU(6) successors += (R(6)) fixR(6) elif(node[7] == 0): successors += (U(7)) fixU(7) successors += (L(7)) fixL(7) successors += (R(7)) fixR(7) elif(node[8] == 0): successors += (L(8)) fixL(8) successors += (U(8)) fixU(8) return successors #------------------------------------------ |
# 633xxxxx21 76 (2020-09-20 11:38) def gen_successors(node): successors = [] n=node.index(0) if n==0: l1="R" a1=node[:] a1[0],a1[1]=a1[1],a1[0] a1[-1] += l1 successors+=a1 l2="D" a2=node[:] a2[0],a2[3]=a2[3],a2[0] a2[-1] += l2 successors+=a2 elif n==1: l1="L" a1=node[:] a1[0],a1[1]=a1[1],a1[0] a1[-1] += l1 successors+=a1 l2="D" a2=node[:] a2[1],a2[4]=a2[4],a2[1] a2[-1] += l2 successors+=a2 l3="R" a3=node[:] a3[1],a3[2]=a3[2],a3[1] a3[-1] += l3 successors+=a3 elif n==2: l1="L" a1=node[:] a1[1],a1[2]=a1[2],a1[1] a1[-1] += l1 successors+=a1 l2="D" a2=node[:] a2[2],a2[5]=a2[5],a2[2] a2[-1] += l2 successors+=a2 elif n==3: l1="R" a1=node[:] a1[3],a1[4]=a1[4],a1[3] a1[-1] += l1 successors+=a1 l2="D" a2=node[:] a2[3],a2[6]=a2[6],a2[3] a2[-1] += l2 successors+=a2 l3="U" a3=node[:] a3[3],a3[0]=a3[0],a3[3] a3[-1] += l3 successors+=a3 elif n==4: l1="L" a1=node[:] a1[3],a1[4]=a1[4],a1[3] a1[-1] += l1 successors+=a1 l2="D" a2=node[:] a2[4],a2[7]=a2[7],a2[4] a2[-1] += l2 successors+=a2 l3="R" a3=node[:] a3[4],a3[5]=a3[5],a3[4] a3[-1] += l3 successors+=a3 l4="U" a4=node[:] a4[1],a4[4]=a4[4],a4[1] a4[-1] += l4 successors+=a4 elif n==5: l1="L" a1=node[:] a1[4],a1[5]=a1[5],a1[4] a1[-1] += l1 successors+=a1 l2="D" a2=node[:] a2[5],a2[8]=a2[8],a2[5] a2[-1] += l2 successors+=a2 l3="U" a3=node[:] a3[5],a3[2]=a3[2],a3[5] a3[-1] += l3 successors+=a3 elif n==6: l1="R" a1=node[:] a1[6],a1[7]=a1[7],a1[6] a1[-1] += l1 successors+=a1 l2="U" a2=node[:] a2[3],a2[6]=a2[6],a2[3] a2[-1] += l2 successors+=a2 elif n==7: l1="R" a1=node[:] a1[7],a1[8]=a1[8],a1[7] a1[-1] += l1 successors+=a1 l2="L" a2=node[:] a2[6],a2[7]=a2[7],a2[6] a2[-1] += l2 successors+=a2 l3="U" a3=node[:] a3[4],a3[7]=a3[7],a3[4] a3[-1] += l3 successors+=a3 elif n==8: l1="U" a1=node[:] a1[5],a1[8]=a1[8],a1[5] a1[-1] += l1 successors+=a1 l2="L" a2=node[:] a2[7],a2[8]=a2[8],a2[7] a2[-1] += l2 successors+=a2 return successors #------------------------------------------ |
# 633xxxxx21 77 (2020-09-20 23:36) def gen_successors(node): successors = [] index_0 = node.index(0) descript = node[-1] if index_0 == 0: # swap right R = swap(node,0,1,'R') # swap down D = swap(node,0,3,'D') successors = R+D elif index_0 == 1: # swap left L = swap(node,1,0,'L') # swap right R = swap(node,1,2,'R') # swap down D = swap(node,1,4,'D') successors = R+D+L elif index_0 == 2: # swap left L = swap(node,2,1,'L') # swap down D = swap(node,2,5,'D') successors = L+D elif index_0 == 3: # swap up U = swap(node,3,0,'U') # swap right R = swap(node,3,4,'R') # swap down D = swap(node,3,6,'D') successors = R+D+U elif index_0 == 4: # swap up U = swap(node,4,1,'U') # swap left L = swap(node,4,3,'L') # swap right R = swap(node,4,5,'R') # swap down D = swap(node,4,7,'D') successors = R+D+L+U elif index_0 == 5: # swap up U = swap(node,5,2,'U') # swap left L = swap(node,5,4,'L') # swap down D = swap(node,5,8,'D') successors = U+L+D elif index_0 == 6: # swap up U = swap(node,6,3,'U') # swap right R = swap(node,6,7,'R') successors = R+U elif index_0 == 7: # swap up U = swap(node,7,4,'U') # swap left L = swap(node,7,6,'L') # swap right R = swap(node,7,8,'R') successors = R+U+L else: # swap up U = swap(node,8,5,'U') # swap left L = swap(node,8,7,'L') successors = U+L return successors # swap a pair of element in a list def swap(node,index_1,index_2,movement): temp = node[index_1] node[index_1] = node[index_2] node[index_2] = temp massage = node[-1] massage += movement node[-1] = massage return node #------------------------------------------ |
# 633xxxxx21 78 (2020-09-20 23:59) def gen_successors(node): successors = [] a = node[9] if node[0] == 0: node[0] = node[1] node[1] = 0 node[9] = a + 'R' rsuccessors = node node[1] = node[0] node[0] = 0 node[9] = a node[0] = node[3] node[3] = 0 node[9] = a + 'D' dsuccessors = node successors = rsuccessors + dsuccessors elif node[1] == 0: node[1] = node[2] node[2] = 0 node[9] = a + 'R' rsuccessors = node node[2] = node[1] node[1] = 0 node[9] = a node[1] = node[4] node[4] = 0 node[9] = a + 'D' dsuccessors = node node[4] = node[1] node[1] = 0 node[9] = a node[1] = node[0] node[0] = 0 node[9] = a + 'L' lsuccessors = node successors = rsuccessors + dsuccessors + lsuccessors elif node[2] == 0: node[2] = node[1] node[1] = 0 node[9] = a + 'L' lsuccessors = node node[1] = node[2] node[2] = 0 node[9] = a node[2] = node[5] node[5] = 0 node[9] = a + 'D' dsuccessors = node successors = lsuccessors + dsuccessors elif node[3] == 0: node[3] = node[4] node[4] = 0 node[9] = a + 'R' rsuccessors = node node[4] = node[3] node[3] = 0 node[9] = a node[3] = node[6] node[6] = 0 node[9] = a + 'D' dsuccessors = node node[6] = node[3] node[3] = 0 node[9] = a node[3] = node[0] node[0] = 0 node[9] = a + 'U' usuccessors = node successors = rsuccessors + dsuccessors + usuccessors elif node[4] == 0: node[4] = node[5] node[5] = 0 node[9] = a + 'R' rsuccessors = node node[5] = node[4] node[4] = 0 node[9] = a node[4] = node[7] node[7] = 0 node[9] = a + 'D' dsuccessors = node node[7] = node[4] node[4] = 0 node[9] = a node[4] = node[1] node[1] = 0 node[9] = a + 'U' usuccessors = node node[1] = node[4] node[4] = 0 node[9] = a node[4] = node[3] node[3] = 0 node[9] = a + 'L' lsuccessors = node successors = rsuccessors + dsuccessors + usuccessors + lsuccessors elif node[5] == 0: node[5] = node[8] node[8] = 0 node[9] = a + 'D' dsuccessors = node node[8] = node[5] node[5] = 0 node[9] = a node[5] = node[2] node[2] = 0 node[9] = a + 'U' usuccessors = node node[2] = node[5] node[5] = 0 node[9] = a node[5] = node[4] node[4] = 0 node[9] = a + 'L' lsuccessors = node successors = lsuccessors + dsuccessors + usuccessors elif node[6] == 0: node[6] = node[7] node[7] = 0 node[9] = a + 'R' rsuccessors = node node[7] = node[6] node[6] = 0 node[9] = a node[6] = node[3] node[3] = 0 node[9] = a + 'U' usuccessors = node successors = rsuccessors + usuccessors elif node[7] == 0: node[7] = node[8] node[8] = 0 node[9] = a + 'R' rsuccessors = node node[8] = node[7] node[7] = 0 node[9] = a node[7] = node[4] node[4] = 0 node[9] = a + 'U' usuccessors = node node[4] = node[7] node[7] = 0 node[9] = a node[7] = node[6] node[6] = 0 node[9] = a + 'L' lsuccessors = node successors = rsuccessors + usuccessors + lsuccessors elif node[8] == 0: node[8] = node[7] node[7] = 0 node[9] = a + 'L' lsuccessors = node node[7] = node[8] node[8] = 0 node[9] = a node[8] = node[5] node[5] = 0 node[9] = a + 'U' usuccessors = node successors = lsuccessors + usuccessors return successors #------------------------------------------ |
# 633xxxxx21 79 (2020-09-20 20:52) def gen_successors(node): successors = [] index_0 = node.index(0) possible = "" if index_0 == 0: possible = "DR" elif index_0 == 1: possible = "DLR" elif index_0 == 2: possible = "DL" elif index_0 == 3: possible = "UDR" elif index_0 == 4: possible = "UDLR" elif index_0 == 5: possible = "UDL" elif index_0 == 6: possible = "UR" elif index_0 == 7: possible = "ULR" elif index_0 == 8: possible = "UL" for i in possible: result = list(node[:9]) if i == "U": result[index_0], result[index_0-3] = result[index_0-3], result[index_0] elif i == "D": result[index_0], result[index_0+3] = result[index_0+3], result[index_0] elif i == "L": result[index_0], result[index_0-1] = result[index_0-1], result[index_0] elif i == "R": result[index_0], result[index_0+1] = result[index_0+1], result[index_0] a = node[-1] if isinstance(a,int): a = "" text = a+i successors.extend(result+[text]) return successors #------------------------------------------ |
# 633xxxxx21 80 (2020-09-20 22:52) def gen_successors(node): successors = [] list = move_stuff(node[:-1]).split(' ') M = len(list) for i in range(M): successors = successors + make_move(node,list[i]) return successors def move_stuff(board): n = len(board) N = int(n**(1/2)) loc = int(board.index(0))+1 if loc == 1: return 'D R' elif loc == N: return 'D L' elif loc == n-N+1: return 'U R' elif loc == n: return 'U L' elif loc % N == 1: return 'U D L' elif loc % N == 0: return 'U D R' elif loc < N: return 'D L R' elif (loc < n) and (loc > (n-N)): return 'U L R' else: return 'U D L R' # --------------------------------------- def make_move(node,move): board = list(node) loc = board.index(0) N = int((len(board[:-1]))**(1/2)) if move == 'U': (board[loc],board[loc-N]) = (board[loc-N],board[loc]) elif move == 'D': (board[loc], board[(loc + N)]) = (board[(loc + N)], board[loc]) elif move == 'R': (board[loc], board[loc + 1]) = (board[loc + 1], board[loc]) else: (board[loc], board[loc - 1]) = (board[loc - 1], board[loc]) board[-1] = str(board[-1])+move return board |
# 633xxxxx21 81 (2020-09-20 10:55) def gen_successors(node): successors = [] NxN = int((len(node)-1)**(1/2)) brd = node[:-1] mve = node[-1] inx = 0 row = 0 col = 0 for n in node: if n == 0 : if row == NxN-1 : brdNew = list(brd) brdNew[inx], brdNew[inx-NxN] = brdNew[inx-NxN], brdNew[inx] successors += (brdNew + [mve + 'U']) elif row == 0 : brdNew = list(brd) brdNew[inx], brdNew[inx+NxN] = brdNew[inx+NxN], brdNew[inx] successors += (brdNew + [mve + 'D']) else : brdNew = list(brd) brdNew[inx], brdNew[inx-NxN] = brdNew[inx-NxN], brdNew[inx] successors += (brdNew + [mve + 'U']) brdNew = list(brd) brdNew[inx], brdNew[inx+NxN] = brdNew[inx+NxN], brdNew[inx] successors += (brdNew + [mve + 'D']) if col == NxN-1 : brdNew = list(brd) brdNew[inx], brdNew[inx-1] = brdNew[inx-1], brdNew[inx] successors += (brdNew + [mve + 'L']) elif col == 0 : brdNew = list(brd) brdNew[inx], brdNew[inx+1] = brdNew[inx+1], brdNew[inx] successors += (brdNew + [mve + 'R']) else : brdNew = list(brd) brdNew[inx], brdNew[inx-1] = brdNew[inx-1], brdNew[inx] successors += (brdNew + [mve + 'L']) brdNew = list(brd) brdNew[inx], brdNew[inx+1] = brdNew[inx+1], brdNew[inx] successors += (brdNew + [mve + 'R']) break # next inx += 1 col += 1 if col > NxN-1 : row += 1 col = 0 return successors #------------------------------------------ |
# 633xxxxx21 82 (2020-09-19 21:32) def gen_successors(node): successors = [] i = node.index(0) def d1(node): node1 = list(node) node1[i], node1[i+3] = node1[i+3], node1[i] node1[9] = node1[9] + "D" return node1 def d2(node): node1 = list(node) node1[i], node1[i-3] = node1[i-3], node1[i] node1[9] = node1[9] + "U" return node1 def d3(node): node1 = list(node) node1[i], node1[i+1] = node1[i+1], node1[i] node1[9] = node1[9] + "R" return node1 def d4(node): node1 = list(node) node1[i], node1[i-1] = node1[i-1], node1[i] node1[9] = node1[9] + "L" return node1 if i == 0: successors.extend(d3(node)) successors.extend(d1(node)) elif i == 1: successors.extend(d1(node)) successors.extend(d3(node)) successors.extend(d4(node)) elif i == 2: successors.extend(d1(node)) successors.extend(d4(node)) elif i == 3: successors.extend(d1(node)) successors.extend(d2(node)) successors.extend(d3(node)) elif i == 4: successors.extend(d1(node)) successors.extend(d2(node)) successors.extend(d3(node)) successors.extend(d4(node)) elif i == 5: successors.extend(d1(node)) successors.extend(d2(node)) successors.extend(d4(node)) elif i == 6: successors.extend(d2(node)) successors.extend(d3(node)) elif i == 7: successors.extend(d2(node)) successors.extend(d3(node)) successors.extend(d4(node)) elif i == 8: successors.extend(d2(node)) successors.extend(d4(node)) return successors #------------------------------------------ |
# 633xxxxx21 83 (2020-09-20 14:26) def gen_successors(node): successors = [] N = 1 while N*N != len(node)-1: N += 1 collect = node.index(0) status = {"top":False, "bottom":False, "left":False, "right":False} if 0 <= collect <= N-1: #top status["top"] = True if N*(N-1) <= collect <= (N*N)-1: #bottom status["bottom"] = True if collect % N == 0: #left status["left"] = True if (collect+1)%N == 0: #right status["right"] = True # up if not status["top"]: nu = node.copy() nu[collect], nu[collect-N] = nu[collect-N], nu[collect] nu[len(nu)-1] += "U" successors += nu # down if not status["bottom"]: nd = node.copy() nd[collect], nd[collect+N] = nd[collect+N], nd[collect] nd[len(nd)-1] += "D" successors += nd # left if not status["left"]: nl = node.copy() nl[collect], nl[collect-1] = nl[collect-1], nl[collect] nl[len(nl)-1] += "L" successors += nl # right if not status["right"]: nr = node.copy() nr[collect], nr[collect+1] = nr[collect+1], nr[collect] nr[len(nr)-1] += "R" successors += nr return successors #------------------------------------------ |
# 633xxxxx21 84 (2020-09-20 20:14) def gen_successors(node): successors = [] f = len(node)-1 N = int(math.sqrt(f)) k = node.index(0) if k > N-1 : a = node[:] a[k],a[k-N] = a[k-N],a[k] a[-1] += 'U' successors += a if k < N*(N-1) : a = node[:] a[k],a[k+N] = a[k+N],a[k] a[-1] += 'D' successors += a if not k%N == 0 : a = node[:] a[k],a[k-1] = a[k-1],a[k] a[-1] += 'L' successors += a if not k%N == N-1 : a = node[:] a[k],a[k+1] = a[k+1],a[k] a[-1] += 'R' successors += a return successors #------------------------------------------ |
# 633xxxxx21 85 (2020-09-19 23:32) def gen_successors(node): successors = [] N = int((len(node)-1)**(1/2)) i = node.index(0) if (i+1)%N!= 0 : successor=list(node) successor[i], successor[i+1] = successor[i+1], successor[i] successor[-1] += 'R' successors += successor if int((N)**(2)) - N > i: successor=list(node) successor[i], successor[i+N] = successor[i+N], successor[i] successor[-1] += 'D' successors += successor if i >= N: successor=list(node) successor[i], successor[i-N] = successor[i-N], successor[i] successor[-1] += 'U' successors += successor if (i+N)%N != 0 : successor=list(node) successor[i], successor[i-1] = successor[i-1], successor[i] successor[-1] += 'L' successors += successor return successors #------------------------------------------ |
# 633xxxxx21 86 (2020-09-20 19:10) def gen_successors(node): successors = [] N = len(node) - 1 pos = [0] * N edge = int(N ** 0.5) for i in range(len(pos)): pos[i] = node.index(i) if (pos[0] + 1) % edge != 0: # not on right node[pos[0]],node[pos[0] + 1] = node[pos[0] + 1],node[pos[0]] #swap successors += node successors[-1] += 'R' node[pos[0]],node[pos[0] + 1] = node[pos[0] + 1],node[pos[0]] #back if (pos[0] + edge) % edge != 0: # not on left node[pos[0]],node[pos[0] - 1] = node[pos[0] - 1],node[pos[0]] #swap successors += node successors[-1] += 'L' node[pos[0]],node[pos[0] - 1] = node[pos[0] - 1],node[pos[0]] #back if pos[0] >= edge: # not on 1st row node[pos[0]],node[pos[0] - edge] = node[pos[0] - edge],node[pos[0]] #swap successors += node successors[-1] += 'U' node[pos[0]],node[pos[0] - edge] = node[pos[0] - edge],node[pos[0]] #back if edge * (edge - 1) > pos[0]: # not on btm node[pos[0]],node[pos[0] + edge] = node[pos[0] + edge],node[pos[0]] #swap successors += node successors[-1] += 'D' node[pos[0]],node[pos[0] + edge] = node[pos[0] + edge],node[pos[0]] #back return successors #------------------------------------------ |
# 633xxxxx21 87 (2020-09-20 20:14) def gen_successors(node): if len(board)==9: successors = [] pos=node.index(0) pos_check=['DR','DRL','DL','DRU','DRUL','DLU','RU','RLU','LU'] m=pos_check[pos] for k in m: c_node=list(node) if k=='L': c_node[pos],c_node[pos-1]=c_node[pos-1],c_node[pos] elif k=='R': c_node[pos],c_node[pos+1]=c_node[pos+1],c_node[pos] elif k=='D': c_node[pos],c_node[pos+3]=c_node[pos+3],c_node[pos] elif k=='U': c_node[pos],c_node[pos-3]=c_node[pos-3],c_node[pos] successors+=c_node successors[-1]=node[9]+k elif len(board)>9: a=int((len(board))**0.5) successors = [] pos=node.index(0) pos_check=['DR']+(['DRL']*(a-2))+['DL']+((['DRU']+(['DRUL']*(a-2))+['DLU']))*(a-2)+['RU']+(['RLU']*(a-2))+['LU'] m=pos_check[pos] for k in m: c_node=list(node) if k=='L': c_node[pos],c_node[pos-1]=c_node[pos-1],c_node[pos] elif k=='R': c_node[pos],c_node[pos+1]=c_node[pos+1],c_node[pos] elif k=='D': c_node[pos],c_node[pos+a]=c_node[pos+a],c_node[pos] elif k=='U': c_node[pos],c_node[pos-a]=c_node[pos-a],c_node[pos] successors+=c_node successors[-1]=node[len(board)]+k elif len(board)==4: successors = [] pos=node.index(0) pos_check=['DR','DL','RU','LU'] m=pos_check[pos] for k in m: c_node=list(node) if k=='L': c_node[pos],c_node[pos-1]=c_node[pos-1],c_node[pos] elif k=='R': c_node[pos],c_node[pos+1]=c_node[pos+1],c_node[pos] elif k=='D': c_node[pos],c_node[pos+2]=c_node[pos+2],c_node[pos] elif k=='U': c_node[pos],c_node[pos-2]=c_node[pos-2],c_node[pos] successors+=c_node successors[-1]=node[4]+k return successors #------------------------------------------ |
# 633xxxxx21 88 (2020-09-20 20:01) def gen_successors(node): successors = [] if 0 in node: a = node.index(0) if a == 0: for i in range(len(node)): #R successors.append(node[i]) successors[0],successors[1] = successors[1],successors[0] b = successors.pop(-1) successors.append(b+'R') for i in range(len(node)): #D successors.append(node[i]) successors[10],successors[13] = successors[13],successors[10] b = successors.pop(-1) successors.append(node[-1]+'D') if a == 1: for i in range(len(node)): #R successors.append(node[i]) successors[1],successors[2] = successors[2],successors[1] b = successors.pop(-1) successors.append(b+'R') for i in range(len(node)): #D successors.append(node[i]) successors[11],successors[14] = successors[14],successors[11] b = successors.pop(-1) successors.append(b+'D') for i in range(len(node)): #L successors.append(node[i]) successors[21],successors[20] = successors[20],successors[21] b = successors.pop(-1) successors.append(b+'L') if a == 2: for i in range(len(node)): #L successors.append(node[i]) successors[2],successors[1] = successors[1],successors[2] b = successors.pop(-1) successors.append(b+'L') for i in range(len(node)): #D successors.append(node[i]) successors[12],successors[15] = successors[15],successors[12] b = successors.pop(-1) successors.append(node[-1]+'D') if a == 3: for i in range(len(node)): #R successors.append(node[i]) successors[3],successors[4] = successors[4],successors[3] b = successors.pop(-1) successors.append(b+'R') for i in range(len(node)): #D successors.append(node[i]) successors[13],successors[16] = successors[16],successors[13] b = successors.pop(-1) successors.append(b+'D') for i in range(len(node)): #U successors.append(node[i]) successors[23],successors[20] = successors[20],successors[23] b = successors.pop(-1) successors.append(b+'U') if a == 4: for i in range(len(node)): #R successors.append(node[i]) successors[4],successors[5] = successors[5],successors[4] b = successors.pop(-1) successors.append(b+'R') for i in range(len(node)): #D successors.append(node[i]) successors[14],successors[17] = successors[17],successors[14] b = successors.pop(-1) successors.append(b+'D') for i in range(len(node)): #U successors.append(node[i]) successors[24],successors[21] = successors[21],successors[24] b = successors.pop(-1) successors.append(b+'U') for i in range(len(node)): #L successors.append(node[i]) successors[34],successors[33] = successors[33],successors[34] b = successors.pop(-1) successors.append(b+'L') if a == 5: for i in range(len(node)): #L successors.append(node[i]) successors[5],successors[4] = successors[4],successors[5] b = successors.pop(-1) successors.append(b+'L') for i in range(len(node)): #D successors.append(node[i]) successors[15],successors[18] = successors[18],successors[15] b = successors.pop(-1) successors.append(b+'D') for i in range(len(node)): #U successors.append(node[i]) successors[25],successors[22] = successors[22],successors[25] b = successors.pop(-1) successors.append(b+'U') if a == 6: for i in range(len(node)): #R successors.append(node[i]) successors[6],successors[7] = successors[7],successors[6] b = successors.pop(-1) successors.append(b+'R') for i in range(len(node)): #U successors.append(node[i]) successors[16],successors[13] = successors[13],successors[16] b = successors.pop(-1) successors.append(node[-1]+'U') if a == 7: for i in range(len(node)): #L successors.append(node[i]) successors[7],successors[6] = successors[6],successors[7] b = successors.pop(-1) successors.append(b+'L') for i in range(len(node)): #R successors.append(node[i]) successors[17],successors[18] = successors[18],successors[17] b = successors.pop(-1) successors.append(b+'R') for i in range(len(node)): #U successors.append(node[i]) successors[27],successors[24] = successors[24],successors[27] b = successors.pop(-1) successors.append(b+'U') if a == 8: for i in range(len(node)): #L successors.append(node[i]) successors[8],successors[7] = successors[7],successors[8] b = successors.pop(-1) successors.append(b+'L') for i in range(len(node)): #U successors.append(node[i]) successors[18],successors[15] = successors[15],successors[18] b = successors.pop(-1) successors.append(node[-1]+'U') return successors #------------------------------------------ |
# 633xxxxx21 89 (2020-09-20 13:10) def gen_successors(node): successors = [] n = node.index(0) if n == 4: insert(successors, Lmove(node)) insert(successors, Rmove(node)) insert(successors, Dmove(node)) insert(successors, Umove(node)) elif n == 0: insert(successors, Dmove(node)) insert(successors, Rmove(node)) elif n == 1: insert(successors, Rmove(node)) insert(successors, Lmove(node)) insert(successors, Dmove(node)) elif n == 2: insert(successors, Lmove(node)) insert(successors, Dmove(node)) elif n == 3: insert(successors, Umove(node)) insert(successors, Rmove(node)) insert(successors, Dmove(node)) elif n == 5: insert(successors, Umove(node)) insert(successors, Lmove(node)) insert(successors, Dmove(node)) elif n == 6: insert(successors, Umove(node)) insert(successors, Rmove(node)) elif n == 7: insert(successors, Umove(node)) insert(successors, Lmove(node)) insert(successors, Rmove(node)) elif n == 8: insert(successors, Umove(node)) insert(successors, Lmove(node)) return successors #------------------------------------------ def Dmove(board): # เลื่อนลง node = [] for i in range(0,len(board)): node.append(board[i]) inx = node.index(0) n = node[inx+3] node[inx+3] = 0 node[inx] = n node[len(node)-1] += 'D' return node def insert(successors,node): # แทรกเข้า sucessors for i in node: successors.append(i) #------------------------------------------ def Rmove(board): # เลื่อนขวา node = [] for i in range(0,len(board)): node.append(board[i]) inx = node.index(0) n = node[inx+1] node[inx+1] = 0 node[inx] = n node[len(node)-1] += 'R' return node def Lmove(board): # เลื่อนซ้าย node = [] for i in range(0,len(board)): node.append(board[i]) inx = node.index(0) n = node[inx-1] node[inx-1] = 0 node[inx] = n node[len(node)-1] += 'L' return node def Umove(board): # เลื่อนขึ้น node = [] for i in range(0,len(board)): node.append(board[i]) inx = node.index(0) n = node[inx-3] node[inx-3] = 0 node[inx] = n node[len(node)-1] += 'U' return node |
# 633xxxxx21 90 (2020-09-20 16:15) def gen_successors(node): successors = [] N = int((len(node)-1)**(0.5)) i = node.index(0) # position of zero if (i+1)%N != 0 : pre_s = [] for k in node: pre_s.append(k) pre_s[i], pre_s[i+1] = pre_s[i+1], pre_s[i] pre_s[-1] += 'R' for m in pre_s: successors.append(m) if int((N)**(2)) - N > i: pre_s = [] for k in node: pre_s.append(k) pre_s[i], pre_s[i+N] = pre_s[i+N], pre_s[i] pre_s[-1] += 'D' for m in pre_s: successors.append(m) if i >= N: pre_s = [] for k in node: pre_s.append(k) pre_s[i], pre_s[i-N] = pre_s[i-N], pre_s[i] pre_s[-1] += 'U' for m in pre_s: successors.append(m) if (i+N)%N != 0 : pre_s = [] for k in node: pre_s.append(k) pre_s[i], pre_s[i-1] = pre_s[i-1], pre_s[i] pre_s[-1] += 'L' for m in pre_s: successors.append(m) return successors #------------------------------------------ |
# 633xxxxx21 91 (2020-09-20 19:44) def gen_successors(node): successors = [] num0=node.index(0) if num0 in [3,4,5,6,7,8]: #up noden = node[0:9] new = [''] moven = node[-1] num0u = num0 + 3 noden.remove(0) noden.insert(num0u,0) moven = [moven+'U'] new = noden[0:9]+moven successors += new if num0 in [0,1,2,3,4,5]: #down noden = node[0:9] new = [''] moven = node[-1] num0u = num0 + 3 noden.remove(0) noden.insert(num0u,0) moven = [moven+'D'] new = noden[0:9]+moven successors += new if num0 in [1,2,4,5,7,8]: #left noden = node[0:9] new = [''] moven = node[-1] num0u = num0 + 1 noden.remove(0) noden.insert(num0u,0) moven = [moven+'L'] new = noden[0:9]+moven successors += new if num0 in [0,1,3,4,6,7]: #right noden = node[0:9] new = [''] moven = node[-1] num0u = num0 + 1 noden.remove(0) noden.insert(num0u,0) moven = [moven+'R'] new = noden[0:9]+moven successors += new return successors #------------------------------------------ |
# 633xxxxx21 92 (2020-09-20 23:41) def gen_successors(node): successors = [] b = node.index(0) tomove = [] swap = [] if b == 0 : tomove.append('DR') swap.append('31') elif b == 1 : tomove.append('LDR') swap.append('042') elif b == 2 : tomove.append('LD') swap.append('15') elif b == 3 : tomove.append('URD') swap.append('046') elif b == 4 : tomove.append('LURD') swap.append('3157') elif b == 5 : tomove.append('ULD') swap.append('248') elif b == 6 : tomove.append('UR') swap.append('37') elif b == 7 : tomove.append('LUR') swap.append('648') elif b == 8 : tomove.append('LU') swap.append('75') for i in range(len(tomove[0])): x = node.copy() c = x[-1] + tomove[0][i] x = x[:-1] x[b],x[int(swap[0][i])] = x[int(swap[0][i])],x[b] x.append(c) successors += x x = [] return successors #------------------------------------------ |
# 633xxxxx21 93 (2020-09-20 22:08) def gen_successors(node): successors = [] x = 0 for i in range(len(node)-1): if node[i] == 0: if i == 0 or i == 1 or i == 2 or i == 3 or i == 4 or i == 5: x1 = list(node) m = x1[-1] successors += x1 successors[successors.index(m)] += 'D' successors[x1.index(0)],successors[x1.index(0)+3] = successors[x1.index(0)+3],successors[x1.index(0)] x += 10 if i == 1 or i == 2 or i == 4 or i == 5 or i == 7 or i == 8: x2 = list(node) n = x2[-1] successors += x2 successors[successors.index(n)] += 'L' successors[x2.index(0)+x],successors[x2.index(0)+x-1] = successors[x2.index(0)+x-1],successors[x2.index(0)+x] x += 10 if i == 0 or i == 1 or i == 3 or i == 4 or i == 6 or i == 7: x3 = list(node) o = x3[-1] successors += x3 successors[successors.index(o)] += 'R' successors[x3.index(0)+x],successors[x3.index(0)+x+1] = successors[x3.index(0)+x+1],successors[x3.index(0)+x] x += 10 if i-3 >= 0: x4 = list(node) p = x4[-1] successors += x4 successors[successors.index(p)] += 'U' successors[x4.index(0)+x],successors[x4.index(0)+x-3] = successors[x4.index(0)+x-3],successors[x4.index(0)+x] return successors #------------------------------------------ |
# 633xxxxx21 94 (2020-09-20 18:35) def gen_successors(node): choice = ["RD","LRD","LD","RUD","LRUD","LUD","RU","LRU","LU"] successors = [] zeroIndex = node.index(0) #Check M from the zeroIndex if zeroIndex in [0,2,6,8 ]: M = 2 elif zeroIndex == 4 : M = 4 elif zeroIndex in [1,3,5,7] : M = 3 #append successors follw the condition for i in range(M) : if choice[zeroIndex][i] == 'U' : nodeClone = node.copy() nodeClone.insert(zeroIndex-3,0),nodeClone.remove(node[zeroIndex-3]) nodeClone.insert(zeroIndex,node[zeroIndex-3]),nodeClone.pop(zeroIndex+1) successors += nodeClone[:9]+[nodeClone[-1]+"U"] elif choice[zeroIndex][i] == 'D' : nodeClone = node.copy() nodeClone.insert(zeroIndex+3,0),nodeClone.remove(node[zeroIndex+3]) nodeClone.insert(zeroIndex,node[zeroIndex+3]),nodeClone.pop(zeroIndex+1) successors += nodeClone[:9]+[nodeClone[-1]+"D"] elif choice[zeroIndex][i] == 'L' : nodeClone = node.copy() nodeClone.insert(zeroIndex-1,0),nodeClone.remove(node[zeroIndex-1]) nodeClone.insert(zeroIndex,node[zeroIndex-1]),nodeClone.pop(zeroIndex+1) successors += nodeClone[:9]+[nodeClone[-1]+"L"] elif choice[zeroIndex][i] == 'R' : nodeClone = node.copy() nodeClone.insert(zeroIndex+1,0),nodeClone.remove(node[zeroIndex+1]) nodeClone.insert(zeroIndex,node[zeroIndex+1]),nodeClone.pop(zeroIndex+1) successors += nodeClone[:9]+[nodeClone[-1]+"R"] return successors #------------------------------------------ |
# 633xxxxx21 95 (2020-09-17 15:08) def gen_successors(node): successors = [] i=node.index(0) if i - 1 >= 0 and i not in[3,6] : successors += node[0:i - 1] + [node[i]] + node[i + 1:i + 1] + [node[i - 1]] + node[i + 1:9] node9L = node[9] + "L" successors.append(node9L) if i-3>=0: successors += node[0:i - 3] + [node[i]] + node[i - 2:i ] + [node[i - 3]] + node[i + 1:9] node9U = node[9] + "U" successors.append(node9U) if i + 1 <= 8 and i not in[2,5]: successors+=node[0:i]+[node[i+1]]+node [i+1:i+1]+[node[i]]+node[i+2:9] node9R = node[9] + "R" successors.append(node9R) if i+3<=8: successors += node[0:i] + [node[i + 3]] + node[i + 1:i + 3] + [node[i]] + node[i + 4:9] node9D = node[9] + "D" successors.append(node9D) return successors # ------------------------------------------ |
# 633xxxxx21 96 (2020-09-20 00:43) def gen_successors(node): successors = [] board1 = list(node) if board1[0] == 0 : board1[0],board1[1] = board1[1],board1[0] successors += list(board1[:9]) + [board1[9]+"R"] board1 = list(node) board1[0],board1[3] = board1[3],board1[0] successors += list(board1[:9]) + [board1[9]+"D"] board1 = list(node) elif board1[1] == 0 : board1[1],board1[0] = board1[0],board1[1] successors += list(board1[:9]) + [board1[9]+"L"] board1 = list(node) board1[1],board1[2] = board1[2],board1[1] successors += list(board1[:9]) + [board1[9]+"R"] board1 = list(node) board1[1],board1[4] = board1[4],board1[1] successors += list(board1[:9]) + [board1[9]+"D"] board1 = list(node) elif board1[2] == 0 : board1[2],board1[1] = board1[1],board1[2] successors += list(board1[:9]) + [board1[9]+"L"] board1 = list(node) board1[2],board1[5] = board1[5],board1[2] successors += list(board1[:9]) + [board1[9]+"D"] board1 = list(node) elif board1[3] == 0 : board1[3],board1[0] = board1[0],board1[3] successors += list(board1[:9]) + [board1[9]+"U"] board1 = list(node) board1[3],board1[4] = board1[4],board1[3] successors += list(board1[:9]) + [board1[9]+"R"] board1 = list(node) board1[3],board1[6] = board1[6],board1[3] successors += list(board1[:9]) + [board1[9]+"D"] board1 = list(node) elif board1[4] == 0 : board1[4],board1[1] = board1[1],board1[4] successors += list(board1[:9]) + [board1[9]+"U"] board1 = list(node) board1[4],board1[3] = board1[3],board1[4] successors += list(board1[:9]) + [board1[9]+"L"] board1 = list(node) board1[4],board1[5] = board1[5],board1[4] successors += list(board1[:9]) + [board1[9]+"R"] board1 = list(node) board1[4],board1[7] = board1[7],board1[4] successors += list(board1[:9]) + [board1[9]+"D"] board1 = list(node) elif board1[5] == 0 : board1[5],board1[2] = board1[2],board1[5] successors += list(board1[:9]) + [board1[9]+"U"] board1 = list(node) board1[5],board1[4] = board1[4],board1[5] successors += list(board1[:9]) + [board1[9]+"L"] board1 = list(node) board1[5],board1[8] = board1[8],board1[5] successors += list(board1[:9]) + [board1[9]+"D"] board1 = list(node) elif board1[6] == 0 : board1[6],board1[3] = board1[3],board1[6] successors += list(board1[:9]) + [board1[9]+"U"] board1 = list(node) board1[6],board1[7] = board1[7],board1[6] successors += list(board1[:9]) + [board1[9]+"R"] board1 = list(node) elif board1[7] == 0 : board1[7],board1[4] = board1[4],board1[7] successors += list(board1[:9]) + [board1[9]+"U"] board1 = list(node) board1[7],board1[6] = board1[6],board1[7] successors += list(board1[:9]) + [board1[9]+"L"] board1 = list(node) board1[7],board1[8] = board1[8],board1[7] successors += list(board1[:9]) + [board1[9]+"R"] board1 = list(node) elif board1[8] == 0 : board1[8],board1[5] = board1[5],board1[8] successors += list(board1[:9]) + [board1[9]+"U"] board1 = list(node) board1[8],board1[7] = board1[7],board1[8] successors += list(board1[:9]) + [board1[9]+"L"] return successors #------------------------------------------ |
# 633xxxxx21 97 (2020-09-19 15:38) def gen_successors(node): successors = [] if 0 == node[0]: successors+=[node[1]]+[node[0]]+node[2:9]+[node[9]+'R'] successors+=[node[3]]+[node[1]]+[node[2]]+[node[0]]+node[4:9]+[node[9]+'D'] elif 0== node[1]: successors+=[node[1]]+[node[0]]+node[2:9]+[node[9]+'L'] successors+=[node[0]]+[node[2]]+[node[1]]+node[3:9]+[node[9]+'R']#R successors+=[node[0]]+[node[4]]+[node[2]]+[node[3]]+[node[0]]+node[5:9]+[node[9]+'D']#d elif 0==node[2]: successors+=[node[0]]+[node[2]]+[node[1]]+node[3:9]+[node[9]+'L']#l successors+=node[0:2]+[node[5]]+[node[3]]+[node[4]]+[node[0]]+node[6:9]+[node[9]+'D']#d elif 0==node[3]: successors+=[node[3]]+[node[1]]+[node[2]]+[node[0]]+node[4:9]+[node[9]+'U']#u successors+=node[0:3]+[node[4]]+[node[3]]+node[5:9]+[node[9]+'R']#r successors+=node[0:3]+[node[6]]+[node[4]]+[node[5]]+[node[0]]+[node[7]]+[node[8]]+[node[9]+'D']#d elif 0==node[4]: successors+=[node[0]]+[node[4]]+[node[2]]+[node[3]]+[node[1]]+node[5:9]+[node[9]+'U']#u successors+=node[0:3]+[node[4]]+[node[3]]+node[5:9]+[node[9]+'L']#l successors+=node[0:4]+[node[5]]+[node[4]]+node[6:9]+[node[9]+'R']#r successors+=node[0:4]+[node[7]]+[node[5]]+[node[6]]+[node[4]]+[node[8]]+[node[9]+'D']#d elif 0==node[5]: successors+=[node[0]]+[node[1]]+[node[5]]+[node[3]]+[node[4]]+[node[0]]+node[6:9]+[node[9]+'U']#u successors+=node[0:4]+[node[5]]+[node[4]]+node[6:9]+[node[9]+'L']#l successors+=node[0:5]+[node[8]]+[node[6]]+[node[7]]+[node[5]]+[node[9]+'D']#d elif 0==node[6]: successors+=node[0:3]+[node[6]]+[node[4]]+[node[5]]+[node[3]]+[node[7]]+[node[8]]+[node[9]+'U']#u successors+=node[0:6]+[node[7]]+[node[6]]+[node[8]]+[node[9]+'R']#r elif 0==node[7]: successors+=node[0:6]+[node[7]]+[node[6]]+[node[8]]+[node[9]+'L']#l successors+=node[0:4]+[node[7]]+[node[5]]+[node[6]]+[node[4]]+[node[8]]+[node[9]+'D']#d successors+=node[0:7]+[node[8]]+[node[7]]+[node[9]+'R']#r elif 0==node[8]: successors+=node[0:7]+[node[8]]+[node[7]]+[node[9]+'L']#l successors+=node[0:5]+[node[8]]+[node[6]]+[node[7]]+[node[5]]+[node[9]+'U']#d return successors #------------------------------------------ |
# 633xxxxx21 98 (2020-09-18 20:06) def gen_successors(node): successors = [] A = node[:9] B = node[9] C = "" ; M = 0 zero_index = A.index(0) if zero_index in [0,1,2]: M += 1 ; C += "D" if zero_index in [3,4,5]: M += 2 ; C += "UD" if zero_index in [6,7,8]: M += 1 ; C += "U" if zero_index in [0,3,6]: M += 1 ; C += "R" if zero_index in [1,4,7]: M += 2 ; C += "LR" if zero_index in [2,5,8]: M += 1 ; C += "L" A = [str(e) for e in A] for e in range(M): if C[e] == "R" : A[zero_index],A[zero_index+1] = A[zero_index+1],A[zero_index] for e in A : successors.append(int(e)) B += "R" successors.append(B) elif C[e] == "L" : A[zero_index-1],A[zero_index] = A[zero_index],A[zero_index-1] for e in A : successors.append(int(e)) B += "L" successors.append(B) elif C[e] == "U" : A[zero_index],A[zero_index-3] = A[zero_index-3],A[zero_index] for e in A : successors.append(int(e)) B += "U" successors.append(B) elif C[e] == "D" : A[zero_index],A[zero_index+3] = A[zero_index+3],A[zero_index] for e in A : successors.append(int(e)) B += "D" successors.append(B) A = node[:9] B = node[9] return successors #------------------------------------------ |
# 633xxxxx21 99 (2020-09-17 22:36) def gen_successors(node): successors = [] y = int((len(node)-1)**(1/2)) x = node.index(0) if x > y-1 : node1 = list(node) node1[x],node1[x-y] = node1[x-y],node1[x] node1[-1] += 'U' successors += node1 if x < y*(y-1) : node1 = list(node) node1[x],node1[x+y] = node1[x+y],node1[x] node1[-1] += 'D' successors += node1 if x%y != 0 : node1 = list(node) node1[x],node1[x-1] = node1[x-1],node1[x] node1[-1] += 'L' successors += node1 if x%y != (y-1) : node1 = list(node) node1[x],node1[x+1] = node1[x+1],node1[x] node1[-1] += 'R' successors += node1 return successors #------------------------------------------ |
# 633xxxxx21 100 (2020-09-20 16:34) def gen_successors(node): successors = [] a = node.index(0); xd = node.copy() xr = node.copy() xl = node.copy() xu = node.copy() if (a == 0): xd[0], xd[3] = xd[3], xd[0] xd[9] += "D" xr[0], xr[1] = xr[1], xr[0] xr[9] += "R" successors += xd successors += xr elif (a == 1): xd[1], xd[4] = xd[4], xd[1] xd[9] += "D" xl[0], xl[1] = xl[1], xl[0] xl[9] += "L" xr[1], xr[2] = xr[2], xr[1] xr[9] += "R" successors += xd successors += xl successors += xr elif (a == 2): xd[2], xd[5] = xd[5], xd[2] xd[9] += "D" xl[1], xl[2] = xl[2], xl[1] xl[9] += "L" successors += xd successors += xl elif (a == 3): xu[0], xu[3] = xu[3], xu[0] xu[9] += "U" xd[3], xd[6] = xd[6], xd[3] xd[9] += "D" xr[3], xr[4] = xr[4], xr[3] xr[9] += "R" successors += xu successors += xd successors += xr elif (a == 4): xu[1], xu[4] = xu[4], xu[1] xu[9] += "U" xd[4], xd[7] = xd[7], xd[4] xd[9] += "D" xl[3], xl[4] = xl[4], xl[3] xl[9] += "L" xr[4], xr[5] = xr[5], xr[4] xr[9] += "R" successors += xu successors += xd successors += xl successors += xr elif (a == 5): xu[2], xu[5] = xu[5], xu[2] xu[9] += "U" xd[5], xd[8] = xd[8], xd[5] xd[9] += "D" xl[4], xl[5] = xl[5], xl[4] xl[9] += "L" successors += xu successors += xd successors += xl elif (a == 6): xu[3], xu[6] = xu[6], xu[3] xu[9] += "U" xr[6], xr[7] = xr[7], xr[6] xr[9] += "R" successors += xu successors += xr elif (a == 7): xu[4], xu[7] = xu[7], xu[4] xu[9] += "U" xl[6], xl[7] = xl[7], xl[6] xl[9] += "L" xr[7], xr[8] = xr[8], xr[7] xr[9] += "R" successors += xu successors += xl successors += xr elif (a == 8): xl[7], xl[8] = xl[8], xl[7] xl[9] += "L" xu[5], xu[8] = xu[8], xu[5] xu[9] += "U" successors += xl successors += xu return successors #------------------------------------------ |
# 633xxxxx21 101 (2020-09-19 23:18) def gen_successors(node): def swap(list, pos1, pos2): list[pos1], list[pos2] = list[pos2], list[pos1] return list successors = [] a=node[9]+"L" a1=node[9]+"D" a2=node[9]+"R" a3=node[9]+"U" node.pop(9) z=node+[a] z1=node+[a1] z2=node+[a2] z3=node+[a3] if node[4]==0: z=swap(z,3,4) z1=swap(z1,4,7) z2=swap(z2,4,5) z3=swap(z3,4,1) successors=successors+z1+z2+z+z3 elif node[0]==0: z1=swap(z1,3,0) z2=swap(z2,1,0) successors=successors+z1+z2 elif node[1]==0: z=swap(z,1,0) z1=swap(z1,4,1) z2=swap(z2,2,1) successors=successors+z+z1+z2 elif node[2]==0: z=swap(z,1,2) z1=swap(z1,2,5) successors=successors+z+z1 elif node[3]==0: z1=swap(z1,3,6) z2=swap(z2,3,4) z3=swap(z3,3,0) successors=successors+z1+z2+z3 elif node[5]==0: z=swap(z,5,4) z1=swap(z1,5,8) z3=swap(z3,5,2) successors=successors+z+z1+z3 elif node[6]==0: z2=swap(z2,6,7) z3=swap(z3,6,3) successors=successors+z2+z3 elif node[7]==0: z=swap(z,7,6) z2=swap(z2,7,8) z3=swap(z3,7,4) successors=successors+z2+z3+z elif node[8]==0: z=swap(z,8,7) z3=swap(z3,8,5) successors=successors+z+z3 return successors #------------------------------------------ |
# 633xxxxx21 102 (2020-09-20 14:23) def gen_successors(node): successors =[] i=node.index(0) n=int((len(node)-1)**(1/2)) if i>n-1: temp=list(node) temp[i],temp[i-n]=temp[i-n],temp[i] #เลื่อนบนได้ successors+=temp[0:n**2] successors.append(temp[n**2]+"U") if i<(n**2)-n-1: temp=list(node) temp[i],temp[i+n]=temp[i+n],temp[i] #เลื่อนล่างได้ successors+=temp[0:n**2] successors.append(temp[n**2]+"D") if i %n!=0: temp=list(node) temp[i],temp[i-1]=temp[i-1],temp[i] #เลื่อนซ้ายได้ successors+=temp[0:n**2] successors.append(temp[n**2]+"L") if i%n!=n-1: temp=list(node) temp[i],temp[i+1]=temp[i+1],temp[i] #เลื่อนขวาได้ successors+=temp[0:n**2] successors.append(temp[(n**2)]+"R") return successors #------------------------------------------ |
# 633xxxxx21 103 (2020-09-20 22:15) def gen_successors(node): successors = [] list = movelist(node[:-1]).split(' ') M = len(list) for i in range(M): successors = successors + make_move(node,list[i]) # print(node) # print(successors) return successors # ------------------------------------------ def make_move(node,move): board = list(node) pos = board.index(0) N = 3 if move == 'U': (board[pos],board[pos-N]) = (board[pos-N],board[pos]) elif move == 'D': (board[pos], board[(pos + N)]) = (board[(pos + N)], board[pos]) elif move == 'R': (board[pos], board[pos + 1]) = (board[pos + 1], board[pos]) else: (board[pos], board[pos - 1]) = (board[pos - 1], board[pos]) board[-1] = str(board[-1])+move # print(board) return board def movelist(board): pos = int(board.index(0))+1 if pos == 1: return 'D R' elif pos == 2: return 'D L R' elif pos == 3: return 'D L' elif pos == 4: return 'U D L' elif pos == 5: return 'U D L R' elif pos == 6: return 'U D R' elif pos == 7: return 'U L' elif pos == 8: return 'U L R' else : return 'U L' # --------------------------------------- |
# 633xxxxx21 104 (2020-09-20 22:36) def gen_successors(node): successors = [] successor = list(node) width = int(len(node)**0.5) #print(node,0) a = node.index(0) if len(successor[-1])!=0 : #checkloop22U = successor[-1][-3:] in ['LDR','RDL'] #checkloop22D = successor[-1][-3:] in ['LUR','RUL'] #checkloop22L = successor[-1][-3:] in ['DRU','URD'] #checkloop22R = successor[-1][-3:] in ['DLU','ULD'] if a-width>=0 and(successor[-1][-1]!='D'): successor[a] = successor[a-width] successor[a-width] = 0 successor[-1] += 'U' successors += successor successor = list(node) if a+width<=len(node)-2 and(successor[-1][-1]!='U'): successor[a] = successor[a+width] successor[a+width] = 0 successor[-1] += 'D' successors += successor successor = list(node) if a%width!=0 and(successor[-1][-1]!='R'): successor[a] = successor[a-1] successor[a-1] = 0 successor[-1] += 'L' successors += successor successor = list(node) if a%width!=width-1 and(successor[-1][-1]!='L'): successor[a] = successor[a+1] successor[a+1] = 0 successor[-1] += 'R' successors += successor else: if a-width>=0: successor[a] = successor[a-width] successor[a-width] = 0 successor[-1] += 'U' successors += successor successor = list(node) if a+width<=len(node)-2: successor[a] = successor[a+width] successor[a+width] = 0 successor[-1] += 'D' successors += successor successor = list(node) if a%width!=0: successor[a] = successor[a-1] successor[a-1] = 0 successor[-1] += 'L' successors += successor successor = list(node) if a%width!=width-1: successor[a] = successor[a+1] successor[a+1] = 0 successor[-1] += 'R' successors += successor return successors #------------------------------------------ |
# 633xxxxx21 105 (2020-09-20 23:51) def gen_successors(node): successors = [] pos = node.index(0) back = ['DR','DLR','DL','UDR','ULDR','UDL','UR','ULR','UL'] a = back[pos] for e in a: b = node.copy() if e == "D": b.remove(0) b.insert(pos+2,0) b.insert(pos,b[pos+3]) b.pop(pos+4) b[-1] += 'D' elif e == "L": b.remove(0) b.insert(pos-1,0) b[-1] += "L" elif e == 'R': b.remove(0) b.insert(pos+1,0) b[-1] += 'R' elif e == 'U': b.remove(0) b.insert(pos-3,0) b.insert(pos+1,b[pos-2]) b.pop(pos-2) b[-1] += 'U' successors += b return successors # ------------------------------------------ |
# 633xxxxx21 106 (2020-09-20 22:39) def gen_successors(node): successors = [] if 0 in node: a = node.index(0) b = len(node) if a == 0: for i in range(b): successors.append(node[i]) successors[0],successors[1] = successors[1],successors[0] c = successors.pop(-1) successors.append(c+'R') for i in range(b): successors.append(node[i]) successors[10],successors[13] = successors[13],successors[10] c = successors.pop(-1) successors.append(c+'D') if a == 1: for i in range(b): successors.append(node[i]) successors[1],successors[2] = successors[2],successors[1] c = successors.pop(-1) successors.append(c+'R') for i in range(b): successors.append(node[i]) successors[11],successors[14] = successors[14],successors[11] c = successors.pop(-1) successors.append(c+'D') for i in range(b): successors.append(node[i]) successors[21],successors[20] = successors[20],successors[21] c = successors.pop(-1) successors.append(c+'L') if a == 2: for i in range(b): successors.append(node[i]) successors[2],successors[1] = successors[1],successors[2] c = successors.pop(-1) successors.append(c+'L') for i in range(b): successors.append(node[i]) successors[12],successors[15] = successors[15],successors[12] c = successors.pop(-1) successors.append(c+'D') if a == 3: for i in range(b): successors.append(node[i]) successors[3],successors[4] = successors[4],successors[3] c = successors.pop(-1) successors.append(c+'R') for i in range(b): successors.append(node[i]) successors[13],successors[16] = successors[16],successors[13] c = successors.pop(-1) successors.append(c+'D') for i in range(b): successors.append(node[i]) successors[23],successors[20] = successors[20],successors[23] c = successors.pop(-1) successors.append(c+'U') if a == 4: for i in range(b): successors.append(node[i]) successors[4],successors[5] = successors[5],successors[4] c = successors.pop(-1) successors.append(c+'R') for i in range(b): successors.append(node[i]) successors[14],successors[17] = successors[17],successors[14] c = successors.pop(-1) successors.append(c+'D') for i in range(b): successors.append(node[i]) successors[24],successors[21] = successors[21],successors[24] c = successors.pop(-1) successors.append(c+'U') for i in range(b): successors.append(node[i]) successors[34],successors[33] = successors[33],successors[34] c = successors.pop(-1) successors.append(c+'L') if a == 5: for i in range(b): successors.append(node[i]) successors[5],successors[4] = successors[4],successors[5] c = successors.pop(-1) successors.append(c+'L') for i in range(b): successors.append(node[i]) successors[15],successors[18] = successors[18],successors[15] c = successors.pop(-1) successors.append(c+'D') for i in range(b): successors.append(node[i]) successors[25],successors[22] = successors[22],successors[25] c = successors.pop(-1) successors.append(c+'U') if a == 6: for i in range(b): successors.append(node[i]) successors[6],successors[7] = successors[7],successors[6] c = successors.pop(-1) successors.append(c+'R') for i in range(b): successors.append(node[i]) successors[16],successors[13] = successors[13],successors[16] c = successors.pop(-1) successors.append(c+'U') if a == 7: for i in range(b): successors.append(node[i]) successors[7],successors[6] = successors[6],successors[7] c = successors.pop(-1) successors.append(c+'L') for i in range(b): successors.append(node[i]) successors[17],successors[18] = successors[18],successors[17] b = successors.pop(-1) successors.append(b+'R') for i in range(len(node)): successors.append(node[i]) successors[27],successors[24] = successors[24],successors[27] c = successors.pop(-1) successors.append(c+'U') if a == 8: for i in range(b): successors.append(node[i]) successors[8],successors[7] = successors[7],successors[8] c = successors.pop(-1) successors.append(c+'L') for i in range(len(node)): successors.append(node[i]) successors[18],successors[15] = successors[15],successors[18] b = successors.pop(-1) successors.append(c+'U') return successors #------------------------------------------ |
# 633xxxxx21 107 (2020-09-20 20:49) def gen_successors(node): node1 = node successors = [] i = node.index(0) N = 0 p_move = '' if i == 0 : p_move = 'DR' elif i == 1 : p_move = 'DLR' elif i == 2 : p_move = 'DL' elif i == 3 : p_move = 'URD' elif i == 4 : p_move = 'UDLR' elif i == 5 : p_move = 'UDL' elif i == 6 : p_move = 'UR' elif i == 7 : p_move = 'ULR' elif i == 8 : p_move = 'UL' moves = node[-1] for c in p_move : successors.extend(node1[0:9]) if c =='U': x = successors[i-3] successors.pop(i) successors.insert(i-3,0) successors.pop(i-2) successors.insert(i,x) elif c =='D' : x = successors[i+3] successors.pop(i) successors.insert(i+3,0) successors.pop(i+2) successors.insert(i,x) elif c =='L' : successors.pop(i) successors.insert(i-1,0) elif c =='R' : successors.pop(i) successors.insert(i+1,0) i += 10 successors.append(moves+c) return successors #------------------------------------------ |
# 633xxxxx21 108 (2020-09-20 19:19) def gen_successors(node): successors = [] N = len(node) - 1 position = [0]*N for i in range(len(position)): position[i] = node.index(i) if position[0] == 0: destination = [1,3] for e in destination: node[position[0]],node[e] = node[e],node[position[0]] successors += node if e == 1: successors[-1] += 'R' if e == 3: successors[-1] += 'D' node[position[0]],node[e] = node[e],node[position[0]] elif position[0] == 1: destination = [0,2,4] for e in destination: node[position[0]],node[e] = node[e],node[position[0]] successors += node if e == 0: successors[-1] += 'L' if e == 2: successors[-1] += 'R' if e == 4: successors[-1] += 'D' node[position[0]],node[e] = node[e],node[position[0]] elif position[0] == 2: destination = [1,5] for e in destination: node[position[0]],node[e] = node[e],node[position[0]] successors += node if e == 1: successors[-1] += 'L' if e == 5: successors[-1] += 'D' node[position[0]],node[e] = node[e],node[position[0]] elif position[0] == 3: destination = [0,4,6] for e in destination: node[position[0]],node[e] = node[e],node[position[0]] successors += node if e == 0: successors[-1] += 'U' if e == 4: successors[-1] += 'R' if e == 6: successors[-1] += 'D' node[position[0]],node[e] = node[e],node[position[0]] elif position[0] == 4: destination = [1,3,5,7] for e in destination: node[position[0]],node[e] = node[e],node[position[0]] successors += node if e == 1: successors[-1] += 'U' if e == 3: successors[-1] += 'L' if e == 5: successors[-1] += 'R' if e == 7: successors[-1] += 'D' node[position[0]],node[e] = node[e],node[position[0]] elif position[0] == 5: destination = [2,4,8] for e in destination: node[position[0]],node[e] = node[e],node[position[0]] successors += node if e == 2: successors[-1] += 'U' if e == 4: successors[-1] += 'L' if e == 8: successors[-1] += 'D' node[position[0]],node[e] = node[e],node[position[0]] elif position[0] == 6: destination = [3,7] for e in destination: node[position[0]],node[e] = node[e],node[position[0]] successors += node if e == 3: successors[-1] += 'U' if e == 7: successors[-1] += 'R' node[position[0]],node[e] = node[e],node[position[0]] elif position[0] == 7: destination = [4,6,8] for e in destination: node[position[0]],node[e] = node[e],node[position[0]] successors += node if e == 4: successors[-1] += 'U' if e == 6: successors[-1] += 'L' if e == 8: successors[-1] += 'R' node[position[0]],node[e] = node[e],node[position[0]] elif position[0] == 8: destination = [5,7] for e in destination: node[position[0]],node[e] = node[e],node[position[0]] successors += node if e == 5: successors[-1] += 'U' if e == 7: successors[-1] += 'L' node[position[0]],node[e] = node[e],node[position[0]] return successors #------------------------------------------ |
# 633xxxxx21 109 (2020-09-20 18:08) def gen_successors(node): successors = [] M1 = [] M2 = [] M3 = [] M4 = [] if node.index(0)==8: for i in range(9): M1.append(node[i]) M1.remove(node[5]) M1.remove(node[8]) M1.insert(5,node[8]) M1.insert(8,node[5]) M1.append(node[9]+'U') for i in range(9): M2.append(node[i]) M2.remove(node[7]) M2.remove(node[8]) M2.insert(7,node[8]) M2.insert(8,node[7]) M2.append(node[9]+'L') successors = M1+M2 if node.index(0)==6: for i in range(9): M1.append(node[i]) M1.remove(node[3]) M1.remove(node[6]) M1.insert(3,node[6]) M1.insert(6,node[3]) M1.append(node[9]+'U') for i in range(9): M2.append(node[i]) M2.remove(node[6]) M2.remove(node[7]) M2.insert(6,node[7]) M2.insert(7,node[6]) M2.append(node[9]+'R') successors = M1+M2 if node.index(0)==2: for i in range(9): M1.append(node[i]) M1.remove(node[2]) M1.remove(node[5]) M1.insert(2,node[5]) M1.insert(5,node[2]) M1.append(node[9]+'D') for i in range(9): M2.append(node[i]) M2.remove(node[1]) M2.remove(node[2]) M2.insert(1,node[2]) M2.insert(2,node[1]) M2.append(node[9]+'L') successors = M1+M2 if node.index(0)==0: for i in range(9): M1.append(node[i]) M1.remove(node[0]) M1.remove(node[3]) M1.insert(0,node[3]) M1.insert(3,node[0]) M1.append(node[9]+'D') for i in range(9): M2.append(node[i]) M2.remove(node[0]) M2.remove(node[1]) M2.insert(0,node[1]) M2.insert(1,node[0]) M2.append(node[9]+'R') successors = M1+M2 if node.index(0)==1: for i in range(9): M1.append(node[i]) M1.remove(node[1]) M1.remove(node[4]) M1.insert(1,node[4]) M1.insert(4,node[1]) M1.append(node[9]+'D') for i in range(9): M2.append(node[i]) M2.remove(node[0]) M2.remove(node[1]) M2.insert(0,node[1]) M2.insert(1,node[0]) M2.append(node[9]+'L') for i in range(9): M3.append(node[i]) M3.remove(node[1]) M3.remove(node[2]) M3.insert(1,node[2]) M3.insert(2,node[1]) M3.append(node[9]+'R') successors = M1+M2+M3 if node.index(0)==3: for i in range(9): M1.append(node[i]) M1.remove(node[0]) M1.remove(node[3]) M1.insert(0,node[3]) M1.insert(3,node[0]) M1.append(node[9]+'U') for i in range(9): M2.append(node[i]) M2.remove(node[3]) M2.remove(node[6]) M2.insert(3,node[6]) M2.insert(6,node[3]) M2.append(node[9]+'D') for i in range(9): M3.append(node[i]) M3.remove(node[3]) M3.remove(node[4]) M3.insert(3,node[4]) M3.insert(4,node[3]) M3.append(node[9]+'R') successors = M1+M2+M3 if node.index(0)==5: for i in range(9): M1.append(node[i]) M1.remove(node[2]) M1.remove(node[5]) M1.insert(2,node[5]) M1.insert(5,node[2]) M1.append(node[9]+'U') for i in range(9): M2.append(node[i]) M2.remove(node[5]) M2.remove(node[8]) M2.insert(5,node[8]) M2.insert(8,node[5]) M2.append(node[9]+'D') for i in range(9): M3.append(node[i]) M3.remove(node[4]) M3.remove(node[5]) M3.insert(4,node[5]) M3.insert(5,node[4]) M3.append(node[9]+'L') successors = M1+M2+M3 if node.index(0)==7: for i in range(9): M1.append(node[i]) M1.remove(node[4]) M1.remove(node[7]) M1.insert(4,node[7]) M1.insert(7,node[4]) M1.append(node[9]+'U') for i in range(9): M2.append(node[i]) M2.remove(node[6]) M2.remove(node[7]) M2.insert(6,node[7]) M2.insert(7,node[6]) M2.append(node[9]+'L') for i in range(9): M3.append(node[i]) M3.remove(node[7]) M3.remove(node[8]) M3.insert(7,node[8]) M3.insert(8,node[7]) M3.append(node[9]+'R') successors = M1+M2+M3 if node.index(0)==4: for i in range(9): M1.append(node[i]) M1.remove(node[1]) M1.remove(node[4]) M1.insert(1,node[4]) M1.insert(4,node[1]) M1.append(node[9]+'U') for i in range(9): M2.append(node[i]) M2.remove(node[4]) M2.remove(node[7]) M2.insert(4,node[7]) M2.insert(7,node[4]) M2.append(node[9]+'D') for i in range(9): M3.append(node[i]) M3.remove(node[3]) M3.remove(node[4]) M3.insert(3,node[4]) M3.insert(4,node[3]) M3.append(node[9]+'L') for i in range(9): M4.append(node[i]) M4.remove(node[4]) M4.remove(node[5]) M4.insert(4,node[5]) M4.insert(5,node[4]) M4.append(node[9]+'R') successors = M1+M2+M3+M4 return successors #------------------------------------------ |
# 633xxxxx21 110 (2020-09-20 00:26) def gen_successors(node): successors = [] h = node.index(0) if h == 0: successors+=[node[1],node[0]]+node[2:9:]+[node[9]+'R']+[node[3]]+node[1:3:]+[node[0]]+node[4:9:]+[node[9]+'D'] elif h == 1: successors+=[node[1],node[0]]+node[2:9:]+[node[9]+'L']+[node[0],node[2],node[1]]+node[3:9:]+[node[9]+'R']+[node[0],node[4],node[2],node[3],node[1]]+node[5:9:]+[node[9]+'D'] elif h == 2: successors+=[node[0],node[2],node[1]]+node[3:9:]+[node[9]+'L']+node[0:2:]+[node[5]]+node[3:5:]+[node[2]]+node[6:9:]+[node[9]+'D'] elif h == 3: successors+=[node[3],node[1],node[2],node[0]]+node[4:9:]+[node[9]+'U']+node[0:3:]+[node[6],node[4],node[5],node[3],node[7],node[8]]+[node[9]+'D']+node[0:3:]+[node[4],node[3]]+node[5:9:]+[node[9]+'R'] elif h == 4: successors+=[node[0],node[4],node[2],node[3],node[1]]+node[5:9:]+[node[9]+'U']+node[0:3:]+[node[4],node[3]]+node[5:9:]+[node[9]+'L']+node[0:4:]+[node[5],node[4]]+node[6:9:]+[node[9]+'R']+node[0:4:]+[node[7],node[5],node[6],node[4],node[8]]+[node[9]+'D'] elif h == 5: successors+=[node[0],node[1],node[5],node[3],node[4],node[2]]+node[6:9:]+[node[9]+'U']+node[0:4:]+[node[5],node[4]]+node[6:9:]+[node[9]+'L']+node[0:5:]+[node[8],node[6],node[7],node[5]]+[node[9]+'D'] elif h == 6: successors+=node[0:3:]+[node[6],node[4],node[5],node[3]]+node[7:9:]+[node[9]+'U']+node[0:6:]+[node[7],node[6],node[8]]+[node[9]+'R'] elif h == 7: successors+=node[0:4:]+[node[7],node[5],node[6],node[4],node[8]]+[node[9]+'U']+node[0:6:]+[node[7],node[6],node[8]]+[node[9]+'L']+node[0:7:]+[node[7],node[8]]+[node[9]+'R'] elif h == 8: successors+=node[0:7:]+[node[8],node[7],node[9]+'L']+node[0:5:]+[node[8]]+node[6:8:]+[node[5]]+[node[9]+'U'] return successors #------------------------------------------ |
# 633xxxxx21 111 (2020-09-20 23:13) def gen_successors(node): successors = [] node1 = list(node) x = node1.index(0) if 0 in node1[3:9]: node[x-3],node[x] = node[x],node[x-3] successors += node[0:9]+[node[9] + 'U'] node = list(node1) if 0 in node1[0:6]: node[x+3],node[x] = node[x],node[x+3] successors += node[0:9]+[node[9] + 'D'] node = list(node1) if 0 in node1[1:3] or 0 in node1[4:6] or 0 in node1[7:9]: node[x-1],node[x] = node[x],node[x-1] successors += node[0:9]+[node[9] + 'L'] node = list(node1) if 0 in node1[0:2] or 0 in node1[3:5] or 0 in node1[6:8]: node[x+1],node[x] = node[x],node[x+1] successors += node[0:9]+[node[9] + 'R'] node = list(node1) return successors #------------------------------------------ |
# 633xxxxx21 112 (2020-09-20 23:08) def gen_successors(node): successors = [] x = node.index(0) if x in [3,4,5,6,7,8] : nodex = node[0:9] new = [""] strx = node[-1] nodex[x] = nodex[x-3] nodex[x-3] = 0 strx = [str(strx)+"U"] new = nodex[0:9]+ strx successors += new if x in [0,1,2,3,4,5] : nodex = node[0:9] new = [""] strx = node[-1] nodex[x] = nodex[x+3] nodex[x+3] = 0 strx = [str(strx)+"D"] new = nodex[0:9]+ strx successors += new if x in [1,2,4,5,7,8] : nodex = node[0:9] new = [""] strx = node[-1] nodex[x] = nodex[x-1] nodex[x-1] = 0 strx = [str(strx)+"L"] new = nodex[0:9]+ strx successors += new if x in [0,1,3,4,6,7] : nodex = node[0:9] new = [""] strx = node[-1] nodex[x] = nodex[x+1] nodex[x+1] = 0 strx = [str(strx)+"R"] new = nodex[0:9]+ strx successors += new return successors #------------------------------------------ |
# 633xxxxx21 113 (2020-09-20 23:59) def gen_successors(node): # node = [1,0,3,4,2,5,7,8,6,'LR'] # successors =[1,2,3,4,0,5,7,8,6,'LRD',0,1,3,4,2,5,7,8,6,'LRL',1,3,0,4,2,5,7,8,6,'LRR'] successors = [] nub = 0 arr = [[11]*5 for i in range(5)] for i in range(1,4) : for j in range(1,4) : arr[i][j] = node[nub] nub += 1 # print(arr) def find_zero(arr) : for i in range(5) : for j in range(5) : if arr[i][j] == 0 : row = i column = j return row,column rind,cind = find_zero(arr) # print(rind,cind) if arr[rind-1][cind] != 11 : #U res = arr.copy() tmp = res[rind-1][cind] res[rind-1][cind] = 0 res[rind][cind] = tmp print(res) # successors.append(res) if arr[rind+1][cind] != 11 : #D res1 = arr.copy() tmp = res1[rind+1][cind] res1[rind+1][cind] = 0 res1[rind][cind] = tmp print(res1) # successors.append(res) if arr[rind][cind+1] != 11 : #R res2 = arr.copy() tmp = res2[rind][cind+1] res2[rind][cind+1] = 0 res2[rind][cind] = tmp print(res2) # successors.append(res) if arr[rind-1][cind] != 11 : #L res3 = arr.copy() tmp = res3[rind][cind-1] res3[rind][cind-1] = 0 res3[rind][cind] = tmp print(res3) # successors.append(res) return successors #------------------------------------------ |
# 633xxxxx21 114 (2020-09-20 15:32) def gen_successors(node): #สามารถรองรับกระดานขนาด 2x2, 3x3, 4x4,...ได้ successors = [] index = node.index(0) length = len(node)-1 for i in range(length+1): if i*i == length: n = i break if index - n >= 0: #up new = node[:] new[index-n],new[index] = new[index],new[index-n] d = 'U' new[-1]+=d successors += new if index + n <= n**2-1: #down new = node[:] new[index+n],new[index] = new[index],new[index+n] d = 'D' new[-1]+=d successors += new if index % n != 0: #left new = node[:] new[index-1],new[index] = new[index],new[index-1] d = 'L' new[-1]+=d successors += new if index % n != n-1: #right new = node[:] new[index+1],new[index] = new[index],new[index+1] d = 'R' new[-1]+=d successors += new return successors #------------------------------------------ |
# 633xxxxx21 115 (2020-09-20 23:46) def gen_successors(node): def swap(board, p1, p2): board[p1], board[p2] = board[p2], board[p1] return board successors = [] board = node[:-1] move = node[-1] N = int(len(board)**0.5) for pos, num in enumerate(board): if num == 0: blank = pos moves = [("U", -N), ("D", N)] for m in moves: if 0 <= blank + m[1] <= N**2-1: successors.extend(swap(board.copy(), blank, blank + m[1]) + [move+m[0]]) if blank not in range(0,N**2, N): successors.extend(swap(board.copy(), blank, blank + -1) + [move+"L"]) if blank not in range(N-1,N**2, N): successors.extend(swap(board.copy(), blank, blank + 1) + [move+"R"]) return successors #------------------------------------------ |
# 633xxxxx21 116 (2020-09-19 10:24) def gen_successors(node): successors = [] if 0 in node: a = node.index(0) if a == 0: for i in range(len(node)): #R successors.append(node[i]) successors[0],successors[1] = successors[1],successors[0] b = successors.pop(-1) successors.append(b+'R') for i in range(len(node)): #D successors.append(node[i]) successors[10],successors[13] = successors[13],successors[10] b = successors.pop(-1) successors.append(node[-1]+'D') if a == 1: for i in range(len(node)): #R successors.append(node[i]) successors[1],successors[2] = successors[2],successors[1] b = successors.pop(-1) successors.append(b+'R') for i in range(len(node)): #D successors.append(node[i]) successors[11],successors[14] = successors[14],successors[11] b = successors.pop(-1) successors.append(b+'D') for i in range(len(node)): #L successors.append(node[i]) successors[21],successors[20] = successors[20],successors[21] b = successors.pop(-1) successors.append(b+'L') if a == 2: for i in range(len(node)): #L successors.append(node[i]) successors[2],successors[1] = successors[1],successors[2] b = successors.pop(-1) successors.append(b+'L') for i in range(len(node)): #D successors.append(node[i]) successors[12],successors[15] = successors[15],successors[12] b = successors.pop(-1) successors.append(node[-1]+'D') if a == 3: for i in range(len(node)): #R successors.append(node[i]) successors[3],successors[4] = successors[4],successors[3] b = successors.pop(-1) successors.append(b+'R') for i in range(len(node)): #D successors.append(node[i]) successors[13],successors[16] = successors[16],successors[13] b = successors.pop(-1) successors.append(b+'D') for i in range(len(node)): #U successors.append(node[i]) successors[23],successors[20] = successors[20],successors[23] b = successors.pop(-1) successors.append(b+'U') if a == 4: for i in range(len(node)): #R successors.append(node[i]) successors[4],successors[5] = successors[5],successors[4] b = successors.pop(-1) successors.append(b+'R') for i in range(len(node)): #D successors.append(node[i]) successors[14],successors[17] = successors[17],successors[14] b = successors.pop(-1) successors.append(b+'D') for i in range(len(node)): #U successors.append(node[i]) successors[24],successors[21] = successors[21],successors[24] b = successors.pop(-1) successors.append(b+'U') for i in range(len(node)): #L successors.append(node[i]) successors[34],successors[33] = successors[33],successors[34] b = successors.pop(-1) successors.append(b+'L') if a == 5: for i in range(len(node)): #L successors.append(node[i]) successors[5],successors[4] = successors[4],successors[5] b = successors.pop(-1) successors.append(b+'L') for i in range(len(node)): #D successors.append(node[i]) successors[15],successors[18] = successors[18],successors[15] b = successors.pop(-1) successors.append(b+'D') for i in range(len(node)): #U successors.append(node[i]) successors[25],successors[22] = successors[22],successors[25] b = successors.pop(-1) successors.append(b+'U') if a == 6: for i in range(len(node)): #R successors.append(node[i]) successors[6],successors[7] = successors[7],successors[6] b = successors.pop(-1) successors.append(b+'R') for i in range(len(node)): #U successors.append(node[i]) successors[16],successors[13] = successors[13],successors[16] b = successors.pop(-1) successors.append(b+'U') if a == 7: for i in range(len(node)): #L successors.append(node[i]) successors[7],successors[6] = successors[6],successors[7] b = successors.pop(-1) successors.append(b+'L') for i in range(len(node)): #R successors.append(node[i]) successors[17],successors[18] = successors[18],successors[17] b = successors.pop(-1) successors.append(b+'R') for i in range(len(node)): #U successors.append(node[i]) successors[27],successors[24] = successors[24],successors[27] b = successors.pop(-1) successors.append(b+'U') if a == 8: for i in range(len(node)): #L successors.append(node[i]) successors[8],successors[7] = successors[7],successors[8] b = successors.pop(-1) successors.append(b+'L') for i in range(len(node)): #U successors.append(node[i]) successors[18],successors[15] = successors[15],successors[18] b = successors.pop(-1) successors.append(b +'U') return successors #------------------------------------------ |
# 633xxxxx21 117 (2020-09-19 20:34) def gen_successors(node): successors=[] x=node.index(0) if x==0: nodeedit=list(node) nodeedit[0],nodeedit[3]=nodeedit[3],nodeedit[0] nodeedit[9]=node[9]+"D" for y in range(10): successors.append(nodeedit[y]) nodeedit=list(node) nodeedit[0],nodeedit[1]=nodeedit[1],nodeedit[0] nodeedit[9]=node[9]+"R" for y in range(10): successors.append(nodeedit[y]) elif x==1: nodeedit=list(node) nodeedit[1],nodeedit[4]=nodeedit[4],nodeedit[1] nodeedit[9]=node[9]+"D" for y in range(10): successors.append(nodeedit[y]) nodeedit=list(node) nodeedit[1],nodeedit[2]=nodeedit[2],nodeedit[1] nodeedit[9]=node[9]+"R" for y in range(10): successors.append(nodeedit[y]) nodeedit=list(node) nodeedit[1],nodeedit[0]=nodeedit[0],nodeedit[1] nodeedit[9]=node[9]+"L" for y in range(10): successors.append(nodeedit[y]) elif x==2: nodeedit=list(node) nodeedit[2],nodeedit[5]=nodeedit[5],nodeedit[2] nodeedit[9]=node[9]+"D" for y in range(10): successors.append(nodeedit[y]) nodeedit=list(node) nodeedit[2],nodeedit[1]=nodeedit[1],nodeedit[2] nodeedit[9]=node[9]+"L" for y in range(10): successors.append(nodeedit[y]) elif x==3: nodeedit=list(node) nodeedit[3],nodeedit[6]=nodeedit[6],nodeedit[3] nodeedit[9]=node[9]+"D" for y in range(10): successors.append(nodeedit[y]) nodeedit=list(node) nodeedit[3],nodeedit[4]=nodeedit[4],nodeedit[3] nodeedit[9]=node[9]+"R" for y in range(10): successors.append(nodeedit[y]) nodeedit=list(node) nodeedit[3],nodeedit[0]=nodeedit[0],nodeedit[3] nodeedit[9]=node[9]+"U" for y in range(10): successors.append(nodeedit[y]) elif x==4: nodeedit=list(node) nodeedit[4],nodeedit[7]=nodeedit[7],nodeedit[4] nodeedit[9]=node[9]+"D" for y in range(10): successors.append(nodeedit[y]) nodeedit=list(node) nodeedit[4],nodeedit[5]=nodeedit[5],nodeedit[4] nodeedit[9]=node[9]+"R" for y in range(10): successors.append(nodeedit[y]) nodeedit=list(node) nodeedit[4],nodeedit[1]=nodeedit[1],nodeedit[4] nodeedit[9]=node[9]+"U" for y in range(10): successors.append(nodeedit[y]) nodeedit=list(node) nodeedit[4],nodeedit[3]=nodeedit[3],nodeedit[4] nodeedit[9]=node[9]+"L" for y in range(10): successors.append(nodeedit[y]) elif x==5: nodeedit=list(node) nodeedit[5],nodeedit[8]=nodeedit[8],nodeedit[5] nodeedit[9]=node[9]+"D" for y in range(10): successors.append(nodeedit[y]) nodeedit=list(node) nodeedit[5],nodeedit[2]=nodeedit[2],nodeedit[5] nodeedit[9]=node[9]+"U" for y in range(10): successors.append(nodeedit[y]) nodeedit=list(node) nodeedit[5],nodeedit[4]=nodeedit[4],nodeedit[5] nodeedit[9]=node[9]+"L" for y in range(10): successors.append(nodeedit[y]) elif x==6: nodeedit=list(node) nodeedit[6],nodeedit[7]=nodeedit[7],nodeedit[6] nodeedit[9]=node[9]+"R" for y in range(10): successors.append(nodeedit[y]) nodeedit=list(node) nodeedit[6],nodeedit[3]=nodeedit[3],nodeedit[6] nodeedit[9]=node[9]+"U" for y in range(10): successors.append(nodeedit[y]) elif x==7: nodeedit=list(node) nodeedit[7],nodeedit[8]=nodeedit[8],nodeedit[7] nodeedit[9]=node[9]+"R" for y in range(10): successors.append(nodeedit[y]) nodeedit=list(node) nodeedit[7],nodeedit[4]=nodeedit[4],nodeedit[7] nodeedit[9]=node[9]+"U" for y in range(10): successors.append(nodeedit[y]) nodeedit=list(node) nodeedit[7],nodeedit[6]=nodeedit[6],nodeedit[7] nodeedit[9]=node[9]+"L" for y in range(10): successors.append(nodeedit[y]) elif x==8: nodeedit=list(node) nodeedit[8],nodeedit[5]=nodeedit[5],nodeedit[8] nodeedit[9]=node[9]+"U" for y in range(10): successors.append(nodeedit[y]) nodeedit=list(node) nodeedit[8],nodeedit[7]=nodeedit[7],nodeedit[8] nodeedit[9]=node[9]+"L" for y in range(10): successors.append(nodeedit[y]) return successors #------------------------------------------ |
# 633xxxxx21 118 (2020-09-18 14:37) def gen_successors(node): successors = [] node = [1,0,3,4,2,5,7,8,6,'LR'] successors = [4,1,3,2,5,6,7,0,8,'LRL' , 4,1,3,2,5,0,7,8,6,'LRU' , ] return successors #------------------------------------------ |
# 633xxxxx21 119 (2020-09-20 23:26) def gen_successors(node): successors = [] node = [2,3,4,0,5,6,7,8,1,'RL'] successors = \ [2,3,4,7,5,6,0,8,1,'RLD', 2,3,4,5,0,6,7,8,1,'RLR', 0,3,4,2,5,6,7,8,1,'RLU' ] return successors #------------------------------------------ |
# 633xxxxx21 120 (2020-09-19 19:42) def gen_successors(node): successors = [] s1 = list(node) s2 = list(node) s3 = list(node) s4 = list(node) if 0 == node[0]: s1[0], s1[1] = s1[1], s1[0] s1[9] = node[9] + "R" s2[0], s2[3] = s2[3], s2[0] s2[9] = node[9] + "D" successors += s1 successors += s2 elif 0 == node[1]: s1[0], s1[1] = s1[1], s1[0] s1[9] = node[9] + "L" s2[1], s2[2] = s2[2], s2[1] s2[9] = node[9] + "R" s3[1], s3[4] = s3[4], s3[1] s3[9] = node[9] + "D" successors += s1 successors += s2 successors += s3 elif 0 == node[2]: s1[1], s1[2] = s1[2], s1[1] s1[9] = node[9] + "L" s2[2], s2[5] = s2[5], s2[2] s2[9] = node[9] + "D" successors += s1 successors += s2 elif 0 == node[3]: s1[0], s1[3] = s1[3], s1[0] s1[9] = node[9] + "U" s2[3], s2[4] = s2[4], s2[3] s2[9] = node[9] + "R" s3[3], s3[6] = s3[6], s3[3] s3[9] = node[9] + "D" successors += s1 successors += s2 successors += s3 elif 0 == node[4]: s1[1], s1[4] = s1[4], s1[1] s1[9] = node[9] + "U" s2[3], s2[4] = s2[4], s2[3] s2[9] = node[9] + "L" s3[4], s3[5] = s3[5], s3[4] s3[9] = node[9] + "R" s4[4], s4[7] = s4[7], s4[4] s4[9] = node[9] + "D" successors += s1 successors += s2 successors += s3 successors += s4 elif 0 == node[5]: s1[2], s1[5] = s1[5], s1[2] s1[9] = node[9] + "U" s2[4], s2[5] = s2[5], s2[4] s2[9] = node[9] + "L" s3[8], s3[5] = s3[5], s3[8] s3[9] = node[9] + "D" successors += s1 successors += s2 successors += s3 elif 0 == node[6]: s1[3], s1[6] = s1[6], s1[3] s1[9] = node[9] + "U" s2[6], s2[7] = s2[7], s2[6] s2[9] = node[9] + "R" successors += s1 successors += s2 elif 0 == node[7]: s1[4], s1[7] = s1[7], s1[4] s1[9] = node[9] + "U" s2[6], s2[7] = s2[7], s2[6] s2[9] = node[9] + "L" s3[7], s3[8] = s3[8], s3[7] s3[9] = node[9] + "R" successors += s1 successors += s2 successors += s3 elif 0 == node[8]: s1[5], s1[8] = s1[8], s1[5] s1[9] = node[9] + "U" s2[8], s2[7] = s2[7], s2[8] s2[9] = node[9] + "L" successors += s1 successors += s2 return successors # ------------------------------------------ |
# 633xxxxx21 121 (2020-09-20 03:37) def gen_successors(node): successors = [] possible_move = [] N = int((len(node)-1)**(1/2)) locate_0 = node.index(0) x0 = locate_0 % N y0 = locate_0 // N def up(N,node,x0,y0,locate_0): newnode = list(node) xu = x0 yu = y0-1 locate_u = yu*N + xu newnode[locate_0],newnode[locate_u] = \ newnode[locate_u],newnode[locate_0] newnode[-1] += 'U' return newnode def down(N,node,x0,y0,locate_0): newnode = list(node) xd = x0 yd = y0+1 locate_d = yd*N + xd newnode[locate_0],newnode[locate_d] = \ newnode[locate_d],newnode[locate_0] newnode[-1] += 'D' return newnode def left(N,node,x0,y0,locate_0): newnode = list(node) xl = x0-1 yl = y0 locate_l = yl*N + xl newnode[locate_0],newnode[locate_l] = \ newnode[locate_l],newnode[locate_0] newnode[-1] += 'L' return newnode def right(N,node,x0,y0,locate_0): newnode = list(node) xr = x0+1 yr = y0 locate_r = yr*N + xr newnode[locate_0],newnode[locate_r] = \ newnode[locate_r],newnode[locate_0] newnode[-1] += 'R' return newnode if x0 == 0: possible_move.append('R') elif x0 == N-1: possible_move.append('L') else: possible_move.append('R') possible_move.append('L') if y0 == 0: possible_move.append('D') elif y0 == N-1: possible_move.append('U') else: possible_move.append('D') possible_move.append('U') for move in possible_move: if move == 'U': successors += up(N,node,x0,y0,locate_0) elif move == 'D': successors += down(N,node,x0,y0,locate_0) elif move == 'L': successors += left(N,node,x0,y0,locate_0) elif move == 'R': successors += right(N,node,x0,y0,locate_0) return successors #------------------------------------------ |
# 633xxxxx21 122 (2020-09-20 21:46) def gen_successors(node): successors = [] c = len(node)-1 N = int(c**(1/2)) k = node.index(0) if not k%N == 0 : a = node[:] a[k],a[k-1] = a[k-1],a[k] a[-1] += 'L' successors += a if not k%N == N-1 : a = node[:] a[k],a[k+1] = a[k+1],a[k] a[-1] += 'R' successors += a if k > N-1 : a = node[:] a[k],a[k-N] = a[k-N],a[k] a[-1] += 'U' successors += a if k < N*(N-1) : a = node[:] a[k],a[k+N] = a[k+N],a[k] a[-1] += 'D' successors += a return successors #------------------------------------------ |
# 633xxxxx21 123 (2020-09-16 19:42) def gen_successors(node): successors = [] if 0 in node: n = node.index(0) if n == 0: node[0],node[1] = node[1],node[0] for i in range(9): successors.append(node[i]) successors.append(str(node[9])+"R") node[1],node[0] = node[0],node[1] node[0],node[3] = node[3],node[0] for i in range(9): successors.append(node[i]) successors.append(str(node[9])+"D") node[3],node[0] = node[0],node[3] elif n == 1: node[0],node[1] = node[1],node[0] for i in range(9): successors.append(node[i]) successors.append(str(node[9])+"L") node[1],node[0] = node[0],node[1] node[1],node[2] = node[2],node[1] for i in range(9): successors.append(node[i]) successors.append(str(node[9])+"R") node[2],node[1] = node[1],node[2] node[1],node[4] = node[4],node[1] for i in range(9): successors.append(node[i]) successors.append(str(node[9])+"D") node[4],node[1] = node[1],node[4] elif n == 2: node[1],node[2] = node[2],node[1] for i in range(9): successors.append(node[i]) successors.append(str(node[9])+"L") node[2],node[1] = node[1],node[2] node[2],node[5] = node[5],node[2] for i in range(9): successors.append(node[i]) successors.append(str(node[9])+"D") node[5],node[2] = node[2],node[5] elif n == 3: node[0],node[3] = node[3],node[0] for i in range(9): successors.append(node[i]) successors.append(str(node[9])+"U") node[3],node[0] = node[0],node[3] node[3],node[4] = node[4],node[3] for i in range(9): successors.append(node[i]) successors.append(str(node[9])+"R") node[4],node[3] = node[3],node[4] node[3],node[6] = node[6],node[3] for i in range(9): successors.append(node[i]) successors.append(str(node[9])+"D") node[6],node[3] = node[3],node[6] elif n == 4: node[1],node[4] = node[4],node[1] for i in range(9): successors.append(node[i]) successors.append(node[9]+"U") node[4],node[1] = node[1],node[4] node[3],node[4] = node[4],node[3] for i in range(9): successors.append(node[i]) successors.append(node[9]+"L") node[4],node[3] = node[3],node[4] node[4],node[5] = node[5],node[4] for i in range(9): successors.append(node[i]) successors.append(node[9]+"R") node[5],node[4] = node[4],node[5] node[4],node[7] = node[7],node[4] for i in range(9): successors.append(node[i]) successors.append(node[9]+"D") node[7],node[4] = node[4],node[7] elif n == 5: node[4],node[5] = node[5],node[4] for i in range(9): successors.append(node[i]) successors.append(str(node[9])+"L") node[5],node[4] = node[4],node[5] node[2],node[5] = node[5],node[2] for i in range(9): successors.append(node[i]) successors.append(str(node[9])+"U") node[5],node[2] = node[2],node[5] node[8],node[5] = node[5],node[8] for i in range(9): successors.append(node[i]) successors.append(str(node[9])+"D") node[5],node[8] = node[8],node[5] elif n == 6: node[6],node[3] = node[3],node[6] for i in range(9): successors.append(node[i]) successors.append(str(node[9])+"U") node[3],node[6] = node[6],node[3] node[7],node[6] = node[6],node[7] for i in range(9): successors.append(node[i]) successors.append(str(node[9])+"R") node[6],node[7] = node[7],node[6] elif n == 7: node[7],node[6] = node[6],node[7] for i in range(9): successors.append(node[i]) successors.append(str(node[9])+"L") node[6],node[7] = node[7],node[6] node[7],node[4] = node[4],node[7] for i in range(9): successors.append(node[i]) successors.append(str(node[9])+"U") node[4],node[7] = node[7],node[4] node[7],node[8] = node[8],node[7] for i in range(9): successors.append(node[i]) successors.append(str(node[9])+"R") node[8],node[7] = node[7],node[8] elif n == 8: node[7],node[8] = node[8],node[7] for i in range(9): successors.append(node[i]) successors.append(str(node[9])+"L") node[8],node[7] = node[7],node[8] node[5],node[8] = node[8],node[5] for i in range(9): successors.append(node[i]) successors.append(str(node[9])+"U") node[8],node[5] = node[5],node[8] return successors #------------------------------------------ |
# 633xxxxx21 124 (2020-09-20 15:48) def gen_successors(node): successors = [] num = int((len(board))**0.5) i0 = node.index(0) if i0 in range(num,len(board)+1): successor = node[:] successor[i0],successor[i0-num] = successor[i0-num],successor[i0] successors += successor[:] if successor.index(0) in range(0,len(node)+1-num): successors[-1] = successors[-1]+'U' if i0 in range(0,len(board)-num): successor = node[:] successor[i0],successor[i0+num] = successor[i0+num],successor[i0] successors += successor[:] if successor.index(0) in range(num,len(node)+1): successors[-1] = successors[-1]+'D' for i in range(num-1): if i0 in range(i,len(board),num): successor = node[:] successor[i0],successor[i0+1] = successor[i0+1],successor[i0] successors += successor[:] for i in range(num): if successor.index(0) in range(i+1,len(node),num): successors[-1] = successors[-1]+'R' break for i in range(num-1): if i0 in range(i+1,len(node),num): successor = node[:] successor[i0],successor[i0-1] = successor[i0-1],successor[i0] successors += successor[:] for i in range(num): if successor.index(0) in range(i,len(node),num): successors[-1] = successors[-1]+'L' break return successors #------------------------------------------ |
# 633xxxxx21 125 (2020-09-20 17:27) def gen_successors(node): successors = [] di = 1 while di**2+1 != len(node) : di += 1 b = node.index(0) if b > di-1 : op = node[:] op.remove(0) a = op.pop(b-di) op.insert(b-di,0) op.insert(b,a) op[-1] += 'U' successors += op if b < di*(di-1) : op = node[:] a = op.pop(b+di) op.remove(0) op.insert(b,a) op.insert(b+di,0) op[-1] += 'D' successors += op if b % di > 0 : op = node[:] op.remove(0) op.insert(b-1,0) op[-1] += 'L' successors += op if b % di < (di-1) : op = node[:] op.remove(0) op.insert(b+1,0) op[-1] += 'R' successors += op return successors #------------------------------------------ |
# 633xxxxx21 126 (2020-09-20 20:50) def gen_successors(node): successors = [] a = node.index(0) b = '' if a == 0: b = "DR" elif a == 1: b = "LDR" elif a == 2: b = "LD" elif a == 3: b = "URD" elif a == 4: b = "URDL" elif a == 5: b = "UDL" elif a == 6: b = "UR" elif a == 7: b = "LUR" elif a == 8: b = "LU" successors2 = [] for m in b: c = list(node) if m == "U": c[a], c[a-3] = c[a-3], c[a] c[-1] += "U" elif m == "D": c[a], c[a+3] = c[a+3], c[a] c[-1] += "D" elif m == "R": c[a], c[a+1] = c[a+1], c[a] c[-1] += "R" elif m == "L": c[a], c[a-1] = c[a-1], c[a] c[-1] += "L" successors2.append(c) for s in successors2: for ss in s: successors.append(ss) return successors #------------------------------------------ |
# 633xxxxx21 127 (2020-09-20 20:14) def gen_successors(node): successors = [] import math #หาN x N ว่า N=? N = int(math.sqrt(len(node)-1)) #ไม่เอาstr move #def moveขึ้นมาก่อนเเล้วค่อยทำไรต่อ def move_up(node): U = list(node) #สร้างlistใหม่เพื่อไม่ให้มีผลกับของเดิม # https://www.afternerd.com/blog/python-copy-list/ for i in range(len(U)-1): #ไม่เอาstr move if U[i] == 0 : U[i],U[i-N] = U[i-N],U[i] U[len(U)-1] += 'U' break return U def move_left(node): L = list(node) for i in range(len(L)-1): if L[i] == 0 : L[i],L[i-1] = L[i-1],L[i] L[len(L)-1] += 'L' break return L def move_right(node): R = list(node) for i in range(len(R)-1): if R[i] == 0 : R[i],R[i+1] = R[i+1], R[i] R[len(R)-1] += 'R' break return R def move_down(node): D = list(node) for i in range(len(D)-1): if D[i] == 0 : D[i],D[i+N] = D[i+N],D[i] D[len(D)-1] += 'D' break return D #เลือกmoveที่ถูกต้อง for i in range(len(node)) : if node[i] == 0 : if i > N-1 : #บนสุด successors += move_up(node) if i%N != 0 : # ซ้ายสุด successors += move_left(node) if i < (N-1)*N : #ล่างสุด successors += move_down(node) if i%N != N-1 : #ขวาสุด successors += move_right(node) return successors #------------------------------------------ |
# 633xxxxx21 128 (2020-09-19 20:38) def gen_successors(node):# successors = [] b=node[-1] node.pop(-1) n=int(len(node)**0.5) m=len(node) x=0 s=[[] for i in range(n)] for i in range(0,m,n): for j in range(n): s[x].append(node[i+j]) x+=1 row=len(s) col=len(s[0]) for i in range(row): for j in range(col): if s[i][j]==0: r=i c=j #print(s)# #print(r)# #print(c)# G1=[] G2=[] G3=[] G4=[] G5=[] for i in range(1,row-1): G1.append([0,i]) for i in range(1,row-1): G2.append([row-1,i]) for i in range(1,row-1): G3.append([i,0]) for i in range(1,row-1): G4.append([i,row-1]) for i in range(1,row-1): for j in range(1,row-1): G5.append([i,j]) last=len(s[0])-1 if r==0 and c==0: successors=right(r,c,s,b,successors) successors=down(r,c,s,b,successors) elif r==0 and c==last: successors=left(r,c,s,b,successors) successors=down(r,c,s,b,successors) elif r==last and c==0: successors=right(r,c,s,b,successors) successors=up(r,c,s,b,successors) elif r==last and c==last: successors=left(r,c,s,b,successors) successors=up(r,c,s,b,successors) elif [r,c] in G1: successors=down(r,c,s,b,successors) successors=left(r,c,s,b,successors) successors=right(r,c,s,b,successors) elif [r,c] in G2: successors=up(r,c,s,b,successors) successors=left(r,c,s,b,successors) successors=right(r,c,s,b,successors) elif [r,c] in G3: successors=up(r,c,s,b,successors) successors=down(r,c,s,b,successors) successors=right(r,c,s,b,successors) elif [r,c] in G4: successors=up(r,c,s,b,successors) successors=down(r,c,s,b,successors) successors=left(r,c,s,b,successors) elif [r,c] in G5: successors=up(r,c,s,b,successors) successors=down(r,c,s,b,successors) successors=right(r,c,s,b,successors) successors=left(r,c,s,b,successors) return successors #------------------------------------------ def up(r,c,s,b,su): s[r][c],s[r-1][c]=s[r-1][c],s[r][c] su=into(su,s) b+="U" su.append(b) s[r][c],s[r-1][c]=s[r-1][c],s[r][c] return su def into(su,s): for i in range(len(s)): for j in range(len(s[i])): su.append(s[i][j]) return su def right(r,c,s,b,su): s[r][c+1],s[r][c]=s[r][c],s[r][c+1] su=into(su,s) b+="R" su.append(b) s[r][c+1],s[r][c]=s[r][c],s[r][c+1] return su def into(su,s): for i in range(len(s)): for j in range(len(s[i])): su.append(s[i][j]) return su def down(r,c,s,b,su): s[r][c],s[r+1][c]=s[r+1][c],s[r][c] su=into(su,s) b+="D" su.append(b) s[r][c],s[r+1][c]=s[r+1][c],s[r][c] return su def into(su,s): for i in range(len(s)): for j in range(len(s[i])): su.append(s[i][j]) return su def left(r,c,s,b,su): s[r][c-1],s[r][c]=s[r][c],s[r][c-1] su=into(su,s) b+="L" su.append(b) s[r][c-1],s[r][c]=s[r][c],s[r][c-1] return su def into(su,s): for i in range(len(s)): for j in range(len(s[i])): su.append(s[i][j]) return su |
# 633xxxxx21 129 (2020-09-19 16:25) def gen_successors(node): # นีคือจุดที่ต้องทำ (สีเขียว) successors = [] k = 0 for i in range(len(node)-1): if node[i] == 0: if i == 0 or i == 1 or i == 2 or i == 3 or i == 4 or i == 5: a = list(node) aa = a[-1] successors += a successors[successors.index(aa)] += 'D' successors[a.index(0)],successors[a.index(0)+3] = successors[a.index(0)+3],successors[a.index(0)] k += 10 if i == 1 or i == 2 or i == 4 or i == 5 or i == 7 or i == 8: b = list(node) bb = b[-1] successors += b successors[successors.index(bb)] += 'L' successors[b.index(0)+k],successors[b.index(0)+k-1] = successors[b.index(0)+k-1],successors[b.index(0)+k] k += 10 if i == 0 or i == 1 or i == 3 or i == 4 or i == 6 or i == 7: c = list(node) cc = c[-1] successors += c successors[successors.index(cc)] += 'R' successors[c.index(0)+k],successors[c.index(0)+k+1] = successors[c.index(0)+k+1],successors[c.index(0)+k] k += 10 if i-3 >= 0: d = list(node) dd = d[-1] successors += d successors[successors.index(dd)] += 'U' successors[d.index(0)+k],successors[d.index(0)+k-3] = successors[d.index(0)+k-3],successors[d.index(0)+k] return successors #------------------------------------------ |
# 633xxxxx21 130 (2020-09-20 18:34) def gen_successors (node): successors = [] sizzer = int((len(node)-1)**(0.5)) s1 = [] ; s2= [] ; s3 = []; s4 =[] s = [s1,s2,s3,s4] pos = node.index(0) if pos+1 == 1 : for i in range(len(node)): s1.append(node[i]) s2.append(node[i]) s1[-1] = s1[-1]+"R" s2[-1] = s2[-1]+"D" elif 1 < pos+1 < sizzer : for i in range(len(node)): s1.append(node[i]) s2.append(node[i]) s3.append(node[i]) s1[-1] = s1[-1]+"R" s2[-1] = s2[-1]+"D" s3[-1] = s3[-1]+"L" elif pos+1 == sizzer : for i in range(len(node)): s1.append(node[i]) s2.append(node[i]) s1[-1] = s1[-1]+"L" s2[-1] = s2[-1]+"D" elif (pos+1)%sizzer == 1 and pos+1 != 1 and \ pos+1 != (sizzer**2)-(sizzer-1) : for i in range(len(node)): s1.append(node[i]) s2.append(node[i]) s3.append(node[i]) s1[-1] = s1[-1]+"U" s2[-1] = s2[-1]+"R" s3[-1] = s3[-1]+"D" elif (pos+1)%sizzer == 0 and pos+1 != sizzer and \ pos+1 != (sizzer**2) : for i in range(len(node)): s1.append(node[i]) s2.append(node[i]) s3.append(node[i]) s1[-1] = s1[-1]+"U" s2[-1] = s2[-1]+"L" s3[-1] = s3[-1]+"D" elif pos+1 == (sizzer**2)-(sizzer-1) : for i in range(len(node)): s1.append(node[i]) s2.append(node[i]) s1[-1] = s1[-1]+"U" s2[-1] = s2[-1]+"R" elif (sizzer**2)-(sizzer-1) < pos+1 < (sizzer**2) : for i in range(len(node)): s1.append(node[i]) s2.append(node[i]) s3.append(node[i]) s1[-1] = s1[-1]+"R" s2[-1] = s2[-1]+"U" s3[-1] = s3[-1]+"L" elif pos+1 == (sizzer**2): for i in range(len(node)): s1.append(node[i]) s2.append(node[i]) s1[-1] = s1[-1]+"U" s2[-1] = s2[-1]+"L" else : for i in range(len(node)): s1.append(node[i]) s2.append(node[i]) s3.append(node[i]) s4.append(node[i]) s1[-1] = s1[-1]+"U" s2[-1] = s2[-1]+"R" s3[-1] = s3[-1]+"D" s4[-1] = s4[-1]+"L" for i in range(4) : if s[i] != []: if s[i][-1][-1] == "R": s[i][pos+1],s[i][pos] = s[i][pos],s[i][pos+1] elif s[i][-1][-1] == "L": s[i][pos-1],s[i][pos] = s[i][pos],s[i][pos-1] elif s[i][-1][-1] == "U": s[i][pos-sizzer],s[i][pos] = s[i][pos],s[i][pos-sizzer] elif s[i][-1][-1] == "D": s[i][pos+sizzer],s[i][pos] = s[i][pos],s[i][pos+sizzer] for i in range(4): if s[i] != [] : for j in range(len(s[i])): successors.append(s[i][j]) return successors # ------------------------------------------ |
# 633xxxxx21 131 (2020-09-20 19:22) def gen_successors(node): successors = [] gap = node.index(0) gap +=1 up=False down=False left=False right=False if gap <= 3: down=True elif gap >=7: up=True else: up,down=True,True if gap%3==0: left=True elif gap%3==1: right=True else: left,right=True,True gap -= 1 if left: node1=node[::] node1[gap],node1[gap-1]=node1[gap-1],node1[gap] node1[-1] +="L" successors += node1 if right: node1=node[::] node1[gap],node1[gap+1]=node1[gap+1],node1[gap] node1[-1] +="R" successors += node1 if up: node1=node[::] node1[gap],node1[gap-3]=node1[gap-3],node1[gap] node1[-1] +="U" successors += node1 if down: node1=node[::] node1[gap],node1[gap+3]=node1[gap+3],node1[gap] node1[-1] +="D" successors += node1 return successors #------------------------------------------ |
# 633xxxxx21 132 (2020-09-20 00:40) def gen_successors(node): successors = [] board1 = list(board) board2 = list(board) board3 = list(board) board4 = list(board) a = board.index(0) if a == 0 or a==1 or a==2: board1[a],board1[a+3]=board1[a+3],board1[a] board1.append('UDRD') successors = list(board1) if a==0 or a==1: board2[a],board2[a+1]=board2[a+1],board2[a] board2.append('UDRR') successors += list(board2) if a==1: board3[a],board3[a-1]=board3[a-1],board3[a] board3.append('UDRL') successors += list(board3) elif a==2: board2[a],board2[a-1]=board2[a-1],board2[a] board2.append('UDRL') successors += list(board2) elif a == 3 or a==4 or a==5: board1[a],board1[a+3]=board1[a+3],board1[a] board1.append('UDRD') successors = list(board1) if a==3 or a==4: board2[a],board2[a+1]=board2[a+1],board2[a] board2.append('UDRR') successors += list(board2) if a==3: board3[a],board3[a-3]=board3[a-3],board3[a] board3.append('UDRU') successors += list(board3) elif a==4: board3[a],board3[a-1]=board3[a-1],board3[a] board3.append('UDRL') successors += list(board3) if a==4: board4[a],board4[a-3]=board4[a-3],board4[a] board4.append('UDRU') successors += list(board4) elif a==5: board2[a],board2[a-1]=board2[a-1],board2[a] board2.append('UDRL') successors += list(board2) elif a == 6 or a==7 or a==8: board1[a],board1[a-3]=board1[a-3],board1[a] board1.append('UDRU') successors = list(board1) board1 = list(node) if a==6 or a==7: board2[a],board2[a+1]=board2[a+1],board2[a] board2.append('UDRR') successors += list(board2) board2 = list(node) if a==7: board3[a],board3[a-1]=board3[a-1],board3[a] board3.append('UDRL') successors += list(board3) board3 = list(node) elif a==8: board2[a],board2[a-1]=board2[a-1],board2[a] board2.append('UDRL') successors += list(board2) return successors #------------------------------------------ |
# 633xxxxx21 133 (2020-09-19 20:11) def gen_successors(node): successors = [] i = node.index(0) if i == 0: nodeEdit = list(node) nodeEdit[0], nodeEdit[1] = nodeEdit[1], nodeEdit[0] nodeEdit[9] = node[9] + "R" for j in range(10): successors.append(nodeEdit[j]) nodeEdit = list(node) nodeEdit[0], nodeEdit[3] = nodeEdit[3], nodeEdit[0] nodeEdit[9] = node[9] + "D" for j in range(10): successors.append(nodeEdit[j]) elif i == 1: nodeEdit = list(node) nodeEdit[1], nodeEdit[0] = nodeEdit[0], nodeEdit[1] nodeEdit[9] = node[9] + "L" for j in range(10): successors.append(nodeEdit[j]) nodeEdit = list(node) nodeEdit[1], nodeEdit[4] = nodeEdit[4], nodeEdit[1] nodeEdit[9] = node[9] + "D" for j in range(10): successors.append(nodeEdit[j]) nodeEdit = list(node) nodeEdit[1], nodeEdit[2] = nodeEdit[2], nodeEdit[1] nodeEdit[9] = node[9] + "R" for j in range(10): successors.append(nodeEdit[j]) elif i == 2: nodeEdit = list(node) nodeEdit[2], nodeEdit[1] = nodeEdit[1], nodeEdit[2] nodeEdit[9] = node[9] + "L" for j in range(10): successors.append(nodeEdit[j]) nodeEdit = list(node) nodeEdit[2], nodeEdit[5] = nodeEdit[5], nodeEdit[2] nodeEdit[9] = node[9] + "D" for j in range(10): successors.append(nodeEdit[j]) elif i == 3: nodeEdit = list(node) nodeEdit[3], nodeEdit[0] = nodeEdit[0], nodeEdit[3] nodeEdit[9] = node[9] + "U" for j in range(10): successors.append(nodeEdit[j]) nodeEdit = list(node) nodeEdit[3], nodeEdit[4] = nodeEdit[4], nodeEdit[3] nodeEdit[9] = node[9] + "R" for j in range(10): successors.append(nodeEdit[j]) nodeEdit = list(node) nodeEdit[3], nodeEdit[6] = nodeEdit[6], nodeEdit[3] nodeEdit[9] = node[9] + "D" for j in range(10): successors.append(nodeEdit[j]) elif i == 4: nodeEdit = list(node) nodeEdit[4], nodeEdit[1] = nodeEdit[1], nodeEdit[4] nodeEdit[9] = node[9] + "U" for j in range(10): successors.append(nodeEdit[j]) nodeEdit = list(node) nodeEdit[4], nodeEdit[3] = nodeEdit[3], nodeEdit[4] nodeEdit[9] = node[9] + "L" for j in range(10): successors.append(nodeEdit[j]) nodeEdit = list(node) nodeEdit[4], nodeEdit[5] = nodeEdit[5], nodeEdit[4] nodeEdit[9] = node[9] + "R" for j in range(10): successors.append(nodeEdit[j]) nodeEdit = list(node) nodeEdit[4], nodeEdit[7] = nodeEdit[7], nodeEdit[4] nodeEdit[9] = node[9] + "D" for j in range(10): successors.append(nodeEdit[j]) elif i == 5: nodeEdit = list(node) nodeEdit[5], nodeEdit[2] = nodeEdit[2], nodeEdit[5] nodeEdit[9] = node[9] + "U" for j in range(10): successors.append(nodeEdit[j]) nodeEdit = list(node) nodeEdit[5], nodeEdit[4] = nodeEdit[4], nodeEdit[5] nodeEdit[9] = node[9] + "L" for j in range(10): successors.append(nodeEdit[j]) nodeEdit = list(node) nodeEdit[5], nodeEdit[8] = nodeEdit[8], nodeEdit[5] nodeEdit[9] = node[9] + "D" for j in range(10): successors.append(nodeEdit[j]) elif i == 6: nodeEdit = list(node) nodeEdit[6], nodeEdit[3] = nodeEdit[3], nodeEdit[6] nodeEdit[9] = node[9] + "U" for j in range(10): successors.append(nodeEdit[j]) nodeEdit = list(node) nodeEdit[6], nodeEdit[7] = nodeEdit[7], nodeEdit[6] nodeEdit[9] = node[9] + "R" for j in range(10): successors.append(nodeEdit[j]) elif i == 7: nodeEdit = list(node) nodeEdit[7], nodeEdit[4] = nodeEdit[4], nodeEdit[7] nodeEdit[9] = node[9] + "U" for j in range(10): successors.append(nodeEdit[j]) nodeEdit = list(node) nodeEdit[7], nodeEdit[6] = nodeEdit[6], nodeEdit[7] nodeEdit[9] = node[9] + "L" for j in range(10): successors.append(nodeEdit[j]) nodeEdit = list(node) nodeEdit[7], nodeEdit[8] = nodeEdit[8], nodeEdit[7] nodeEdit[9] = node[9] + "R" for j in range(10): successors.append(nodeEdit[j]) elif i == 8: nodeEdit = list(node) nodeEdit[8], nodeEdit[5] = nodeEdit[5], nodeEdit[8] nodeEdit[9] = node[9] + "U" for j in range(10): successors.append(nodeEdit[j]) nodeEdit = list(node) nodeEdit[8], nodeEdit[7] = nodeEdit[7], nodeEdit[8] nodeEdit[9] = node[9] + "L" for j in range(10): successors.append(nodeEdit[j]) return successors #------------------------------------------ |
# 633xxxxx21 134 (2020-09-19 21:55) def gen_successors(node): # A B C # D E F # G H I #A-RD B-LRD C-LD #D-RUD E-LRUD F-LUD #G-RU H-LRU I-LU successors = [] i = node.index(0) def R(node) : new_node = list(node) (new_node[i], new_node[i+1]) = (new_node[i+1], new_node[i]) new_node[9] = node[9] + "R" successors.extend(new_node) def L(node) : new_node = list(node) (new_node[i-1], new_node[i]) = (new_node[i], new_node[i-1]) new_node[9] = node[9] + "L" successors.extend(new_node) def U(node): new_node = list(node) (new_node[i], new_node[i-3]) = (new_node[i-3], new_node[i]) new_node[9] = node[9] + "U" successors.extend(new_node) def D(node): new_node = list(node) (new_node[i], new_node[i+3]) = (new_node[i+3], new_node[i]) new_node[9] = node[9] + "L" successors.extend(new_node) if i == 0: R(node) D(node) elif i == 1: L(node) D(node) R(node) elif i == 2: L(node) D(node) elif i == 3: U(node) D(node) R(node) elif i == 4: L(node) D(node) R(node) U(node) elif i == 5: L(node) D(node) U(node) elif i == 6: R(node) U(node) elif i == 7: L(node) R(node) U(node) elif i == 8: L(node) U(node) return successors #------------------------------------------ |
# 633xxxxx21 135 (2020-09-20 23:03) def gen_successors(node): successors = [] if 0 == [node[0]]: successors += [node[3],node[1],node[2],node[0],node[4],node[5],node[6],node[7],node[8],node[9].append("D")\ ,node[1],node[0],node[2],node[3],node[4],node[5],node[6],node[7],node[8],node[9].append("R")] elif 0 == [node[1]]: successors += [node[0],node[4],node[2],node[3],node[1],node[5],node[6],node[7],node[8],node[9].append("D")\ ,node[1],node[1],node[2],node[3],node[4],node[5],node[6],node[7],node[8],node[9].append("L")\ ,node[0],node[2],node[1],node[3],node[4],node[5],node[6],node[7],node[8],node[9].append("R")] elif 0 == [node[2]]: successors += [node[0],node[1],node[5],node[3],node[4],node[2],node[6],node[7],node[8],node[9].append("D")\ ,node[0],node[2],node[1],node[3],node[4],node[5],node[6],node[7],node[8],node[9].append("L")] elif 0 == [node[3]]: successors += [node[3],node[1],node[2],node[0],node[4],node[5],node[6],node[7],node[8],node[9].append("U")\ ,node[0],node[1],node[2],node[6],node[4],node[5],node[3],node[7],node[8],node[9].append("D")\ ,node[0],node[1],node[2],node[4],node[3],node[5],node[6],node[7],node[8],node[9].append("R")] elif 0 == [node[4]]: successors += [node[0],node[4],node[2],node[3],node[1],node[5],node[6],node[7],node[8],node[9].append("U")\ ,node[0],node[1],node[2],node[3],node[7],node[5],node[6],node[4],node[8],node[9].append("D")\ ,node[0],node[1],node[2],node[4],node[3],node[5],node[6],node[7],node[8],node[9].append("L")\ ,node[0],node[1],node[2],node[3],node[5],node[4],node[6],node[7],node[8],node[9].append("R")] elif 0 == [node[5]]: successors += [node[0],node[1],node[5],node[3],node[4],node[2],node[6],node[7],node[8],node[9].append("U")\ ,node[0],node[1],node[2],node[3],node[4],node[8],node[6],node[7],node[5],node[9].append("D")\ ,node[0],node[1],node[2],node[3],node[5],node[4],node[6],node[7],node[8],node[9].append("L")] elif 0 == [node[6]]: successors += [node[0],node[1],node[2],node[6],node[4],node[5],node[3],node[7],node[8],node[9].append("U")\ ,node[0],node[1],node[2],node[3],node[4],node[5],node[7],node[6],node[8],node[9].append("R")] elif 0 == [node[7]]: successors += [node[0],node[1],node[2],node[3],node[7],node[5],node[6],node[4],node[8],node[9].append("U")\ ,node[0],node[1],node[2],node[3],node[4],node[5],node[7],node[6],node[8],node[9].append("L")\ ,node[0],node[1],node[2],node[3],node[4],node[5],node[6],node[8],node[7],node[9].append("R")] elif 0 == [node[8]]: successors += [node[0],node[1],node[2],node[3],node[4],node[8],node[6],node[7],node[5],node[9].append("U")\ ,node[0],node[1],node[2],node[3],node[4],node[5],node[6],node[8],node[7],node[9].append("L")] return successors #------------------------------------------ |
# 633xxxxx21 136 (2020-09-20 22:45) def gen_successors(node): import math successors = [] n = int(math.sqrt((len(node)-1))) blank = node.index(0) method = '' m = n-2 center = [] c = 1 while m>0: for i in range((c*n)+1, (c*n)+n-1): center.append(i) c+=1 m-=1 if blank == 0: method = 'DR' elif blank in range(1, n-1): method = 'LDR' elif blank == n-1: method = 'LD' elif blank in range(n, (n-2)*n+1, n): method = 'UDR' elif blank in center: method = 'URDL' elif blank in range(2*n-1, (n-1)*n, n): method = 'UDL' elif blank == (n-1)*n: method = 'UR' elif blank in range(((n-1)*n)+1, n**2-1): method = 'LUR' elif blank == n**2-1: method = 'LU' successorss = [] for m in method: node_temp = list(node) if m == 'U': node_temp[blank], node_temp[blank-n] = node_temp[blank-n], node_temp[blank] node_temp[-1]+='U' elif m == 'D': node_temp[blank], node_temp[blank+n] = node_temp[blank+n], node_temp[blank] node_temp[-1]+='D' elif m == 'R': node_temp[blank], node_temp[blank+1] = node_temp[blank+1], node_temp[blank] node_temp[-1]+='R' elif m == 'L': node_temp[blank], node_temp[blank-1] = node_temp[blank-1], node_temp[blank] node_temp[-1]+='L' successorss.append(node_temp) for s in successorss: for ss in s: successors.append(ss) return successors #------------------------------------------ |
# 633xxxxx21 137 (2020-09-20 19:24) def gen_successors(node): successors = [] p = node.index(0) N = len(board) n = int(N**0.5) node1 = list(node[:-1]) board1 = list(node1) board2 = list(node1) board3 = list(node1) board4 = list(node1) if p < n :#แถวบน if p == 0: board1[0],board1[1] = board1[1],board1[0] successors += board1 + [node[-1]+'R'] board2[0],board2[n] = board2[n],board2[0] successors += board2 + [node[-1]+'D'] elif p == n-1: board1[n-1],board1[n-2] = board1[n-2],board1[n-1] successors += board1 + [node[-1]+'L'] board2[n-1],board2[(2*n)-1] = board2[(2*n)-1],board2[n-1] successors += board2 + [node[-1]+'D'] else: board1[p],board1[p+1] = board1[p+1],board1[p] successors += board1 + [node[-1]+'R'] board2[p],board2[p-1] = board2[p-1],board2[p] successors += board2 + [node[-1]+'L'] board3[p],board3[p+n] = board3[p+n],board3[p] successors += board3 + [node[-1]+'D'] elif p > (N-n)-1: if p == N-n: board1[N-n],board1[N-n+1] = board1[N-n+1],board1[N-n] successors += board1 + [node[-1]+'R'] board2[N-n],board2[N-(2*n)] = board2[N-(2*n)],board2[N-n] successors += board2 + [node[-1]+'U'] elif p == N-1: board1[N-1],board1[N-2] = board1[N-2],board1[N-1] successors += board1 + [node[-1]+'L'] board2[N-1],board2[N-n-1] = board2[N-n-1],board2[N-1] successors += board2 + [node[-1]+'U'] else: board1[p],board1[p+1] = board1[p+1],board1[p] successors += board1 + [node[-1]+'R'] board2[p],board2[p-1] = board2[p-1],board2[p] successors += board2 + [node[-1]+'L'] board3[p],board3[p-n] = board3[p-n],board3[p] successors += board3 + [node[-1]+'U'] elif p%n == 0 : board1[p],board1[p-n] = board1[p-n],board1[p] successors += board1 + [node[-1]+'U'] board2[p],board2[p+1] = board2[p+1],board2[p] successors += board2 + [node[-1]+'R'] board3[p],board3[p+n] = board3[p+n],board3[p] successors += board3 + [node[-1]+'D'] elif (p+1)%n == 0 : board1[p],board1[p-n] = board1[p-n],board1[p] successors += board1 + [node[-1]+'U'] board2[p],board2[p-1] = board2[p-1],board2[p] successors += board2 + [node[-1]+'L'] board3[p],board3[p+n] = board3[p+n],board3[p] successors += board3 + [node[-1]+'D'] else : board1[p],board1[p-n] = board1[p-n],board1[p] successors += board1 + [node[-1]+'U'] board2[p],board2[p-1] = board2[p-1],board2[p] successors += board2 + [node[-1]+'L'] board3[p],board3[p+1] = board3[p+1],board3[p] successors += board3 + [node[-1]+'R'] board4[p],board4[p+n] = board4[p+n],board4[p] successors += board4 + [node[-1]+'D'] return successors #------------------------------------------ |
# 633xxxxx21 138 (2020-09-20 21:46) def gen_successors(node): successors = [] n = int(math.sqrt(len(board))) z = node.index(0) if z%n != n-1: a = node[:] a[z],a[z+1] = a[z+1],a[z] a[-1] += 'R' successors += a if z%n != 0: a = node[:] a[z],a[z-1] = a[z-1],a[z] a[-1] += 'L' successors += a if z < n**2 - n: a = node[:] a[z],a[z+n] = a[z+n],a[z] a[-1] += 'D' successors += a if z >= n : a = node[:] a[z],a[z-n] = a[z-n],a[z] a[-1] += 'U' successors += a return successors #------------------------------------------ |
# 633xxxxx21 139 (2020-09-20 23:43) def gen_successors(node): successors = [] successors = [] a = [] str_suc = [] str_node = [] if 0 == board[0]: a += ["R"] a += ["D"] elif 0 == board[1]: a += ["L"] a += ["R"] a += ["D"] elif 0 == board[2]: a += ["L"] a += ["D"] elif 0 == board[3]: a += ["U"] a += ["R"] a += ["D"] elif 0 == board[4]: a += ["U"] a += ["L"] a += ["R"] a += ["D"] elif 0 == board[5]: a += ["U"] a += ["L"] a += ["D"] elif 0 == board[6]: a += ["U"] a += ["R"] elif 0 == board[7]: a += ["L"] a += ["U"] a += ["R"] elif 0 == board[8]: a += ["L"] a += ["U"] successors = board #print(a) for i in a: for j in successors: if j == 0: index = successors.index(0) str_node = [] #print("index = ",index) if i == 'U': successors[index-3],successors[index] = successors[index],successors[index-3] str = node[9]+'U' str_node.append(str) str_suc += successors+str_node successors[index],successors[index-3] = successors[index-3],successors[index] elif i == 'L': successors[index-1],successors[index] = successors[index],successors[index-1] str = node[9]+'L' str_node.append(str) str_suc += successors+str_node successors[index],successors[index-1] = successors[index-1],successors[index] elif i == 'R': successors[index+1],successors[index] = successors[index],successors[index+1] str = node[9]+'R' str_node.append(str) str_suc += successors+str_node successors[index],successors[index+1] = successors[index+1],successors[index] elif i == 'D': successors[index+3],successors[index] = successors[index],successors[index+3] str = node[9]+'D' str_node.append(str) str_suc += successors+str_node successors[index],successors[index+3] = successors[index+3],successors[index] successors = str_suc return successors #------------------------------------------ |
# 633xxxxx21 140 (2020-09-20 23:31) def gen_successors(node): successors = [] a = node.index(0) htw = '' if a == 0: htw = ["D","R"] elif a == 1:htw = ["L","R","D"] elif a == 2:htw = ["L","D"] elif a == 3:htw = ["U","D","R",] elif a == 4:htw = ["U","R","D","L"] elif a == 5:htw = ["U","L","D"] elif a == 6:htw = ["U","R"] elif a == 7:htw = ["L","U","R"] elif a == 8:htw = ["L","U"] b = [] for find in htw: z = list(node) if find == "U": z[a], z[a-3] = z[a-3], z[a] z[-1]+="U" elif find == "D": z[a], z[a+3] = z[a+3], z[a] z[-1]+="D" elif find == "L": z[a], z[a-1] = z[a-1], z[a] z[-1]+="L" elif find == "R": z[a], z[a+1] = z[a+1], z[a] z[-1]+="R" b.append(z) for s in b: for c in s: successors.append(c) return successors #------------------------------------------ |
# 633xxxxx21 141 (2020-09-20 12:19) def gen_successors(node): successors = [] if 0 in node: a = node.index(0) if a == 0: for i in range(len(node)): #R successors.append(node[i]) successors[0],successors[1] = successors[1],successors[0] b = successors.pop(-1) successors.append(b+'R') for i in range(len(node)): #D successors.append(node[i]) successors[10],successors[13] = successors[13],successors[10] b = successors.pop(-1) successors.append(node[-1]+'D') if a == 1: for i in range(len(node)): #R successors.append(node[i]) successors[1],successors[2] = successors[2],successors[1] b = successors.pop(-1) successors.append(b+'R') for i in range(len(node)): #D successors.append(node[i]) successors[11],successors[14] = successors[14],successors[11] b = successors.pop(-1) successors.append(b+'D') for i in range(len(node)): #L successors.append(node[i]) successors[21],successors[20] = successors[20],successors[21] b = successors.pop(-1) successors.append(b+'L') if a == 2: for i in range(len(node)): #L successors.append(node[i]) successors[2],successors[1] = successors[1],successors[2] b = successors.pop(-1) successors.append(b+'L') for i in range(len(node)): #D successors.append(node[i]) successors[12],successors[15] = successors[15],successors[12] b = successors.pop(-1) successors.append(node[-1]+'D') if a == 3: for i in range(len(node)): #R successors.append(node[i]) successors[3],successors[4] = successors[4],successors[3] b = successors.pop(-1) successors.append(b+'R') for i in range(len(node)): #D successors.append(node[i]) successors[13],successors[16] = successors[16],successors[13] b = successors.pop(-1) successors.append(b+'D') for i in range(len(node)): #U successors.append(node[i]) successors[23],successors[20] = successors[20],successors[23] b = successors.pop(-1) successors.append(b+'U') if a == 4: for i in range(len(node)): #R successors.append(node[i]) successors[4],successors[5] = successors[5],successors[4] b = successors.pop(-1) successors.append(b+'R') for i in range(len(node)): #D successors.append(node[i]) successors[14],successors[17] = successors[17],successors[14] b = successors.pop(-1) successors.append(b+'D') for i in range(len(node)): #U successors.append(node[i]) successors[24],successors[21] = successors[21],successors[24] b = successors.pop(-1) successors.append(b+'U') for i in range(len(node)): #L successors.append(node[i]) successors[34],successors[33] = successors[33],successors[34] b = successors.pop(-1) successors.append(b+'L') if a == 5: for i in range(len(node)): #L successors.append(node[i]) successors[5],successors[4] = successors[4],successors[5] b = successors.pop(-1) successors.append(b+'L') for i in range(len(node)): #D successors.append(node[i]) successors[15],successors[18] = successors[18],successors[15] b = successors.pop(-1) successors.append(b+'D') for i in range(len(node)): #U successors.append(node[i]) successors[25],successors[22] = successors[22],successors[25] b = successors.pop(-1) successors.append(b+'U') if a == 6: for i in range(len(node)): #R successors.append(node[i]) successors[6],successors[7] = successors[7],successors[6] b = successors.pop(-1) successors.append(b+'R') for i in range(len(node)): #U successors.append(node[i]) successors[16],successors[13] = successors[13],successors[16] b = successors.pop(-1) successors.append(node[-1]+'U') if a == 7: for i in range(len(node)): #L successors.append(node[i]) successors[7],successors[6] = successors[6],successors[7] b = successors.pop(-1) successors.append(b+'L') for i in range(len(node)): #R successors.append(node[i]) successors[17],successors[18] = successors[18],successors[17] b = successors.pop(-1) successors.append(b+'R') for i in range(len(node)): #U successors.append(node[i]) successors[27],successors[24] = successors[24],successors[27] b = successors.pop(-1) successors.append(b+'U') if a == 8: for i in range(len(node)): #L successors.append(node[i]) successors[8],successors[7] = successors[7],successors[8] b = successors.pop(-1) successors.append(b+'L') for i in range(len(node)): successors.append(node[i]) successors[18],successors[15] = successors[15],successors[18] b = successors.pop(-1) successors.append(node[-1]+'U') return successors #------------------------------------------ |
# 633xxxxx21 142 (2020-09-20 23:36) def gen_successors(table): successors = [] blank = table.index(0) solution = '' if blank == 0: solution = 'DR' elif blank == 1: solution = 'LDR' elif blank == 2: solution = 'LD' elif blank == 3: solution = 'URD' elif blank == 4: solution = 'URDL' elif blank == 5: solution = 'UDL' elif blank == 6: solution = 'UR' elif blank == 7: solution = 'LUR' elif blank == 8: solution = 'LU' hold = [] for m in solution: table_1 = list(table) if m == 'U': table_1[blank], table_1[blank-3] = table_1[blank-3], table_1[blank] table_1[-1]+='U' elif m == 'D': table_1[blank], table_1[blank+3] = table_1[blank+3], table_1[blank] table_1[-1]+='D' elif m == 'R': table_1[blank], table_1[blank+1] = table_1[blank+1], table_1[blank] table_1[-1]+='R' elif m == 'L': table_1[blank], table_1[blank-1] = table_1[blank-1], table_1[blank] table_1[-1]+='L' hold.append(table_1) for s in hold: for x in s: successors.append(x) return successors #------------------------------------------ |
# 633xxxxx21 143 (2020-09-20 23:43) def gen_successors(node): # UDLR successors = [] pos = node.index(0) le = len(board) n = (len(board))**(1/2) n = int(n) def U(pos): new = list(node) new[le] = node[le] + 'U' new[pos], new[pos - n] = new[pos - n], new[pos] successors.extend(new) def D(pos): new = list(node) new[le] = node[le] + 'D' new[pos], new[pos + n] = new[pos + n], new[pos] successors.extend(new) def L(pos): new = list(node) new[le] = node[le] + 'L' new[pos], new[pos - 1] = new[pos - 1], new[pos] successors.extend(new) def R(pos): new = list(node) new[le] = node[le] + 'R' new[pos], new[pos+1] = new[pos+1], new[pos] successors.extend(new) cantu = (0 <= pos <= n-1) cantd = (n*(n-1) <= pos <= (n*n)-1) cantl = (pos%n == 0) cantr = (pos%n == n-1) if cantu and cantl: R(pos) D(pos) elif cantr and cantu: L(pos) D(pos) elif cantd and cantl: U(pos) R(pos) elif cantd and cantr: U(pos) L(pos) elif cantu: L(pos) D(pos) R(pos) elif cantr: U(pos) D(pos) L(pos) elif cantl: U(pos) D(pos) R(pos) elif cantd: L(pos) U(pos) R(pos) else: L(pos) U(pos) D(pos) R(pos) return successors # ------------------------------------------ |
# 633xxxxx21 144 (2020-09-20 22:48) def gen_successors(node): successors = [] i = node.index(0) if i == 0: nodeEdit = list(node) nodeEdit[0], nodeEdit[1] = nodeEdit[1], nodeEdit[0] nodeEdit[9] = node[9] + "R" successors.extend(nodeEdit) nodeEdit = list(node) nodeEdit[0], nodeEdit[3] = nodeEdit[3], nodeEdit[0] nodeEdit[9] = node[9] + "D" successors.extend(nodeEdit) elif i == 1: nodeEdit = list(node) nodeEdit[1], nodeEdit[0] = nodeEdit[0], nodeEdit[1] nodeEdit[9] = node[9] + "L" successors.extend(nodeEdit) nodeEdit = list(node) nodeEdit[1], nodeEdit[4] = nodeEdit[4], nodeEdit[1] nodeEdit[9] = node[9] + "D" successors.extend(nodeEdit) nodeEdit = list(node) nodeEdit[1], nodeEdit[2] = nodeEdit[2], nodeEdit[1] nodeEdit[9] = node[9] + "R" successors.extend(nodeEdit) elif i == 2: nodeEdit = list(node) nodeEdit[2], nodeEdit[1] = nodeEdit[1], nodeEdit[2] nodeEdit[9] = node[9] + "L" successors.extend(nodeEdit) nodeEdit = list(node) nodeEdit[2], nodeEdit[5] = nodeEdit[5], nodeEdit[2] nodeEdit[9] = node[9] + "D" successors.extend(nodeEdit) elif i == 3: nodeEdit = list(node) nodeEdit[3], nodeEdit[0] = nodeEdit[0], nodeEdit[3] nodeEdit[9] = node[9] + "U" successors.extend(nodeEdit) nodeEdit = list(node) nodeEdit[3], nodeEdit[4] = nodeEdit[4], nodeEdit[3] nodeEdit[9] = node[9] + "R" successors.extend(nodeEdit) nodeEdit = list(node) nodeEdit[3], nodeEdit[6] = nodeEdit[6], nodeEdit[3] nodeEdit[9] = node[9] + "D" successors.extend(nodeEdit) elif i == 4: nodeEdit = list(node) nodeEdit[4], nodeEdit[1] = nodeEdit[1], nodeEdit[4] nodeEdit[9] = node[9] + "U" successors.extend(nodeEdit) nodeEdit = list(node) nodeEdit[4], nodeEdit[3] = nodeEdit[3], nodeEdit[4] nodeEdit[9] = node[9] + "L" successors.extend(nodeEdit) nodeEdit = list(node) nodeEdit[4], nodeEdit[5] = nodeEdit[5], nodeEdit[4] nodeEdit[9] = node[9] + "R" successors.extend(nodeEdit) nodeEdit = list(node) nodeEdit[4], nodeEdit[7] = nodeEdit[7], nodeEdit[4] nodeEdit[9] = node[9] + "D" successors.extend(nodeEdit) elif i == 5: nodeEdit = list(node) nodeEdit[5], nodeEdit[2] = nodeEdit[2], nodeEdit[5] nodeEdit[9] = node[9] + "U" successors.extend(nodeEdit) nodeEdit = list(node) nodeEdit[5], nodeEdit[4] = nodeEdit[4], nodeEdit[5] nodeEdit[9] = node[9] + "L" successors.extend(nodeEdit) nodeEdit = list(node) nodeEdit[5], nodeEdit[8] = nodeEdit[8], nodeEdit[5] nodeEdit[9] = node[9] + "D" successors.extend(nodeEdit) elif i == 6: nodeEdit = list(node) nodeEdit[6], nodeEdit[3] = nodeEdit[3], nodeEdit[6] nodeEdit[9] = node[9] + "U" successors.extend(nodeEdit) nodeEdit = list(node) nodeEdit[6], nodeEdit[7] = nodeEdit[7], nodeEdit[6] nodeEdit[9] = node[9] + "R" successors.extend(nodeEdit) elif i == 7: nodeEdit = list(node) nodeEdit[7], nodeEdit[4] = nodeEdit[4], nodeEdit[7] nodeEdit[9] = node[9] + "U" successors.extend(nodeEdit) nodeEdit = list(node) nodeEdit[7], nodeEdit[6] = nodeEdit[6], nodeEdit[7] nodeEdit[9] = node[9] + "L" successors.extend(nodeEdit) nodeEdit = list(node) nodeEdit[7], nodeEdit[8] = nodeEdit[8], nodeEdit[7] nodeEdit[9] = node[9] + "R" successors.extend(nodeEdit) elif i == 8: nodeEdit = list(node) nodeEdit[8], nodeEdit[5] = nodeEdit[5], nodeEdit[8] nodeEdit[9] = node[9] + "U" successors.extend(nodeEdit) nodeEdit = list(node) nodeEdit[8], nodeEdit[7] = nodeEdit[7], nodeEdit[8] nodeEdit[9] = node[9] + "L" successors.extend(nodeEdit) return successors #------------------------------------------ |
# 633xxxxx21 145 (2020-09-20 23:44) def gen_successors(node): N = int(math.sqrt(len(node)-1)) tnode = list(node) successors = [] if N-1<node.index(0)<N**2: tnode[node.index(0)],tnode[node.index(0)-N]=tnode[node.index(0)-N],tnode[node.index(0)] tnode[N**2]+='U' successors.extend(list(tnode)) tnode = list(node) if 0<=node.index(0)<N**2-N: tnode[node.index(0)],tnode[node.index(0)+N]=tnode[node.index(0)+N],tnode[node.index(0)] tnode[N**2]+='D' successors.extend(list(tnode)) tnode = list(node) if node.index(0)%N!=0: tnode[node.index(0)],tnode[node.index(0)-1]=tnode[node.index(0)-1],tnode[node.index(0)] tnode[N**2]+='L' successors.extend(list(tnode)) tnode = list(node) if (node.index(0)+1)%N!=0: tnode[node.index(0)],tnode[node.index(0)+1]=tnode[node.index(0)+1],tnode[node.index(0)] tnode[N**2]+='R' successors.extend(list(tnode)) tnode = list(node) return successors #------------------------------------------ |
# 633xxxxx21 146 (2020-09-20 22:49) def gen_successors(node): successors = [] M = len(board) m = int(sqrt(M)) pl = node.index(0) node1 = node[:-1] bcpy1 = list(node1) bcpy2 = list(node1) bcpy3 = list(node1) bcpy4 = list(node1) if pl < m : if pl == 0: bcpy1[pl],bcpy1[pl+1] = bcpy1[pl+1],bcpy1[pl] successors += bcpy1+[node[-1]+'R'] bcpy2[pl],bcpy2[pl+m] = bcpy2[pl+m],bcpy2[pl] successors += bcpy1+[node[-1]+'D'] elif pl == m-1: bcpy1[pl],bcpy1[pl-1] = bcpy1[pl-1],bcpy1[pl] successors += bcpy1+[node[-1]+'L'] bcpy2[pl],bcpy2[pl+m] = bcpy2[pl+m],bcpy2[pl] successors += bcpy2+[node[-1]+'D'] else : bcpy1[pl],bcpy1[pl+1] = bcpy1[pl+1],bcpy1[pl] successors += bcpy1+[node[-1]+'R'] bcpy2[pl],bcpy2[pl-1] = bcpy2[pl-1],bcpy2[pl] successors += bcpy2+[node[-1]+'L'] bcpy3[pl],bcpy3[pl+m] = bcpy3[pl+m],bcpy3[pl] successors += bcpy3+[node[-1]+'D'] elif pl > M-m-1 : if pl%m == 0: bcpy1[pl],bcpy1[pl+1] = bcpy1[pl+1],bcpy1[pl] successors += bcpy1+[node[-1]+'R'] bcpy2[pl],bcpy2[pl-m] = bcpy2[pl-m],bcpy2[pl] successors += bcpy2+[node[-1]+'U'] elif pl == M-1 : bcpy1[pl],bcpy1[pl-1] = bcpy1[pl-1],bcpy1[pl] successors += bcpy1+[node[-1]+'L'] bcpy2[pl],bcpy2[pl-m] = bcpy2[pl-m],bcpy2[pl] successors += bcpy2+[node[-1]+'U'] else : bcpy1[pl],bcpy1[pl+1] = bcpy1[pl+1],bcpy1[pl] successors += bcpy1+[node[-1]+'R'] bcpy2[pl],bcpy2[pl-1] = bcpy2[pl-1],bcpy2[pl] successors += bcpy2+[node[-1]+'L'] bcpy3[pl],bcpy3[pl-m] = bcpy3[pl-m],bcpy3[pl] successors += bcpy3+[node[-1]+'U'] elif pl%m == 0: bcpy1[pl],bcpy1[pl+1] = bcpy1[pl+1],bcpy1[pl] successors += bcpy1+[node[-1]+'R'] bcpy2[pl],bcpy2[pl-m] = bcpy2[pl-m],bcpy2[pl] successors += bcpy2+[node[-1]+'U'] bcpy3[pl],bcpy3[pl+m] = bcpy3[pl+m],bcpy3[pl] successors += bcpy3+[node[-1]+'D'] elif (pl+1)%m == 0: bcpy1[pl],bcpy1[pl-1] = bcpy1[pl-1],bcpy1[pl] successors += bcpy1+[node[-1]+'L'] bcpy2[pl],bcpy2[pl-m] = bcpy2[pl-m],bcpy2[pl] successors += bcpy2+[node[-1]+'U'] bcpy3[pl],bcpy3[pl+m] = bcpy3[pl+m],bcpy3[pl] successors += bcpy3+[node[-1]+'D'] else : bcpy1[pl],bcpy1[pl-1] = bcpy1[pl-1],bcpy1[pl] successors += bcpy1+[node[-1]+'L'] bcpy2[pl],bcpy2[pl-m] = bcpy2[pl-m],bcpy2[pl] successors += bcpy2+[node[-1]+'U'] bcpy3[pl],bcpy3[pl+m] = bcpy3[pl+m],bcpy3[pl] successors += bcpy3+[node[-1]+'D'] bcpy4[pl],bcpy4[pl+1] = bcpy4[pl+1],bcpy4[pl] successors += bcpy4+[node[-1]+'R'] return successors #------------------------------------------ |
# 633xxxxx21 147 (2020-09-20 21:11) def gen_successors(node): successors = [] N = len(board) n,pl,node1 = int(N**0.5),node.index(0),list(node) bcpy1,bcpy2,bcpy3,bcpy4 = list(node1),list(node1),list(node1),list(node1) bcpy1[-1]+='U';bcpy2[-1]+='D';bcpy3[-1]+='R';bcpy4[-1]+='L' if pl < n : #อยู่บนสุด if pl == 0: #อยู่บนซ้ายสุด bcpy3[pl],bcpy3[pl+1] = bcpy3[pl+1],bcpy3[pl] #สลับขวา successors += bcpy3 bcpy2[pl],bcpy2[pl+n] = bcpy2[pl+n],bcpy2[pl] #สลับล่าง successors += bcpy2 elif pl == n-1: #อยู่บนขวาสุด bcpy4[pl],bcpy4[pl-1] = bcpy4[pl-1],bcpy4[pl] #สลับซ้าย successors += bcpy4 bcpy2[pl],bcpy2[pl+n] = bcpy2[pl+n],bcpy2[pl] #สลับล่าง successors += bcpy2 else : #ตัดหัวท้าย bcpy3[pl],bcpy3[pl+1] = bcpy3[pl+1],bcpy3[pl] #สลับขวา successors += bcpy3 bcpy4[pl],bcpy4[pl-1] = bcpy4[pl-1],bcpy4[pl] #สลับซ้าย successors += bcpy4 bcpy2[pl],bcpy2[pl+n] = bcpy2[pl+n],bcpy2[pl] #สลับล่าง successors += bcpy2 elif pl > N-n-1 : #อยู่ล่างสุด if pl%n == 0: #อยู่ซ้ายล่างสุด bcpy3[pl],bcpy3[pl+1] = bcpy3[pl+1],bcpy3[pl] #สลับขวา successors += bcpy3 bcpy1[pl],bcpy1[pl-n] = bcpy1[pl-n],bcpy1[pl] #สลับบน successors += bcpy1 elif pl == N-1 : #อยู่ล่างขวาสุด bcpy4[pl],bcpy4[pl-1] = bcpy4[pl-1],bcpy4[pl] #สลับซ้าย successors += bcpy4 bcpy1[pl],bcpy1[pl-n] = bcpy1[pl-n],bcpy1[pl] #สลับบน successors += bcpy1 else : bcpy3[pl],bcpy3[pl+1] = bcpy3[pl+1],bcpy3[pl] #สลับขวา successors += bcpy3 bcpy4[pl],bcpy4[pl-1] = bcpy4[pl-1],bcpy4[pl] #สลับซ้าย successors += bcpy4 bcpy1[pl],bcpy1[pl-n] = bcpy1[pl-n],bcpy1[pl] #สลับบน successors += bcpy1 #----------บนตัดเคสสี่มุมออกแล้ว เหลือขอบขวาขอบซ้ายไม่มีมุม + เหลือตรงกลางทั้งหมดเข้า else----------- elif pl%n == 0: #อยู่ซ้ายสุด bcpy3[pl],bcpy3[pl+1] = bcpy3[pl+1],bcpy3[pl] #สลับขวา successors += bcpy3 bcpy1[pl],bcpy1[pl-n] = bcpy1[pl-n],bcpy1[pl] #สลับบน successors += bcpy1 bcpy2[pl],bcpy2[pl+n] = bcpy2[pl+n],bcpy2[pl] #สลับล่าง successors += bcpy2 elif (pl+1)%n == 0: #อยู่ขวาสุด bcpy4[pl],bcpy4[pl-1] = bcpy4[pl-1],bcpy4[pl] #สลับซ้าย successors += bcpy4 bcpy1[pl],bcpy1[pl-n] = bcpy1[pl-n],bcpy1[pl] #สลับบน successors += bcpy1 bcpy2[pl],bcpy2[pl+n] = bcpy2[pl+n],bcpy2[pl] #สลับล่าง successors += bcpy2 else : bcpy4[pl],bcpy4[pl-1] = bcpy4[pl-1],bcpy4[pl] #สลับซ้าย successors += bcpy4 bcpy1[pl],bcpy1[pl-n] = bcpy1[pl-n],bcpy1[pl] #สลับบน successors += bcpy1 bcpy2[pl],bcpy2[pl+n] = bcpy2[pl+n],bcpy2[pl] #สลับล่าง successors += bcpy2 bcpy3[pl],bcpy3[pl+1] = bcpy3[pl+1],bcpy3[pl] #สลับขวา successors += bcpy3 return successors #----------------------------------------------------------- |
# 633xxxxx21 148 (2020-09-20 23:46) def gen_successors(node): successors = [] blank = node.index(0) for e in node[-1]: if (e == 'U'): if blank in [3,4,5,6,7,8]: node[blank], node[blank-3] = node[blank-3], node[blank] blank = node.index(0) elif (e == 'D'): if blank in [0,1,2,3,4,5]: node[blank], node[blank+3] = node[blank+3], node[blank] blank = node.index(0) elif (e == 'R'): if blank in [0,1,3,4,6,7]: node[blank], node[blank+1] = node[blank+1], node[blank] blank = node.index(0) elif (e == 'L'): if blank in [1,2,4,5,7,8]: node[blank], node[blank-1] = node[blank-1], node[blank] blank = node.index(0) method = '' if blank == 0: method = 'DR' elif blank == 1: method = 'LDR' elif blank == 2: method = 'LD' elif blank == 3: method = 'URD' elif blank == 4: method = 'URDL' elif blank == 5: method = 'UDL' elif blank == 6: method = 'UR' elif blank == 7: method = 'LUR' elif blank == 8: method = 'LU' successorss = [] for m in method: node_temp = list(node) if m == 'U': node_temp[blank], node_temp[blank-3] = node_temp[blank-3], node_temp[blank] node_temp[-1]+='U' elif m == 'D': node_temp[blank], node_temp[blank+3] = node_temp[blank+3], node_temp[blank] node_temp[-1]+='D' elif m == 'R': node_temp[blank], node_temp[blank+1] = node_temp[blank+1], node_temp[blank] node_temp[-1]+='R' elif m == 'L': node_temp[blank], node_temp[blank-1] = node_temp[blank-1], node_temp[blank] node_temp[-1]+='L' successorss.append(node_temp) for s in successorss: for x in s: successors.append(x) return successors #------------------------------------------ |
# 633xxxxx21 149 (2020-09-20 21:38) def gen_successors(node): successors = [] x=len(board) y=node.index(0) k=int(x**0.5) n=node[:-1] one=list(n) two=list(n) three=list(n) four=list(n) if y<k: if y==0: one[y],one[y+1]=one[y+1],one[y] successors+=one+[node[-1]+'R'] two[y],two[y+k]=two[y+k],two[y] successors+=two+[node[-1]+'D'] elif y==k-1: one[y],one[y-1]=one[y-1],one[y] successors+=one+[node[-1]+'L'] two[y],two[y+k]=two[y+k],two[y] successors+=two+[node[-1]+'D'] else: one[y],one[y-1]=one[y-1],one[y] successors+=one+[node[-1]+'L'] two[y],two[y+k]=two[y+k],two[y] successors+=two+[node[-1]+'D'] three[y],three[y+1]=three[y+1],three[y] successors+=three+[node[-1]+'R'] elif y>x-k-1: if y%k==0: one[y],one[y+1]=one[y+1],one[y] successors+=one+[node[-1]+'R'] two[y],two[y-k]=two[y-k],two[y] successors+=two+[node[-1]+'U'] elif y==x-1: one[y],one[y-1]=one[y-1],one[y] successors+=one+[node[-1]+'L'] two[y],two[y-k]=two[y-k],two[y] successors+=two+[node[-1]+'U'] else: one[y],one[y-1]=one[y-1],one[y] successors+=one+[node[-1]+'L'] two[y],two[y-k]=two[y-k],two[y] successors+=two+[node[-1]+'U'] three[y],three[y+1]=three[y+1],three[y] successors+=three+[node[-1]+'R'] elif y%k==0: one[y],one[y+k]=one[y+k],one[y] successors+=one+[node[-1]+'D'] two[y],two[y-k]=two[y-k],two[y] successors+=two+[node[-1]+'U'] three[y],three[y+1]=three[y+1],three[y] successors+=three+[node[-1]+'R'] elif (y+1)%k==0: one[y],one[y+k]=one[y+k],one[y] successors+=one+[node[-1]+'D'] two[y],two[y-k]=two[y-k],two[y] successors+=two+[node[-1]+'U'] three[y],three[y-1]=three[y-1],three[y] successors+=three+[node[-1]+'L'] else: one[y],one[y+k]=one[y+k],one[y] successors+=one+[node[-1]+'D'] two[y],two[y-k]=two[y-k],two[y] successors+=two+[node[-1]+'U'] three[y],three[y-1]=three[y-1],three[y] successors+=three+[node[-1]+'L'] four[y],four[y+1]=four[y+1],four[y] successors+=four+[node[-1]+'R'] return successors #------------------------------------------ |
# 633xxxxx21 150 (2020-09-20 14:26) def gen_successors(node): #node = board + '[UDR]' successors = [] n = int((len(board))**0.5) i = node.index(0) u = node[-1] b = list(node[:-1]) b1 = list(b) b2 = list(b) b3 = list(b) b4 = list(b) if i<n : #แถวแรก if i == 0: #ซ้ายสุด RD b1.remove(0) b1.insert(i+1,0) #R successors += b1 + [u + 'R'] b2[i], b2[i+n] = b2[i+n], b2[i] #D successors += b2 + [u + 'D'] elif i == n-1: #ขวาสุด LD b1.remove(0) b1.insert(i-1,0) successors += b1 + [u + 'L'] b2[i], b2[i+n] = b2[i+n], b2[i] successors += b2 + [u + 'D'] else: #ตรงกลาง LRD b1.remove(0) b1.insert(i-1,0) successors += b1 + [u + 'L'] b2.remove(0) b2.insert(i+1,0) successors += b2 + [u + 'R'] b3[i], b3[i+n] = b3[i+n], b3[i] successors += b3 + [u + 'D'] elif n**2-n <= i < n**2 : #แถวสุดท้าย if i == n**2-n: #ซ้ายสุด UR b1.remove(0) b1.insert(i+1,0) #R successors += b1 + [u + 'R'] b2[i], b2[i-n] = b2[i-n], b2[i] #U successors += b2 + [u + 'U'] elif i == n**2-1: #ขวาสุด LU b1.remove(0) b1.insert(i-1,0) successors += b1 + [u + 'L'] b2[i], b2[i-n] = b2[i-n], b2[i] successors += b2 + [u + 'U'] else: #ตรงกลาง LRU b1.remove(0) b1.insert(i-1,0) successors += b1 + [u + 'L'] b2.remove(0) b2.insert(i+1,0) successors += b2 + [u + 'R'] b3[i], b3[i-n] = b3[i-n], b3[i] successors += b3 + [u + 'U'] else: #แถวที่เหลือ if i%n == 0: #ซ้ายสุดRDU b1.remove(0) b1.insert(i+1,0) #R successors += b1 + [u + 'R'] b2[i], b2[i+n] = b2[i+n], b2[i] #D successors += b2 + [u + 'D'] b3[i], b3[i-n] = b3[i-n], b3[i] #U successors += b3 + [u + 'U'] elif i%n == n-1: #ขวาสุด LDU b1.remove(0) b1.insert(i-1,0) successors += b1 + [u + 'L'] b2[i], b2[i+n] = b2[i+n], b2[i] successors += b2 + [u + 'D'] b3[i], b3[i-n] = b3[i-n], b3[i] successors += b3 + [u + 'U'] else: #ตรงกลาง LRDU b1.remove(0) b1.insert(i-1,0) successors += b1 + [u + 'L'] b2.remove(0) b2.insert(i+1,0) successors += b2 + [u + 'R'] b3[i], b3[i+n] = b3[i+n], b3[i] successors += b3 + [u + 'D'] b4[i], b4[i-n] = b4[i-n], b4[i] #U successors += b4 + [u + 'U'] return successors #------------------------------------------ |
# 633xxxxx21 151 (2020-09-20 21:37) def gen_successors(node): successors = [] x = len(board) n = int(x**(1/2)) y = node.index(0) z = node[:-1] a1 = list(z) a2 = list(z) a3 = list(z) a4 = list(z) if y < n : if y == n-1: a1[y],a1[y-1] = a1[y-1],a1[y] successors += a1+[node[-1]+'L'] a2[y],a2[y+n] = a2[y+n],a2[y] successors += a2+[node[-1]+'D'] elif y == 0: a1[y], a1[y+1] = a1[y+1], a1[y] successors += a1+[node[-1]+'R'] a2[y], a2[y+n] = a2[y+n],a2[y] successors += a1+[node[-1]+'D'] else : a1[y],a1[y+1] = a1[y+1],a1[y] successors += a1+[node[-1]+'R'] a2[y],a2[y-1] = a2[y-1],a2[y] successors += a2+[node[-1]+'L'] a3[y],a3[y+n] = a3[y+n],a3[y] successors += a3+[node[-1]+'D'] elif y > x-n-1 : if y == x-1 : a1[y],a1[y-1] = a1[y-1],a1[y] successors += a1+[node[-1]+'L'] a2[y],a2[y-n] = a2[y-n],a2[y] successors += a2+[node[-1]+'U'] elif y%n == 0: a1[y],a1[y+1] = a1[y+1],a1[y] successors += a1+[node[-1]+'R'] a2[y],a2[y-n] = a2[y-n],a2[y] successors += a2+[node[-1]+'U'] else : a1[y],a1[y+1] = a1[y+1],a1[y] successors += a1+[node[-1]+'R'] a2[y],a2[y-1] = a2[y-1],a2[y] successors += a2+[node[-1]+'L'] a3[y],a3[y-n] = a3[y-n],a3[y] successors += a3+[node[-1]+'U'] elif (y+1)%n == 0: a1[y],a1[y-1] = a1[y-1],a1[y] successors += a1+[node[-1]+'L'] a2[y],a2[y-n] = a2[y-n],a2[y] successors += a2+[node[-1]+'U'] a3[y],a3[y+n] = a3[y+n],a3[y] successors += a3+[node[-1]+'D'] elif y%n == 0: a1[y],a1[y+1] = a1[y+1],a1[y] successors += a1+[node[-1]+'R'] a2[y],a2[y-n] = a2[y-n],a2[y] successors += a2+[node[-1]+'U'] a3[y],a3[y+n] = a3[y+n],a3[y] successors += a3+[node[-1]+'D'] else : a1[y],a1[y-1] = a1[y-1],a1[y] successors += a1+[node[-1]+'L'] a2[y],a2[y-n] = a2[y-n],a2[y] successors += a2+[node[-1]+'U'] a3[y],a3[y+n] = a3[y+n],a3[y] successors += a3+[node[-1]+'D'] a4[y],a4[y+1] = a4[y+1],a4[y] successors += a4+[node[-1]+'R'] return successors #------------------------------------------ |
# 633xxxxx21 152 (2020-09-20 19:03) def gen_successors(node): successors = [] place=node.index(0) node1=node[:-1] L1=list(node1) L2=list(node1) L3=list(node1) L4=list(node1) if place==0: L1[place],L1[place+1] = L1[place+1],L1[place] successors += L1+[node[-1]+'R'] L2[place],L2[place+3] = L2[place+3],L2[place] successors += L1+[node[-1]+'D'] elif place==1: L1[place],L1[place+1] = L1[place+1],L1[place] successors += L1+[node[-1]+'R'] L2[place],L2[place-1] = L2[place-1],L2[place] successors += L2+[node[-1]+'L'] L3[place],L3[place+3] = L3[place+3],L3[place] successors += L3+[node[-1]+'D'] elif place==2: L1[place],L1[place-1] = L1[place-1],L1[place] successors += L1+[node[-1]+'L'] L2[place],L2[place+3] = L2[place+3],L2[place] successors += L2+[node[-1]+'D'] elif place==3: L1[place],L1[place+1] = L1[place+1],L1[place] successors += L1+[node[-1]+'R'] L2[place],L2[place-3] = L2[place-3],L2[place] successors += L2+[node[-1]+'U'] L3[place],L3[place+3] = L3[place+3],L3[place] successors += L3+[node[-1]+'D'] elif place==4: L1[place],L1[place-1] = L1[place-1],L1[place] successors += L1+[node[-1]+'L'] L2[place],L2[place-3] = L2[place-3],L2[place] successors += L2+[node[-1]+'U'] L3[place],L3[place+3] = L3[place+3],L3[place] successors += L3+[node[-1]+'D'] L4[place],L4[place+1] = L4[place+1],L4[place] successors += L4+[node[-1]+'R'] elif place==5: L1[place],L1[place-1] = L1[place-1],L1[place] successors += L1+[node[-1]+'L'] L2[place],L2[place-3] = L2[place-3],L2[place] successors += L2+[node[-1]+'U'] L3[place],L3[place+3] = L3[place+3],L3[place] successors += L3+[node[-1]+'D'] elif place==6: L1[place],L1[place+1] = L1[place+1],L1[place] successors += L1+[node[-1]+'R'] L2[place],L2[place-3] = L2[place-3],L2[place] successors += L2+[node[-1]+'U'] elif place==7: L1[place],L1[place+1] = L1[place+1],L1[place] successors += L1+[node[-1]+'R'] L2[place],L2[place-1] = L2[place-1],L2[place] successors += L2+[node[-1]+'L'] L3[place],L3[place-3] = L3[place-3],L3[place] successors += L3+[node[-1]+'U'] elif place==8: L1[place],L1[place-1] = L1[place-1],L1[place] successors += L1+[node[-1]+'L'] L2[place],L2[place-3] = L2[place-3],L2[place] successors += L2+[node[-1]+'U'] return successors #------------------------------------------ |
# 633xxxxx21 153 (2020-09-19 17:41) def gen_successors(node): successors = [] k = 0 sqr=pow(len(node)-1,0.5) for i in range(len(node)-1): if node[i] == 0: if i+sqr<=(len(node)-1):#D a = list(node) aa = a[-1] successors += a successors[successors.index(aa)] += 'D' successors[a.index(0)],successors[a.index(0)+3] = successors[a.index(0)+3],successors[a.index(0)] k += len(node) if (i%sqr)>0:#L b = list(node) bb = b[-1] successors += b successors[successors.index(bb)] += 'L' successors[b.index(0)+k],successors[b.index(0)+k-1] = successors[b.index(0)+k-1],successors[b.index(0)+k] k += len(node) if (i%sqr)<(sqr-1):#R c = list(node) cc = c[-1] successors += c successors[successors.index(cc)] += 'R' successors[c.index(0)+k],successors[c.index(0)+k+1] = successors[c.index(0)+k+1],successors[c.index(0)+k] k += len(node) if i-sqr >= 0:#U d = list(node) dd = d[-1] successors += d successors[successors.index(dd)] += 'U' successors[d.index(0)+k],successors[d.index(0)+k-3] = successors[d.index(0)+k-3],successors[d.index(0)+k] k+=len(node) return successors #------------------------------------------ |
# 633xxxxx21 154 (2020-09-18 22:32) def gen_successors(node): successors = [] x = node.index(0) a = node if x in [0,2,6,8]: for i in range(2): if x == 0 : if i == 0: y = node[:] y[x],y[x+1] = y[x+1],y[x] y[9] += 'R' successors.extend(y) else: y = node[:] y[x],y[x+3] = y[x+3],y[x] y[9] += 'D' successors.extend(y) elif x == 2: if i == 0: y = node[:] y[x],y[x-1] = y[x-1],y[x] y[9] += 'L' successors.extend(y) else: y = node[:] y[x],y[x+3] = y[x+3],y[x] y[9] += 'D' successors.extend(y) elif x == 6: if i == 0: y = node[:] y[x],y[x-3] = y[x-3],y[x] y[9] += 'U' successors.extend(y) else: y = node[:] y[x],y[x+1] = y[x+1],y[x] y[9] += 'R' successors.extend(y) elif x == 8: if i == 0: y = node[:] y[x],y[x-3] = y[x-3],y[x] y[9] += 'U' successors.extend(y) else: y = node[:] y[x],y[x-1] = y[x-1],y[x] y[9] += 'L' successors.extend(y) if x in [1,3,5,7]: for i in range(3): if x == 1: if i == 0: y = node[:] y[x],y[x+1] = y[x+1],y[x] y[9] += 'R' successors.extend(y) elif i == 1: y = node[:] y[x],y[x+3] = y[x+3],y[x] y[9] += 'D' successors.extend(y) else: y = node[:] y[x],y[x-1] = y[x-1],y[x] y[9] += 'L' successors.extend(y) elif x == 3: if i == 0: y = node[:] y[x],y[x+1] = y[x+1],y[x] y[9] += 'R' successors.extend(y) elif i == 1: y = node[:] y[x],y[x+3] = y[x+3],y[x] y[9] += 'D' successors.extend(y) else: y = node[:] y[x],y[x-3] = y[x-3],y[x] y[9] += 'U' successors.extend(y) elif x == 5: if i == 0: y = node[:] y[x],y[x-3] = y[x-3],y[x] y[9] += 'U' successors.extend(y) elif i == 1: y = node[:] y[x],y[x+3] = y[x+3],y[x] y[9] += 'D' successors.extend(y) else: y = node[:] y[x],y[x-1] = y[x-1],y[x] y[9] += 'L' successors.extend(y) elif x == 7: if i == 0: y = node[:] y[x],y[x+1] = y[x+1],y[x] y[9] += 'R' successors.extend(y) elif i == 1: y = node[:] y[x],y[x-3] = y[x-3],y[x] y[9] += 'U' successors.extend(y) else: y = node[:] y[x],y[x-1] = y[x-1],y[x] y[9] += 'L' successors.extend(y) if x in [4]: for i in range(4): if i == 0: y = node[:] y[x],y[x+1] = y[x+1],y[x] y[9] += 'R' successors.extend(y) elif i == 1: y = node[:] y[x],y[x+3] = y[x+3],y[x] y[9] += 'D' successors.extend(y) elif i == 2: y = node[:] y[x],y[x-1] = y[x-1],y[x] y[9] += 'L' successors.extend(y) else: y = node[:] y[x],y[x-3] = y[x-3],y[x] y[9] += 'U' successors.extend(y) return successors #------------------------------------------ |
# 633xxxxx21 155 (2020-09-20 22:23) def gen_successors(node): successors = [] r=node.index(0) if r==0 : R=list(node) R[r],R[r+1]=R[r+1],R[r] R[9]+="R" successors+=(R) D=list(node) D[r],D[r+3]=D[r+3],D[r] D[9]+="D" successors+=(D) elif r==1 : R=list(node) R[r],R[r+1]=R[r+1],R[r] R[9]+="R" successors+=(R) L=list(node) L[r],L[r-1]=L[r-1],L[r] L[9]+="L" successors+=(L) D=list(node) D[r],D[r+3]=D[r+3],D[r] D[9]+="D" successors+=(D) elif r==2 : L=list(node) L[r],L[r-1]=L[r-1],L[r] L[9]+="L" successors+=(L) D=list(node) D[r],D[r+3]=D[r+3],D[r] D[9]+="D" successors+=(D) elif r==3 : R=list(node) R[r],R[r+1]=R[r+1],R[r] R[9]+="R" successors+=(R) U=list(node) U[r],U[r-3]=U[r-3],U[r] U[9]+="U" successors+=(U) D=list(node) D[r],D[r+3]=D[r+3],D[r] D[9]+="D" successors+=(D) elif r==4 : R=list(node) R[r],R[r+1]=R[r+1],R[r] R[9]+="R" successors+=(R) L=list(node) L[r],L[r-1]=L[r-1],L[r] L[9]+="L" successors+=(L) U=list(node) U[r],U[r-3]=U[r-3],U[r] U[9]+="U" successors+=(U) D=list(node) D[r],D[r+3]=D[r+3],D[r] D[9]+="D" successors+=(D) elif r==5 : L=list(node) L[r],L[r-1]=L[r-1],L[r] L[9]+="L" successors+=(L) U=list(node) U[r],U[r-3]=U[r-3],U[r] U[9]+="U" successors+=(U) D=list(node) D[r],D[r+3]=D[r+3],D[r] D[9]+="D" successors+=(D) elif r==6 : U=list(node) U[r],U[r-3]=U[r-3],U[r] U[9]+="U" successors+=(U) R=list(node) R[r],R[r+1]=R[r+1],R[r] R[9]+="R" successors+=(R) elif r==7 : R=list(node) R[r],R[r+1]=R[r+1],R[r] R[9]+="R" successors+=(R) L=list(node) L[r],L[r-1]=L[r-1],L[r] L[9]+="L" successors+=(L) U=list(node) U[r],U[r-3]=U[r-3],U[r] U[9]+="U" successors+=(U) elif r==8 : L=list(node) L[r],L[r-1]=L[r-1],L[r] L[9]+="L" successors+=L U=list(node) U[r],U[r-3]=U[r-3],U[r] U[9]+="U" successors+=U return successors #------------------------------------------ |
# 633xxxxx21 156 (2020-09-20 23:23) def gen_successors(node): successors = [] if 0 in node: a = node.index(0) if a == 0: for i in range(len(node)): #R successors.append(node[i]) successors[0],successors[1] = successors[1],successors[0] b = successors.pop(-1) successors.append(b+'R') for i in range(len(node)): #D successors.append(node[i]) successors[10],successors[13] = successors[13],successors[10] b = successors.pop(-1) successors.append(node[-1]+'D') if a == 1: for i in range(len(node)): #R successors.append(node[i]) successors[1],successors[2] = successors[2],successors[1] b = successors.pop(-1) successors.append(b+'R') for i in range(len(node)): #D successors.append(node[i]) successors[11],successors[14] = successors[14],successors[11] b = successors.pop(-1) successors.append(b+'D') for i in range(len(node)): #L successors.append(node[i]) successors[21],successors[20] = successors[20],successors[21] b = successors.pop(-1) successors.append(b+'L') if a == 2: for i in range(len(node)): #L successors.append(node[i]) successors[2],successors[1] = successors[1],successors[2] b = successors.pop(-1) successors.append(b+'L') for i in range(len(node)): #D successors.append(node[i]) successors[12],successors[15] = successors[15],successors[12] b = successors.pop(-1) successors.append(node[-1]+'D') if a == 3: for i in range(len(node)): #R successors.append(node[i]) successors[3],successors[4] = successors[4],successors[3] b = successors.pop(-1) successors.append(b+'R') for i in range(len(node)): #D successors.append(node[i]) successors[13],successors[16] = successors[16],successors[13] b = successors.pop(-1) successors.append(b+'D') for i in range(len(node)): #U successors.append(node[i]) successors[23],successors[20] = successors[20],successors[23] b = successors.pop(-1) successors.append(b+'U') if a == 4: for i in range(len(node)): #R successors.append(node[i]) successors[4],successors[5] = successors[5],successors[4] b = successors.pop(-1) successors.append(b+'R') for i in range(len(node)): #D successors.append(node[i]) successors[14],successors[17] = successors[17],successors[14] b = successors.pop(-1) successors.append(b+'D') for i in range(len(node)): #U successors.append(node[i]) successors[24],successors[21] = successors[21],successors[24] b = successors.pop(-1) successors.append(b+'U') for i in range(len(node)): #L successors.append(node[i]) successors[34],successors[31] = successors[31],successors[34] b = successors.pop(-1) successors.append(b+'L') if a == 5: for i in range(len(node)): #L successors.append(node[i]) successors[5],successors[6] = successors[6],successors[5] b = successors.pop(-1) successors.append(b+'L') for i in range(len(node)): #D successors.append(node[i]) successors[15],successors[18] = successors[18],successors[15] b = successors.pop(-1) successors.append(b+'D') for i in range(len(node)): #U successors.append(node[i]) successors[25],successors[22] = successors[22],successors[25] b = successors.pop(-1) successors.append(b+'U') if a == 6: for i in range(len(node)): #R successors.append(node[i]) successors[6],successors[7] = successors[7],successors[6] b = successors.pop(-1) successors.append(b+'R') for i in range(len(node)): #U successors.append(node[i]) successors[16],successors[13] = successors[13],successors[16] b = successors.pop(-1) successors.append(node[-1]+'U') if a == 7: for i in range(len(node)): #L successors.append(node[i]) successors[7],successors[8] = successors[8],successors[7] b = successors.pop(-1) successors.append(b+'L') for i in range(len(node)): #R successors.append(node[i]) successors[17],successors[18] = successors[18],successors[17] b = successors.pop(-1) successors.append(b+'R') for i in range(len(node)): #U successors.append(node[i]) successors[27],successors[24] = successors[24],successors[27] b = successors.pop(-1) successors.append(b+'U') if a == 8: for i in range(len(node)): #L successors.append(node[i]) successors[8],successors[7] = successors[7],successors[8] b = successors.pop(-1) successors.append(b+'L') for i in range(len(node)): #U successors.append(node[i]) successors[18],successors[15] = successors[15],successors[18] b = successors.pop(-1) successors.append(node[-1]+'U') return successors #------------------------------------------ |
# 633xxxxx21 157 (2020-09-20 14:33) def gen_successors(node): successors = [] n1= list(node) n2= list(node) n3= list(node) n4= list(node) if node[0]== 0: n1[0],n1[1]=n1[1],n1[0] n1[9]+='L' n2[0],n2[3]=n2[3],n2[0] n2[9]+='D' successors+=n1 successors+=n2 elif node[1]== 0: n1[1],n1[0]=n1[0],n1[1] n1[9]+='R' n2[1],n2[2]=n2[2],n2[1] n2[9]+='L' n3[1],n3[4]=n3[4],n3[1] n3[9]+='D' successors+=n1 successors+=n2 successors+=n3 elif node[2]== 0: n1[2],n1[1]=n1[1],n1[2] n1[9]+='R' n2[2],n2[5]=n2[5],n2[2] n2[9]+='D' successors+=n1 successors+=n2 elif node[3]== 0: n1[3],n1[0]=n1[0],n1[3] n1[9]+='U' n2[3],n2[4]=n2[4],n2[3] n2[9]+='L' n3[3],n3[6]=n3[6],n3[3] n3[9]+='D' successors+=n1 successors+=n2 successors+=n3 elif node[4]== 0: n1[4],n1[1]=n1[1],n1[4] n1[9]+='U' n2[4],n2[3]=n2[3],n2[4] n2[9]+='R' n3[4],n3[5]=n3[5],n3[4] n3[9]+='L' n4[4],n4[7]=n4[7],n4[4] n4[9]+='D' successors+=n1 successors+=n2 successors+=n3 successors+=n4 elif node[5]== 0: n1[5],n1[4]=n1[4],n1[5] n1[9]+='R' n2[5],n2[2]=n2[2],n2[5] n2[9]+='U' n3[5],n3[8]=n3[8],n3[5] n3[9]+='D' successors+=n1 successors+=n2 successors+=n3 elif node[6]== 0: n1[6],n1[3]=n1[3],n1[6] n1[9]+='U' n2[6],n2[7]=n2[7],n2[6] n2[9]+='L' successors+=n1 successors+=n2 elif node[7]== 0: n1[7],n1[4]=n1[4],n1[7] n1[9]+='U' n2[7],n2[6]=n2[6],n2[7] n2[9]+='R' n3[7],n3[8]=n3[8],n3[7] n3[9]+='L' successors+=n1 successors+=n2 successors+=n3 elif node[8]== 0: n1[8],n1[7]=n1[7],n1[8] n1[9]+='R' n2[8],n2[5]=n2[5],n2[8] n2[9]+='U' successors+=n1 successors+=n2 return successors #------------------------------------------ |
# 633xxxxx21 158 (2020-09-20 22:52) def gen_successors(node): successors = [] switch = ['DR','DLR','DL','UDR','UDLR','UDL','UR','ULR','UL'] y = node.index(0) z = switch[y] for i in z: t = node.copy() if i == 'U': t.remove(0) t.insert(y-3,0) t.insert(y+1,t[y-2]) t.pop(y-2) t[-1] += 'U' elif i == 'D' : t.remove(0) t.insert(y+2,0) t.insert(y,t[y+3]) t.pop(y+4) t[-1] += 'D' elif i == 'R': t.remove(0) t.insert(y+1,0) t[-1] += 'R' elif i == 'L': t.remove(0) t.insert(y-1,0) t[-1] += 'L' successors += t return successors #------------------------------------------ |
# 633xxxxx21 159 (2020-09-20 21:46) def gen_successors(node): #3*3------------------------------------------------------------------ if len(board) == 9: successors = [] blank = node.index(0) path = '' if blank == 0: path = 'DR' elif blank == 1: path = 'RDL' elif blank == 2: path = 'LD' elif blank == 3: path = 'URD' elif blank == 4: path = 'URDL' elif blank == 5: path = 'UDL' elif blank == 6: path = 'UR' elif blank == 7: path = 'LUR' elif blank == 8: path = 'LU' for n in path : node_1 = list(node) if n == 'U': node_1[blank], node_1[blank-3] = node_1[blank-3], node_1[blank] elif n == 'D': node_1[blank], node_1[blank+3] = node_1[blank+3], node_1[blank] elif n == 'L': node_1[blank], node_1[blank-1] = node_1[blank-1], node_1[blank] elif n == 'R': node_1[blank], node_1[blank+1] = node_1[blank+1], node_1[blank] successors += node_1 successors[-1]=node[9]+n #4*4------------------------------------------------------------------ if len(board) == 16: successors = [] blank = node.index(0) path = '' if blank == 0: path = 'DR' elif blank == 1: path = 'RDL' elif blank == 2: path = 'RDL' elif blank == 3: path = 'DL' elif blank == 4: path = 'URD' elif blank == 5: path = 'URLD' elif blank == 6: path = 'URLD' elif blank == 7: path = 'ULD' elif blank == 8: path = 'URD' elif blank == 9: path = 'URLD' elif blank == 10: path = 'URLD' elif blank == 11: path = 'ULD' elif blank == 12: path = 'URD' elif blank == 13: path = 'LUR' elif blank == 14: path = 'LUR' elif blank == 15: path = 'UL' for n in path : node_2 = list(node) if n == 'U': node_2[blank], node_2[blank-4] = node_2[blank-4], node_2[blank] elif n == 'D': node_2[blank], node_2[blank+4] = node_2[blank+4], node_2[blank] elif n == 'L': node_2[blank], node_2[blank-1] = node_2[blank-1], node_2[blank] elif n == 'R': node_2[blank], node_2[blank+1] = node_2[blank+1], node_2[blank] successors += node_2 successors[-1]=node[16]+n return successors #------------------------------------------ |
# 633xxxxx21 160 (2020-09-20 21:24) def gen_successors(node): successors = [] M = len(board) t = int(math.sqrt(M)) w = node.index(0) x1 = list(node[:-1:]) x2 = list(node[:-1:]) x3 = list(node[:-1:]) x4 = list(node[:-1:]) if w < t: if w == t-t: x1[w],x1[w+1] = x1[w+1],x1[w] successors = successors+x1+[node[-1]+"R"] x2[w],x2[w+t] = x2[w+t],x2[w] successors = successors+x2+[node[-1]+"D"] elif w == t-1: x1[w],x1[w-1] = x1[w-1],x1[w] successors = successors+x1+[node[-1]+"L"] x2[w],x2[w+t] = x2[w+t],x2[w] successors = successors+x2+[node[-1]+"D"] else: x1[w],x1[w-1] = x1[w-1],x1[w] successors = successors+x1+[node[-1]+"L"] x2[w],x2[w+1] = x2[w+1],x2[w] successors = successors+x2+[node[-1]+"R"] x3[w],x3[w+t] = x3[w+t],x3[w] successors = successors+x3+[node[-1]+"D"] elif t<=w<t*(t-1): if w%t==0: x1[w],x1[w+1] = x1[w+1],x1[w] successors = successors+x1+[node[-1]+"R"] x2[w],x2[w+t] = x2[w+t],x2[w] successors = successors+x2+[node[-1]+"D"] x3[w],x3[w-t] = x3[w-t],x3[w] successors = successors+x3+[node[-1]+"U"] elif w%t==(t-1): x1[w],x1[w+t] = x1[w+t],x1[w] successors = successors+x1+[node[-1]+"D"] x2[w],x2[w-t] = x2[w-t],x2[w] successors = successors+x2+[node[-1]+"U"] x3[w],x3[w-1] = x3[w-1],x3[w] successors = successors+x3+[node[-1]+"L"] else: x1[w],x1[w+1] = x1[w+1],x1[w] successors = successors+x1+[node[-1]+"R"] x2[w],x2[w+t] = x2[w+t],x2[w] successors = successors+x2+[node[-1]+"D"] x3[w],x3[w-t] = x3[w-t],x3[w] successors = successors+x3+[node[-1]+"U"] x4[w],x4[w-1] = x4[w-1],x4[w] successors = successors+x4+[node[-1]+"L"] elif (t*t)-1>=w>t*(t-1)-1: if w==t*(t-1): x1[w],x1[w+1] = x1[w+1],x1[w] successors = successors+x1+[node[-1]+"R"] x2[w],x2[w-t] = x2[w-t],x2[w] successors = successors+x2+[node[-1]+"U"] elif w==(t*t)-1: x1[w],x1[w-t] = x1[w-t],x1[w] successors = successors+x1+[node[-1]+"U"] x2[w],x2[w-1] = x2[w-1],x2[w] successors = successors+x2+[node[-1]+"L"] else: x1[w],x1[w+1] = x1[w+1],x1[w] successors = successors+x1+[node[-1]+"R"] x2[w],x2[w-t] = x2[w-t],x2[w] successors = successors+x2+[node[-1]+"U"] x3[w],x3[w-1] = x3[w-1],x3[w] successors = successors+x3+[node[-1]+"L"] return successors #------------------------------------------ |
# 633xxxxx21 161 (2020-09-20 15:18) def gen_successors(node): successors = [] move = [] move1 = [] move2 = [] move3 = [] move4 = [] if board[0] == 0: move1 += node move1[0],move1[1] = move1[1],move1[0] change = move1[-1] change += 'R' move1 = move1[0:-1]+[change] move2 += node move2[0],move2[3] = move2[3],move2[0] change = move2[-1] change += 'D' move2 = move2[0:-1]+[change] move = move1+move2 successors += move elif board[1] == 0: move1 += node move1[1],move1[2] = move1[2],move1[1] change = move1[-1] change += 'R' move1 = move1[0:-1]+[change] move2 += node move2[1],move2[0] = move2[0],move2[1] change = move2[-1] change += 'L' move2 = move2[0:-1]+[change] move3 += node move3[1],move3[4] = move3[4],move3[1] change = move3[-1] change += 'D' move3 = move3[0:-1]+[change] move = move1+move2+move3 successors += move elif board[2] == 0: move1 += node move1[2],move1[1] = move1[1],move1[2] change = move1[-1] change += 'L' move1 = move1[0:-1]+[change] move2 += node move2[2],move2[5] = move2[5],move2[2] change = move2[-1] change += 'D' move2 = move2[0:-1]+[change] move = move1+move2 successors += move elif board[3] == 0: move1 += node move1[3],move1[0] = move1[0],move1[3] change = move1[-1] change += 'U' move1 = move1[0:-1]+[change] move2 += node move2[3],move2[4] = move2[4],move2[3] change = move2[-1] change += 'R' move2 = move2[0:-1]+[change] move3 += node move3[3],move3[6] = move3[6],move3[3] change = move3[-1] change += 'D' move3 = move3[0:-1]+[change] move = move1+move2+move3 successors += move elif board[4] == 0: move1 += node move1[4],move1[1] = move1[1],move1[4] change = move1[-1] change += 'U' move1 = move1[0:-1]+[change] move2 += node move2[4],move2[5] = move2[5],move2[4] change = move2[-1] change += 'R' move2 = move2[0:-1]+[change] move3 += node move3[4],move3[7] = move3[7],move3[4] change = move3[-1] change += 'D' move3 = move3[0:-1]+[change] move4 += node move4[4],move4[3] = move4[3],move4[4] change = move4[-1] change += 'L' move4 = move4[0:-1]+[change] move = move1+move2+move3+move4 successors += move elif board[5] == 0: move1 += node move1[5],move1[2] = move1[2],move1[5] change = move1[-1] change += 'U' move1 = move1[0:-1]+[change] move2 += node move2[5],move2[4] = move2[4],move2[5] change = move2[-1] change += 'L' move2 = move2[0:-1]+[change] move3 += node move3[5],move3[8] = move3[8],move3[5] change = move3[-1] change += 'D' move3 = move3[0:-1]+[change] move = move1+move2+move3 successors += move elif board[6] == 0: move1 += node move1[6],move1[7] = move1[7],move1[6] change = move1[-1] change += 'R' move1 = move1[0:-1]+[change] move2 += node move2[6],move2[3] = move2[3],move2[6] change = move2[-1] change += 'U' move2 = move2[0:-1]+[change] move = move1+move2 successors += move elif board[7] == 0: move1 += node move1[7],move1[4] = move1[4],move1[7] change = move1[-1] change += 'U' move1 = move1[0:-1]+[change] move2 += node move2[7],move2[6] = move2[6],move2[7] change = move2[-1] change += 'L' move2 = move2[0:-1]+[change] move3 += node move3[7],move3[8] = move3[8],move3[7] change = move3[-1] change += 'R' move3 = move3[0:-1]+[change] move = move1+move2+move3 successors += move elif board[8] == 0: move1 += node move1[8],move1[7] = move1[7],move1[8] change = move1[-1] change += 'L' move1 = move1[0:-1]+[change] move2 += node move2[8],move2[5] = move2[5],move2[8] change = move2[-1] change += 'U' move2 = move2[0:-1]+[change] move = move1+move2 successors += move return successors #------------------------------------------ |
# 633xxxxx21 162 (2020-09-20 22:27) def gen_successors(node): successors=[] blank = node.index(0) if blank in[3,4,5,6,7,8]: temp = list(node) temp[blank], temp[blank-3] = temp[blank-3],temp[blank] temp[-1]+='U' successors.extend(temp) if blank in[0,1,2,3,4,5]: temp = list(node) temp[blank],temp[blank+3] = temp[blank+3],temp[blank] temp[-1]+='D' successors.extend(temp) if blank in [0,1,3,4,6,7]: temp = list(node) temp[blank],temp[blank+1] = temp[blank+1],temp[blank] temp[-1]+='R' successors.extend(temp) if blank in [1,2,4,5,7,8]: temp = list(node) temp[blank],temp[blank-1] = temp[blank-1],temp[blank] temp[-1]+='L' successors.extend(temp) return successors #------------------------------------------ |
# 633xxxxx21 163 (2020-09-20 21:05) def gen_successors(node): successors = [] A = len(board) a = int(sqrt(A)) B = node.index(0) n = node[:-1] c1 = list(n) c2 = list(n) c3 = list(n) c4 = list(n) if B < a : if B == 0 : c1[B],c1[B+1] = c1[B+1],c1[B] successors += c1 + [node[-1]+'R'] c2[B],c2[B+a] = c2[B+a],c2[B] successors += c2 + [node[-1]+'D'] elif B == a-1 : c1[B],c1[B-1] = c1[B-1],c1[B] successors += c1 + [node[-1]+'L'] c2[B],c2[B+a] = c2[B+a],c2[B] successors += c2 + [node[-1]+'D'] else : c1[B],c1[B+1] = c1[B+1],c1[B] successors += c1 + [node[-1]+'R'] c2[B],c2[B-1] = c2[B-1],c2[B] successors += c2 + [node[-1]+'L'] c3[B],c3[B+a] = c3[B+a],c3[B] successors += c3 + [node[-1]+'D'] elif B > A-a-1 : if B%a == 0 : c1[B],c1[B+1] = c1[B+1],c1[B] successors += c1 + [node[-1]+'R'] c2[B],c2[B-a] = c2[B-a],c2[B] successors += c2 + [node[-1]+'U'] elif B == A-1 : c1[B],c1[B-1] = c1[B-1],c1[B] successors += c1 + [node[-1]+'L'] c2[B],c2[B-a] = c2[B-a],c2[B] successors += c2 + [node[-1]+'U'] else : c1[B],c1[B+1] = c1[B+1],c1[B] successors += c1 + [node[-1]+'R'] c2[B],c2[B-1] = c2[B-1],c2[B] successors += c2 + [node[-1]+'L'] c3[B],c3[B-a] = c3[B-a],c3[B] successors += c3 + [node[-1]+'U'] elif B%a == 0 : c1[B],c1[B+1] = c1[B+1],c1[B] successors += c1 + [node[-1]+'R'] c2[B],c2[B-a] = c2[B-a],c2[B] successors += c2 + [node[-1]+'U'] c3[B],c3[B+a] = c3[B+a],c3[B] successors += c3 + [node[-1]+'D'] elif (B+1)%a == 0 : c1[B],c1[B-1] = c1[B-1],c1[B] successors += c1 + [node[-1]+'L'] c2[B],c2[B-a] = c2[B-a],c2[B] successors += c2 + [node[-1]+'U'] c3[B],c3[B+a] = c3[B+a],c3[B] successors += c3 + [node[-1]+'D'] else : c1[B],c1[B+1] = c1[B+1],c1[B] successors += c1 + [node[-1]+'R'] c2[B],c2[B-1] = c2[B-1],c2[B] successors += c2 + [node[-1]+'L'] c3[B],c3[B-a] = c3[B-a],c3[B] successors += c3 + [node[-1]+'U'] c4[B],c4[B+a] = c4[B+a],c4[B] successors += c4 + [node[-1]+'D'] return successors #------------------------------------------ |
# 633xxxxx21 164 (2020-09-19 16:08) def gen_successors(node): successors = [] node1 = [0]*len(node) node2 = [0]*len(node) node3 = [0]*len(node) node4 = [0]*len(node) for i in range(len(node)): node1[i] = node[i] node2[i] = node[i] node3[i] = node[i] node4[i] = node[i] if node.index(0) == 0 : # right node1[0],node1[1] = node1[1],node1[0] node1[9] += "R" successors += node1 # down node2[0],node2[3] = node2[3],node2[0] node2[9] += "D" successors += node2 elif node.index(0) == 1 : # left node1[1],node1[0] = node1[0],node1[1] node1[9] += "L" successors += node1 # right node2[1],node2[2] = node2[2],node2[1] node2[9] += "R" successors += node2 # down node3[1],node3[4] = node3[4],node3[1] node3[9] += "D" successors += node3 elif node.index(0) == 2 : # left node1[2],node1[1] = node1[1],node1[2] node1[9] += "L" successors += node1 # down node2[2],node2[5] = node2[5],node2[2] node2[9] += "D" successors += node2 elif node.index(0) == 3 : # up node1[3],node1[0] = node1[0],node1[3] node1[9] += "U" successors += node1 # right node2[3],node2[4] = node2[4],node2[3] node2[9] += "R" successors += node2 # down node3[3],node3[6] = node3[6],node3[3] node3[9] += "D" successors += node3 elif node.index(0) == 4 : # up node1[4],node1[1] = node1[1],node1[4] node1[9] += "U" successors += node1 # right node2[4],node2[5] = node2[5],node2[4] node2[9] += "R" successors += node2 # down node3[4],node3[7] = node3[7],node3[4] node3[9] += "D" successors += node3 # left node4[4],node4[3] = node4[3],node4[4] node4[9] += "L" successors += node4 elif node.index(0) == 5 : # up node1[5],node1[2] = node1[2],node1[5] node1[9] += "U" successors += node1 # left node2[5],node2[4] = node2[4],node2[5] node2[9] += "L" successors += node2 # down node3[5],node3[8] = node3[8],node3[5] node3[9] += "D" successors += node3 elif node.index(0) == 6 : # right node1[6],node1[7] = node1[7],node1[6] node1[9] += "R" successors += node1 # up node2[6],node2[3] = node2[3],node2[6] node2[9] += "U" successors += node2 elif node.index(0) == 7 : # up node1[7],node1[4] = node1[4],node1[7] node1[9] += "U" successors += node1 # left node2[7],node2[6] = node2[6],node2[7] node2[9] += "L" successors += node2 # right node3[7],node3[8] = node3[8],node3[7] node3[9] += "R" successors += node3 elif node.index(0) == 8 : # left node1[8],node1[7] = node1[7],node1[8] node1[9] += "L" successors += node1 # up node2[8],node2[5] = node2[5],node2[8] node2[9] += "U" successors += node2 return successors #------------------------------------------ |
# 633xxxxx21 165 (2020-09-20 15:35) def gen_successors(node): successors = [] a = board.index(0) node1 = node[:-1] b1 = list(node1) b2 = list(node1) b3 = list(node1) b4 = list(node1) if a ==0: b1[0],b1[1]=b1[1],b1[0] successors += b1 + [node[-1]+'R'] b2[0],b2[3]=b2[3],b2[0] successors += b2 +[node[-1]+'D'] elif a == 1: b1[1],b1[2]=b1[2],b1[1] successors += b1 + [node[-1]+'R'] b2[1],b2[0]=b2[0],b2[1] successors += b2 +[node[-1]+'L'] b3[1],b3[4]=b3[4],b3[1] successors += b3 +[node[-1]+'D'] elif a == 2 : b1[2],b1[1]=b1[1],b1[2] successors += b1 + [node[-1]+'L'] b2[2],b2[5]=b2[5],b2[2] successors += b2 +[node[-1]+'D'] elif a == 3 : b1[3],b1[4]=b1[4],b1[3] successors += b1 + [node[-1]+'R'] b2[3],b2[0]=b2[0],b2[3] successors += b2 +[node[-1]+'U'] b3[3],b3[6]=b3[6],b3[3] successors += b3 +[node[-1]+'D'] elif a == 4 : b1[4],b1[3]=b1[3],b1[4] successors += b1 + [node[-1]+'L'] b2[4],b2[5]=b2[5],b2[4] successors += b2 +[node[-1]+'R'] b3[4],b3[1]=b3[1],b3[4] successors += b3 +[node[-1]+'U'] b4[4],b4[7]=b4[7],b4[4] successors += b4 +[node[-1]+'D'] elif a == 5 : b1[5],b1[4]=b1[4],b1[5] successors += b1 + [node[-1]+'L'] b2[5],b2[2]=b2[2],b2[5] successors += b2 +[node[-1]+'U'] b3[5],b3[8]=b3[8],b3[5] successors += b3 +[node[-1]+'D'] elif a == 6 : b1[6],b1[7]=b1[7],b1[6] successors += b1 + [node[-1]+'R'] b2[6],b2[3]=b2[3],b2[6] successors += b2 +[node[-1]+'U'] elif a == 7 : b1[7],b1[6]=b1[6],b1[7] successors += b1 + [node[-1]+'L'] b2[7],b2[8]=b2[8],b2[7] successors += b2 +[node[-1]+'R'] b3[7],b3[4]=b3[4],b3[7] successors += b3 +[node[-1]+'U'] elif a == 8 : b1[8],b1[7]=b1[7],b1[8] successors += b1 + [node[-1]+'L'] b2[8],b2[5]=b2[5],b2[8] successors += b2 +[node[-1]+'U'] return successors #------------------------------------------ |
# 633xxxxx21 166 (2020-09-20 22:16) def gen_successors(node): successors = [] u = node.index(0) p = ['DR','DLR','DL','UDR','UDLR','UDL','UR','ULR','UL'] d = p[u] for i in d: n = node.copy() if i == 'R': n.remove(0) n.insert(u+1,0) n[-1] += 'R' elif i == 'D' : n.remove(0) n.insert(u+2,0) n.insert(u,n[u+3]) n.pop(u+4) n[-1] += 'D' elif i == 'U': n.remove(0) n.insert(u-3,0) n.insert(u+1,n[u-2]) n.pop(u-2) n[-1] += 'U' elif i == 'L': n.remove(0) n.insert(u-1,0) n[-1] += 'L' successors += n return successors #------------------------------------------ |
# 633xxxxx21 167 (2020-09-20 22:27) def gen_successors(node): successors = [] i = node.index(0) if i == 0: nodePlay = node.copy() nodePlay[0],nodePlay[1] = nodePlay[1],nodePlay[0] nodePlay[9] = node[9] + "R" for x in nodePlay: successors.append(x) nodePlay = list(node) nodePlay[0],nodePlay[3] = nodePlay[3],nodePlay[0] nodePlay[9] = node[9] + "D" for x in nodePlay: successors.append(x) elif i == 1: nodePlay = node.copy() nodePlay[1],nodePlay[0] = nodePlay[0],nodePlay[1] nodePlay[9] = node[9] + "L" for x in nodePlay: successors.append(x) nodePlay = node.copy() nodePlay[1],nodePlay[4] = nodePlay[4],nodePlay[1] nodePlay[9] = node[9] + "D" for x in nodePlay: successors.append(x) nodePlay = node.copy() nodePlay[1],nodePlay[2] = nodePlay[2],nodePlay[1] nodePlay[9] = node[9] + "R" for x in nodePlay: successors.append(x) elif i == 2: nodePlay = node.copy() nodePlay[2],nodePlay[1] = nodePlay[1],nodePlay[2] nodePlay[9] = node[9] + "L" for x in nodePlay: successors.append(x) nodePlay = node.copy() nodePlay[2],nodePlay[5] = nodePlay[5],nodePlay[2] nodePlay[9] = node[9] + "D" for x in nodePlay: successors.append(x) elif i == 3: nodePlay = node.copy() nodePlay[3],nodePlay[0] = nodePlay[0],nodePlay[3] nodePlay[9] = node[9] + "U" for x in nodePlay: successors.append(x) nodePlay = node.copy() nodePlay[3],nodePlay[4] = nodePlay[4],nodePlay[3] nodePlay[9] = node[9] + "R" for x in nodePlay: successors.append(x) nodePlay = node.copy() nodePlay[3],nodePlay[6] = nodePlay[6],nodePlay[3] nodePlay[9] = node[9] + "D" for x in nodePlay: successors.append(x) elif i == 4: nodePlay = node.copy() nodePlay[4],nodePlay[1] = nodePlay[1],nodePlay[4] nodePlay[9] = node[9] + "U" for x in nodePlay: successors.append(x) nodePlay = node.copy() nodePlay[4],nodePlay[3] = nodePlay[3],nodePlay[4] nodePlay[9] = node[9] + "L" for x in nodePlay: successors.append(x) nodePlay = node.copy() nodePlay[4],nodePlay[5] = nodePlay[5],nodePlay[4] nodePlay[9] = node[9] + "R" for x in nodePlay: successors.append(x) nodePlay = node.copy() nodePlay[4],nodePlay[7] = nodePlay[7],nodePlay[4] nodePlay[9] = node[9] + "D" for x in nodePlay: successors.append(x) elif i == 5: nodePlay = node.copy() nodePlay[5],nodePlay[2] = nodePlay[2],nodePlay[5] nodePlay[9] = node[9] + "U" for x in nodePlay: successors.append(x) nodePlay = node.copy() nodePlay[5],nodePlay[4] = nodePlay[4],nodePlay[5] nodePlay[9] = node[9] + "L" for x in nodePlay: successors.append(x) nodePlay = node.copy() nodePlay[5],nodePlay[8] = nodePlay[8],nodePlay[5] nodePlay[9] = node[9] + "D" for x in nodePlay: successors.append(x) elif i == 6: nodePlay = node.copy() nodePlay[6],nodePlay[3] = nodePlay[3],nodePlay[6] nodePlay[9] = node[9] + "U" for x in nodePlay: successors.append(x) nodePlay = node.copy() nodePlay[6],nodePlay[7] = nodePlay[7],nodePlay[6] nodePlay[9] = node[9] + "R" for x in nodePlay: successors.append(x) elif i == 7: nodePlay = node.copy() nodePlay[7],nodePlay[4] = nodePlay[4],nodePlay[7] nodePlay[9] = node[9] + "U" for x in nodePlay: successors.append(x) nodePlay = node.copy() nodePlay[7],nodePlay[6] = nodePlay[6],nodePlay[7] nodePlay[9] = node[9] + "L" for x in nodePlay: successors.append(x) nodePlay = node.copy() nodePlay[7],nodePlay[8] = nodePlay[8],nodePlay[7] nodePlay[9] = node[9] + "R" for x in nodePlay: successors.append(x) elif i == 8: nodePlay = node.copy() nodePlay[8],nodePlay[5] = nodePlay[5],nodePlay[8] nodePlay[9] = node[9] + "U" for x in nodePlay: successors.append(x) nodePlay = node.copy() nodePlay[8],nodePlay[7] = nodePlay[7],nodePlay[8] nodePlay[9] = node[9] + "L" for x in nodePlay: successors.append(x) return successors #------------------------------------------ |
# 633xxxxx21 168 (2020-09-20 20:00) def gen_successors(node): successors = [] i = node.index(0) if i == 0: nodeMade = list(node) nodeMade[0], nodeMade[1] = nodeMade[1], nodeMade[0] nodeMade[-1] += "R" successors.extend(nodeMade) nodeMade = list(node) nodeMade[0], nodeMade[3] = nodeMade[3], nodeMade[0] nodeMade[-1] += "D" successors.extend(nodeMade) elif i == 1: nodeMade = list(node) nodeMade[1], nodeMade[0] = nodeMade[0], nodeMade[1] nodeMade[-1] += "L" successors.extend(nodeMade) nodeMade = list(node) nodeMade[1], nodeMade[4] = nodeMade[4], nodeMade[1] nodeMade[-1] += "D" successors.extend(nodeMade) nodeMade = list(node) nodeMade[1], nodeMade[2] = nodeMade[2], nodeMade[1] nodeMade[-1] += "R" successors.extend(nodeMade) elif i == 2: nodeMade = list(node) nodeMade[2], nodeMade[1] = nodeMade[1], nodeMade[2] nodeMade[-1] += "L" successors.extend(nodeMade) nodeMade = list(node) nodeMade[2], nodeMade[5] = nodeMade[5], nodeMade[2] nodeMade[-1] += "D" successors.extend(nodeMade) elif i == 3: nodeMade = list(node) nodeMade[3], nodeMade[0] = nodeMade[0], nodeMade[3] nodeMade[-1] += "U" successors.extend(nodeMade) nodeMade = list(node) nodeMade[3], nodeMade[4] = nodeMade[4], nodeMade[3] nodeMade[-1] += "R" successors.extend(nodeMade) nodeMade = list(node) nodeMade[3], nodeMade[6] = nodeMade[6], nodeMade[3] nodeMade[-1] += "D" successors.extend(nodeMade) elif i == 4: nodeMade = list(node) nodeMade[4], nodeMade[1] = nodeMade[1], nodeMade[4] nodeMade[-1] += "U" successors.extend(nodeMade) nodeMade = list(node) nodeMade[4], nodeMade[3] = nodeMade[3], nodeMade[4] nodeMade[-1] += "L" successors.extend(nodeMade) nodeMade = list(node) nodeMade[4], nodeMade[5] = nodeMade[5], nodeMade[4] nodeMade[-1] += "R" successors.extend(nodeMade) nodeMade = list(node) nodeMade[4], nodeMade[7] = nodeMade[7], nodeMade[4] nodeMade[-1] += "D" successors.extend(nodeMade) elif i == 5: nodeMade = list(node) nodeMade[5], nodeMade[2] = nodeMade[2], nodeMade[5] nodeMade[-1] += "U" successors.extend(nodeMade) nodeMade = list(node) nodeMade[5], nodeMade[4] = nodeMade[4], nodeMade[5] nodeMade[-1] += "L" successors.extend(nodeMade) nodeMade = list(node) nodeMade[5], nodeMade[8] = nodeMade[8], nodeMade[5] nodeMade[-1] += "D" successors.extend(nodeMade) elif i == 6: nodeMade = list(node) nodeMade[6], nodeMade[3] = nodeMade[3], nodeMade[6] nodeMade[-1] += "U" successors.extend(nodeMade) nodeMade = list(node) nodeMade[6], nodeMade[7] = nodeMade[7], nodeMade[6] nodeMade[-1] += "R" successors.extend(nodeMade) elif i == 7: nodeMade = list(node) nodeMade[7], nodeMade[4] = nodeMade[4], nodeMade[7] nodeMade[-1] += "U" successors.extend(nodeMade) nodeMade = list(node) nodeMade[7], nodeMade[6] = nodeMade[6], nodeMade[7] nodeMade[-1] += "L" successors.extend(nodeMade) nodeMade = list(node) nodeMade[7], nodeMade[8] = nodeMade[8], nodeMade[7] nodeMade[-1] += "R" successors.extend(nodeMade) elif i == 8: nodeMade = list(node) nodeMade[8], nodeMade[7] = nodeMade[7], nodeMade[8] nodeMade[-1] += "L" successors.extend(nodeMade) nodeMade = list(node) nodeMade[8], nodeMade[5] = nodeMade[5], nodeMade[8] nodeMade[-1] += "U" successors.extend(nodeMade) return successors #------------------------------------------ |
# 633xxxxx21 169 (2020-09-20 22:43) def gen_successors(node): temp = list(node) successors = [] a = node.index(0) if a not in [0,1,2]: temp[a],temp[a-3] = temp[a-3],temp[a] temp[-1]+='U' successors += list(temp) temp = list(node) if a not in [6,7,8]: temp[a],temp[a+3] = temp[a+3],temp[a] temp[-1]+='D' successors += list(temp) temp = list(node) if a not in [0,3,6]: temp[a],temp[a-1] = temp[a-1],temp[a] temp[-1]+='L' successors += list(temp) temp = list(node) if a not in [2,5,8]: temp[a],temp[a+1] = temp[a+1],temp[a] temp[-1]+='R' successors += list(temp) temp = list(node) return successors #------------------------------------------ |
# 633xxxxx21 170 (2020-09-20 21:13) def gen_successors(node): successors = [] L = len(board) n = int(L**0.5) ps = node.index(0) node1 = node[:-1] a1 = list(node1) a2 = list(node1) a3 = list(node1) a4 = list(node1) if ps < n : if ps == 0: a1[ps],a1[ps+1] = a1[ps+1],a1[ps] successors +=a1+[node[-1]+'R'] a2[ps],a2[ps+n] = a2[ps+n],a2[ps] successors += a2+[node[-1]+'D'] elif ps == n-1: a1[ps],a1[ps-1] = a1[ps-1],a1[ps] successors += a1+[node[-1]+'L'] a2[ps],a2[ps+n] =a2[ps+n],a2[ps] successors += a2+[node[-1]+'D'] else : a1[ps],a1[ps+1] =a1[ps+1],a1[ps] successors +=a1+[node[-1]+'R'] a2[ps],a2[ps-1] = a2[ps-1],a2[ps] successors += a2+[node[-1]+'L'] a3[ps],a3[ps+n] =a3[ps+n],a3[ps] successors +=a3+[node[-1]+'D'] elif ps > L-n-1 : if ps%n == 0: a1[ps],a1[ps+1] =a1[ps+1],a1[ps] successors += a1+[node[-1]+'R'] a2[ps],a2[ps-n] =a2[ps-n],a2[ps] successors += a2+[node[-1]+'U'] elif ps == L-1 : a1[ps],a1[ps-1] = a1[ps-1],a1[ps] successors += a1+[node[-1]+'L'] a2[ps],a2[ps-n] = a2[ps-n],a2[ps] successors += a2+[node[-1]+'U'] else : a1[ps],a1[ps+1] = a1[ps+1],a1[ps] successors += a1+[node[-1]+'R'] a2[ps],a2[ps-1] = a2[ps-1],a2[ps] successors += a2+[node[-1]+'L'] a3[ps],a3[ps-n] =a3[ps-n],a3[ps] successors +=a3+[node[-1]+'U'] elif ps%n == 0: a1[ps],a1[ps+1] = a1[ps+1],a1[ps] successors += a1+[node[-1]+'R'] a2[ps],a2[ps-n] = a2[ps-n],a2[ps] successors += a2+[node[-1]+'U'] a3[ps],a3[ps+n] = a3[ps+n],a3[ps] successors += a3+[node[-1]+'D'] elif (ps+1)%n == 0: a1[ps],a1[ps-1] = a1[ps-1],a1[ps] successors += a1+[node[-1]+'L'] a2[ps],a2[ps-n] = a2[ps-n],a2[ps] successors += a2+[node[-1]+'U'] a3[ps],a3[ps+n] = a3[ps+n],a3[ps] successors += a3+[node[-1]+'D'] else : a1[ps],a1[ps-1] = a1[ps-1],a1[ps] successors += a1+[node[-1]+'L'] a2[ps],a2[ps-n] = a2[ps-n],a2[ps] successors += a2+[node[-1]+'U'] a3[ps],a3[ps+n] = a3[ps+n],a3[ps] successors += a3+[node[-1]+'D'] a4[ps],a4[ps+1] = a4[ps+1],a4[ps] successors += a4+[node[-1]+'R'] return successors #------------------------------------------ |
# 633xxxxx21 171 (2020-09-20 20:55) def gen_successors(node): successors = [] a = ["DR", "DLR", "DL", "UDR", "UDLR" \ , "UDL", "UR", "URL", "UL"] b = node.index(0) c = a[b] for i in c: e = node.copy() if i == "U": e.remove(0) e.insert(b-3, 0) e.insert(b+1, e[b-2]) e.pop(b-2) e[-1] += "U" elif i == "L": e.remove(0) e.insert(b-1, 0) e[-1] += "L" elif i == "R": e.remove(0) e.insert(b+1, 0) e[-1] += "R" elif i == "D": e.remove(0) e.insert(b+2, 0) e.insert(b, e[b+3]) e.pop(b+4) e[-1] += "D" successors += e return successors #------------------------------------------ |
# 633xxxxx21 172 (2020-09-20 22:14) def gen_successors(node): successors = [] x = node.index(0) if x in [3,4,5,6,7,8]: y1 = node[:9] y1.remove(0) y1.insert(x-3,0) z1 = [node[-1]+"U"] successors += y1+z1 if x in [0,1,2,3,4,5]: y2 = node[:9] y2.remove(0) y2.insert(x+3,0) z2 = [node[-1]+"D"] successors += y2+z2 if x in [1,2,4,5,7,8]: y3 = node[:9] y3.remove(0) y3.insert(x-1,0) z3 = [node[-1]+"L"] successors += y3+z3 if x in [0,1,3,4,6,7]: y4 = node[:9] y4.remove(0) y4.insert(x+1,0) z4 = [node[-1]+"R"] successors += y4+z4 return successors #------------------------------------------ |
# 633xxxxx21 173 (2020-09-20 22:44) def gen_successors(node): successors = [] a=node.index(0) if 0<=a<=5: node1=node[::] a2=node1.pop(-1) a1=node1.pop(a+3) node1.insert(a,a1) node1.remove(0) node1.insert(a+3,0) a2+='D' node1.append(a2) move=node1[::] successors+=move if 3<=a<=8: node1=node[::] a2=node1.pop(-1) a1=node1.pop(a-3) node1.insert(a,a1) node1.remove(0) node1.insert(a-3,0) a2+='U' node1.append(a2) move=node1[::] successors+=move if a in [0,1,3,4,6,7]: node1=node[::] a2=node1.pop(-1) a1=node1.pop(a+1) node1.insert(a,a1) node1.remove(0) node1.insert(a+1,0) a2+='R' node1.append(a2) move=node1[::] successors+=move if a in [1,2,4,5,7,8]: node1=node[::] a2=node1.pop(-1) a1=node1.pop(a-1) node1.insert(a,a1) node1.remove(0) node1.insert(a-1,0) a2+='L' node1.append(a2) move=node1[::] successors+=move return successors #------------------------------------------ |
# 633xxxxx21 174 (2020-09-20 12:04) def gen_successors(node): successors = [] A = len(board) a = int(A**(1/2)) p = node.index(0) n = node[:-1] b1 = list(n) b2 = list(n) b3 = list(n) b4 = list(n) if p < a : if p == 0: b1[p],b1[p+1] = b1[p+1],b1[p] successors += b1+[node[-1]+'R'] b2[p],b2[p+a] = b2[p+a],b2[p] successors += b2+[node[-1]+'D'] elif p == a-1: b1[p],b1[p-1] = b1[p-1],b1[p] successors += b1+[node[-1]+'L'] b2[p],b2[p+a] = b2[p+a],b2[p] successors += b2+[node[-1]+'D'] else : b1[p],b1[p+1] = b1[p+1],b1[p] successors += b1+[node[-1]+'R'] b2[p],b2[p-1] = b2[p-1],b2[p] successors += b2+[node[-1]+'L'] b3[p],b3[p+a] = b3[p+a],b3[p] successors += b3+[node[-1]+'D'] elif p > A-a-1 : if p%a == 0: b1[p],b1[p+1] = b1[p+1],b1[p] successors += b1+[node[-1]+'R'] b2[p],b2[p-a] = b2[p-a],b2[p] successors += b2+[node[-1]+'U'] elif p == A-1 : b1[p],b1[p-1] = b1[p-1],b1[p] successors += b1+[node[-1]+'L'] b2[p],b2[p-a] = b2[p-a],b2[p] successors += b2+[node[-1]+'U'] else : b1[p],b1[p+1] = b1[p+1],b1[p] successors += b1+[node[-1]+'R'] b2[p],b2[p-1] = b2[p-1],b2[p] successors += b2+[node[-1]+'L'] b3[p],b3[p-a] = b3[p-a],b3[p] successors += b3+[node[-1]+'U'] elif p%a == 0: b1[p],b1[p+1] = b1[p+1],b1[p] successors += b1+[node[-1]+'R'] b2[p],b2[p-a] = b2[p-a],b2[p] successors += b2+[node[-1]+'U'] b3[p],b3[p+a] = b3[p+a],b3[p] successors += b3+[node[-1]+'D'] elif (p+1)%a == 0: b1[p],b1[p-1] = b1[p-1],b1[p] successors += b1+[node[-1]+'L'] b2[p],b2[p-a] = b2[p-a],b2[p] successors += b2+[node[-1]+'U'] b3[p],b3[p+a] = b3[p+a],b3[p] successors += b3+[node[-1]+'D'] else : b1[p],b1[p-1] = b1[p-1],b1[p] successors += b1+[node[-1]+'L'] b2[p],b2[p-a] = b2[p-a],b2[p] successors += b2+[node[-1]+'U'] b3[p],b3[p+a] = b3[p+a],b3[p] successors += b3+[node[-1]+'D'] b4[p],b4[p+1] = b4[p+1],b4[p] successors += b4+[node[-1]+'R'] return successors #------------------------------------------ |
# 633xxxxx21 175 (2020-09-20 22:53) def gen_successors(node): successors = [] t = list(node) if 0 == node[0]: t[0],t[1] = t[1],t[0] for i in range(len(board)): successors.append(t[i]) successors.append(str(node[-1]) + 'R') t = list(node) t[0],t[3] = t[3],t[0] for i in range(len(board)): successors.append(t[i]) successors.append(str(node[-1]) + 'D') t = list(node) if 0 == node[1]: t[1],t[0] = t[0],t[1] for i in range(len(board)): successors.append(t[i]) successors.append(str(node[-1]) + 'L') t = list(node) t[1],t[2] = t[2],t[1] for i in range(len(board)): successors.append(t[i]) successors.append(str(node[-1]) + 'R') t = list(node) t[1],t[4] = t[4],t[1] for i in range(len(board)): successors.append(t[i]) successors.append(str(node[-1]) + 'D') t = list(node) if 0 == node[2]: t[2],t[1] = t[1],t[2] for i in range(len(board)): successors.append(t[i]) successors.append(str(node[-1]) + 'L') t = list(node) t[2],t[5] = t[5],t[2] for i in range(len(board)): successors.append(t[i]) successors.append(str(node[-1]) + 'D') t = list(node) if 0 == node[3]: t[3],t[0] = t[0],t[3] for i in range(len(board)): successors.append(t[i]) successors.append(str(node[-1]) + 'U') t = list(node) t[3],t[4] = t[4],t[3] for i in range(len(board)): successors.append(t[i]) successors.append(str(node[-1]) + 'R') t = list(node) t[3],t[6] = t[6],t[3] for i in range(len(board)): successors.append(t[i]) successors.append(str(node[-1]) + 'D') t = list(node) if 0 == node[4]: t[4],t[1] = t[1],t[4] for i in range(len(board)): successors.append(t[i]) successors.append(str(node[-1]) + 'U') t = list(node) t[4],t[3] = t[3],t[4] for i in range(len(board)): successors.append(t[i]) successors.append(str(node[-1]) + 'L') t = list(node) t[4],t[5] = t[5],t[4] for i in range(len(board)): successors.append(t[i]) successors.append(str(node[-1]) + 'R') t = list(node) t[4],t[7] = t[7],t[4] for i in range(len(board)): successors.append(t[i]) successors.append(str(node[-1]) + 'D') t = list(node) if 0 == node[5]: t[5],t[2] = t[2],t[5] for i in range(len(board)): successors.append(t[i]) successors.append(str(node[-1]) + 'U') t = list(node) t[5],t[4] = t[4],t[5] for i in range(len(board)): successors.append(t[i]) successors.append(str(node[-1]) + 'L') t = list(node) t[5],t[8] = t[8],t[5] for i in range(len(board)): successors.append(t[i]) successors.append(str(node[-1]) + 'D') t = list(node) if 0 == node[6]: t[6],t[3] = t[3],t[6] for i in range(len(board)): successors.append(t[i]) successors.append(str(node[-1]) + 'U') t = list(node) t[6],t[7] = t[7],t[6] for i in range(len(board)): successors.append(t[i]) successors.append(str(node[-1]) + 'R') t = list(node) if 0 == node[7]: t[7],t[4] = t[4],t[7] for i in range(len(board)): successors.append(t[i]) successors.append(str(node[-1]) + 'U') t = list(node) t[7],t[6] = t[6],t[7] for i in range(len(board)): successors.append(t[i]) successors.append(str(node[-1]) + 'L') t = list(node) t[7],t[8] = t[8],t[7] for i in range(len(board)): successors.append(t[i]) successors.append(str(node[-1]) + 'R') t = list(node) if 0 == node[8]: t[8],t[7] = t[7],t[8] for i in range(len(board)): successors.append(t[i]) successors.append(str(node[-1]) + 'L') t = list(node) t[8],t[5] = t[5],t[8] for i in range(len(board)): successors.append(t[i]) successors.append(str(node[-1]) + 'U') t = list(node) return successors #------------------------------------------ |
# 633xxxxx21 176 (2020-09-20 18:37) def gen_successors(node): successors = [] n0 = node.index(0) if n0 in [3,4,5,6,7,8]: #Up new1 = [''] node1 = node[:9] move1 = node[-1] n0new = n0 - 3 node1.remove(0) node1.insert(n0new,0) move1 = [move1+'U'] new1 = node1+ move1 successors += new1 if n0 in [0,1,2,3,4,5]: #Down new1 = [''] node1 = node[:9] move1 = node[-1] n0new = n0 + 3 node1.remove(0) node1.insert(n0new,0) move1 = [move1+'D'] new1 = node1+ move1 successors += new1 if n0 in [1,2,4,5,7,8]: #Left new1 = [''] node1 = node[:9] move1 = node[-1] n0new = n0 - 1 node1.remove(0) node1.insert(n0new,0) move1 = [move1+'L'] new1 = node1+ move1 successors += new1 if n0 in [0,1,3,4,6,7]: #Right new1 = [''] node1 = node[:9] move1 = node[-1] n0new = n0 + 1 node1.remove(0) node1.insert(n0new,0) move1 = [move1+'R'] new1 = node1+ move1 successors += new1 return successors #------------------------------------------ |
# 633xxxxx21 177 (2020-09-18 16:44) def gen_successors(node): successors = [] N=int((len(node)-1)**0.5) n=N-1 a=node.index(0) x=a%N y=a//N def s(l,a,b): l=l[:-1] l[a],l[b]=l[b],l[a] return l if x!=0: successors +=s(node,a-1,a)+[(node[-1]+"L")] if x!=n: successors +=s(node,a+1,a)+[(node[-1]+"R")] if y!=0: successors +=s(node,a-N,a)+[(node[-1]+"U")] if y!=n: successors +=s(node,a+N,a)+[(node[-1]+"D")] return successors #------------------------------------------ |
# 633xxxxx21 178 (2020-09-20 20:33) def gen_successors(node): successors = [] rannode = list(node) i = node.index(0) if i == 0: rannode[0], rannode[3] \ = rannode[3], rannode[0] rannode[9] = node[9] + "D" successors.extend(rannode) rannode = list(node) rannode [0], rannode [1] \ = rannode [1], rannode [0] rannode [9] = node[9] + "R" successors.extend(rannode) elif i == 1: rannode[1], rannode[4] \ = rannode[4], rannode[1] rannode[9] = node[9] + "D" successors.extend(rannode) rannode = list(node) rannode[1], rannode[0] \ = rannode[0], rannode[1] rannode[9] = node[9] + "L" successors.extend(rannode) rannode = list(node) rannode[1], rannode[2] \ = rannode[2], rannode[1] rannode[9] = node[9] + "R" successors.extend(rannode) elif i == 2: rannode[2], rannode[5] \ = rannode[5], rannode[2] rannode[9] = node[9] + "D" successors.extend(rannode) rannode = list(node) rannode[2], rannode[1] \ = rannode[1], rannode[2] rannode[9] = node[9] + "L" successors.extend(rannode) elif i == 3: rannode[3], rannode[0] \ = rannode[0], rannode[3] rannode[9] = node[9] + "U" successors.extend(rannode) rannode = list(node) rannode[3], rannode[6] \ = rannode[6], rannode[3] rannode[9] = node[9] + "D" successors.extend(rannode) rannode = list(node) rannode[3], rannode[4] \ = rannode[4], rannode[3] rannode[9] = node[9] + "R" successors.extend(rannode) elif i == 4: rannode[4], rannode[1] \ = rannode[1], rannode[4] rannode[9] = node[9] + "U" successors.extend(rannode) rannode = list(node) rannode[4], rannode[7] \ = rannode[7], rannode[4] rannode[9] = node[9] + "D" successors.extend(rannode) rannode = list(node) rannode[4], rannode[3] \ = rannode[3], rannode[4] rannode[9] = node[9] + "L" successors.extend(rannode) rannode = list(node) rannode[4], rannode[5] \ = rannode[5], rannode[4] rannode[9] = node[9] + "R" successors.extend(rannode) elif i == 5: rannode[5], rannode[2] \ = rannode[2], rannode[5] rannode[9] = node[9] + "U" successors.extend(rannode) rannode = list(node) rannode[5], rannode[8] \ = rannode[8], rannode[5] rannode[9] = node[9] + "D" successors.extend(rannode) rannode = list(node) rannode[5], rannode[4] \ = rannode[4], rannode[5] rannode[9] = node[9] + "L" successors.extend(rannode) elif i == 6: rannode[6], rannode[3] \ = rannode[3], rannode[6] rannode[9] = node[9] + "U" successors.extend(rannode) rannode = list(node) rannode[6], rannode[7] \ = rannode[7], rannode[6] rannode[9] = node[9] + "R" successors.extend(rannode) elif i == 7: rannode[7], rannode[4] \ = rannode[4], rannode[7] rannode[9] = node[9] + "U" successors.extend(rannode) rannode = list(node) rannode[7], rannode[6] \ = rannode[6], rannode[7] rannode[9] = node[9] + "L" successors.extend(rannode) rannode = list(node) rannode[7], rannode[8] \ = rannode[8], rannode[7] rannode[9] = node[9] + "R" successors.extend(rannode) elif i == 8: rannode[8], rannode[5] \ = rannode[5], rannode[8] rannode[9] = node[9] + "U" successors.extend(rannode) rannode = list(node) rannode[8], rannode[7] \ = rannode[7], rannode[8] rannode[9] = node[9] + "L" successors.extend(rannode) return successors #------------------------------------------ #------------------------------------------ |
# 633xxxxx21 179 (2020-09-19 23:23) def gen_successors(node): successors = [] a=node.index(0) if a%3==0 : nnode=list(node) nnode[a],nnode[a+1] = nnode[a+1],nnode[a] nnode[-1] += 'R' successors += nnode elif a%3==1 : nnode=list(node) nnode[a],nnode[a+1] = nnode[a+1],nnode[a] nnode[-1] += 'R' successors += nnode nnode=list(node) nnode[a],nnode[a-1] = nnode[a-1],nnode[a] nnode[-1] += 'L' successors += nnode elif a%3==2 : nnode=list(node) nnode[a],nnode[a-1] = nnode[a-1],nnode[a] nnode[-1] += 'L' successors += nnode elif a <= 3 : nnode=list(node) nnode[a],nnode[a+3] = nnode[a+3],nnode[a] nnode[-1] += 'D' successors += nnode elif 3 < a <= 5 : nnode=list(node) nnode[a],nnode[a+3] = nnode[a+3],nnode[a] nnode[-1] += 'D' successors += nnode nnode=list(node) nnode[a],nnode[a-3] = nnode[a-3],nnode[a] nnode[-1] += 'U' successors += nnode elif a >= 6 : nnode=list(node) nnode[a],nnode[a-3] = nnode[a-3],nnode[a] nnode[-1] += 'U' successors += nnode return successors #------------------------------------------ |
# 633xxxxx21 180 (2020-09-20 21:48) def gen_successors(node): successors = [] node=board+['UDR'] node[-1]+='U' #เดินขึ้น if node[-1][-1]=='U': for i in range (len(board)): if node[i]==0 and i not in [0,1,2]: node.pop(i) x=node.pop(i-3) node.insert(i-3,0) node.insert(i,x) successors+=node break node=board+['UDR'] node[-1]+='D' #เดินลง if node[-1][-1]=='D': for i in range (len(board)): if node[i]==0 and i not in [6,7,8]: node.pop(i) x=node.pop(i+2) node.insert(i+2,0) node.insert(i,x) successors+=node break node=board+['UDR'] node[-1]+='L' #เดินซ้าย if node[-1][-1]=='L': for i in range (len(board)): if node[i]==0 and i not in [0,3,6]: node.pop(i) x=node.pop(i-1) node.insert(i-1,0) node.insert(i,x) successors+=node break node=board+['UDR'] node[-1]+='R' #เดินขวา if node[-1][-1]=='R': for i in range (len(board)): if node[i]==0 and i not in [2,5,8]: node.pop(i) x=node.pop(i) node.insert(i,x) node.insert(i+1,0) successors+=node break return successors #------------------------------------------ |
# 633xxxxx21 181 (2020-09-20 23:38) def gen_successors(node): successors = [] p = len(board) s = int(p**(1/2)) b = node.index(0) y1 = list(node[:-1:]) y2 = list(node[:-1:]) y3 = list(node[:-1:]) y4 = list(node[:-1:]) if b == 0 : y1[b],y1[b+1] = y1[b+1],y1[b] successors = successors+y1+[node[-1]+"R"] y2[b],y2[b+s] = y2[b+s],y2[b] successors = successors+y2+[node[-1]+"D"] elif 0<b<s-1 : y1[b],y1[b+1] = y1[b+1],y1[b] successors = successors+y1+[node[-1]+"R"] y2[b],y2[b+s] = y2[b+s],y2[b] successors = successors+y2+[node[-1]+"D"] y3[b],y3[b-1] = y3[b-1],y3[b] successors = successors+y3+[node[-1]+"L"] elif b == s-1 : y1[b],y1[b+s] = y1[b+s],y1[b] successors = successors+y1+[node[-1]+"D"] y2[b],y2[b-1] = y2[b-1],y2[b] successors = successors+y2+[node[-1]+"L"] elif b == s * (s-1) : y1[b],y1[b+1] = y1[b+1],y1[b] successors = successors+y1+[node[-1]+"R"] y2[b],y2[b-s] = y2[b-s],y2[b] successors = successors+y2+[node[-1]+"U"] elif b == (s**2)-1 : y1[b],y1[b-s] = y1[b-s],y1[b] successors = successors+y1+[node[-1]+"U"] y2[b],y2[b-1] = y2[b-1],y2[b] successors = successors+y2+[node[-1]+"L"] elif s*(s-1) < b < (s**2)-1 : y1[b],y1[b-s] = y1[b-s],y1[b] successors = successors+y1+[node[-1]+"U"] y2[b],y2[b-1] = y2[b-1],y2[b] successors = successors+y2+[node[-1]+"L"] y3[b],y3[b+1] = y3[b+1],y3[b] successors = successors+y3+[node[-1]+"R"] elif b%s == 0 : y1[b],y1[b-s] = y1[b-s],y1[b] successors = successors+y1+[node[-1]+"U"] y2[b],y2[b+1] = y2[b+1],y2[b] successors = successors+y2+[node[-1]+"R"] y3[b],y3[b+s] = y3[b+s],y3[b] successors = successors+y3+[node[-1]+"D"] elif b%s == s-1 : y1[b],y1[b-s] = y1[b-s],y1[b] successors = successors+y1+[node[-1]+"U"] y2[b],y2[b+s] = y2[b+s],y2[b] successors = successors+y2+[node[-1]+"D"] y3[b],y3[b-1] = y3[b-1],y3[b] successors = successors+y3+[node[-1]+"L"] else : y1[b],y1[b-s] = y1[b-s],y1[b] successors = successors+y1+[node[-1]+"U"] y2[b],y2[b+s] = y2[b+s],y2[b] successors = successors+y2+[node[-1]+"D"] y3[b],y3[b-1] = y3[b-1],y3[b] successors = successors+y3+[node[-1]+"L"] y4[b],y4[b+1] = y4[b+1],y4[b] successors = successors+y4+[node[-1]+"R"] return successors #------------------------------------------ |
# 633xxxxx21 182 (2020-09-20 23:47) def gen_successors(node): successors = [] zero = node.index(0) nodex = node[:-1] board1 = nodex + [] board2 = nodex + [] board3 = nodex + [] board4 = nodex + [] if zero == 0: board1[0],board1[1] = board1[1],board1[0] successors += board1 + [node[9]+"R"] board2[0],board2[3] = board2[3],board2[0] successors += board2 + [node[9]+"D"] elif zero == 1: board1[1],board1[0] = board1[0],board1[1] successors += board1 + [node[9]+"L"] board2[1],board2[2] = board2[2],board2[1] successors += board2 + [node[9]+"R"] board3[1],board3[4] = board3[4],board3[1] successors += board3 + [node[9]+"D"] elif zero == 2: board1[2],board1[1] = board1[1],board1[2] successors += board1 + [node[9]+"L"] board2[2],board2[5] = board2[5],board2[2] successors += board2 + [node[9]+"D"] elif zero == 3: board1[3],board1[0] = board1[0],board1[3] successors += board1 + [node[9]+"U"] board2[3],board2[4] = board2[4],board2[3] successors += board2 + [node[9]+"R"] board3[3],board3[6] = board3[6],board3[3] successors += board3 + [node[9]+"D"] elif zero == 4: board1[4],board1[1] = board1[1],board1[4] successors += board1 + [node[9]+"U"] board2[4],board2[3] = board2[3],board2[4] successors += board2 + [node[9]+"L"] board3[4],board3[5] = board3[5],board3[4] successors += board3 + [node[9]+"R"] board4[4],board4[7] = board4[7],board4[4] successors += board4 + [node[9]+"D"] elif zero == 5: board1[5],board1[4] = board1[4],board1[5] successors += board1 + [node[9]+"L"] board2[5],board2[2] = board2[2],board2[5] successors += board2 + [node[9]+"U"] board3[5],board3[8] = board3[8],board3[5] successors += board3 + [node[9]+"D"] elif zero == 6: board1[6],board1[3] = board1[3],board1[6] successors += board1 + [node[9]+"U"] board2[6],board2[7] = board2[7],board2[6] successors += board2 + [node[9]+"R"] elif zero == 7: board1[7],board1[8] = board1[8],board1[7] successors += board1 + [node[9]+"R"] board2[7],board2[6] = board2[6],board2[7] successors += board2 + [node[9]+"L"] board3[7],board3[4] = board3[4],board3[7] successors += board3 + [node[9]+"U"] elif zero == 8: board1[8],board1[7] = board1[7],board1[8] successors += board1 + [node[9]+"L"] board2[8],board2[5] = board2[5],board2[8] successors += board1 + [node[9]+"U"] # 1,2,3 # 4,5,6 # 7,8,0 return successors #------------------------------------------ |
# 633xxxxx21 183 (2020-09-20 13:51) def gen_successors(node): successors = [] if node.index(0) %2 == 0 and node.index(0) != 4: M = 2 if node.index(0) == 0: x = node.pop(-1) x1 = x[::1] x1+= "D" node1 = node.copy() node1[0] , node1[3] = node1[3] , node1[0] successors+= node1 + [x1] x2 = x[::1] x2 += "R" node2 = node.copy() node2[0] , node2[1] = node2[1] , node2[0] successors+= node2 + [x2] elif node.index(0) == 2: x = node.pop(-1) x1 = x[::1] x1+= "D" node1 = node.copy() node1[2] , node1[5] = node1[5] , node1[2] successors+= node1 + [x1] x2 = x[::1] x2 += "L" node2 = node.copy() node2[2] , node2[1] = node2[1] , node2[2] successors+= node2 + [x2] elif node.index(0) == 6: x = node.pop(-1) x1 = x[::1] x1+= "U" node1 = node.copy() node1[6] , node1[3] = node1[3] , node1[6] successors+= node1 + [x1] x2 = x[::1] x2 += "R" node2 = node.copy() node2[6] , node2[7] = node2[7] , node2[6] successors+= node2 + [x2] elif node.index(0) == 8: x = node.pop(-1) x1 = x[::1] x1+= "U" node1 = node.copy() node1[8] , node1[3] = node1[3] , node1[8] successors+= node1 + [x1] x2 = x[::1] x2 += "L" node2 = node.copy() node2[8] , node2[7] = node2[7] , node2[8] successors+= node2 + [x2] elif node.index(0)%2 == 1 : M = 3 if node.index(0) == 1: x = node.pop(-1) x1 = x[::1] x1+= "D" node1 = node.copy() node1[1] , node1[4] = node1[4] , node1[1] successors+= node1 + [x1] x2 = x[::1] x2 += "L" node2 = node.copy() node2[1] , node2[0] = node2[0] , node2[1] successors+= node2 + [x2] x3 = x[::1] x3 += "R" node3 = node.copy() node3[1] , node3[2] = node3[2] , node3[1] successors+= node3 + [x3] elif node.index(0) == 3: x = node.pop(-1) x1 = x[::1] x1+= "D" node1 = node.copy() node1[3] , node1[6] = node1[6] , node1[3] successors+= node1 + [x1] x2 = x[::1] x2 += "U" node2 = node.copy() node2[3] , node2[0] = node2[0] , node2[3] successors+= node2 + [x2] x3 = x[::1] x3 += "R" node3 = node.copy() node3[3] , node3[4] = node3[4] , node3[3] successors+= node3 + [x3] elif node.index(0) == 5: x = node.pop(-1) x1 = x[::1] x1+= "D" node1 = node.copy() node1[5] , node1[8] = node1[8] , node1[5] successors+= node1 + [x1] x2 = x[::1] x2 += "U" node2 = node.copy() node2[5] , node2[2] = node2[2] , node2[5] successors+= node2 + [x2] x3 = x[::1] x3 += "L" node3 = node.copy() node3[5] , node3[4] = node3[4] , node3[5] successors+= node3 + [x3] elif node.index(0) == 7: x = node.pop(-1) x1 = x[::1] x1+= "L" node1 = node.copy() node1[7] , node1[6] = node1[6] , node1[7] successors+= node1 + [x1] x2 = x[::1] x2 += "U" node2 = node.copy() node2[7] , node2[4] = node2[4] , node2[7] successors+= node2 + [x2] x3 = x[::1] x3 += "R" node3 = node.copy() node3[7] , node3[8] = node3[8] , node3[7] successors+= node3 + [x3] elif node.index(0) == 4: M = 4 x = node.pop(-1) x1 = x[::1] x1+= "L" node1 = node.copy() node1[4] , node1[3] = node1[3] , node1[4] successors+= node1 + [x1] x2 = x[::1] x2 += "U" node2 = node.copy() node2[4] , node2[1] = node2[1] , node2[4] successors+= node2 + [x2] x3 = x[::1] x3 += "R" node3 = node.copy() node3[4] , node3[5] = node3[5] , node3[4] successors+= node3 + [x3] x4 = x[::1] x4 += "D" node4 = node.copy() node4[4] , node4[7] = node4[7] , node4[4] successors+= node4 + [x4] return successors #------------------------------------------ |
# 633xxxxx21 184 (2020-09-20 22:59) def gen_successors(node): successors = [] list = move_stuff(node[:-1]).split(' ') M = len(list) for i in range(M): successors = successors + make_move(node,list[i]) # print(node) # print(successors) return successors # ------------------------------------------ def move_stuff(board): location = int(board.index(0))+1 if location == 1: return 'D R' elif location == 2: return 'D L R' elif location == 3: return 'D L' elif location == 4: return 'U D L' elif location == 5: return 'U D L R' elif location == 6: return 'U D R' elif location == 7: return 'U L' elif location == 8: return 'U L R' else : return 'U L' # --------------------------------------- def make_move(node,move): board = list(node) location = board.index(0) N = 3 if move == 'U': (board[location],board[location-N]) = (board[location-N],board[location]) elif move == 'D': (board[location], board[(location + N)]) = (board[(location + N)], board[location]) elif move == 'R': (board[location], board[location + 1]) = (board[location + 1], board[location]) else: (board[location], board[location - 1]) = (board[location - 1], board[location]) board[-1] = str(board[-1])+move # print(board) return board |
# 633xxxxx21 185 (2020-09-20 23:10) def gen_successors(node): successors = [] nodex = list(node) M = 0 c = 0 #0 = U, 1 = R, 2= D, 3 = L g = node.index(0) if g == 0 or g == 2 or g == 6 or g == 8: M = 2 elif g == 4: M = 4 else: M = 3 while c < 4: u = 0 r = 0 d = 0 l = 0 if M == 2: if c == 0: u +=1 nodex = list(node) if 0<= g <=2: c += 1 elif g == 6: x = nodex.pop(g-3) y = nodex.pop(g-1) nodex.insert(g-3, y) nodex.insert(g, x) c += 1 elif g == 8: x = nodex.pop(g-3) y = nodex.pop(g-1) nodex.insert(g-3, y) nodex.insert(g, x) c += 1 if nodex[g] == node[g]: pass else: nodex[-1] += 'U' successors += nodex if c == 1: r +=1 nodex = list(node) if g == 2 or g == 8: c += 1 elif g == 0: x = nodex.pop(g+1) y = nodex.pop(g) nodex.insert(g, y) nodex.insert(g, x) c += 1 elif g == 6 : x = nodex.pop(g+1) y = nodex.pop(g) nodex.insert(g, y) nodex.insert(g, x) c += 1 if nodex[g] == node[g]: pass else: nodex[-1] += 'R' successors += nodex if c == 2: d+=1 nodex = list(node) if 6 <= g <= 8: c += 1 elif g == 0: x = nodex.pop(g+3) y = nodex.pop(g) nodex.insert(g+2, y) nodex.insert(g, x) c += 1 elif g == 2: x = nodex.pop(g+3) y = nodex.pop(g) nodex.insert(g+2, y) nodex.insert(g, x) c += 1 if nodex[g] == node[g]: pass else: nodex[-1] += 'D' successors += nodex if c == 3: l+=1 nodex = list(node) if g == 0 or g == 6: c += 1 elif g == 2: x = nodex.pop(g-1) y = nodex.pop(g-1) nodex.insert(g-1, y) nodex.insert(g, x) c += 1 elif g == 8: x = nodex.pop(g-1) y = nodex.pop(g-1) nodex.insert(g-1, y) nodex.insert(g, x) c += 1 if nodex[g] == node[g]: pass else: nodex[-1] += 'L' successors += nodex elif M == 4 : if c == 0: u+=1 nodex = list(node) x = nodex.pop(g-3) y = nodex.pop(g-1) nodex.insert(g-3, y) nodex.insert(g, x) c += 1 if nodex[g] == node[g]: pass else: nodex[-1] += 'U' successors += nodex elif c == 1: r+=1 nodex = list(node) x = nodex.pop(g+1) y = nodex.pop(g) nodex.insert(g, y) nodex.insert(g, x) c += 1 if nodex[g] == node[g]: pass else: nodex[-1] += 'R' successors += nodex elif c == 2: d+=1 nodex = list(node) x = nodex.pop(g+3) y = nodex.pop(g) nodex.insert(g+2, y) nodex.insert(g, x) c += 1 if nodex[g] == node[g]: pass else: nodex[-1] += 'D' successors += nodex elif c == 3: l+=1 nodex = list(node) x = nodex.pop(g-1) y = nodex.pop(g-1) nodex.insert(g-1, y) nodex.insert(g, x) c += 1 if nodex[g] == node[g]: pass else: nodex[-1] += 'L' successors += nodex elif M == 3: if g == 1: if c == 1: r+=1 nodex = list(node) x = nodex.pop(g+1) y = nodex.pop(g) nodex.insert(g, y) nodex.insert(g, x) if nodex[g] == node[g]: pass else: nodex[-1] += 'R' successors += nodex elif c == 2: d+=1 nodex = list(node) x = nodex.pop(g+3) y = nodex.pop(g) nodex.insert(g+2, y) nodex.insert(g, x) if nodex[g] == node[g]: pass else: nodex[-1] += 'D' successors += nodex elif c == 3: l+=1 nodex = list(node) x = nodex.pop(g-1) y = nodex.pop(g-1) nodex.insert(g-1, y) nodex.insert(g, x) if nodex[g] == node[g]: pass else: nodex[-1] += 'L' successors += nodex c += 1 elif g == 3: if c == 0: u+=1 nodex = list(node) x = nodex.pop(g-3) y = nodex.pop(g-1) nodex.insert(g-3, y) nodex.insert(g, x) if nodex[g] == node[g]: pass else: nodex[-1] += 'U' successors += nodex elif c == 1: r+=1 nodex = list(node) x = nodex.pop(g+1) y = nodex.pop(g) nodex.insert(g, y) nodex.insert(g, x) if nodex[g] == node[g]: pass else: nodex[-1] += 'R' successors += nodex elif c == 2: d+=1 nodex = list(node) x = nodex.pop(g+3) y = nodex.pop(g) nodex.insert(g+2, y) nodex.insert(g, x) if nodex[g] == node[g]: pass else: nodex[-1] += 'D' successors += nodex c += 1 elif g == 5 : if c == 0: u+=1 nodex = list(node) x = nodex.pop(g-3) y = nodex.pop(g-1) nodex.insert(g-3, y) nodex.insert(g, x) if nodex[g] == node[g]: pass else: nodex[-1] += 'U' successors += nodex elif c == 2: d+=1 nodex = list(node) x = nodex.pop(g+3) y = nodex.pop(g) nodex.insert(g+2, y) nodex.insert(g, x) if nodex[g] == node[g]: pass else: nodex[-1] += 'D' successors += nodex elif c == 3: l+=1 nodex = list(node) x = nodex.pop(g-1) y = nodex.pop(g-1) nodex.insert(g-1, y) nodex.insert(g, x) if nodex[g] == node[g]: pass else: nodex[-1] += 'L' successors += nodex c += 1 elif g == 7 : if c == 0: u+=1 nodex = list(node) x = nodex.pop(g-3) y = nodex.pop(g-1) nodex.insert(g-3, y) nodex.insert(g, x) if nodex[g] == node[g]: pass else: nodex[-1] += 'U' successors += nodex elif c == 1: r+=1 nodex = list(node) x = nodex.pop(g+1) y = nodex.pop(g) nodex.insert(g, y) nodex.insert(g, x) if nodex[g] == node[g]: pass else: nodex[-1] += 'R' successors += nodex elif c == 3: l+=1 nodex = list(node) x = nodex.pop(g-1) y = nodex.pop(g-1) nodex.insert(g-1, y) nodex.insert(g, x) if nodex[g] == node[g]: pass else: nodex[-1] += 'L' successors += nodex c += 1 return successors #------------------------------------------ |
# 633xxxxx21 186 (2020-09-20 23:46) def gen_successors(node): successors = [] N = int(len(node)**0.5) a = node.index(0) nn = [] if a < 6: nn += [[N,'D']] if a > N-1: nn += [[-N,'U']] if a % N < N-1: nn += [[1,'R']] if a % N > 0: nn += [[-1,'L']] for i in nn: newn = node.copy() newn[a], newn[a+i[0]] = newn[a+i[0]], newn[a] newn[-1] += i[1] successors += newn return successors #------------------------------------------ |
# 633xxxxx21 187 (2020-09-20 20:39) def gen_successors(node): successors = [] order= int((len(board))**0.5) d0 = node.index(0) if d0 in range(order,len(board)+1): successor = node[:] successor[d0],successor[d0-order] = successor[d0-order],successor[d0] successors += successor[:] if successor.index(0) in range(0,len(node)+1-order): successors[-1] = successors[-1]+'U' if d0 in range(0,len(board)-order): successor = node[:] successor[d0],successor[d0+order] = successor[d0+order],successor[d0] successors += successor[:] if successor.index(0) in range(order,len(node)+1): successors[-1] = successors[-1]+'D' for i in range(order-1): if d0 in range(i,len(board),order): successor = node[:] successor[d0],successor[d0+1] = successor[d0+1],successor[d0] successors += successor[:] for i in range(order): if successor.index(0) in range(i+1,len(node),order): successors[-1] = successors[-1]+'R' break for i in range(order-1): if d0 in range(i+1,len(node),order): successor = node[:] successor[d0],successor[d0-1] = successor[d0-1],successor[d0] successors += successor[:] for i in range(order): if successor.index(0) in range(i,len(node),order): successors[-1] = successors[-1]+'L' break return successors #------------------------------------------ |
# 633xxxxx21 188 (2020-09-19 21:32) def gen_successors(node): successors = [] a=node.index(0) if a%m==0: nod=node[:] nod[a+1],nod[a]= nod[a],nod[a+1] nod[-1]+='R' successors+=nod elif a%m==m-1: nod=node[:] nod[a-1],nod[a]= nod[a],nod[a-1] nod[-1]+='L' successors+=nod else: nod=node[:] nod[a+1],nod[a]= nod[a],nod[a+1] nod[-1]+='R' successors+=nod nod=node[:] nod[a-1],nod[a]= nod[a],nod[a-1] nod[-1]+='L' successors+=nod if 0<=a<=(m-1): nod=node[:] nod[a],nod[a+m]= nod[a+m],nod[a] nod[-1]+='D' successors+=nod elif (m*m)-(m)<=a<=(m*m)-1: nod=node[:] nod[a],nod[a-m]= nod[a-m],nod[a] nod[-1]+='U' successors+=nod else: nod=node[:] nod[a],nod[a+m]= nod[a+m],nod[a] nod[-1]+='D' successors+=nod nod=node[:] nod[a],nod[a-m]= nod[a-m],nod[a] nod[-1]+='U' successors+=nod #print(nod[-1]) #print(ret) #print('successors',successors) return successors #------------------------------------------ |
# 633xxxxx21 189 (2020-09-20 21:07) def gen_successors(node): successors = [] i = node.index(0) if i==0: nodew = list(node) nodew[0],nodew[1] = nodew[1],nodew[0] A = nodew.pop(-1) A += 'R' nodew.append(A) successors+=nodew nodew = list(node) nodew[0],nodew[3] = nodew[3],nodew[0] B = nodew.pop(-1) B += 'D' nodew.append(B) successors+=nodew elif i==1: nodew = list(node) nodew[1],nodew[0] = nodew[0],nodew[1] A = nodew.pop(-1) A += 'L' nodew.append(A) successors+=nodew nodex = list(node) nodex[1],nodex[4] = nodex[4],nodex[1] B = nodex.pop(-1) B += 'D' nodex.append(B) successors+=nodex nodey = list(node) nodey[1],nodey[2] = nodey[2],nodey[1] C = nodey.pop(-1) C += 'R' nodey.append(C) successors+=nodey elif i==2: nodew = list(node) nodew[2],nodew[1] = nodew[1],nodew[2] A = nodew.pop(-1) A += 'L' nodew.append(A) successors+=nodew nodex = list(node) nodex[2],nodex[5] = nodex[5],nodex[2] B = nodex.pop(-1) B += 'D' nodex.append(B) successors+=nodex elif i==3: nodew = list(node) nodew[3],nodew[0] = nodew[0],nodew[3] A = nodew.pop(-1) A += 'U' nodew.append(A) successors+=nodew nodex = list(node) nodex[3],nodex[4] = nodex[4],nodex[3] B = nodex.pop(-1) B += 'R' nodex.append(B) successors+=nodex nodey = list(node) nodey[3],nodey[6] = nodey[6],nodey[3] C = nodey.pop(-1) C += 'D' nodey.append(C) successors+=nodey elif i==4: nodew = list(node) nodew[4],nodew[1] = nodew[1],nodew[4] A = nodew.pop(-1) A += 'U' nodew.append(A) successors+=nodew nodex = list(node) nodex[4],nodex[3] = nodex[3],nodex[4] B = nodex.pop(-1) B += 'L' nodex.append(B) successors+=nodex nodey = list(node) nodey[4],nodey[5] = nodey[5],nodey[4] C = nodey.pop(-1) C += 'R' nodey.append(C) successors+=nodey nodez = list(node) nodez[4],nodez[7] = nodez[7],nodez[4] D = nodez.pop(-1) D += 'D' nodez.append(D) successors+=nodez elif i==5: nodew = list(node) nodew[5],nodew[2] = nodew[2],nodew[5] A = nodew.pop(-1) A += 'U' nodew.append(A) successors+=nodew nodex = list(node) nodex[5],nodex[4] = nodex[4],nodex[5] B = nodex.pop(-1) B += 'L' nodex.append(B) successors+=nodex nodey = list(node) nodey[5],nodey[8] = nodey[8],nodey[5] C = nodey.pop(-1) C += 'D' nodey.append(C) successors+=nodey elif i==6: nodew = list(node) nodew[6],nodew[3] = nodew[3],nodew[6] A = nodew.pop(-1) A += 'U' nodew.append(A) successors+=nodew nodex = list(node) nodex[6],nodex[7] = nodex[7],nodex[6] B = nodex.pop(-1) B += 'R' nodex.append(B) successors+=nodex elif i==7: nodew = list(node) nodew[7],nodew[4] = nodew[4],nodew[7] A = nodew.pop(-1) A += 'U' nodew.append(A) successors+=nodew nodex = list(node) nodex[7],nodex[6] = nodex[6],nodex[7] B = nodex.pop(-1) B += 'L' nodex.append(B) successors+=nodex nodey = list(node) nodey[7],nodey[8] = nodey[8],nodey[7] C = nodey.pop(-1) C += 'R' nodey.append(C) successors+=nodey elif i==8: nodew = list(node) nodew[8],nodew[5] = nodew[5],nodew[8] A = nodew.pop(-1) A += 'U' nodew.append(A) successors+=nodew nodex = list(node) nodex[8],nodex[7] = nodex[7],nodex[8] B = nodex.pop(-1) B += 'L' nodex.append(B) successors+=nodex return successors |
# 633xxxxx21 190 (2020-09-18 22:40) def gen_successors(node): successors = [] tumnaeng=(node.index(0))+1 kanad=len(node) N=int((kanad-1)**(0.5)) if tumnaeng==1: successors+=node[:tumnaeng-1:]+node[tumnaeng-1+N:tumnaeng+N:]+node[tumnaeng:tumnaeng-1+N:]+[0]+node[tumnaeng+N::] +node[:tumnaeng-1:]+node[tumnaeng:tumnaeng+1:]+[0]+node[tumnaeng+1::] successors[kanad-1]+='D' successors[kanad*2-1]+='R' elif tumnaeng==N: successors+=node[:tumnaeng-1:]+node[tumnaeng-1+N:tumnaeng+N:]+node[tumnaeng:tumnaeng-1+N:]+[0]+node[tumnaeng+N::] +node[:tumnaeng-2:]+[0]+node[tumnaeng-2:tumnaeng-1:]+node[tumnaeng::] successors[kanad-1]+='D' successors[kanad*2-1]+='L' elif tumnaeng==kanad-N: successors+=node[:tumnaeng-N-1:]+[0]+node[tumnaeng-N:tumnaeng-1:]+node[tumnaeng-N-1:tumnaeng-N:]+node[tumnaeng::] +node[:tumnaeng-1:]+node[tumnaeng:tumnaeng+1:]+[0]+node[tumnaeng+1::] successors[kanad-1]+='U' successors[kanad*2-1]+='R' elif tumnaeng==kanad-1: successors+=node[:tumnaeng-N-1:]+[0]+node[tumnaeng-N:tumnaeng-1:]+node[tumnaeng-N-1:tumnaeng-N:]+node[tumnaeng::] +node[:tumnaeng-2:]+[0]+node[tumnaeng-2:tumnaeng-1:]+node[tumnaeng::] successors[kanad-1]+='U' successors[kanad*2-1]+='L' elif (((tumnaeng+N-1)//N)%N) == 0 : successors+=node[:tumnaeng-N-1:]+[0]+node[tumnaeng-N:tumnaeng-1:]+node[tumnaeng-N-1:tumnaeng-N:]+node[tumnaeng::] +node[:tumnaeng-2:]+[0]+node[tumnaeng-2:tumnaeng-1:]+node[tumnaeng::] +node[:tumnaeng-1:]+node[tumnaeng:tumnaeng+1:]+[0]+node[tumnaeng+1::] successors[kanad-1]+='U' successors[kanad*2-1]+='L' successors[kanad*3-1]+='R' elif (((tumnaeng+N-1)//N)%N) == 1 : successors+=node[:tumnaeng-1:]+node[tumnaeng-1+N:tumnaeng+N:]+node[tumnaeng:tumnaeng-1+N:]+[0]+node[tumnaeng+N::] +node[:tumnaeng-2:]+[0]+node[tumnaeng-2:tumnaeng-1:]+node[tumnaeng::] +node[:tumnaeng-1:]+node[tumnaeng:tumnaeng+1:]+[0]+node[tumnaeng+1::] successors[kanad-1]+='D' successors[kanad*2-1]+='L' successors[kanad*3-1]+='R' elif tumnaeng%N == 1: successors+=node[:tumnaeng-N-1:]+[0]+node[tumnaeng-N:tumnaeng-1:]+node[tumnaeng-N-1:tumnaeng-N:]+node[tumnaeng::] +node[:tumnaeng-1:]+node[tumnaeng-1+N:tumnaeng+N:]+node[tumnaeng:tumnaeng-1+N:]+[0]+node[tumnaeng+N::] +node[:tumnaeng-1:]+node[tumnaeng:tumnaeng+1:]+[0]+node[tumnaeng+1::] successors[kanad-1]+='U' successors[kanad*2-1]+='D' successors[kanad*3-1]+='R' elif tumnaeng%N == 0: successors+=node[:tumnaeng-N-1:]+[0]+node[tumnaeng-N:tumnaeng-1:]+node[tumnaeng-N-1:tumnaeng-N:]+node[tumnaeng::] +node[:tumnaeng-1:]+node[tumnaeng-1+N:tumnaeng+N:]+node[tumnaeng:tumnaeng-1+N:]+[0]+node[tumnaeng+N::] +node[:tumnaeng-2:]+[0]+node[tumnaeng-2:tumnaeng-1:]+node[tumnaeng::] successors[kanad-1]+='U' successors[kanad*2-1]+='D' successors[kanad*3-1]+='L' else: successors+=node[:tumnaeng-N-1:]+[0]+node[tumnaeng-N:tumnaeng-1:]+node[tumnaeng-N-1:tumnaeng-N:]+node[tumnaeng::] +node[:tumnaeng-1:]+node[tumnaeng-1+N:tumnaeng+N:]+node[tumnaeng:tumnaeng-1+N:]+[0]+node[tumnaeng+N::] +node[:tumnaeng-2:]+[0]+node[tumnaeng-2:tumnaeng-1:]+node[tumnaeng::] +node[:tumnaeng-1:]+node[tumnaeng:tumnaeng+1:]+[0]+node[tumnaeng+1::] successors[kanad-1]+='U' successors[kanad*2-1]+='D' successors[kanad*3-1]+='L' successors[kanad*4-1]+='R' return successors #------------------------------------------ |
# 633xxxxx21 191 (2020-09-20 18:06) def gen_successors(node): successors = [] zero = node.index(0) if zero == 0: for e in "RD": if e == "R": successors += [node[zero+1]]+[0]+node[zero+2:-1]+[node[-1]+e] elif e == "D": successors += [node[zero+3]]+node[zero+1:zero+3]+[0]+node[zero+4:-1]+[node[-1]+e] elif zero == 1: for e in "LDR": if e == "L": successors += [0]+[node[zero-1]]+node[zero+1:-1]+[node[-1]+e] elif e == "D": successors += [node[zero-1]]+[node[zero+3]]+node[zero+1:zero+3]+[0]+node[zero+4:-1]+[node[-1]+e] elif e == "R": successors += [node[zero-1]]+[node[zero+1]]+[0]+node[zero+2:-1]+[node[-1]+e] elif zero == 2: for e in "LD": if e == "L": successors += [node[zero-2]]+[0]+[node[zero-1]]+node[zero+1:-1]+[node[-1]+e] elif e == "D": successors += node[zero-2:zero]+[node[zero+3]]+node[zero+1:zero+3]+[0]+node[zero+4:-1]+[node[-1]+e] elif zero == 3: for e in "UDR": if e == "U": successors += [0]+node[zero-2:zero]+[node[zero-3]]+node[zero+1:-1]+[node[-1]+e] elif e == "D": successors += node[zero-3:zero]+[node[zero+3]]+node[zero+1:zero+3]+[0]+node[zero+4:-1]+[node[-1]+e] elif e == "R": successors += node[zero-3:zero]+[node[zero+1]]+[0]+node[zero+2:-1]+[node[-1]+e] elif zero == 4: for e in "ULDR": if e == "U": successors += [node[zero-4]]+[0]+node[zero-2:zero]+[node[zero-3]]+node[zero+1:-1]+[node[-1]+e] elif e == "L": successors += node[zero-4:zero-1]+[0]+[node[zero-1]]+node[zero+1:-1]+[node[-1]+e] elif e == "D": successors += node[zero-4:zero]+[node[zero+3]]+node[zero+1:zero+3]+[0]+[node[zero+4]]+[node[-1]+e] elif e == "R": successors += node[zero-4:zero]+[node[zero+1]]+[0]+node[zero+2:-1]+[node[-1]+e] elif zero == 5: for e in "ULD": if e == "U": successors += node[zero-5:zero-3]+[0]+node[zero-2:zero]+[node[zero-3]]+node[zero+1:-1]+[node[-1]+e] elif e == "L": successors += node[zero-5:zero-1]+[0]+[node[zero-1]]+node[zero+1:-1]+[node[-1]+e] elif e == "D": successors += node[zero-5:zero]+[node[zero+3]]+node[zero+1:zero+3]+[0]+[node[-1]+e] elif zero == 6: for e in "RU": if e == "R": successors += node[zero-6:zero]+[node[zero+1]]+[0]+[node[zero+2]]+[node[-1]+e] elif e == "U": successors += node[zero-6:zero-3]+[0]+node[zero-2:zero]+[node[zero-3]]+node[zero+1:-1]+[node[-1]+e] elif zero == 7: for e in "LUR": if e == "L": successors += node[zero-7:zero-1]+[0]+[node[zero-1]]+[node[zero+1]]+[node[-1]+e] elif e == "U": successors += node[zero-7:zero-3]+[0]+node[zero-2:zero]+[node[zero-3]]+[node[zero+1]]+[node[-1]+e] elif e == "R": successors += node[zero-7:zero]+[node[zero+1]]+[0]+[node[-1]+e] elif zero == 8: for e in "LU": if e == "L": successors += node[zero-8:zero-1]+[0]+[node[zero-1]]+[node[-1]+e] elif e == "U": successors += node[zero-8:zero-3]+[0]+node[zero-2:zero]+[node[zero-3]]+[node[-1]+e] return successors #------------------------------------------ |
# 633xxxxx21 192 (2020-09-20 18:33) def gen_successors(node): from math import sqrt N = int(sqrt(len(node)-1)) successors = [] spPos = node.index(0) movable = [] if spPos < 6: movable.append((N,'D')) if spPos > N-1: movable.append((-N,'U')) if spPos%N < N-1: movable.append((1,'R')) if spPos%N > 0: movable.append((-1,'L')) for i in movable: pSuc = node.copy() pSuc[spPos], pSuc[spPos+i[0]] = pSuc[spPos+i[0]], pSuc[spPos] pSuc[-1] += i[1] successors += pSuc return successors #------------------------------------------ |
# 633xxxxx21 193 (2020-09-20 22:46) def gen_successors(node): successors = [] if 0 in node: a = node.index(0) if a == 0: for i in range(len(node)): #R successors.append(node[i]) successors[0],successors[1] = successors[1],successors[0] b = successors.pop(-1) successors.append(b+'R') for i in range(len(node)): #D successors.append(node[i]) successors[10],successors[13] = successors[13],successors[10] b = successors.pop(-1) successors.append(node[-1]+'D') if a == 1: for i in range(len(node)): #R successors.append(node[i]) successors[1],successors[2] = successors[2],successors[1] b = successors.pop(-1) successors.append(b+'R') for i in range(len(node)): #D successors.append(node[i]) successors[11],successors[14] = successors[14],successors[11] b = successors.pop(-1) successors.append(b+'D') for i in range(len(node)): #L successors.append(node[i]) successors[21],successors[20] = successors[20],successors[21] b = successors.pop(-1) successors.append(b+'L') if a == 2: for i in range(len(node)): #L successors.append(node[i]) successors[2],successors[1] = successors[1],successors[2] b = successors.pop(-1) successors.append(b+'L') for i in range(len(node)): #D successors.append(node[i]) successors[12],successors[15] = successors[15],successors[12] b = successors.pop(-1) successors.append(node[-1]+'D') if a == 3: for i in range(len(node)): #R successors.append(node[i]) successors[3],successors[4] = successors[4],successors[3] b = successors.pop(-1) successors.append(b+'R') for i in range(len(node)): #D successors.append(node[i]) successors[13],successors[16] = successors[16],successors[13] b = successors.pop(-1) successors.append(b+'D') for i in range(len(node)): #U successors.append(node[i]) successors[23],successors[20] = successors[20],successors[23] b = successors.pop(-1) successors.append(b+'U') if a == 4: for i in range(len(node)): #R successors.append(node[i]) successors[4],successors[5] = successors[5],successors[4] b = successors.pop(-1) successors.append(b+'R') for i in range(len(node)): #D successors.append(node[i]) successors[14],successors[17] = successors[17],successors[14] b = successors.pop(-1) successors.append(b+'D') for i in range(len(node)): #U successors.append(node[i]) successors[24],successors[21] = successors[21],successors[24] b = successors.pop(-1) successors.append(b+'U') for i in range(len(node)): #L successors.append(node[i]) successors[34],successors[33] = successors[33],successors[34] b = successors.pop(-1) successors.append(b+'L') if a == 5: for i in range(len(node)): #L successors.append(node[i]) successors[5],successors[4] = successors[4],successors[5] b = successors.pop(-1) successors.append(b+'L') for i in range(len(node)): #D successors.append(node[i]) successors[15],successors[18] = successors[18],successors[15] b = successors.pop(-1) successors.append(b+'D') for i in range(len(node)): #U successors.append(node[i]) successors[25],successors[22] = successors[22],successors[25] b = successors.pop(-1) successors.append(b+'U') if a == 6: for i in range(len(node)): #R successors.append(node[i]) successors[6],successors[7] = successors[7],successors[6] b = successors.pop(-1) successors.append(b+'R') for i in range(len(node)): #U successors.append(node[i]) successors[16],successors[13] = successors[13],successors[16] b = successors.pop(-1) successors.append(node[-1]+'U') if a == 7: for i in range(len(node)): #L successors.append(node[i]) successors[7],successors[6] = successors[6],successors[7] b = successors.pop(-1) successors.append(b+'L') for i in range(len(node)): #R successors.append(node[i]) successors[17],successors[18] = successors[18],successors[17] b = successors.pop(-1) successors.append(b+'R') for i in range(len(node)): #U successors.append(node[i]) successors[27],successors[24] = successors[24],successors[27] b = successors.pop(-1) successors.append(b+'U') if a == 8: for i in range(len(node)): #L successors.append(node[i]) successors[8],successors[7] = successors[7],successors[8] b = successors.pop(-1) successors.append(b+'L') for i in range(len(node)): #U successors.append(node[i]) successors[18],successors[15] = successors[15],successors[18] b = successors.pop(-1) successors.append(node[-1]+'U') return successors #------------------------------------------ |
# 633xxxxx21 194 (2020-09-20 23:59) def gen_successors(node): successors = [] i=node.index(0) u=[3,4,5,6,7,8] d=[0,1,2,3,4,5] l=[1,2,4,5,7,8] r=[0,1,3,4,6,7] if i in u : node02=node[::];node02[i],node02[i-3]=node02[i-3],node02[i];node02[9] = node02[9] + "U" successors.extend(node02) if i in d : node02=node[::];node02[i],node02[i+3]=node02[i+3],node02[i];node02[9] = node02[9] + "D" successors.extend(node02) if i in l : node02=node[::];node02[i],node02[i-1]=node02[i-1],node02[i];node02[9] = node02[9] + "L" successors.extend(node02) if i in r : node02=node[::];node02[i],node02[i+1]=node02[i+1],node02[i];node02[9] = node02[9] + "R" successors.extend(node02) return successors #------------------------------------------ |
# 633xxxxx21 195 (2020-09-20 22:40) def gen_successors(node): successors = [] i = node.index(0) N = int((len(node)-1)**0.5) numlist = [] Rlist = [] Llist = [] for num in range((len(node)-1)): numlist.append(num) for rnum in range(N-1): R = numlist[rnum:len(node)-1:N] Rlist.extend(R) for lnum in range(N-1): L = numlist[lnum+1:len(node)-1:N] Llist.extend(L) Dlist = numlist[:N*(N-1)] Ulist = numlist[N:] if i in Rlist: node1 = list(node) node1[i], node1[i+1] = node1[i+1], node1[i] node1[len(node)-1] += 'R' successors.extend(node1) if i in Llist: node1 = list(node) node1[i], node1[i-1] = node1[i-1], node1[i] node1[len(node)-1] += 'L' successors.extend(node1) if i in Dlist: node1 = list(node) node1[i], node1[i+N] = node1[i+N], node1[i] node1[len(node)-1] += 'D' successors.extend(node1) if i in Ulist: node1 = list(node) node1[i], node1[i-N] = node1[i-N], node1[i] node1[len(node)-1] += 'U' successors.extend(node1) return successors #------------------------------------------ |
# 633xxxxx21 196 (2020-09-20 21:25) def gen_successors(node): successors = [] i = node.index(0) board0 = list(node[0:-1:1]) board1 = list(board0) board2 = list(board0) board3 = list(board0) board4 = list(board0) N = int(len(board)**(1/2)) if i == 0: # Top-left corner / only 2 ways to move :RD board1[i] , board1[i+1] = board1[i+1], board1[i] # Right successors += board1[0::1] + [node[-1] + 'R'] board2[N] , board2[i] = board2[i], board2[N] # Down successors += board2[0::1] + [node[-1] + 'D'] if N == 2: if i == N-1 : # Top-right corner / only 2 ways to move :LD board1[i] , board1[i-1] = board1[i-1], board1[i] # Left successors += board1[0::1] + [node[-1] + 'L'] board2[i] , board2[-1] = board2[-1], board2[i] # Down successors += board2[0::1] + [node[-1] + 'D'] if i == N-1 and N>2 : # Top-right corner / only 2 ways to move :LD board1[i] , board1[i-1] = board1[i-1], board1[i] # Left successors += board1[0::1] + [node[-1] + 'L'] board2[i] , board2[2*i+1] = board2[2*i+1], board2[i] # Down successors += board2[0::1] + [node[-1] + 'D'] if i == len(board)-N : # Bottom-Left corner / only 2 ways to move : RU board1[i] , board1[i+1] = board1[i+1], board1[i] # Right successors += board1[0::1] + [node[-1] + 'R'] board2[i] , board2[i-N] = board2[i-N], board2[i] # Up successors += board2[0::1] + [node[-1] + 'U'] if i == len(board)-1: # Bottom-Right corner / only 2 ways to move : U board1[i] , board1[i-1] = board1[i-1], board1[i] # Left successors += board1[0::1] + [node[-1] + 'L'] board2[i] , board2[i-N] = board2[i-N], board2[i] # Up successors += board2[0::1] + [node[-1] + 'U'] else: if 0 < i < N-1 : # First role w/o corners / 3 ways to move :LRD board1[i] , board1[i+1] = board1[i+1] , board1[i] #Right successors += board1[0::1] + [node[-1] + 'R'] board2[i] , board2[i-1] = board2[i-1] , board2[i] #Left successors += board2[0::1] + [node[-1] + 'L'] board3[i] , board3[i+N] = board3[i+N] , board3[i] #Down successors += board3[0::1] + [node[-1] + 'D'] if len(board)-N < i < len(board)-1 :# Last role w/o corners / 3 ways to move :LRU board1[i] , board1[i+1] = board1[i+1] , board1[i] #Right successors += board1[0::1] + [node[-1] + 'R'] board2[i] , board2[i-1] = board2[i-1] , board2[i] #Left successors += board2[0::1] + [node[-1] + 'L'] board3[i] , board3[i-N] = board3[i-N] , board3[i] #Down successors += board3[0::1] + [node[-1] + 'U'] if i%N == 0 and i != 0 and i != len(board)-N : # Left column w/o corners / 3 ways to move :RUD board1[i] , board1[i+1] = board1[i+1] , board1[i] #Right successors += board1[0::1] + [node[-1] + 'R'] board2[i] , board2[i-N] = board2[i-N] , board2[i] #Up successors += board2[0::1] + [node[-1] + 'L'] board3[i] , board3[i+N] = board3[i+N] , board3[i] #Down successors += board3[0::1] + [node[-1] + 'U'] if i%N == N-1 and i != N-1 and i != len(board)-1 and N == 3 : # Right column w/o corners / 3 ways to move :LUD board1[i] , board1[i-1] = board1[i-1] , board1[i] #Left successors += board1[0::1] + [node[-1] + 'R'] board2[i] , board2[i-N] = board2[i-N] , board2[i] #Up successors += board2[0::1] + [node[-1] + 'L'] board3[i] , board3[i+N] = board3[i+N] , board3[i] #Down successors += board3[0::1] + [node[-1] + 'U'] if i%N == N-1 and i != N-1 and i != len(board)-1 and N > 3 : # Right column w/o corners / 3 ways to move :LUD board1[i] , board1[i-1] = board1[i-1] , board1[i] #Left successors += board1[0::1] + [node[-1] + 'R'] board2[i] , board2[i-N] = board2[i-N] , board2[i] #Up successors += board2[0::1] + [node[-1] + 'L'] board3[i] , board3[i+N] = board3[i+N] , board3[i] #Down successors += board3[0::1] + [node[-1] + 'U'] #-------------------------------------------------------------------------------------------------- End of edges if i%N == 1 and i != 2 and i != len(board)-N+1 and i == N+1 and N == 3 : # middle column w/o edges / 4 ways to move :LRUD board1[i] , board1[i+1] = board1[i+1] , board1[i] #Right successors += board1[0::1] + [node[-1] + 'R'] board2[i] , board2[i-1] = board2[i-1] , board2[i] #Left successors += board2[0::1] + [node[-1] + 'L'] board3[i] , board3[i-N] = board3[i-N] , board3[i] #Up successors += board3[0::1] + [node[-1] + 'U'] board4[i] , board4[i+N] = board4[i+N] , board4[i] #Down successors += board4[0::1] + [node[-1] + 'D'] #-------------------------------------------------------------------------------------------------- case 3x3 if N > 3 : for e in range(1,N-2): if e%N == e and (N+1 <= i < 2*N-1 or 2*N+1 <= i <len(board)-N-1) : # middle column w/o edges / 4 ways to move :LRUD -------------------------- case NxN and not corners and not edges board1[i] , board1[i+1] = board1[i+1] , board1[i] #Right successors += board1[0::1] + [node[-1] + 'R'] board2[i] , board2[i-1] = board2[i-1] , board2[i] #Left successors += board2[0::1] + [node[-1] + 'L'] board3[i] , board3[i-N] = board3[i-N] , board3[i] #Up successors += board3[0::1] + [node[-1] + 'U'] board4[i] , board4[i+N] = board4[i+N] , board4[i] #Down successors += board4[0::1] + [node[-1] + 'D'] return successors #------------------------------------------ |
# 633xxxxx21 197 (2020-09-20 20:42) def gen_successors(node): successors = [] if node.index(0)==0: successors+=[node[1],0]+node[2:9] successors.append(node[-1]+"R") x=node[:] x[0],x[3]=x[3],x[0] successors+=x[:-1] successors.append(node[-1]+"D") elif node.index(0)==1: successors+=node[0:1]+[node[2],0]+node[3:9] successors.append(node[-1]+"R") successors+=[0,node[0]]+node[2:9] successors.append(node[-1]+"L") x=node[:] x[1],x[4]=x[4],x[1] successors+=x[:-1] successors.append(node[-1]+"D") elif node.index(0)==2: successors+=node[0:1]+[0,node[1]]+node[3:9] successors.append(node[-1]+"L") x=node[:] x[2],x[5]=x[5],x[2] successors+=x[:-1] successors.append(node[-1]+"D") elif node.index(0)==3: x=node[:] x[0],x[3]=x[3],x[0] successors+=x[:-1] successors.append(node[-1]+"U") successors+=node[0:3]+[node[4],0]+node[5:9] successors.append(node[-1]+"R") x=node[:] x[3],x[6]=x[6],x[3] successors+=x[:-1] successors.append(node[-1]+"D") elif node.index(0)==4: successors+=node[0:4]+[node[5],0]+node[6:9] successors.append(node[-1]+"R") successors+=node[0:3]+[0,node[3]]+node[5:9] successors.append(node[-1]+"L") x=node[:] x[1],x[4]=x[4],x[1] successors+=x[:-1] successors.append(node[-1]+"U") x=node[:] x[4],x[7]=x[7],x[4] successors+=x[:-1] successors.append(node[-1]+"D") elif node.index(0)==5: successors+=node[0:4]+[0,node[4]]+node[6:9] successors.append(node[-1]+"L") x=node[:] x[2],x[5]=x[5],x[2] successors+=x[:-1] successors.append(node[-1]+"U") x=node[:] x[5],x[8]=x[8],x[5] successors+=x[:-1] successors.append(node[-1]+"D") elif node.index(0)==6: successors+=node[0:6]+[node[7],0]+node[8:9] successors.append(node[-1]+"R") x=node[:] x[3],x[6]=x[6],x[3] successors+=x[:-1] successors.append(node[-1]+"U") elif node.index(0)==7: successors+=node[0:7]+[node[8],0] successors.append(node[-1]+"R") successors+=node[0:6]+[0,node[6]]+node[8:9] successors.append(node[-1]+"L") x=node[:] x[4],x[7]=x[7],x[4] successors+=x[:-1] successors.append(node[-1]+"U") elif node.index(0)==8: successors+=node[0:7]+[0,node[7]] successors.append(node[-1]+"L") x=node[:] x[5],x[8]=x[8],x[5] successors+=x[:-1] successors.append(node[-1]+"U") return successors #------------------------------------------ |
# 633xxxxx21 198 (2020-09-19 19:18) def gen_successors(node): successors = [] i = node.index(0) if i == 0: nodeE = list(node) nodeE[0], nodeE[1] = nodeE[1], nodeE[0] nodeE[9] = node[9] + "R" successors.extend(nodeE) nodeE = list(node) nodeE[0], nodeE[3] = nodeE[3], nodeE[0] nodeE[9] = node[9] + "D" successors.extend(nodeE) elif i == 1: nodeE = list(node) nodeE[1], nodeE[0] = nodeE[0], nodeE[1] nodeE[9] = node[9] + "L" successors.extend(nodeE) nodeE = list(node) nodeE[1], nodeE[4] = nodeE[4], nodeE[1] nodeE[9] = node[9] + "D" successors.extend(nodeE) nodeE = list(node) nodeE[1], nodeE[2] = nodeE[2], nodeE[1] nodeE[9] = node[9] + "R" successors.extend(nodeE) elif i == 2: nodeE = list(node) nodeE[2], nodeE[1] = nodeE[1], nodeE[2] nodeE[9] = node[9] + "L" successors.extend(nodeE) nodeE = list(node) nodeE[2], nodeE[5] = nodeE[5], nodeE[2] nodeE[9] = node[9] + "D" successors.extend(nodeE) elif i == 3: nodeE = list(node) nodeE[3], nodeE[0] = nodeE[0], nodeE[3] nodeE[9] = node[9] + "U" successors.extend(nodeE) nodeE = list(node) nodeE[3], nodeE[4] = nodeE[4], nodeE[3] nodeE[9] = node[9] + "R" successors.extend(nodeE) nodeE = list(node) nodeE[3], nodeE[6] = nodeE[6], nodeE[3] nodeE[9] = node[9] + "D" successors.extend(nodeE) elif i == 4: nodeE = list(node) nodeE[4], nodeE[1] = nodeE[1], nodeE[4] nodeE[9] = node[9] + "U" successors.extend(nodeE) nodeE = list(node) nodeE[4], nodeE[3] = nodeE[3], nodeE[4] nodeE[9] = node[9] + "L" successors.extend(nodeE) nodeE = list(node) nodeE[4], nodeE[5] = nodeE[5], nodeE[4] nodeE[9] = node[9] + "R" successors.extend(nodeE) nodeE = list(node) nodeE[4], nodeE[7] = nodeE[7], nodeE[4] nodeE[9] = node[9] + "D" successors.extend(nodeE) elif i == 5: nodeE = list(node) nodeE[5], nodeE[2] = nodeE[2], nodeE[5] nodeE[9] = node[9] + "U" successors.extend(nodeE) nodeE = list(node) nodeE[5], nodeE[4] = nodeE[4], nodeE[5] nodeE[9] = node[9] + "L" successors.extend(nodeE) nodeE = list(node) nodeE[5], nodeE[8] = nodeE[8], nodeE[5] nodeE[9] = node[9] + "D" successors.extend(nodeE) elif i == 6: nodeE = list(node) nodeE[6], nodeE[3] = nodeE[3], nodeE[6] nodeE[9] = node[9] + "U" successors.extend(nodeE) nodeE = list(node) nodeE[6], nodeE[7] = nodeE[7], nodeE[6] nodeE[9] = node[9] + "R" successors.extend(nodeE) elif i == 7: nodeE = list(node) nodeE[7], nodeE[4] = nodeE[4], nodeE[7] nodeE[9] = node[9] + "U" successors.extend(nodeE) nodeE = list(node) nodeE[7], nodeE[6] = nodeE[6], nodeE[7] nodeE[9] = node[9] + "L" successors.extend(nodeE) nodeE = list(node) nodeE[7], nodeE[8] = nodeE[8], nodeE[7] nodeE[9] = node[9] + "R" successors.extend(nodeE) elif i == 8: nodeE = list(node) nodeE[8], nodeE[5] = nodeE[5], nodeE[8] nodeE[9] = node[9] + "U" successors.extend(nodeE) nodeE = list(node) nodeE[8], nodeE[7] = nodeE[7], nodeE[8] nodeE[9] = node[9] + "L" successors.extend(nodeE) return successors #------------------------------------------ |
# 633xxxxx21 199 (2020-09-18 20:44) def gen_successors(node): n = node[:-1] count = 0 for e in n: count +=1 num = int(count**0.5) c = node[-1] angle = [n[0],n[num-1],n[num*(num-1)],n[(num**2)-1]] top = n[1:num-1] bot = n[-(num-1):-1] successors = [] L_side = n[num:num*(num-1):num] R_side = n[(2*num)-1:(num**2)-1:num] if 0 in angle: for i in range(len(n)): if n[i] == 0 and i ==0 : for e in "RD": a = [] if e == "R": a += [n[1]]+ [n[0]]+n[2:]+[c+e] successors += a elif e == "D": a += [n[num]]+n[1:num]+[n[0]]+n[num+1:]+[c+e] #3 successors += a elif n[i] == 0 and i == num-1: for e in "LD": a = [] if e == "L": a += n[:(num-2)]+[n[num-1]]+[n[num-2]]+n[num:]+[c+e] successors += a elif e == "D": a += n[:num-1]+[n[(2*num)-1]]+n[num:(2*num)-1]+[n[num-1]]+n[(2*num):]+[c+e] successors += a elif n[i] == 0 and i == num*(num-1): for e in "UR": a = [] if e == "U": a += n[:(num*(num-1))-num]+[n[num*(num-1)]]+n[(num*(num-1))-num+1:num*(num-1)]+[n[(num*(num-1))-num]]+n[(num*(num-1))+1:]\ +[c+e] successors += a elif e == "R": a += n[:(num*(num-1))]+[n[(num*(num-1))+1]]+[n[(num*(num-1))]]+n[(num*(num-1))+2:]+[c+e] successors += a elif n[i] == 0 and i == (num**2)-1: for e in "UL": a = [] if e == "U": a += n[:((num**2)-num)-1]+[n[((num**(2))-1) ]]+n[((num**2)-num):((num**(2))-1)]+[n[((num**2)-num)-1]]+[c+e] successors += a elif e == "L": a += n[:((num**2)-2)]+[n[((num**(2))-1) ]]+[n[((num**2)-2) ]]+[c+e] successors += a elif 0 in top: zero = n.index(0) for e in "LRD": a = [] if e == "L": a += n[:zero-1]+[0]+[n[zero-1]]+n[zero+1:]+[c+e] successors += a elif e == "R": a += n[:zero]+[n[zero+1]]+[0]+n[zero+2:]+[c+e] successors += a elif e == "D": a += n[:zero]+[n[zero+num]]+n[zero+1:zero+num]+[0]+n[zero+num+1:]+[c+e] successors += a elif 0 in bot: zero = n.index(0) for e in "LRU": a = [] if e == "L": a += n[:zero-1]+[0]+[n[zero-1]]+n[zero+1:]+[c+e] successors += a elif e == "R": a += n[:zero]+[n[zero+1]]+[0]+n[zero+2:]+[c+e] successors += a elif e == "U": a += n[:zero-num]+[0]+n[zero-num+1:zero]+[n[zero-num]]+n[zero+1:]+[c+e] successors += a elif 0 in L_side: zero = n.index(0) for e in "URD": a = [] if e == "U": a += n[:zero-num]+[0]+n[zero-num+1:zero]+[n[zero-num]]+n[zero+1:]+[c+e] successors += a elif e == "R": a += n[:zero]+[n[zero+1]]+[0]+n[zero+2:]+[c+e] successors += a elif e == "D": a += n[:zero]+[n[zero+num]]+n[zero+1:zero+num]+[0]+n[zero+num+1:]+[c+e] successors += a elif 0 in R_side: zero = n.index(0) for e in "ULD": a = [] if e == "U": a += n[:zero-num]+[0]+n[zero-num+1:zero]+[n[zero-num]]+n[zero+1:]+[c+e] successors += a elif e == "L": a += n[:zero-1]+[0]+[n[zero-1]]+n[zero+1:]+[c+e] successors += a elif e == "D": a += n[:zero]+[n[zero+num]]+n[zero+1:zero+num]+[0]+n[zero+num+1:]+[c+e] successors += a else : zero = n.index(0) for e in "URLD": a = [] if e == "U": a += n[:zero-num]+[0]+n[zero-num+1:zero]+[n[zero-num]]+n[zero+1:]+[c+e] successors += a elif e == "L": a += n[:zero-1]+[0]+[n[zero-1]]+n[zero+1:]+[c+e] successors += a elif e == "R": a += n[:zero]+[n[zero+1]]+[0]+n[zero+2:]+[c+e] successors += a elif e == "D": a += n[:zero]+[n[zero+num]]+n[zero+1:zero+num]+[0]+n[zero+num+1:]+[c+e] successors += a return successors #------------------------------------------ |
# 633xxxxx21 200 (2020-09-20 20:09) def gen_successors(node): successors = [] if node.index(0)==0: successors+=[node[1],0]+node[2:9] successors.append(node[-1]+"R") x=node[:] x[0],x[3]=x[3],x[0] successors+=x[:-1] successors.append(node[-1]+"D") elif node.index(0)==1: successors+=node[0:1]+[node[2],0]+node[3:9] successors.append(node[-1]+"R") successors+=[0,node[0]]+node[2:9] successors.append(node[-1]+"L") x=node[:] x[1],x[4]=x[4],x[1] successors+=x[:-1] successors.append(node[-1]+"D") elif node.index(0)==2: successors+=node[0:1]+[0,node[1]]+node[3:9] successors.append(node[-1]+"L") x=node[:] x[2],x[5]=x[5],x[2] successors+=x[:-1] successors.append(node[-1]+"D") elif node.index(0)==3: x=node[:] x[0],x[3]=x[3],x[0] successors+=x[:-1] successors.append(node[-1]+"U") successors+=node[0:3]+[node[4],0]+node[5:9] successors.append(node[-1]+"R") x=node[:] x[3],x[6]=x[6],x[3] successors+=x[:-1] successors.append(node[-1]+"D") elif node.index(0)==4: successors+=node[0:4]+[node[5],0]+node[6:9] successors.append(node[-1]+"R") successors+=node[0:3]+[0,node[3]]+node[5:9] successors.append(node[-1]+"L") x=node[:] x[1],x[4]=x[4],x[1] successors+=x[:-1] successors.append(node[-1]+"U") x=node[:] x[4],x[7]=x[7],x[4] successors+=x[:-1] successors.append(node[-1]+"D") elif node.index(0)==5: successors+=node[0:4]+[0,node[4]]+node[6:9] successors.append(node[-1]+"L") x=node[:] x[2],x[5]=x[5],x[2] successors+=x[:-1] successors.append(node[-1]+"U") x=node[:] x[5],x[8]=x[8],x[5] successors+=x[:-1] successors.append(node[-1]+"D") elif node.index(0)==6: successors+=node[0:6]+[node[7],0]+node[8:9] successors.append(node[-1]+"R") x=node[:] x[3],x[6]=x[6],x[3] successors+=x[:-1] successors.append(node[-1]+"U") elif node.index(0)==7: successors+=node[0:7]+[node[8],0] successors.append(node[-1]+"R") successors+=node[0:6]+[0,node[6]]+node[8:9] successors.append(node[-1]+"L") x=node[:] x[4],x[7]=x[7],x[4] successors+=x[:-1] successors.append(node[-1]+"U") elif node.index(0)==8: successors+=node[0:7]+[0,node[7]] successors.append(node[-1]+"L") x=node[:] x[5],x[8]=x[8],x[5] successors+=x[:-1] successors.append(node[-1]+"U") return successors #------------------------------------------ |
# 633xxxxx21 201 (2020-09-20 18:31) def gen_successors(node): successors = [] c = ['RD','LRD','LD','URD','LRUD','ULD','RU','LRU','LU'] z = node.index(0) if z in [0,2,6,8]: M = 2 elif z == 4: M = 4 elif z in [1,3,5,7]: M = 3 w = c[z] for i in range(M): if w[i] == 'U': co = node.copy() co[z-3],co[z] = co[z],co[z-3] co[-1] = co[-1]+'U' successors += co if w[i] == 'D': co = node.copy() co[z+3],co[z] = co[z],co[z+3] co[-1] = co[-1]+'D' successors += co if w[i] == 'L': co = node.copy() co[z-1],co[z] = co[z],co[z-1] co[-1] = co[-1]+'L' successors += co if w[i] == 'R': co = node.copy() co[z+1],co[z] = co[z],co[z+1] co[-1] = co[-1]+'R' successors += co return successors #------------------------------------------ |
# 633xxxxx21 202 (2020-09-20 23:08) def gen_successors(node): successors = [] i = node.index(0) if i == 0: nodex = list(node) nodex[0], nodex[1] = nodex[1], nodex[0] nodex[-1] += "R" successors.extend(nodex) nodex = list(node) nodex[0], nodex[3] = nodex[3], nodex[0] nodex[-1] += "D" successors.extend(nodex) elif i == 1: nodex = list(node) nodex[1], nodex[0] = nodex[0], nodex[1] nodex[-1] += "L" successors.extend(nodex) nodex = list(node) nodex[1], nodex[4] = nodex[4], nodex[1] nodex[-1] += "D" successors.extend(nodex) nodex = list(node) nodex[1], nodex[2] = nodex[2], nodex[1] nodex[-1] += "R" successors.extend(nodex) elif i == 2: nodex = list(node) nodex[2], nodex[1] = nodex[1], nodex[2] nodex[-1] += "L" successors.extend(nodex) nodex = list(node) nodex[2], nodex[5] = nodex[5], nodex[2] nodex[-1] += "D" successors.extend(nodex) elif i == 3: nodex = list(node) nodex[3], nodex[0] = nodex[0], nodex[3] nodex[-1] += "U" successors.extend(nodex) nodex = list(node) nodex[3], nodex[4] = nodex[4], nodex[3] nodex[-1] += "R" successors.extend(nodex) nodex = list(node) nodex[3], nodex[6] = nodex[6], nodex[3] nodex[-1] += "D" successors.extend(nodex) elif i == 4: nodex = list(node) nodex[4], nodex[1] = nodex[1], nodex[4] nodex[-1] += "U" successors.extend(nodex) nodex = list(node) nodex[4], nodex[3] = nodex[3], nodex[4] nodex[-1] += "L" successors.extend(nodex) nodex = list(node) nodex[4], nodex[5] = nodex[5], nodex[4] nodex[-1] += "R" successors.extend(nodex) nodex = list(node) nodex[4], nodex[7] = nodex[7], nodex[4] nodex[-1] += "D" successors.extend(nodex) elif i == 5: nodex = list(node) nodex[5], nodex[2] = nodex[2], nodex[5] nodex[-1] += "U" successors.extend(nodex) nodex = list(node) nodex[5], nodex[4] = nodex[4], nodex[5] nodex[-1] += "L" successors.extend(nodex) nodex = list(node) nodex[5], nodex[8] = nodex[8], nodex[5] nodex[-1] += "D" successors.extend(nodex) elif i == 6: nodex = list(node) nodex[6], nodex[3] = nodex[3], nodex[6] nodex[-1] += "U" successors.extend(nodex) nodex = list(node) nodex[6], nodex[7] = nodex[7], nodex[6] nodex[-1] += "R" successors.extend(nodex) elif i == 7: nodex = list(node) nodex[7], nodex[4] = nodex[4], nodex[7] nodex[-1] += "U" successors.extend(nodex) nodex = list(node) nodex[7], nodex[6] = nodex[6], nodex[7] nodex[-1] += "L" successors.extend(nodex) nodex = list(node) nodex[7], nodex[8] = nodex[8], nodex[7] nodex[-1] += "R" successors.extend(nodex) elif i == 8: nodex = list(node) nodex[8], nodex[7] = nodex[7], nodex[8] nodex[-1] += "L" successors.extend(nodex) nodex = list(node) nodex[8], nodex[5] = nodex[5], nodex[8] nodex[-1] += "U" successors.extend(nodex) return successors #------------------------------------------ |
# 633xxxxx21 203 (2020-09-19 22:25) def gen_successors(node): successors = [] L1 = [] L2 = [] L3 = [] L4 = [] if node[0] == 0: L1 += node L1[0], L1[1] = L1[1], L1[0] change = L1[-1] change += "R" L1 = L1[0:-1] + [change] L2 += node L2[0], L2[3] = L2[3], L2[0] change = L2[-1] change += "D" L2 = L2[0:-1] + [change] L = L1 + L2 successors += L elif node[1] == 0: L1 += node L1[1], L1[0] = L1[0], L1[1] change = L1[-1] change += "L" L1 = L1[0:-1] + [change] L2 += node L2[1], L2[2] = L2[2], L2[1] change = L2[-1] change += "R" L2 = L2[0:-1] + [change] L3 += node L3[1], L3[4] = L3[4], L3[1] change = L3[-1] change += "D" L3 = L3[0:-1] + [change] L = L1 + L2 +L3 successors += L elif node[2] == 0: L1 += node L1[2], L1[1] = L1[1], L1[2] change = L1[-1] change += "L" L1 = L1[0:-1] + [change] L2 += node L2[2], L2[5] = L2[5], L2[2] change = L2[-1] change += "D" L2 = L2[0:-1] + [change] L = L1 + L2 successors += L elif node[3] == 0: L1 += node L1[3], L1[0] = L1[0], L1[3] change = L1[-1] change += "U" L1 = L1[0:-1] + [change] L2 += node L2[3], L2[4] = L2[4], L2[3] change = L2[-1] change += "R" L2 = L2[0:-1] + [change] L3 += node L3[3], L3[6] = L3[6], L3[3] change = L3[-1] change += "D" L3 = L3[0:-1] + [change] L = L1 + L2 + L3 successors += L elif node[4] == 0: L1 += node L1[4], L1[1] = L1[1], L1[4] change = L1[-1] change += "U" L1 = L1[0:-1] + [change] L2 += node L2[4], L2[7] = L2[7], L2[4] change = L2[-1] change += "D" L2 = L2[0:-1] + [change] L3 += node L3[4], L3[3] = L3[3], L3[4] change = L3[-1] change += "L" L3 = L3[0:-1] + [change] L4 += node L4[4], L4[5] = L4[5], L4[4] change = L4[-1] change += "R" L4 = L4[0:-1] + [change] L = L1 + L2 + L3 + L4 successors += L elif node[5] == 0: L1 += node L1[5], L1[2] = L1[2], L1[5] change = L1[-1] change += "U" L1 = L1[0:-1] + [change] L2 += node L2[5], L2[4] = L2[4], L2[5] change = L2[-1] change += "L" L2 = L2[0:-1] + [change] L3 += node L3[5], L3[8] = L3[8], L3[5] change = L3[-1] change += "D" L3 = L3[0:-1] + [change] L = L1 + L2 + L3 successors += L elif node[6] == 0: L1 += node L1[6], L1[3] = L1[3], L1[6] change = L1[-1] change += "U" L1 = L1[0:-1] + [change] L2 += node L2[6], L2[7] = L2[7], L2[6] change = L2[-1] change += "R" L2 = L2[0:-1] + [change] L = L1 + L2 successors += L elif node[7] == 0: L1 += node L1[7], L1[4] = L1[4], L1[7] change = L1[-1] change += "U" L1 = L1[0:-1] + [change] L2 += node L2[7], L2[6] = L2[6], L2[7] change = L2[-1] change += "L" L2 = L2[0:-1] + [change] L3 += node L3[7], L3[8] = L3[8], L3[4] change = L3[-1] change += "R" L3 = L3[0:-1] + [change] L = L1 + L2 + L3 successors += L elif node[8] == 0: L1 += node L1[8], L1[5] = L1[5], L1[8] change = L1[-1] change += "U" L1 = L1[0:-1] + [change] L2 += node L2[8], L2[7] = L2[7], L2[8] change = L2[-1] change += "L" L2 = L2[0:-1] + [change] L = L1 + L2 successors += L return successors #------------------------------------------ |
# 633xxxxx21 204 (2020-09-20 22:42) def gen_successors(node): successors = [] i = node.index(0) if i == 0: nodeA = list(node) nodeA[0], nodeA[1] = nodeA[1], nodeA[0] nodeA[-1] += "R" successors.extend(nodeA) nodeA = list(node) nodeA[0], nodeA[3] = nodeA[3], nodeA[0] nodeA[-1] += "D" successors.extend(nodeA) elif i == 1: nodeA = list(node) nodeA[1], nodeA[0] = nodeA[0], nodeA[1] nodeA[-1] += "L" successors.extend(nodeA) nodeA = list(node) nodeA[1], nodeA[4] = nodeA[4], nodeA[1] nodeA[-1] += "D" successors.extend(nodeA) nodeA = list(node) nodeA[1], nodeA[2] = nodeA[2], nodeA[1] nodeA[-1] += "R" successors.extend(nodeA) elif i == 2: nodeA = list(node) nodeA[2], nodeA[1] = nodeA[1], nodeA[2] nodeA[-1] += "L" successors.extend(nodeA) nodeA = list(node) nodeA[2], nodeA[5] = nodeA[5], nodeA[2] nodeA[-1] += "D" successors.extend(nodeA) elif i == 3: nodeA = list(node) nodeA[3], nodeA[0] = nodeA[0], nodeA[3] nodeA[-1] += "U" successors.extend(nodeA) nodeA = list(node) nodeA[3], nodeA[4] = nodeA[4], nodeA[3] nodeA[-1] += "R" successors.extend(nodeA) nodeA = list(node) nodeA[3], nodeA[6] = nodeA[6], nodeA[3] nodeA[-1] += "D" successors.extend(nodeA) elif i == 4: nodeA = list(node) nodeA[4], nodeA[1] = nodeA[1], nodeA[4] nodeA[-1] += "U" successors.extend(nodeA) nodeA = list(node) nodeA[4], nodeA[3] = nodeA[3], nodeA[4] nodeA[-1] += "L" successors.extend(nodeA) nodeA = list(node) nodeA[4], nodeA[5] = nodeA[5], nodeA[4] nodeA[-1] += "R" successors.extend(nodeA) nodeA = list(node) nodeA[4], nodeA[7] = nodeA[7], nodeA[4] nodeA[-1] += "D" successors.extend(nodeA) elif i == 5: nodeA = list(node) nodeA[5], nodeA[2] = nodeA[2], nodeA[5] nodeA[-1] += "U" successors.extend(nodeA) nodeA = list(node) nodeA[5], nodeA[4] = nodeA[4], nodeA[5] nodeA[-1] += "L" successors.extend(nodeA) nodeA = list(node) nodeA[5], nodeA[8] = nodeA[8], nodeA[5] nodeA[-1] += "D" successors.extend(nodeA) elif i == 6: nodeA = list(node) nodeA[6], nodeA[3] = nodeA[3], nodeA[6] nodeA[-1] += "U" successors.extend(nodeA) nodeA = list(node) nodeA[6], nodeA[7] = nodeA[7], nodeA[6] nodeA[-1] += "R" successors.extend(nodeA) elif i == 7: nodeA = list(node) nodeA[7], nodeA[4] = nodeA[4], nodeA[7] nodeA[-1] += "U" successors.extend(nodeA) nodeA = list(node) nodeA[7], nodeA[6] = nodeA[6], nodeA[7] nodeA[-1] += "L" successors.extend(nodeA) nodeA = list(node) nodeA[7], nodeA[8] = nodeA[8], nodeA[7] nodeA[-1] += "R" successors.extend(nodeA) elif i == 8: nodeA = list(node) nodeA[8], nodeA[7] = nodeA[7], nodeA[8] nodeA[-1] += "L" successors.extend(nodeA) nodeA = list(node) nodeA[8], nodeA[5] = nodeA[5], nodeA[8] nodeA[-1] += "U" successors.extend(nodeA) return successors #------------------------------------------ |
# 633xxxxx21 205 (2020-09-20 22:09) def gen_successors(node): successors = [] for i in range(len(node)): if node.index(0)==8: successors=list(node) successors[8],successors[5]=successors[5],successors[8] successors[9]+='U' successors+=list(node) successors[18],successors[17]=successors[17],successors[18] successors[19]+='L' elif node.index(0)==7: successors=list(node) successors[7],successors[4]=successors[4],successors[7] successors[9]+='U' successors+=list(node) successors[17],successors[16]=successors[16],successors[17] successors[19]+='L' successors+=list(node) successors[27],successors[28]=successors[28],successors[27] successors[29]+='R' elif node.index(0)==6: successors=list(node) successors[6],successors[3]=successors[3],successors[6] successors[9]+='U' successors+=list(node) successors[16],successors[17]=successors[17],successors[16] successors[19]+='R' elif node.index(0)==5: successors=list(node) successors[5],successors[2]=successors[2],successors[5] successors[9]+='U' successors+=list(node) successors[15],successors[14]=successors[14],successors[15] successors[19]+='L' successors+=list(node) successors[25],successors[28]=successors[28],successors[25] successors[29]+='D' elif node.index(0)==4: successors=list(node) successors[4],successors[1]=successors[1],successors[4] successors[9]+='U' successors+=list(node) successors[14],successors[13]=successors[13],successors[14] successors[19]+='L' successors+=list(node) successors[24],successors[25]=successors[25],successors[24] successors[29]+='R' successors+=list(node) successors[34],successors[37]=successors[37],successors[34] successors[39]+='D' elif node.index(0)==3: successors=list(node) successors[3],successors[0]=successors[0],successors[3] successors[9]+='U' successors+=list(node) successors[13],successors[16]=successors[16],successors[13] successors[19]+='D' successors+=list(node) successors[23],successors[24]=successors[24],successors[23] successors[29]+='R' elif node.index(0)==2: successors=list(node) successors[2],successors[5]=successors[5],successors[2] successors[9]+='D' successors+=list(node) successors[12],successors[11]=successors[11],successors[12] successors[19]+='L' elif node.index(0)==1: successors=list(node) successors[1],successors[4]=successors[4],successors[1] successors[9]+='D' successors+=list(node) successors[11],successors[12]=successors[12],successors[11] successors[19]+='R' successors+=list(node) successors[21],successors[20]=successors[20],successors[21] successors[29]+='L' elif node.index(0)==0: successors=list(node) successors[0],successors[3]=successors[3],successors[0] successors[9]+='D' successors+=list(node) successors[10],successors[11]=successors[11],successors[10] successors[19]+='R' return successors #------------------------------------------ |
# 633xxxxx21 206 (2020-09-20 23:53) def gen_successors(node): successors = [] i = node.index(0) a = int((len(board)) ** (1 / 2)) M = ['U', 'D', 'L', 'R'] if i % a == a - 1: M.remove('R') if 0 <= i <= (a - 1): M.remove('U') if i % a == 0: M.remove('L') if (a - 1) * a <= i <= (a ** 2) - 1: M.remove('D') if 'R' in M: node1 = list(node) node1[i], node1[i + 1] = node1[i + 1], node1[i] node1[len(board)] += 'R' for k in range(1 + len(board)): successors.append(node1[k]) if 'U' in M: node1 = list(node) node1[i], node1[i - a] = node1[i - a], node1[i] node1[len(board)] += 'U' for k in range(1 + len(board)): successors.append(node1[k]) if 'L' in M: node1 = list(node) node1[i], node1[i - 1] = node1[i - 1], node1[i] node1[len(board)] += 'L' for k in range(1 + len(board)): successors.append(node1[k]) if 'D' in M: node1 = list(node) node1[i], node1[i + a] = node1[i + a], node1[i] node1[len(board)] += 'D' for k in range(1 + len(board)): successors.append(node1[k]) return successors # ------------------------------------------ |
# 633xxxxx21 207 (2020-09-18 23:46) def gen_successors(node): successors = [] i = node.index(0) if i == 0: nodeEdit = list(node) nodeEdit[0], nodeEdit[1] = nodeEdit[1], nodeEdit[0] nodeEdit[9] = node[9] + "R" successors.extend(nodeEdit) nodeEdit = list(node) nodeEdit[0], nodeEdit[3] = nodeEdit[3], nodeEdit[0] nodeEdit[9] = node[9] + "D" successors.extend(nodeEdit) elif i == 1: nodeEdit = list(node) nodeEdit[1], nodeEdit[0] = nodeEdit[0], nodeEdit[1] nodeEdit[9] = node[9] + "L" successors.extend(nodeEdit) nodeEdit = list(node) nodeEdit[1], nodeEdit[4] = nodeEdit[4], nodeEdit[1] nodeEdit[9] = node[9] + "D" successors.extend(nodeEdit) nodeEdit = list(node) nodeEdit[1], nodeEdit[2] = nodeEdit[2], nodeEdit[1] nodeEdit[9] = node[9] + "R" successors.extend(nodeEdit) elif i == 2: nodeEdit = list(node) nodeEdit[2], nodeEdit[1] = nodeEdit[1], nodeEdit[2] nodeEdit[9] = node[9] + "L" successors.extend(nodeEdit) nodeEdit = list(node) nodeEdit[2], nodeEdit[5] = nodeEdit[5], nodeEdit[2] nodeEdit[9] = node[9] + "D" successors.extend(nodeEdit) elif i == 3: nodeEdit = list(node) nodeEdit[3], nodeEdit[0] = nodeEdit[0], nodeEdit[3] nodeEdit[9] = node[9] + "U" successors.extend(nodeEdit) nodeEdit = list(node) nodeEdit[3], nodeEdit[4] = nodeEdit[4], nodeEdit[3] nodeEdit[9] = node[9] + "R" successors.extend(nodeEdit) nodeEdit = list(node) nodeEdit[3], nodeEdit[6] = nodeEdit[6], nodeEdit[3] nodeEdit[9] = node[9] + "D" successors.extend(nodeEdit) elif i == 4: nodeEdit = list(node) nodeEdit[4], nodeEdit[1] = nodeEdit[1], nodeEdit[4] nodeEdit[9] = node[9] + "U" successors.extend(nodeEdit) nodeEdit = list(node) nodeEdit[4], nodeEdit[3] = nodeEdit[3], nodeEdit[4] nodeEdit[9] = node[9] + "L" successors.extend(nodeEdit) nodeEdit = list(node) nodeEdit[4], nodeEdit[5] = nodeEdit[5], nodeEdit[4] nodeEdit[9] = node[9] + "R" successors.extend(nodeEdit) nodeEdit = list(node) nodeEdit[4], nodeEdit[7] = nodeEdit[7], nodeEdit[4] nodeEdit[9] = node[9] + "D" successors.extend(nodeEdit) elif i == 5: nodeEdit = list(node) nodeEdit[5], nodeEdit[2] = nodeEdit[2], nodeEdit[5] nodeEdit[9] = node[9] + "U" successors.extend(nodeEdit) nodeEdit = list(node) nodeEdit[5], nodeEdit[4] = nodeEdit[4], nodeEdit[5] nodeEdit[9] = node[9] + "L" successors.extend(nodeEdit) nodeEdit = list(node) nodeEdit[5], nodeEdit[8] = nodeEdit[8], nodeEdit[5] nodeEdit[9] = node[9] + "D" successors.extend(nodeEdit) elif i == 6: nodeEdit = list(node) nodeEdit[6], nodeEdit[3] = nodeEdit[3], nodeEdit[6] nodeEdit[9] = node[9] + "U" successors.extend(nodeEdit) nodeEdit = list(node) nodeEdit[6], nodeEdit[7] = nodeEdit[7], nodeEdit[6] nodeEdit[9] = node[9] + "R" successors.extend(nodeEdit) elif i == 7: nodeEdit = list(node) nodeEdit[7], nodeEdit[4] = nodeEdit[4], nodeEdit[7] nodeEdit[9] = node[9] + "U" successors.extend(nodeEdit) nodeEdit = list(node) nodeEdit[7], nodeEdit[6] = nodeEdit[6], nodeEdit[7] nodeEdit[9] = node[9] + "L" successors.extend(nodeEdit) nodeEdit = list(node) nodeEdit[7], nodeEdit[8] = nodeEdit[8], nodeEdit[7] nodeEdit[9] = node[9] + "R" successors.extend(nodeEdit) elif i == 8: nodeEdit = list(node) nodeEdit[8], nodeEdit[5] = nodeEdit[5], nodeEdit[8] nodeEdit[9] = node[9] + "U" successors.extend(nodeEdit) nodeEdit = list(node) nodeEdit[8], nodeEdit[7] = nodeEdit[7], nodeEdit[8] nodeEdit[9] = node[9] + "L" successors.extend(nodeEdit) return successors #------------------------------------------ |
# 633xxxxx21 208 (2020-09-20 10:21) def gen_successors(node): successors = [] m = [] m1 = [] #R m2 = [] #D m3 = [] #L m4 = [] #U u = [] if board[0] == 0:#บนซ้าย m1 += node m1[0],m1[1]=m1[1],m1[0] u =m1[-1] u += "R" m1 = m1[0:-1] +[u] m2 += node m2[0],m2[1]=m2[1],m2[0] u =m2[-1] u += "D" m2 = m2[0:-1] +[u] m = m1+m2 successors += m elif board[1] == 0:#บนกลางขวา m1 += node m1[1],m1[2]=m1[2],m1[1] u =m1[-1] u += "R" m1 = m1[0:-1] +[u] m2 += node m2[1],m2[4]=m2[1],m2[4] u =m2[-1] u += "D" m2 = m2[0:-1] +[u] m3 += node m3[1],m3[0]=m3[0],m3[1] u =m3[-1] u += "L" m3 = m3[0:-1] +[u] m = m1+m2+m3 successors += m elif board[2] == 0: #บนขวา m2 += node m2[2],m2[5]=m2[5],m2[2] u =m2[-1] u += "D" m2 = m2[0:-1] +[u] m3 += node m3[2],m3[1]=m3[1],m3[2] u =m3[-1] u += "L" m3 = m3[0:-1] +[u] m = m2+m3 successors += m elif board[3] == 0: #กลางซ้าย m1 += node m1[3],m1[4]=m1[4],m1[3] u =m1[-1] u += "R" m1 = m1[0:-1] +[u] m2 += node m2[3],m2[6]=m2[6],m2[3] u =m2[-1] u += "D" m2 = m2[0:-1] +[u] m4 += node m4[3],m4[0]=m4[0],m4[3] u =m4[-1] u += "U" m4 = m4[0:-1] +[u] m = m1+m2+m4 successors += m elif board[4] == 0: #กลางกลาง m1 += node m1[4],m1[5]=m1[5],m1[4] u =m1[-1] u += "R" m1 = m1[0:-1] +[u] m2 += node m2[4],m2[7]=m2[7],m2[4] u =m2[-1] u += "D" m2 = m2[0:-1] +[u] m3 += node m3[4],m3[3]=m3[3],m3[4] u =m3[-1] u += "L" m3 = m3[0:-1] +[u] m4 += node m4[4],m4[1]=m4[1],m4[4] u =m4[-1] u += "U" m4 = m4[0:-1] +[u] m = m1+m2+m3+m4 successors += m elif board[5] == 0: #กลางขวา m2 += node m2[5],m2[8]=m2[8],m2[5] u =m2[-1] u += "D" m2 = m2[0:-1] +[u] m3 += node m3[5],m3[4]=m3[4],m3[5] u =m3[-1] u += "L" m3 = m3[0:-1] +[u] m4 += node m4[5],m4[2]=m4[2],m4[5] u =m4[-1] u += "U" m4 = m4[0:-1] +[u] m = m2+m3+m4 successors += m elif board[6] == 0: #ล่างซ้าย m1 += node m1[6],m1[7]=m1[7],m1[6] u =m1[-1] u += "R" m1 = m1[0:-1] +[u] m4 += node m4[6],m4[3]=m4[3],m4[6] u =m4[-1] u += "U" m4 = m4[0:-1] +[u] m = m1+m4 successors += m elif board[7] == 0: #ล่างกลาง m1 += node m1[7],m1[8]=m1[8],m1[7] u =m1[-1] u += "R" m1 = m1[0:-1] +[u] m4 += node m4[7],m4[4]=m4[4],m4[7] u =m4[-1] u += "U" m4 = m4[0:-1] +[u] m3 += node m3[7],m3[6]=m3[6],m3[7] u =m3[-1] u += "L" m3 = m3[0:-1] +[u] m = m1+m4+m3 successors += m elif board[8] == 0: #ล่างขวา m4 += node m4[8],m4[5]=m4[5],m4[8] u =m4[-1] u += "U" m4 = m4[0:-1] +[u] m3 += node m3[8],m3[7]=m3[7],m3[8] u =m3[-1] u += "L" m3 = m3[0:-1] +[u] m = m4+m3 successors += m return successors #------------------------------------------ |
# 633xxxxx21 209 (2020-09-20 01:44) def gen_successors(node): successors = [] if node[0] == 0: node1 = list(node) node1[0],node1[1] = node1[1],node1[0] node1[9] = node[9] + 'R' successors.extend(node1) node1 = list(node) node1[0],node1[3] = node1[3],node1[0] node1[9] = node[9] + 'D' successors.extend(node1) if node[1] == 0: node1 = list(node) node1[1],node1[0] = node1[0],node1[1] node1[9] = node[9] + 'L' successors.extend(node1) node1 = list(node) node1[1],node1[2] = node[2],node[1] node1[9] = node[9] + 'R' successors.extend(node1) node1 = list(node) node1[1],node1[4] = node1[4],node[1] node1[9] = node[9] + 'D' if node[2] == 0: node1 = list(node) node1[2],node1[1] = node1[1],node1[2] node1[9] = node[9] + 'L' successors.extend(node1) node1 = list(node) node1[2],node1[5] = node1[5],node1[2] node1[9] = node[9] + 'D' successors.extend(node1) if node[3] == 0: node1 = list(node) node1[3],node1[0] = node1[0],node1[3] node1[9] = node[9] + 'U' successors.extend(node1) node1 = list(node) node1[3],node1[4] = node1[4],node1[3] node1[9] = node[9] + 'R' successors.extend(node1) node1 = list(node) node1[3],node1[6] = node1[6],node1[3] node1[9] = node[9] + 'D' successors.extend(node1) if node[4] == 0: node1 = list(node) node1[4],node1[1] = node1[1],node1[4] node1[9] = node[9] + 'U' successors.extend(node1) node1 = list(node) node1[4],node1[3] = node1[3],node1[4] node1[9] = node[9] + 'L' successors.extend(node1) node1 = list(node) node1[4],node1[5] = node1[5],node1[4] node1[9] = node[9] + 'R' successors.extend(node1) node1 = list(node) node1[4],node1[7] = node[7],node1[4] node1[9] = node[9] + 'D' successors.extend(node1) if node[5] == 0: node1 = list(node) node1[5],node1[2] = node1[2],node[5] node1[9] = node[9] + 'U' successors.extend(node1) node1 = list(node) node1[5],node1[4] = node1[4],node1[5] node1[9] = node[9] + 'L' successors.extend(node1) node1 = list(node) node1[5],node1[8] = node1[8],node1[5] node1[9] = node[9] + 'D' successors.extend(node1) if node[6] == 0: node1 = list(node) node1[6],node1[3] = node1[3],node1[6] node1[9] = node[9] + 'U' successors.extend(node1) node1 = list(node) node1[6],node1[7] = node1[7],node1[6] node1[9] = node[9] + 'R' successors.extend(node1) if node[7] == 0: node1 = list(node) node1[7],node1[6] = node1[6],node1[7] node1[9] = node[9] + 'L' successors.extend(node1) node1 = list(node) node1[7],node1[8] = node1[8],node1[7] node1[9] = node[9] + 'R' successors.extend(node1) node1 = list(node) node1[7],node1[5] = node1[5],node1[7] node1[9] = node[9] + 'U' successors.extend(node1) if node[8] == 0: node1 = list(node) node1[8],node1[7] = node1[7],node1[8] node1[9] = node[9] + 'L' successors.extend(node1) node1 = list(node) node1[8],node1[5] = node1[5],node1[8] node1[9] = node[9] + 'U' successors.extend(node1) return successors #------------------------------------------ |
# 633xxxxx21 210 (2020-09-20 23:49) def gen_successors(node): successors = [] i=node.index(0) u=[3,4,5,6,7,8] d=[0,1,2,3,4,5] l=[1,2,4,5,7,8] r=[0,1,3,4,6,7] if i in u : node1=node[::] node1[i],node1[i-3]=node1[i-3],node1[i] node1[9] = node1[9] + "U" successors.extend(node1) if i in d : node1=node[::] node1[i],node1[i+3]=node1[i+3],node1[i] node1[9] = node1[9] + "D" successors.extend(node1) if i in l : node1=node[::] node1[i],node1[i-1]=node1[i-1],node1[i] node1[9] = node1[9] + "L" successors.extend(node1) if i in r : node1=node[::] node1[i],node1[i+1]=node1[i+1],node1[i] node1[9] = node1[9] + "R" successors.extend(node1) return successors #------------------------------------------ |
# 633xxxxx21 211 (2020-09-20 01:11) def gen_successors(node): successors = [] N=int((len(node)-1)**0.5) M="" location=node.index(0,0,len(node)) if location%N!= N-1: M+="R" if location%N!= 0 : M+="L" if location//N!=N-1 : M+="D" if location//N!=0 : M+="U" a = [] for i in range(len(M)): a = list(node) if M[i]=="U": a[location],a[location-N]=a[location-N],a[location] a[-1] += "U" elif M[i]=="D": a[location],a[location+N]=a[location+N],a[location] a[-1] += "D" elif M[i]=="L": a[location],a[location-1]=a[location-1],a[location] a[-1] += "L" elif M[i]=="R": a[location],a[location+1]=a[location+1],a[location] a[-1] += "R" successors += a return successors #------------------------------------------ |
# 633xxxxx21 212 (2020-09-20 23:54) def gen_successors(node): successors = [] N = len(node) - 1 e = int(N ** 0.5) for i in range(N): x = node.index(0) if (x + 1) % e != 0: node[x],node[x + 1] = node[x + 1],node[x] successors += node successors[-1] += 'R' node[x],node[x + 1] = node[x+ 1],node[x] if (x + e) % e != 0: node[x],node[x- 1] = node[x - 1],node[x] successors += node successors[-1] += 'L' node[x],node[x - 1] = node[x - 1],node[x] if x >= e: node[x],node[x - e] = node[x - e],node[x] successors += node successors[-1] += 'U' node[x],node[x - e] = node[x - e],node[x] if e * (e - 1) > x: node[x],node[x + e] = node[x + e],node[x] successors += node successors[-1] += 'D' node[x],node[x + e] = node[x + e],node[x] return successors #------------------------------------------ |
# 633xxxxx21 213 (2020-09-19 20:54) def gen_successors(node): successors = [] n = len(node)-1 a = [0]*n for i in range(len(a)): a[i] = node.index(i) if a[0]==0 : way = [1,3] for e in way : node[a[0]],node[e] = node[e],node[a[0]] successors += node if e == 1 : successors[-1] += "R" if e == 3 : successors[-1] += "D" node[a[0]],node[e] = node[e],node[a[0]] elif a[0]==1 : way = [0,2,4] for e in way : node[a[0]],node[e] = node[e],node[a[0]] successors += node if e == 0 : successors[-1] += "L" if e == 2 : successors[-1] += "R" if e == 4 : successors[-1] += "D" node[a[0]],node[e] = node[e],node[a[0]] elif a[0]==2 : way = [1,5] for e in way : node[a[0]],node[e] = node[e],node[a[0]] successors += node if e == 1 : successors[-1] += "L" if e == 3 : successors[-1] += "D" node[a[0]],node[e] = node[e],node[a[0]] elif a[0]==3 : way = [1,4,6] for e in way : node[a[0]],node[e] = node[e],node[a[0]] successors += node if e == 1 : successors[-1] += "U" if e == 4 : successors[-1] += "R" if e == 6 : successors[-1] += "D" node[a[0]],node[e] = node[e],node[a[0]] elif a[0]==4 : way = [1,3,5,7] for e in way : node[a[0]],node[e] = node[e],node[a[0]] successors += node if e == 1 : successors[-1] += "U" if e == 3 : successors[-1] += "L" if e == 5 : successors[-1] += "R" if e == 7 : successors[-1] += "D" node[a[0]],node[e] = node[e],node[a[0]] elif a[0]==5 : way = [2,4,8] for e in way : node[a[0]],node[e] = node[e],node[a[0]] successors += node if e == 2 : successors[-1] += "U" if e == 4 : successors[-1] += "L" if e == 8 : successors[-1] += "D" node[a[0]],node[e] = node[e],node[a[0]] elif a[0]==6 : way = [3,7] for e in way : node[a[0]],node[e] = node[e],node[a[0]] successors += node if e == 3 : successors[-1] += "U" if e == 7 : successors[-1] += "R" node[a[0]],node[e] = node[e],node[a[0]] elif a[0]==7 : way = [4,6,8] for e in way : node[a[0]],node[e] = node[e],node[a[0]] successors += node if e == 4 : successors[-1] += "U" if e == 6 : successors[-1] += "L" if e == 7 : successors[-1] += "R" node[a[0]],node[e] = node[e],node[a[0]] elif a[0]==8 : way = [5,7] for e in way : node[a[0]],node[e] = node[e],node[a[0]] successors += node if e == 5 : successors[-1] += "U" if e == 7 : successors[-1] += "L" node[a[0]],node[e] = node[e],node[a[0]] return successors #------------------------------------------ |
# 633xxxxx21 214 (2020-09-19 18:42) def gen_successors(node): successors = [] n = len(board) N = int(n**0.5) z = node.index(0) U,D,R,L = 1,1,1,1 if z%N == 0: #left L = 0 elif z%N == N-1: #right R = 0 if z < N: #top U = 0 elif z > (n-1-N): #lower D = 0 if U == 1: x = node[:] x[z],x[z-N] = x[z-N],x[z] x[-1]+='U' successors += x if D == 1: x = node[:] x[z],x[z+N] = x[z+N],x[z] x[-1] += 'D' successors += x if R == 1: x = node[:] x[z],x[z+1] = x[z+1],x[z] x[-1] += 'R' successors += x if L == 1: x = node[:] x[z],x[z-1] = x[z-1],x[z] x[-1] += 'L' successors += x return successors #------------------------------------------ |
# 633xxxxx21 215 (2020-09-19 18:45) def gen_successors(node): successors = [] zero_idx=node.index(0)+1 process=[] if zero_idx%3==0: process.append("left") if zero_idx%3==1: process.append("right") if zero_idx<=3 or zero_idx==4 or zero_idx==6: process.append("down") if zero_idx>=7 or zero_idx==4 or zero_idx==6: process.append("up") if zero_idx==5: process.append("left") process.append("right") process.append("up") process.append("down") zero_idx -= 1 for i in range(len(process)): if process[i]=="left": new_node=list(node) new_node[zero_idx],new_node[zero_idx-1]=new_node[zero_idx-1],new_node[zero_idx] new_node[-1]+="L" for e in new_node: successors.append(e) if process[i]=="right": new_node=list(node) new_node[zero_idx],new_node[zero_idx+1]=new_node[zero_idx+1],new_node[zero_idx] new_node[-1]+="R" for e in new_node: successors.append(e) if process[i]=="up": new_node=list(node) new_node.insert(zero_idx-3,new_node.pop(zero_idx)) new_node[-1]+="U" for e in new_node: successors.append(e) if process[i]=="down": new_node=list(node) new_node.insert(zero_idx+3,new_node.pop(zero_idx)) new_node[-1]+="D" for e in new_node: successors.append(e) return successors #------------------------------------------ |
# 633xxxxx21 216 (2020-09-20 13:17) def gen_successors(node): successors = [] zero = node.index(0)+1 up,down,left,right = False,False,False,False if zero%3 == 0: left = True elif zero%3 == 1: right = True else: left,right = True,True if zero <= 3: down = True elif zero >= 7: up = True else: up,down = True,True zero -= 1 if up: n_node = node[:] n_node[zero],n_node[zero-3] = n_node[zero-3],n_node[zero] n_node[-1] += 'U' successors += n_node if down: n_node = node[:] n_node[zero],n_node[zero+3] = n_node[zero+3],n_node[zero] n_node[-1] += 'D' successors += n_node if left: n_node = node[:] n_node[zero],n_node[zero-1] = n_node[zero-1],n_node[zero] n_node[-1] += 'L' successors += n_node if right: n_node = node[:] n_node[zero],n_node[zero+1] = n_node[zero+1],n_node[zero] n_node[-1] += 'R' successors += n_node return successors #------------------------------------------ |
# 633xxxxx21 217 (2020-09-20 22:26) def gen_successors(node): successors = [] zero = node.index(0) if zero == 0: for e in 'RD': if e == 'R': successors += [node[zero+1]] + [0] + node[zero+2:-1] + [node[-1]+e] elif e == 'D': successors += [node[zero+3]] + node[1:3] + [0] + node[4:-1] + [node[-1]+e] elif zero == 1: for e in 'RDL': if e == 'D': successors += [node[0]] + [node[4]] + node[2:4] + [0] + node[5:-1] + [node[-1]+e] elif e == 'L': successors += [0] + [node[0]] + node[2:-1] + [node[-1]+e] elif e == 'R': successors += [node[0]] + [node[2]] + [0] + node[3:-1] + [node[-1]+e] elif zero == 2: for e in 'LD': if e == 'L': successors += [node[0]] + [0] + [node[1]] + node[3:-1] + [node[-1]+e] elif e == 'D': successors += node[0:2] + [node[5]] + node[3:5] + [0] + node[6:-1] + [node[-1]+e] elif zero == 3: for e in 'URD': if e == 'U': successors += [0] + node[1:3] + [node[0]] + node[4:-1] + [node[-1]+e] elif e == 'R': successors += node[0:3] + [node[4]] + [0] + node[5:-1] + [node[-1]+e] elif e == 'D': successors += node[0:3] + [node[6]] + node[4:6] + [0] + node[7:-1] + [node[-1]+e] elif zero == 4: for e in 'URDL': if e == 'U': successors += [node[0]] + [0] + node[2:4] + [node[1]] + node[5:-1] + [node[-1]+e] elif e == 'R': successors += node[0:4] + [node[5]] + [0] + node[6:-1] + [node[-1]+e] elif e == 'L': successors += node[0:3] + [0] + [node[3]] + node[5:-1] + [node[-1]+e] elif e == 'D': successors += node[0:4] + [node[7]] + node[5:7] + [0] + [node[8]] + [node[-1]+e] elif zero == 5: for e in 'ULD': if e == 'U': successors += node[0:2] + [0] + node[3:5] + [node[2]] + node[6:-1] + [node[-1]+e] elif e == 'L': successors += node[0:4] + [0] + [node[4]] + node[6:-1] + [node[-1]+e] elif e == 'D': successors += node[0:5] + [node[8]] + node[6:8] + [0] + [node[-1]+e] elif zero == 6: for e in 'UR': if e == 'U': successors += node[0:3] + [0] + node[4:6] + [node[3]] + node[7:-1] + [node[-1]+e] elif e == 'R': successors += node[0:6] + [node[7]] + [0] + [node[8]] + [node[-1]+e] elif zero == 7: for e in 'URL': if e == 'U': successors += node[0:4] + [0] + node[5:7] + [node[4]] + [node[8]] + [node[-1]+e] elif e == 'L': successors += node[0:6] + [0] + [node[6]] + [node[8]] + [node[-1]+e] elif e == 'R': successors += node[0:7] + [node[8]] + [0] + [node[-1]+e] elif zero == 8: for e in 'UL': if e == 'U': successors += node[0:5] + [0] + node[6:8] + [node[5]] + [node[-1]+e] elif e == 'L': successors += node[0:7] + [0] + [node[7]] + [node[-1]+e] return successors #------------------------------------------ |
# 633xxxxx21 218 (2020-09-20 18:40) def gen_successors(node): successors = [] a = [] b = [] c = [] d = [] for i in node : a.append(i) for i in node : b.append(i) for i in node : c.append(i) for i in node : d.append(i) if node.index(0) == 0 : M = ['R','D'] for i in M: if i == 'R': a[0],a[1]=a[1],a[0] successors+=(a[0:9] + [node[-1]+i]) elif i == 'D': b[0],b[3]=b[3],b[0] successors+=(b[0:9] + [node[-1]+i]) elif node.index(0) == 1 : M = ['R','D','L'] for i in M: if i =='R': a[1],a[2]=a[2],a[1] successors+=(a[0:9] + [node[-1]+i]) elif i == 'D': b[1],b[4]=b[4],b[1] successors+=(b[0:9] + [node[-1]+i]) elif i == 'L': d[0],d[1]=d[1],d[0] successors+=(d[0:9] + [node[-1]+i]) elif node.index(0) == 2 : M = ['L','D'] for i in M: if i == 'L': d[1],d[2]=d[2],d[1] successors+=(d[0:9] + [node[-1]+i]) elif i == 'D': b[2],b[5]=b[5],b[2] successors+=(b[0:9] + [node[-1]+i]) elif node.index(0) == 3 : M = ['R','D','U'] for i in M: if i == 'R': b[3],b[4]=b[4],b[3] successors+=(b[0:9] + [node[-1]+i]) elif i == 'D': d[3],d[6]=d[6],d[3] successors+=(d[0:9] + [node[-1]+i]) elif i == 'U': a[0],a[3]=a[3],a[0] successors+=(a[0:9] + [node[-1]+i]) elif node.index(0) == 4 : M = ['R','D','L','U'] for i in M: if i == 'R': b[4],b[5]=b[5],b[4] successors+=(b[0:9] + [node[-1]+i]) elif i == 'D': d[4],d[7]=d[7],d[4] successors+=(d[0:9] + [node[-1]+i]) elif i == 'L': a[3],a[4]=a[4],a[3] successors+=(a[0:9] + [node[-1]+i]) elif i == 'U': c[1],c[4]=c[4],c[1] successors+=(c[0:9] + [node[-1]+i]) elif node.index(0) == 5 : M = ['U','D','L'] for i in M: if i == 'U': c[2],c[5]=c[5],c[2] successors+=(c[0:9] + [node[-1]+i]) elif i == 'D': a[5],a[8]=a[8],a[5] successors+=(a[0:9] + [node[-1]+i]) elif i == 'L': b[4],b[5]=b[5],b[4] successors+=(b[0:9] + [node[-1]+i]) elif node.index(0) == 6 : M = ['R','U'] for i in M: if i == 'R': b[6],b[7]=b[7],b[6] successors+=(b[0:9] + [node[-1]+i]) elif i == 'U': c[3],c[6]=c[6],c[3] successors+=(c[0:9] + [node[-1]+i]) elif node.index(0) == 7 : M = ['R','U','L'] for i in M: if i == 'R': a[7],a[8]=a[8],a[7] successors+=(a[0:9] + [node[-1]+i]) elif i == 'U': b[4],b[7]=b[7],b[4] successors+=(b[0:9] + [node[-1]+i]) elif i == 'L': c[6],c[7]=c[7],c[6] successors+=(c[0:9] + [node[-1]+i]) elif node.index(0) == 8 : M = ['L','U'] for i in M: if i == 'L': a[7],a[8]=a[8],a[7] successors+=(a[0:9] + [node[-1]+i]) elif i == 'U': c[5],c[8]=c[8],c[5] successors+=(c[0:9] + [node[-1]+i]) return successors #------------------------------------------ |
# 633xxxxx21 219 (2020-09-20 15:24) def gen_successors(node): successors = [] successors1=[] successors2=[] successors3=[] successors4=[] if node.index(0)==0: successors1=node[::] successors1[0],successors1[3]=successors1[3],successors1[0] successors1[-1]=successors1[-1]+'D' successors2=node[::] successors2[0],successors2[1]=successors2[1],successors2[0] successors2[-1]=successors2[-1]+'R' successors=successors1+successors2 elif node.index(0)==2: successors1=node[::] successors1[2],successors1[5]=successors1[5],successors1[2] successors1[-1]=successors1[-1]+'D' successors2=node[::] successors2[2],successors2[1]=successors2[1],successors2[2] successors2[-1]=successors2[-1]+'L' successors=successors1+successors2 elif node.index(0)==6: successors1=node[::] successors1[6],successors1[3]=successors1[3],successors1[6] successors1[-1]=successors1[-1]+'U' successors2=node[::] successors2[6],successors2[7]=successors2[7],successors2[6] successors2[-1]=successors2[-1]+'R' successors=successors1+successors2 elif node.index(0)==8: successors1=node[::] successors1[8],successors1[5]=successors1[5],successors1[8] successors1[-1]=successors1[-1]+'U' successors2=node[::] successors2[8],successors2[7]=successors2[7],successors2[8] successors2[-1]=successors2[-1]+'L' successors=successors1+successors2 elif node.index(0)==1: successors1=node[::] successors1[1],successors1[4]=successors1[4],successors1[1] successors1[-1]=successors1[-1]+'D' successors2=node[::] successors2[1],successors2[0]=successors2[0],successors2[1] successors2[-1]=successors2[-1]+'L' successors3=node[::] successors3[1],successors3[2]=successors3[2],successors3[1] successors3[-1]=successors3[-1]+'R' successors=successors1+successors2+successors3 elif node.index(0)==3: successors1=node[::] successors1[3],successors1[6]=successors1[6],successors1[3] successors1[-1]=successors1[-1]+'D' successors2=node[::] successors2[3],successors2[0]=successors2[0],successors2[3] successors2[-1]=successors2[-1]+'U' successors3=node[::] successors3[3],successors3[4]=successors3[4],successors3[3] successors3[-1]=successors3[-1]+'R' successors=successors1+successors2+successors3 elif node.index(0)==5: successors1=node[::] successors1[5],successors1[4]=successors1[4],successors1[5] successors1[-1]=successors1[-1]+'L' successors2=node[::] successors2[5],successors2[2]=successors2[2],successors2[5] successors2[-1]=successors2[-1]+'U' successors3=node[::] successors3[5],successors3[8]=successors3[8],successors3[5] successors3[-1]=successors3[-1]+'D' successors=successors1+successors2+successors3 elif node.index(0)==7: successors1=node[::] successors1[7],successors1[4]=successors1[4],successors1[7] successors1[-1]=successors1[-1]+'U' successors2=node[::] successors2[7],successors2[6]=successors2[6],successors2[7] successors2[-1]=successors2[-1]+'L' successors3=node[::] successors3[7],successors3[8]=successors3[8],successors3[7] successors3[-1]=successors3[-1]+'R' successors=successors1+successors2+successors3 elif node.index(0)==4: successors1=node[::] successors1[1],successors1[4]=successors1[4],successors1[1] successors1[-1]=successors1[-1]+'U' successors2=node[::] successors2[4],successors2[3]=successors2[3],successors2[4] successors2[-1]=successors2[-1]+'L' successors3=node[::] successors3[4],successors3[5]=successors3[5],successors3[4] successors3[-1]=successors3[-1]+'R' successors4=node[::] successors4[7],successors4[4]=successors4[4],successors4[7] successors4[-1]=successors4[-1]+'D' successors=successors1+successors2+successors3+successors4 return successors #------------------------------------------ |
# 633xxxxx21 220 (2020-09-20 23:43) def gen_successors(node): successors = [] zero = node.index(0); if (zero == 0): ndd = node.copy() ndr = node.copy() ndd[0], ndd[3] = ndd[3], ndd[0] ndd[9] += "D" successors += ndd ndr[0], ndr[1] = ndr[1], ndr[0] ndr[9] += "R" successors += ndr elif (zero == 1): ndd = node.copy() ndl = node.copy() ndr = node.copy() ndd[1], ndd[4] = ndd[4], ndd[1] ndd[9] += "D" successors += ndd ndl[0], ndl[1] = ndl[1], ndl[0] ndl[9] += "L" successors += ndl ndr[1], ndr[2] = ndr[2], ndr[1] ndr[9] += "R" successors += ndr elif (zero == 2): ndd = node.copy() ndl = node.copy() ndd[2], ndd[5] = ndd[5], ndd[2] ndd[9] += "D" successors += ndd ndl[1], ndl[2] = ndl[2], ndl[1] ndl[9] += "L" successors += ndl elif (zero == 3): ndu = node.copy() ndd = node.copy() ndr = node.copy() ndu[0], ndu[3] = ndu[3], ndu[0] ndu[9] += "U" successors += ndu ndd[3], ndd[6] = ndd[6], ndd[3] ndd[9] += "D" successors += ndd ndr[3], ndr[4] = ndr[4], ndr[3] ndr[9] += "R" successors += ndr elif (zero == 4): ndu = node.copy() ndd = node.copy() ndl = node.copy() ndr = node.copy() ndu[1], ndu[4] = ndu[4], ndu[1] ndu[9] += "U" successors += ndu ndd[4], ndd[7] = ndd[7], ndd[4] ndd[9] += "D" successors += ndd ndl[3], ndl[4] = ndl[4], ndl[3] ndl[9] += "L" successors += ndl ndr[4], ndr[5] = ndr[5], ndr[4] ndr[9] += "R" successors += ndr elif (zero == 5): ndu = node.copy() ndd = node.copy() ndl = node.copy() ndu[2], ndu[5] = ndu[5], ndu[2] ndu[9] += "U" successors += ndu ndd[5], ndd[8] = ndd[8], ndd[5] ndd[9] += "D" successors += ndd ndl[4], ndl[5] = ndl[5], ndl[4] ndl[9] += "L" successors += ndl elif (zero == 6): ndu = node.copy() ndr = node.copy() ndu[3], ndu[6] = ndu[6], ndu[3] ndu[9] += "U" successors += ndu ndr[6], ndr[7] = ndr[7], ndr[6] ndr[9] += "R" successors += ndr elif (zero == 7): ndu = node.copy() ndl = node.copy() ndr = node.copy() ndu[4], ndu[7] = ndu[7], ndu[4] ndu[9] += "U" successors += ndu ndl[6], ndl[7] = ndl[7], ndl[6] ndl[9] += "L" successors += ndl ndr[7], ndr[8] = ndr[8], ndr[7] ndr[9] += "R" successors += ndr elif (zero == 8): ndu = node.copy() ndl = node.copy() ndu[5], ndu[8] = ndu[8], ndu[5] ndu[9] += "U" successors += ndu ndl[7], ndl[8] = ndl[8], ndl[7] ndl[9] += "L" successors += ndl return successors #------------------------------------------ |
# 633xxxxx21 221 (2020-09-18 20:46) def gen_successors(node): ans="" location=node.index(0,0,len(board)) if location//3==0: ans+="D" elif location//3==1: ans+="UD" elif location//3==2: ans+="U" if location%3==0 : ans+="R" elif location%3==1: ans+="LR" elif location%3==2: ans+="L" successors=node*len(ans) for i in range(len(ans)): if ans[i]=="U": successors[location+10*i],successors[location-3+10*i]=successors[location-3+10*i],successors[location+10*i] elif ans[i]=="D": successors[location+10*i],successors[location+3+10*i]=successors[location+3+10*i],successors[location+10*i] elif ans[i]=="L": successors[location+10*i],successors[location-1+10*i]=successors[location-1+10*i],successors[location+10*i] elif ans[i]=="R": successors[location+10*i],successors[location+1+10*i]=successors[location+1+10*i],successors[location+10*i] successors[10*i+9]+=ans[i] return successors #------------------------------------------ |
# 633xxxxx21 222 (2020-09-20 18:42) def gen_successors(node): successors = [] a = [] for i in node : a.append(i) b = [] for i in node : b.append(i) c = [] for i in node : c.append(i) d = [] for i in node : d.append(i) if node.index(0) == 0 : A = ['R','D'] for i in A: if i == 'R': a[0],a[1]=a[1],a[0] successors+=(a[0:9] + [node[-1]+i]) elif i == 'D': b[0],b[3]=b[3],b[0] successors+=(b[0:9] + [node[-1]+i]) elif node.index(0) == 1 : A = ['R','D','L'] for i in A: if i =='R': a[1],a[2]=a[2],a[1] successors+=(a[0:9] + [node[-1]+i]) elif i == 'D': b[1],b[4]=b[4],b[1] successors+=(b[0:9] + [node[-1]+i]) elif i == 'L': d[0],d[1]=d[1],d[0] successors+=(d[0:9] + [node[-1]+i]) elif node.index(0) == 2 : A = ['D','L'] for i in A: if i == 'D': b[2],b[5]=b[5],b[2] successors+=(b[0:9] + [node[-1]+i]) elif i == 'L': d[1],d[2]=d[2],d[1] successors+=(d[0:9] + [node[-1]+i]) elif node.index(0) == 3 : A = ['U','D','R'] for i in A: if i == 'U': a[0],a[3]=a[3],a[0] successors+=(a[0:9] + [node[-1]+i]) elif i == 'D': d[3],d[6]=d[6],d[3] successors+=(d[0:9] + [node[-1]+i]) elif i == 'R': b[3],b[4]=b[4],b[3] successors+=(b[0:9] + [node[-1]+i]) elif node.index(0) == 4 : A = ['L','R','U','D'] for i in A: if i == 'L': a[3],a[4]=a[4],a[3] successors+=(a[0:9] + [node[-1]+i]) elif i == 'R': b[4],b[5]=b[5],b[4] successors+=(b[0:9] + [node[-1]+i]) elif i == 'U': c[1],c[4]=c[4],c[1] successors+=(c[0:9] + [node[-1]+i]) elif i == 'D': d[4],d[7]=d[7],d[4] successors+=(d[0:9] + [node[-1]+i]) elif node.index(0) == 5 : A = ['D','U','L'] for i in A: if i == 'D': a[5],a[8]=a[8],a[5] successors+=(a[0:9] + [node[-1]+i]) elif i == 'U': c[2],c[5]=c[5],c[2] successors+=(c[0:9] + [node[-1]+i]) elif i == 'L': b[4],b[5]=b[5],b[4] successors+=(b[0:9] + [node[-1]+i]) elif node.index(0) == 6 : A = ['R','U'] for i in A: if i == 'R': b[6],b[7]=b[7],b[6] successors+=(b[0:9] + [node[-1]+i]) elif i == 'U': c[3],c[6]=c[6],c[3] successors+=(c[0:9] + [node[-1]+i]) elif node.index(0) == 7 : A = ['R','U','L'] for i in A: if i == 'R': a[7],a[8]=a[8],a[7] successors+=(a[0:9] + [node[-1]+i]) elif i == 'U': b[4],b[7]=b[7],b[4] successors+=(b[0:9] + [node[-1]+i]) elif i == 'L': c[6],c[7]=c[7],c[6] successors+=(c[0:9] + [node[-1]+i]) elif node.index(0) == 8 : A = ['L','U'] for i in A: if i == 'L': a[7],a[8]=a[8],a[7] successors+=(a[0:9] + [node[-1]+i]) elif i == 'U': c[5],c[8]=c[8],c[5] successors+=(c[0:9] + [node[-1]+i]) return successors #------------------------------------------ |
# 633xxxxx21 223 (2020-09-19 00:10) def gen_successors(node): N=int((len(node)-1)**0.5) i=node.index(0) n=node ; n1=[] ; n2=[] ; n3=[] ; n4=[] if i == 0 : n1+=n ; n2+=n n1[i],n1[i+1],n1[-1]=n[i+1],n[i],n[-1]+'R' n2[i],n2[i+N],n2[-1]=n[i+N],n[i],n[-1]+'D' elif i == N-1 : n1+=n ; n2+=n n1[i],n1[i-1],n1[-1]=n[i-1],n[i],n[-1]+'L' n2[i],n2[i+N],n2[-1]=n[i+N],n[i],n[-1]+'D' elif i == N**2-N : n1+=n ; n2+=n n1[i],n1[i-N],n1[-1]=n[i-N],n[i],n[-1]+'U' n2[i],n2[i+1],n2[-1]=n[i+1],n[i],n[-1]+'R' elif i == N**2-1 : n1+=n ; n2+=n n1[i],n1[i-N],n1[-1]=n[i-N],n[i],n[-1]+'U' n2[i],n2[i-1],n2[-1]=n[i-1],n[i],n[-1]+'L' elif i % N == 0 : n1+=n ; n2+=n ; n3+=n n1[i],n1[i-N],n1[-1]=n[i-N],n[i],n[-1]+'U' n2[i],n2[i+1],n2[-1]=n[i+1],n[i],n[-1]+'R' n3[i],n3[i+N],n3[-1]=n[i+N],n[i],n[-1]+'D' elif i % N == N-1 : n1+=n ; n2+=n ; n3+=n n1[i],n1[i-N],n1[-1]=n[i-N],n[i],n[-1]+'U' n2[i],n2[i-1],n2[-1]=n[i-1],n[i],n[-1]+'L' n3[i],n3[i+N],n3[-1]=n[i+N],n[i],n[-1]+'D' elif i < N and 0 < i % N < N-1 : n1+=n ; n2+=n ; n3+=n n1[i],n1[i-1],n1[-1]=n[i-1],n[i],n[-1]+'L' n2[i],n2[i+N],n2[-1]=n[i+N],n[i],n[-1]+'D' n3[i],n3[i+1],n3[-1]=n[i+1],n[i],n[-1]+'R' elif i > N**2-N and 0 < i % N < N-1 : n1+=n ; n2+=n ; n3+=n n1[i],n1[i-1],n1[-1]=n[i-1],n[i],n[-1]+'L' n2[i],n2[i-N],n2[-1]=n[i-N],n[i],n[-1]+'U' n3[i],n3[i+1],n3[-1]=n[i+1],n[i],n[-1]+'R' else : n1+=n ; n2+=n ; n3+=n ; n4+=n n1[i],n1[i-1],n1[-1]=n[i-1],n[i],n[-1]+'L' n2[i],n2[i-N],n2[-1]=n[i-N],n[i],n[-1]+'U' n3[i],n3[i+1],n3[-1]=n[i+1],n[i],n[-1]+'R' n4[i],n4[i+N],n4[-1]=n[i+N],n[i],n[-1]+'D' successors = n1+n2+n3+n4 return successors #------------------------------------------ |
# 633xxxxx21 224 (2020-09-20 23:16) def gen_successors(node): successors = [] |
# 633xxxxx21 225 (2020-09-20 21:42) def gen_successors(node): successors=[] empty=node.index(0) if empty==0: u=node.copy() d=node.copy() l=node.copy() r=node.copy() r[0],r[1]=r[1],r[0] r[9]+="R" successors+=r d[0],d[3]=d[3],d[0] d[9]+="D" successors+=d elif empty==1: u=node.copy() d=node.copy() l=node.copy() r=node.copy() r[2],r[1]=r[1],r[2] r[9]+="R" successors+=r d[1],d[4]=d[4],d[1] d[9]+="D" successors+=d l[1],l[0]=l[0],l[1] l[9]+="L" successors+=l elif empty==2: u=node.copy() d=node.copy() l=node.copy() r=node.copy() l[2],l[1]=l[1],l[2] l[9]+="L" successors+=l d[5],d[2]=d[2],d[5] d[9]+="D" successors+=d elif empty==3: u=node.copy() d=node.copy() l=node.copy() r=node.copy() r[3],r[4]=r[4],r[3] r[9]+="R" successors+=r d[3],d[6]=d[6],d[3] d[9]+="D" successors+=d u[3],u[0]=u[0],u[3] u[9]+="U" successors+=u elif empty==4: u=node.copy() d=node.copy() l=node.copy() r=node.copy() r[5],r[4]=r[4],r[5] r[9]+="R" successors+=r d[4],d[7]=d[7],d[4] d[9]+="D" successors+=d u[4],u[1]=u[1],u[4] u[9]+="U" successors+=u l[4],l[3]=l[3],l[4] l[9]+="L" successors+=l elif empty==5: u=node.copy() d=node.copy() l=node.copy() r=node.copy() successors+=r d[5],d[8]=d[8],d[5] d[9]+="D" successors+=d u[5],u[2]=u[2],u[5] u[9]+="U" successors+=u l[5],l[4]=l[4],l[5] l[9]+="L" successors+=l elif empty==6: u=node.copy() d=node.copy() l=node.copy() r=node.copy() r[6],r[7]=r[7],r[6] r[9]+="R" successors+=r u[6],u[3]=u[3],u[6] u[9]+="U" successors+=u elif empty==7: u=node.copy() d=node.copy() l=node.copy() r=node.copy() l[7],l[6]=l[6],l[7] l[9]+="L" successors+=l u[7],u[4]=u[4],u[7] u[9]+="U" successors+=u r[8],r[7]=r[7],r[8] r[9]+="R" successors+=r elif empty==8: u=node.copy() d=node.copy() l=node.copy() r=node.copy() l[7],l[8]=l[8],l[7] l[9]+="L" successors+=l u[8],u[5]=u[5],u[8] u[9]+="U" successors+=u return successors #------------------------------------------ |
# 633xxxxx21 226 (2020-09-20 22:43) def gen_successors(node): successors=[] a=node.index(0) n=int((len(node)-1)**0.5) #up if a > n-1: b=list(node) b[a],b[a-n]=b[a-n],b[a] successors += b[:len(node)-1] successors.append(b[len(node)-1]+'U') #down if 0<=a<=((n**2)-n-1): b=list(node) b[a],b[a+3]=b[a+3],b[a] successors += b[:len(node)-1] successors.append(b[len(node)-1]+'D') #left if a%n!=0: b=list(node) b[a],b[a-1]=b[a-1],b[a] successors += b[:len(node)-1] successors.append(b[len(node)-1]+'L') #right if a%n!=n-1: b=list(node) b[a],b[a+1]=b[a+1],b[a] successors += b[:len(node)-1] successors.append(b[len(node)-1]+'R') return successors #------------------------------------------ |
# 633xxxxx21 227 (2020-09-20 14:51) def gen_successors(node): successors = [] no = node.index(0,0,len(board)) path = '' if no//3 == 0 : path += 'D' else: if no//3 == 1 : path += 'UD' else: if no//3 == 2 : path += 'U' if no%3 == 0 : path += 'R' else: if no%3 == 1 : path += 'LR' else: if no%3 == 2 : path += 'L' successors = node*len(path) for i in range(len(path)): if path[i] == 'U' : successors[i*10+no],successors[i*10+no-3] = \ successors[i*10+no-3],successors[i*10+no] else: if path[i] == 'D' : successors[i*10+no],successors[i*10+no+3] = \ successors[i*10+no+3],successors[i*10+no] else: if path[i] == 'L' : successors[i*10+no],successors[i*10+no-1] = \ successors[i*10+no-1],successors[i*10+no] else: if path[i] == 'R' : successors[i*10+no],successors[i*10+no+1] = \ successors[i*10+no+1],successors[i*10+no] successors[10*i+9] += path[i] return successors #------------------------------------------ |
# 633xxxxx21 228 (2020-09-20 21:41) def gen_successors(node): successors = [] N=int((len(node)-1)**(1/2)) M="" m=node.index(0,0,len(node)) if m%N!= 0 : M+="L" if m%N!= N-1: M+="R" if m//N!=N-1 : M+="D" if m//N!=0 : M+="U" x = [] for i in range(len(M)): x = list(node) if M[i]=="U": x[m],x[m-N]=x[m-N],x[m] x[-1] += "U" elif M[i]=="D": x[m],x[m+N]=x[m+N],x[m] x[-1] += "D" elif M[i]=="L": x[m],x[m-1]=x[m-1],x[m] x[-1] += "L" elif M[i]=="R": x[m],x[m+1]=x[m+1],x[m] x[-1] += "R" successors += x return successors #------------------------------------------ |
# 633xxxxx21 229 (2020-09-20 17:59) def gen_successors(node): successors = [] Number0 = node.index(0) M = ['U','L','R','D'] u = [] l = [] r = [] d = [] for i in node : u.append(i) for i in node : l.append(i) for i in node : r.append(i) for i in node : d.append(i) if Number0 == 0: for i in M: if i == 'R': r[0],r[1] = r[1],r[0] successors += (r[0:9:1] + ['UDRR']) elif i == 'D': d[0],d[3] = d[3],d[0] successors += (d[0:9:1] + ['UDRD']) elif Number0 == 1: for i in M: if i == 'L': l[1],l[0] = l[0],l[1] successors += (l[0:9:1] + ['UDRL']) elif i == 'R': r[1],r[3] = r[3],r[1] successors += (r[0:9:1] + ['UDRR']) elif i == 'D': d[1],d[5] = d[5],d[1] successors += (d[0:9:1] + ['UDRD']) elif Number0 == 2: for i in M: if i == 'L': l[3],l[2] = l[2],l[2] successors += (l[0:9:1] + ['UDRL']) elif i == 'D': d[0],d[3] = d[3],d[0] successors += (d[0:9:1] + ['UDRD']) elif Number0 == 3: for i in M: if i == 'U': u[3],u[0] = u[0],u[3] successors += (u[0:9:1] + ['UDRU']) elif i == 'R': r[3],r[4] = r[4],r[3] successors += (r[0:9:1] + ['UDRR']) elif i == 'D': d[3],d[6] = d[6],d[3] successors += (d[0:9:1] + ['UDRD']) elif Number0 == 4: for i in M: if i == 'U': u[4],u[1] = u[1],u[4] successors += (u[0:9:1] + ['UDRU']) elif i == 'L': l[4],l[3] = l[3],l[4] successors += (l[0:9:1] + ['UDRL']) elif i == 'R': r[4],r[5] = r[5],r[4] successors += (r[0:9:1] + ['UDRR']) elif i == 'D': d[4],d[7] = d[7],d[4] successors += (d[0:9:1] + ['UDRD']) elif Number0 == 5: for i in M: if i == 'U': u[5],u[2] = u[2],u[5] successors += (u[0:9:1] + ['UDRU']) elif i == 'L': l[5],l[4] = l[4],l[5] successors += (l[0:9:1] + ['UDRL']) elif i == 'D': d[5],d[8] = d[8],d[5] successors += (d[0:9:1] + ['UDRD']) elif Number0 == 6: for i in M: if i == 'U': u[6],u[3] = u[3],u[6] successors += (u[0:9:1] + ['UDRU']) elif i == 'R': r[6],r[7] = r[7],r[6] successors += (r[0:9:1] + ['UDRR']) elif Number0 == 7: for i in M: if i == 'U': u[7],u[4] = u[4],u[7] successors += (u[0:9:1] + ['UDRU']) elif i == 'L': l[7],l[6] = l[6],l[7] successors += (l[0:9:1] + ['UDRL']) elif i == 'R': r[7],r[8] = r[8],r[7] successors += (r[0:9:1] + ['UDRR']) elif Number0 == 8: for i in M: if i == 'U': u[8],u[5] = u[5],u[8] successors += (u[0:9:1] + ['UDRU']) elif i == 'L': l[8],l[7] = l[7],l[8] successors += (l[0:9:1] + ['UDRL']) return successors #------------------------------------------ |
# 633xxxxx21 230 (2020-09-20 19:54) def gen_successors(node): successors = [] distance = '' position = node.index(0,0,len(board)) if position // 3 == 0: distance += 'D' elif position // 3 == 1: distance += 'U' distance += 'D' elif position // 3 == 2: distance += 'U' if position % 3 == 0 : distance += 'R' elif position % 3 == 1: distance += 'L' distance += 'R' elif position % 3 == 2: distance += 'L' successors = node*len(distance) for m in range(len(distance)): if distance[m] == 'U': successors[position-3+10*m],successors[position+10*m] = successors[position+10*m],successors[position-3+10*m] elif distance[m] == 'D': successors[position+10*m],successors[position+3+10*m] = successors[position+3+10*m],successors[position+10*m] elif distance[m] == 'L': successors[position-1+10*m],successors[position+10*m] = successors[position+10*m],successors[position-1+10*m] elif distance[m] == 'R': successors[position+10*m],successors[position+1+10*m] = successors[position+1+10*m],successors[position+10*m] successors[10*m+9] += distance[m] return successors #------------------------------------------ |
# 633xxxxx21 231 (2020-09-19 13:07) def gen_successors(node): successors = [] if (node.index(0)==0): for n in range(0,2): for i in node: successors.append(i) successors[19]=successors[19]+'R' tmp=successors[11] successors[10]=tmp successors[11]=0 successors[9]=successors[9]+'D' tmp=successors[3] successors[0]=tmp successors[3]=0 elif (node.index(0)==1): for n in range(0,3): for i in node: successors.append(i) successors[29]=successors[29]+'R' tmp=successors[22] successors[21]=tmp successors[22]=0 successors[19]=successors[19]+'L' tmp=successors[10] successors[11]=tmp successors[10]=0 successors[9]=successors[9]+'D' tmp=successors[4] successors[1]=tmp successors[4]=0 elif (node.index(0)==2): for n in range(0,2): for i in node: successors.append(i) successors[19]=successors[19]+'L' tmp=successors[14] successors[15]=tmp successors[14]=0 successors[9]=successors[9]+'D' tmp=successors[5] successors[2]=tmp successors[5]=0 elif (node.index(0)==3): for n in range(0,3): for i in node: successors.append(i) successors[19]=successors[19]+'R' tmp=successors[14] successors[13]=tmp successors[14]=0 successors[9]=successors[9]+'U' tmp=successors[0] successors[3]=tmp successors[0]=0 successors[29]=successors[29]+'D' tmp=successors[26] successors[23]=tmp successors[26]=0 elif (node.index(0)==4): for n in range(0,4): for i in node: successors.append(i) successors[29]=successors[29]+'R' tmp=successors[25] successors[24]=tmp successors[25]=0 successors[19]=successors[19]+'L' tmp=successors[13] successors[14]=tmp successors[13]=0 successors[9]=successors[9]+'U' tmp=successors[1] successors[4]=tmp successors[1]=0 successors[39]=successors[39]+'D' tmp=successors[37] successors[34]=tmp successors[37]=0 elif (node.index(0)==5): for n in range(0,3): for i in node: successors.append(i) successors[19]=successors[19]+'L' tmp=successors[14] successors[15]=tmp successors[14]=0 successors[9]=successors[9]+'U' tmp=successors[2] successors[5]=tmp successors[2]=0 successors[29]=successors[29]+'D' tmp=successors[28] successors[25]=tmp successors[28]=0 elif (node.index(0)==6): for n in range(0,2): for i in node: successors.append(i) successors[19]=successors[19]+'R' tmp=successors[17] successors[16]=tmp successors[17]=0 successors[9]=successors[9]+'U' tmp=successors[3] successors[6]=tmp successors[3]=0 elif (node.index(0)==7): for n in range(0,3): for i in node: successors.append(i) successors[29]=successors[29]+'R' tmp=successors[28] successors[27]=tmp successors[28]=0 successors[19]=successors[19]+'L' tmp=successors[16] successors[17]=tmp successors[16]=0 successors[9]=successors[9]+'U' tmp=successors[4] successors[7]=tmp successors[4]=0 elif (node.index(0)==8): for n in range(0,2): for i in node: successors.append(i) successors[19]=successors[19]+'L' tmp=successors[17] successors[18]=tmp successors[17]=0 successors[9]=successors[9]+'U' tmp=successors[5] successors[8]=tmp successors[5]=0 return successors #------------------------------------------ |
# 633xxxxx21 232 (2020-09-20 20:21) def gen_successors(node): successors = [] a=node.index(0) if a//3==0: d="D" elif a//3==1: d="UD" elif a//3==2: d="U" if a%3==0: d+="R" elif a%3==1: d+="LR" elif a%3==2: d+="L" for i in range(len(d)): b = node.copy() if d[i]=="U": b.remove(0) b.insert(a-3,0) b.insert(a+1,b[a-2]) b.pop(a-2) b[-1]+='U' elif d[i]=="D": b.remove(0) b.insert(a+2,0) b.insert(a,b[a+3]) b.pop(a+4) b[-1]+='D' elif d[i]=="L": b.remove(0) b.insert(a-1,0) b[-1]+='L' elif d[i]=="R": b.remove(0) b.insert(a+1,0) b[-1]+='R' successors += b return successors #------------------------------------------ |
# 633xxxxx21 233 (2020-09-20 12:31) def gen_successors(node): ans="" a=board.index(0,0,len(board)) if a//3==0: ans+="D" elif a//3==1: ans+="UD" elif a//3==2: ans+="U" if a%3==0 : ans+="R" elif a%3==1: ans+="L" ans+="R" elif a%3==2: ans+="L" successors=node*len(ans) for i in range(len(ans)): if ans[i]=="D": successors[a+10*i],successors[a-3+10*i]=successors[a-3+10*i],successors[a+10*i] elif ans[i]=="U": successors[a+10*i],successors[a+3+10*i]=successors[a+3+10*i],successors[a+10*i] elif ans[i]=="L": successors[a+10*i],successors[a-1+10*i]=successors[a-1+10*i],successors[a+10*i] elif ans[i]=="R": successors[a+10*i],successors[a+1+10*i]=successors[a+1+10*i],successors[a+10*i] successors[10*i-1]+=ans[i] return successors #------------------------------------------ |
# 633xxxxx21 234 (2020-09-20 21:53) def gen_successors(node): successors=[] b=node.index(0) #หาตำแหน่งของ 0 if b==0: #ไปได้ขวา ล่าง num=node[:-1] num[0],num[3]=num[3],num[0]# ไปล่าง ตำแหน่ง+3 สลับกัน successors += num successors.append(node[-1]+'D') num=node[:-1] num[0],num[1]=num[1],num[0]# ไปขวา ตำแหน่ง+1 สลับกัน successors += num successors.append(node[-1]+'R') if b==1: #ไปได้ขวา ล่าง ซ้าย num=node[:-1] num[1],num[4]=num[4],num[1]# ไปล่าง ตำแหน่ง+3 สลับกัน successors += num successors.append(node[-1]+'D') num=node[:-1] num[1],num[2]=num[2],num[1]# ไปขวา ตำแหน่ง+1 สลับกัน successors += num successors.append(node[-1]+'R') num=node[:-1] num[1],num[0]=num[0],num[1]# ไปซ้าย ตำแหน่ง-1 สลับกัน successors+=num successors.append(node[-1]+'L') if b==2: num=node[:-1] num[2],num[5]=num[2],num[5]# ไปล่าง ตำแหน่ง+3 สลับกัน successors += num successors.append(node[-1]+'D') num=node[:-1] num[2],num[1]=num[1],num[2]# ไปl ตำแหน่ง-1 สลับกัน successors+=num successors.append(node[-1]+'L') if b==3: num=node[:-1] num[3],num[6]=num[6],num[3]# ไปล่าง ตำแหน่ง+3 สลับกัน successors += num successors.append(node[-1]+'D') num=node[:-1] num[3],num[4]=num[4],num[3]# ไปขวา ตำแหน่ง+1 สลับกัน successors += num successors.append(node[-1]+'R') num=node[:-1] num[3],num[0]=num[0],num[3]# ไปu ตำแหน่ง-3 สลับกัน successors+=num successors.append(node[-1]+'U') if b==4: num=node[:-1] num[4],num[7]=num[7],num[4]# ไปล่าง ตำแหน่ง+3 สลับกัน successors += num successors.append(node[-1]+'D') num=node[:-1] num[4],num[5]=num[5],num[4]# ไปขวา ตำแหน่ง+1 สลับกัน successors += num successors.append(node[-1]+'R') num=node[:-1] num[4],num[1]=num[1],num[4]# ไปu ตำแหน่ง-3 สลับกัน successors+=num successors.append(node[-1]+'U') num=node[:-1] num[4],num[3]=num[3],num[4]# ไปl ตำแหน่ง-1 สลับกัน successors+=num successors.append(node[-1]+'L') if b==5: #ไปได้ขวา ล่าง ซ้าย u num=node[:-1] num[5],num[8]=num[8],num[5]# ไปล่าง ตำแหน่ง+3 สลับกัน successors += num successors.append(node[-1]+'D') num=node[:-1] num[5],num[2]=num[2],num[5]# ไปu ตำแหน่ง+1 สลับกัน successors += num successors.append(node[-1]+'U') num=node[:-1] num[5],num[4]=num[4],num[5]# ไปซ้าย ตำแหน่ง-1 สลับกัน successors+=num successors.append(node[-1]+'L') if b==6: num=node[:-1] num[6],num[7]=num[7],num[6]# ไปขวา ตำแหน่ง+1 สลับกัน successors += num successors.append(node[-1]+'R') num=node[:-1] num[6],num[3]=num[3],num[6]# ไปu ตำแหน่ง-3 สลับกัน successors+=num successors.append(node[-1]+'U') if b==7: num=node[:-1] num[7],num[8]=num[8],num[7]# ไปขวา ตำแหน่ง+1 สลับกัน successors += num successors.append(node[-1]+'R') num=node[:-1] num[7],num[4]=num[4],num[7]# ไปu ตำแหน่ง-3 สลับกัน successors+=num successors.append(node[-1]+'U') num=node[:-1] num[7],num[6]=num[6],num[7]# ไปl ตำแหน่ง-1 สลับกัน successors+=num successors.append(node[-1]+'L') if b==8: num=node[:-1] num[8],num[5]=num[5],num[8]# ไปu ตำแหน่ง-3 สลับกัน successors+=num successors.append(node[-1]+'U') num=node[:-1] num[8],num[7]=num[7],num[8]# ไปl ตำแหน่ง-1 สลับกัน successors+=num successors.append(node[-1]+'L') return successors #------------------------------------------ |
# 633xxxxx21 235 (2020-09-20 22:03) def gen_successors(node): successors = [] zero = node.index(0) if zero == 0: for e in 'RD': if e == 'R': successors += [node[zero+1]] + [0] + node[zero+2:-1] + [node[-1]+e] elif e == 'D': successors += [node[zero+3]] + node[1:3] + [0] + node[4:-1] + [node[-1]+e] elif zero == 1: for e in 'RDL': if e == 'D': successors += [node[0]] + [node[4]] + node[2:4] + [0] + node[5:-1] + [node[-1]+e] elif e == 'L': successors += [0] + [node[0]] + node[2:-1] + [node[-1]+e] elif e == 'R': successors += [node[0]] + [node[2]] + [0] + node[3:-1] + [node[-1]+e] elif zero == 2: for e in 'LD': if e == 'L': successors += [node[0]] + [0] + [node[1]] + node[3:-1] + [node[-1]+e] elif e == 'D': successors += node[0:2] + [node[5]] + node[3:5] + [0] + node[6:-1] + [node[-1]+e] elif zero == 3: for e in 'URD': if e == 'U': successors += [0] + node[1:3] + [node[0]] + node[4:-1] + [node[-1]+e] elif e == 'R': successors += node[0:3] + [node[4]] + [0] + node[5:-1] + [node[-1]+e] elif e == 'D': successors += node[0:3] + [node[6]] + node[4:6] + [0] + node[7:-1] + [node[-1]+e] elif zero == 4: for e in 'URDL': if e == 'U': successors += [node[0]] + [0] + node[2:4] + [node[1]] + node[5:-1] + [node[-1]+e] elif e == 'R': successors += node[0:4] + [node[5]] + [0] + node[6:-1] + [node[-1]+e] elif e == 'L': successors += node[0:3] + [0] + [node[3]] + node[5:-1] + [node[-1]+e] elif e == 'D': successors += node[0:4] + [node[7]] + node[5:7] + [0] + [node[8]] + [node[-1]+e] elif zero == 5: for e in 'ULD': if e == 'U': successors += node[0:2] + [0] + node[3:5] + [node[2]] + node[6:-1] + [node[-1]+e] elif e == 'L': successors += node[0:4] + [0] + [node[4]] + node[6:-1] + [node[-1]+e] elif e == 'D': successors += node[0:5] + [node[8]] + node[6:8] + [0] + [node[-1]+e] elif zero == 6: for e in 'UR': if e == 'U': successors += node[0:3] + [0] + node[4:6] + [node[3]] + node[7:-1] + [node[-1]+e] elif e == 'R': successors += node[0:6] + [node[7]] + [0] + [node[8]] + [node[-1]+e] elif zero == 7: for e in 'URL': if e == 'U': successors += node[0:4] + [0] + node[5:7] + [node[4]] + [node[8]] + [node[-1]+e] elif e == 'L': successors += node[0:6] + [0] + [node[6]] + [node[8]] + [node[-1]+e] elif e == 'R': successors += node[0:7] + [node[8]] + [0] + [node[-1]+e] elif zero == 8: for e in 'UL': if e == 'U': successors += node[0:5] + [0] + node[6:8] + [node[5]] + [node[-1]+e] elif e == 'L': successors += node[0:7] + [0] + [node[7]] + [node[-1]+e] return successors #------------------------------------------ |
# 633xxxxx21 236 (2020-09-20 01:14) def gen_successors(node): successors = [] action = ["R","L","U","D"] size = int(len(node)**(1/2)) st = node[-1] node = node[0:-1] if node.index(0) == 0: #top left action.remove("L") action.remove("U") elif node.index(0) == size-1 : #top right action.remove("U") action.remove("R") elif node.index(0) == len(node)-size: #bottom left action.remove("L") action.remove("D") elif node.index(0) == len(node)-1: #bottom right action.remove("R") action.remove("D") elif 0 <node.index(0) < size-1: #border top action.remove("U") elif node.index(0)%size == 0 : #border left action.remove("L") elif node.index(0)%size == size-1: #border right action.remove("R") elif len(node)-size < node.index(0) < len(node)-1: #border bottom action.remove("D") else: # pass for e in action: b=list(node) if e=="R": b[node.index(0)],b[node.index(0)+1]=b[node.index(0)+1],b[node.index(0)] b.append(st+"R") elif e=="L": b[node.index(0)-1],b[node.index(0)]=b[node.index(0)],b[node.index(0)-1] b.append(st+"L") elif e=="U": b[node.index(0)-size],b[node.index(0)]=b[node.index(0)],b[node.index(0)-size] b.append(st+"U") elif e=="D": b[node.index(0)],b[node.index(0)+size]=b[node.index(0)+size],b[node.index(0)] b.append(st+"D") for x in b: successors.append(x) return successors #------------------------------------------ |
# 633xxxxx21 237 (2020-09-20 23:52) def gen_successors(node): successors = [] N = int(len(board)**0.5) ans=[] si=node.index(0,0,len(node)) if si//N==0: ans+="D" elif si//N==N-1: ans+="U" else: ans+="U" ans+="D" if si%N==0: ans+="R" elif si%N==N-1: ans+="L" else: ans+="L" ans+="R" successors=node*len(ans) for i in range(len(ans)): if ans[i]=="R": successors[si+(N**2+1)*i],successors[si+1+(N**2+1)*i] = successors[si+1+(N**2+1)*i],successors[si+(N**2+1)*i] elif ans[i]=="U": successors[si+(N**2+1)*i],successors[si-N+(N**2+1)*i] = successors[si-N+(N**2+1)*i],successors[si+(N**2+1)*i] elif ans[i]=="D": successors[si+(N**2+1)*i],successors[si+N+(N**2+1)*i] = successors[si+N+(N**2+1)*i],successors[si+(N**2+1)*i] elif ans[i]=="L": successors[si+(N**2+1)*i],successors[si-1+(N**2+1)*i] = successors[si-1+(N**2+1)*i],successors[si+(N**2+1)*i] successors[(len(board)+1)*(i+1)-1]+=ans[i] return successors #-------------------- |
# 633xxxxx21 238 (2020-09-20 21:33) def gen_successors(node): a=[] successors = [] g=node.index(0) if g==0: for i in range(9): a.append(node[i]) a[0]=node[1] a[1]=int(0) a.append(node[9]+"R") for i in range(len(a)): successors.append(a[i]) a=[] for i in range(9): a.append(node[i]) a[0]=node[3] a[3]=int(0) a.append(node[9]+"D") for i in range(len(a)): successors.append(a[i]) if g==2: for i in range(9): a.append(node[i]) a[2]=node[1] a[1]=int(0) a.append(node[9]+"L") for i in range(len(a)): successors.append(a[i]) a=[] for i in range(9): a.append(node[i]) a[2]=node[5] a[2]=int(0) a.append(node[9]+"D") for i in range(len(a)): successors.append(a[i]) if g==6: for i in range(9): a.append(node[i]) a[6]=node[3] a[3]=int(0) a.append(node[9]+"U") for i in range(len(a)): successors.append(a[i]) a=[] for i in range(9): a.append(node[i]) a[6]=node[7] a[7]=int(0) a.append(node[9]+"R") for i in range(len(a)): successors.append(a[i]) if g==8: for i in range(9): a.append(node[i]) a[8]=node[5] a[5]=int(0) a.append(node[9]+"U") for i in range(len(a)): successors.append(a[i]) a=[] for i in range(9): a.append(node[i]) a[8]=node[7] a[7]=int(0) a.append(node[9]+"L") for i in range(len(a)): successors.append(a[i]) if g==1: for i in range(9): a.append(node[i]) a[1]=node[2] a[2]=int(0) a.append(node[9]+"R") for i in range(len(a)): successors.append(a[i]) a=[] for i in range(9): a.append(node[i]) a[1]=node[0] a[0]=int(0) a.append(node[9]+"L") for i in range(len(a)): successors.append(a[i]) a=[] for i in range(9): a.append(node[i]) a[1]=node[4] a[4]=int(0) a.append(node[9]+"D") for i in range(len(a)): successors.append(a[i]) if g==3: for i in range(9): a.append(node[i]) a[3]=node[4] a[4]=int(0) a.append(node[9]+"R") for i in range(len(a)): successors.append(a[i]) a=[] for i in range(9): a.append(node[i]) a[3]=node[0] a[0]=int(0) a.append(node[9]+"U") for i in range(len(a)): successors.append(a[i]) a=[] for i in range(9): a.append(node[i]) a[3]=node[6] a[6]=int(0) a.append(node[9]+"D") for i in range(len(a)): successors.append(a[i]) if g==5: for i in range(9): a.append(node[i]) a[5]=node[2] a[2]=int(0) a.append(node[9]+"U") for i in range(len(a)): successors.append(a[i]) a=[] for i in range(9): a.append(node[i]) a[5]=int(node[8]) a[8]=int(0) a.append(node[9]+"D") for i in range(len(a)): successors.append(a[i]) a=[] for i in range(9): a.append(node[i]) a[5]=node[4] a[4]=int(0) a.append(node[9]+"L") for i in range(len(a)): successors.append(a[i]) if g==7: for i in range(9): a.append(node[i]) a[7]=node[6] a[6]=int(0) a.append(node[9]+"L") for i in range(len(a)): successors.append(a[i]) a=[] for i in range(9): a.append(node[i]) a[7]=node[8] a[8]=int(0) a.append(node[9]+"R") for i in range(len(a)): successors.append(a[i]) a=[] for i in range(9): a.append(node[i]) a[7]=node[4] a[4]=int(0) a.append(node[9]+"U") for i in range(len(a)): successors.append(a[i]) if g==4: for i in range(9): a.append(node[i]) a[4]=node[5] a[5]=int(0) a.append(node[9]+"R") for i in range(len(a)): successors.append(a[i]) a=[] for i in range(9): a.append(node[i]) a[4]=node[3] a[3]=int(0) a.append(node[9]+"L") for i in range(len(a)): successors.append(a[i]) a=[] for i in range(9): a.append(node[i]) a[4]=node[1] a[1]=int(0) a.append(node[9]+"U") for i in range(len(a)): successors.append(a[i]) a=[] for i in range(9): a.append(node[i]) a[4]=node[7] a[7]=int(0) a.append(node[9]+"D") for i in range(len(a)): successors.append(a[i]) return successors #------------------------------------------ |
# 633xxxxx21 239 (2020-09-20 22:16) def gen_successors(node): successors = [] node = board + ["UDR"] N = int(len(board)**0.5) M = int(len(board)) x = node.index(0) a = [0]*(N-2) for i in range(len(a)) : a[i] = i+1 b = [0]*(N-2) for i in range(len(b)) : b[i] = (i+1)*N c = [0]*(N-2) for i in range(len(c)) : c[i] = ((2+i)*N)-1 d = [0]*(N-2) for i in range(len(d)) : d[i] = (N**2)-N+1+i e = [0]*(N-2) k = [0]*(N-2) for i in range(N-2) : e[i] = N+i+1 for i in range(N-2) : k[i] = N+i+1 for i in range(N-3) : for i in range(len(k)) : k[i] += N e += k if x == 0 : node[0],node[1] = node[1],node[0] successors += node[:-1:] successors.append(node[-1]+"R") node[0],node[1] = node[1],node[0] node[0],node[N] = node[N],node[0] successors += node[:-1:] successors.append(node[-1]+"D") if x in a : node[x],node[x+N] = node[x+N],node[x] successors += node[:-1:] successors.append(node[-1]+"D") node[x],node[x+N] = node[x+N],node[x] node[x],node[x-1] = node[x-1],node[x] successors += node[:-1:] successors.append(node[-1]+"L") node[x],node[x-1] = node[x-1],node[x] node[x],node[x+1] = node[x+1],node[x] successors += node[:-1:] successors.append(node[-1]+"R") if x == N-1 : node[N-1],node[N-2] = node[N-2],node[N-1] successors += node[:-1:] successors.append(node[-1]+"L") node[N-1],node[N-2] = node[N-2],node[N-1] node[N-1],node[2*N-1] = node[2*N-1],node[N-1] successors += node[:-1:] successors.append(node[-1]+"D") if x in b : node[x],node[x-N] = node[x-N],node[x] successors += node[:-1:] successors.append(node[-1]+"U") node[x],node[x-N] = node[x-N],node[x] node[x],node[x+N] = node[x+N],node[x] successors += node[:-1:] successors.append(node[-1]+"D") node[x],node[x+N] = node[x+N],node[x] node[x],node[x+1] = node[x+1],node[x] successors += node[:-1:] successors.append(node[-1]+"R") if x in e : node[x],node[x-N] = node[x-N],node[x] successors += node[:-1:] successors.append(node[-1]+"U") node[x],node[x-N] = node[x-N],node[x] node[x],node[x+N] = node[x+N],node[x] successors += node[:-1:] successors.append(node[-1]+"D") node[x],node[x+N] = node[x+N],node[x] node[x],node[x-1] = node[x-1],node[x] successors += node[:-1:] successors.append(node[-1]+"L") node[x],node[x-1] = node[x-1],node[x] node[x],node[x+1] = node[x+1],node[x] successors += node[:-1:] successors.append(node[-1]+"R") if x in c : node[x],node[x-N] = node[x-N],node[x] successors += node[:-1:] successors.append(node[-1]+"U") node[x],node[x-N] = node[x-N],node[x] node[x],node[x+N] = node[x+N],node[x] successors += node[:-1:] successors.append(node[-1]+"D") node[x],node[x+N] = node[x+N],node[x] node[x],node[x-1] = node[x-1],node[x] successors += node[:-1:] successors.append(node[-1]+"L") if x == M-N : node[M-N],node[N*(N-2)] = node[N*(N-2)],node[M-N] successors += node[:-1:] successors.append(node[-1]+"U") node[M-N],node[N*(N-2)] = node[N*(N-2)],node[M-N] node[M-N],node[M-N+1] = node[M-N+1],node[M-N] successors += node[:-1:] successors.append(node[-1]+"R") if x in d : node[x],node[x-N] = node[x-N],node[x] successors += node[:-1:] successors.append(node[-1]+"U") node[x],node[x-N] = node[x-N],node[x] node[x],node[x-1] = node[x-1],node[x] successors += node[:-1:] successors.append(node[-1]+"L") node[x],node[x-1] = node[x-1],node[x] node[x],node[x+1] = node[x+1],node[x] successors += node[:-1:] successors.append(node[-1]+"R") if x == M-1 : node[M-1],node[M-N-1] = node[M-N-1],node[M-1] successors += node[:-1:] successors.append(node[-1]+"U") node[M-1],node[M-N-1] = node[M-N-1],node[M-1] node[M-1],node[M-2] = node[M-2],node[M-1] successors += node[:-1:] successors.append(node[-1]+"L") return successors #------------------------------------------ |
# 633xxxxx21 240 (2020-09-20 20:00) def gen_successors(node): successors = [] node=[4,1,3,2,5,6,7,8,0,'UDR'] for i in range(len(node)): if node[i]==0: node.remove(0) node.insert(5,0) node.remove('UDR') node.insert(-1,"UDRU") node.remove(8) node.insert(-1,8) for i in range(len(node)): successors.append(node[i]) node.remove(0) node.insert(7,0) node.remove('UDRU') node.insert(-1,"UDRL") node.remove(8) node.insert(-1,8) for i in range(len(node)): successors.append(node[i]) return successors #------------------------------------------ |
# 633xxxxx21 241 (2020-09-20 22:53) def gen_successors(node): successors = [] k = node.index(0) A = node if k == 0 : A[0],A[1] = A[1],A[0] successors += A[:-1:] successors.append(A[-1]+"R") A[0],A[1] = A[1],A[0] A[0],A[3] = A[3],A[0] successors += A[:-1:] successors.append(A[-1]+"D") if k == 1 : A[0],A[1] = A[1],A[0] successors += A[:-1:] successors.append(A[-1]+"L") A[0],A[1] = A[1],A[0] A[1],A[2] = A[2],A[1] successors += A[:-1:] successors.append(A[-1]+"R") A[1],A[2] = A[2],A[1] A[1],A[4] = A[4],A[1] successors += A[:-1:] successors.append(A[-1]+"D") if k == 2 : A[1],A[2] = A[2],A[1] successors += A[:-1:] successors.append(A[-1]+"L") A[1],A[2] = A[2],A[1] A[2],A[5] = A[5],A[2] successors += A[:-1:] successors.append(A[-1]+"D") if k == 3 : A[0],A[3] = A[3],A[0] successors += A[:-1:] successors.append(A[-1]+"U") A[0],A[3] = A[3],A[0] A[3],A[4] = A[4],A[3] successors += A[:-1:] successors.append(A[-1]+"R") A[3],A[4] = A[4],A[3] A[3],A[6] = A[6],A[3] successors += A[:-1:] successors.append(A[-1]+"D") if k == 4 : A[4],A[1] = A[1],A[4] successors += A[:-1:] successors.append(A[-1]+"U") A[4],A[1] = A[1],A[4] A[4],A[5] = A[5],A[4] successors += A[:-1:] successors.append(A[-1]+"R") A[4],A[5] = A[5],A[4] A[4],A[3] = A[3],A[4] successors += A[:-1:] successors.append(A[-1]+"L") A[4],A[3] = A[3],A[4] A[4],A[7] = A[7],A[4] successors += A[:-1:] successors.append(A[-1]+"D") if k == 5 : A[5],A[2] = A[2],A[5] successors += A[:-1:] successors.append(A[-1]+"U") A[5],A[2] = A[2],A[5] A[5],A[4] = A[4],A[5] successors += A[:-1:] successors.append(A[-1]+"L") A[5],A[4] = A[4],A[5] A[5],A[8] = A[8],A[5] successors += A[:-1:] successors.append(A[-1]+"D") if k == 6 : A[6],A[3] = A[3],A[6] successors += A[:-1:] successors.append(A[-1]+"U") A[6],A[3] = A[3],A[6] A[6],A[7] = A[7],A[6] successors += A[:-1:] successors.append(A[-1]+"R") if k == 7 : A[7],A[4] = A[4],A[7] successors += A[:-1:] successors.append(A[-1]+"U") A[7],A[4] = A[4],A[7] A[7],A[8] = A[8],A[7] successors += A[:-1:] successors.append(A[-1]+"R") A[7],A[8] = A[8],A[7] A[7],A[6] = A[6],A[7] successors += A[:-1:] successors.append(A[-1]+"L") if k == 8 : A[8],A[5] = A[5],A[8] successors += A[:-1:] successors.append(A[-1]+"U") A[8],A[5] = A[5],A[8] A[8],A[7] = A[7],A[8] successors += A[:-1:] successors.append(A[-1]+"L") return successors #------------------------------------------ |
# 633xxxxx21 242 (2020-09-20 20:00) def gen_successors(node): successors = [] i = node.index(0) if str(i) in '012345': A = node[:-1:1] m = A.pop(i+3) A.insert(i,m) A.remove(0) A.insert(i+3,0) A.append(node[-1]+'D') for x in A : successors.append(x) if str(i) in '013467': B = node[:-1:1] n = B.pop(i+1) B.insert(i,n) B.remove(0) B.insert(i+1,0) B.append(node[-1]+'R') for x in B : successors.append(x) if str(i) in '345678': C = node[:-1:1] o = C.pop(i-3) C.insert(i,o) C.remove(0) C.insert(i-3,0) C.append(node[-1]+'U') for x in C : successors.append(x) if str(i) in '124578': D = node[:-1:1] p = D.pop(i-1) D.insert(i,p) D.remove(0) D.insert(i-1,0) D.append(node[-1]+'L') for x in D : successors.append(x) return successors #------------------------------------------ |
# 633xxxxx21 243 (2020-09-20 23:48) def gen_successors(node): #### node = [1,2,3,4,5,6,7,8,0,'LRDL'] #### up,left,right,down = 1,1,1,1 uplist = [] downlist = [] leftlist = [] rightlist = [] if node[0] == 0 or node[1] == 0 or node[2] == 0: # No Up up -= 1 if node[0] == 0 or node[3] == 0 or node[6] == 0: # No Left left -= 1 if node[2] == 0 or node[5] == 0 or node[8] == 0: # No Right right -= 1 if node[6] == 0 or node[7] == 0 or node[8] == 0: # No Down down -= 1 # find zero position for i in range (len(node)): if node[i] == 0: lenOf0 = i if up == 1: uplist = node.copy() uplist0 = uplist[lenOf0 - 3] uplist[lenOf0 - 3] = 0 uplist[lenOf0] = uplist0 uplist[9] = uplist[9] + 'U' if down == 1: downlist = node.copy() downlist0 = downlist[lenOf0 + 3] downlist[lenOf0 + 3] = 0 downlist[lenOf0] = downlist0 downlist[9] = downlist[9] + 'D' if left == 1: leftlist = node.copy() leftlist0 = leftlist[lenOf0 - 1] leftlist[lenOf0 - 1] = 0 leftlist[lenOf0] = leftlist0 leftlist[9] = leftlist[9] + 'L' if right == 1: rightlist = node.copy() rightlist0 = rightlist[lenOf0 + 1] rightlist[lenOf0 + 1] = 0 rightlist[lenOf0] = rightlist0 rightlist[9] = rightlist[9] + 'R' successors = uplist + downlist + leftlist + rightlist return successors #------------------------------------------ |
# 633xxxxx21 244 (2020-09-20 20:45) def gen_successors(node): successors = [] node = board + ["UDR"] N = int(len(board)**0.5) M = int(len(board)) x = node.index(0) a,b,c = [0]*(N-2),[0]*(N-2),[0]*(N-2) d,e,q = [0]*(N-2),[0]*(N-2),[0]*(N-2) for i in range(len(a)) : a[i] = i+1 for i in range(len(b)) : b[i] = (i+1)*N for i in range(len(c)) : c[i] = ((2+i)*N)-1 for i in range(len(d)) : d[i] = (N**2)-N+1+i for i in range(N-2) : e[i] = N+i+1 for i in range(N-2) : q[i] = N+i+1 for i in range(N-3) : for i in range(len(q)) : q[i] += N e += q if x == 0 : node[0],node[1] = node[1],node[0] successors += node[:-1:] successors.append(node[-1]+"R") node[0],node[1] = node[1],node[0] node[0],node[N] = node[N],node[0] successors += node[:-1:] successors.append(node[-1]+"D") if x == N-1 : node[N-1],node[N-2] = node[N-2],node[N-1] successors += node[:-1:] successors.append(node[-1]+"L") node[N-1],node[N-2] = node[N-2],node[N-1] node[N-1],node[2*N-1] = node[2*N-1],node[N-1] successors += node[:-1:] successors.append(node[-1]+"D") if x == M-N : node[M-N],node[N*(N-2)] = node[N*(N-2)],node[M-N] successors += node[:-1:] successors.append(node[-1]+"U") node[M-N],node[N*(N-2)] = node[N*(N-2)],node[M-N] node[M-N],node[M-N+1] = node[M-N+1],node[M-N] successors += node[:-1:] successors.append(node[-1]+"R") if x == M-1 : node[M-1],node[M-N-1] = node[M-N-1],node[M-1] successors += node[:-1:] successors.append(node[-1]+"U") node[M-1],node[M-N-1] = node[M-N-1],node[M-1] node[M-1],node[M-2] = node[M-2],node[M-1] successors += node[:-1:] successors.append(node[-1]+"L") if x in a : node[x],node[x+N] = node[x+N],node[x] successors += node[:-1:] successors.append(node[-1]+"D") node[x],node[x+N] = node[x+N],node[x] node[x],node[x-1] = node[x-1],node[x] successors += node[:-1:] successors.append(node[-1]+"L") node[x],node[x-1] = node[x-1],node[x] node[x],node[x+1] = node[x+1],node[x] successors += node[:-1:] successors.append(node[-1]+"R") if x in b : node[x],node[x-N] = node[x-N],node[x] successors += node[:-1:] successors.append(node[-1]+"U") node[x],node[x-N] = node[x-N],node[x] node[x],node[x+N] = node[x+N],node[x] successors += node[:-1:] successors.append(node[-1]+"D") node[x],node[x+N] = node[x+N],node[x] node[x],node[x+1] = node[x+1],node[x] successors += node[:-1:] successors.append(node[-1]+"R") if x in c : node[x],node[x-N] = node[x-N],node[x] successors += node[:-1:] successors.append(node[-1]+"U") node[x],node[x-N] = node[x-N],node[x] node[x],node[x+N] = node[x+N],node[x] successors += node[:-1:] successors.append(node[-1]+"D") node[x],node[x+N] = node[x+N],node[x] node[x],node[x-1] = node[x-1],node[x] successors += node[:-1:] successors.append(node[-1]+"L") if x in d : node[x],node[x-N] = node[x-N],node[x] successors += node[:-1:] successors.append(node[-1]+"U") node[x],node[x-N] = node[x-N],node[x] node[x],node[x-1] = node[x-1],node[x] successors += node[:-1:] successors.append(node[-1]+"L") node[x],node[x-1] = node[x-1],node[x] node[x],node[x+1] = node[x+1],node[x] successors += node[:-1:] successors.append(node[-1]+"R") if x in e : node[x],node[x-N] = node[x-N],node[x] successors += node[:-1:] successors.append(node[-1]+"U") node[x],node[x-N] = node[x-N],node[x] node[x],node[x+N] = node[x+N],node[x] successors += node[:-1:] successors.append(node[-1]+"D") node[x],node[x+N] = node[x+N],node[x] node[x],node[x-1] = node[x-1],node[x] successors += node[:-1:] successors.append(node[-1]+"L") node[x],node[x-1] = node[x-1],node[x] node[x],node[x+1] = node[x+1],node[x] successors += node[:-1:] successors.append(node[-1]+"R") return successors #------------------------------------------ |
# 633xxxxx21 245 (2020-09-20 15:10) def gen_successors(node): successors = [] node = board + ["RUD"] N = int(len(board)**(1/2)) M = int(len(board)) x = node.index(0) A = [0]*(N-2) for i in range(len(A)) : A[i] = i+1 B = [0]*(N-2) for i in range(len(B)) : B[i] = (i+1)*N C = [0]*(N-2) for i in range(len(C)) : C[i] = ((2+i)*N)-1 D = [0]*(N-2) for i in range(len(D)) : D[i] = (N**2)-N+1+i E = [0]*(N-2) F = [0]*(N-2) for i in range(N-2) : E[i] = N+i+1 for i in range(N-2) : F[i] = N+i+1 for i in range(N-3) : for i in range(len(F)) : F[i] += N E += F if x == 0 : node[0],node[1] = node[1],node[0] successors += node[:-1:] successors.append(node[-1]+"R") node[0],node[1] = node[1],node[0] node[0],node[N] = node[N],node[0] successors += node[:-1:] successors.append(node[-1]+"D") elif x == N-1 : node[N-1],node[N-2] = node[N-2],node[N-1] successors += node[:-1:] successors.append(node[-1]+"L") node[N-1],node[N-2] = node[N-2],node[N-1] node[N-1],node[2*N-1] = node[2*N-1],node[N-1] successors += node[:-1:] successors.append(node[-1]+"D") elif x == M-N : node[M-N],node[N*(N-2)] = node[N*(N-2)],node[M-N] successors += node[:-1:] successors.append(node[-1]+"U") node[M-N],node[N*(N-2)] = node[N*(N-2)],node[M-N] node[M-N],node[M-N+1] = node[M-N+1],node[M-N] successors += node[:-1:] successors.append(node[-1]+"R") elif x == M-1 : node[M-1],node[M-N-1] = node[M-N-1],node[M-1] successors += node[:-1:] successors.append(node[-1]+"U") node[M-1],node[M-N-1] = node[M-N-1],node[M-1] node[M-1],node[M-2] = node[M-2],node[M-1] successors += node[:-1:] successors.append(node[-1]+"L") elif x in A : node[x],node[x+N] = node[x+N],node[x] successors += node[:-1:] successors.append(node[-1]+"D") node[x],node[x+N] = node[x+N],node[x] node[x],node[x-1] = node[x-1],node[x] successors += node[:-1:] successors.append(node[-1]+"L") node[x],node[x-1] = node[x-1],node[x] node[x],node[x+1] = node[x+1],node[x] successors += node[:-1:] successors.append(node[-1]+"R") elif x in B : node[x],node[x-N] = node[x-N],node[x] successors += node[:-1:] successors.append(node[-1]+"U") node[x],node[x-N] = node[x-N],node[x] node[x],node[x+N] = node[x+N],node[x] successors += node[:-1:] successors.append(node[-1]+"D") node[x],node[x+N] = node[x+N],node[x] node[x],node[x+1] = node[x+1],node[x] successors += node[:-1:] successors.append(node[-1]+"R") elif x in C : node[x],node[x-N] = node[x-N],node[x] successors += node[:-1:] successors.append(node[-1]+"U") node[x],node[x-N] = node[x-N],node[x] node[x],node[x+N] = node[x+N],node[x] successors += node[:-1:] successors.append(node[-1]+"D") node[x],node[x+N] = node[x+N],node[x] node[x],node[x-1] = node[x-1],node[x] successors += node[:-1:] successors.append(node[-1]+"L") elif x in D : node[x],node[x-N] = node[x-N],node[x] successors += node[:-1:] successors.append(node[-1]+"U") node[x],node[x-N] = node[x-N],node[x] node[x],node[x-1] = node[x-1],node[x] successors += node[:-1:] successors.append(node[-1]+"L") node[x],node[x-1] = node[x-1],node[x] node[x],node[x+1] = node[x+1],node[x] successors += node[:-1:] successors.append(node[-1]+"R") elif x in E : node[x],node[x-N] = node[x-N],node[x] successors += node[:-1:] successors.append(node[-1]+"U") node[x],node[x-N] = node[x-N],node[x] node[x],node[x+N] = node[x+N],node[x] successors += node[:-1:] successors.append(node[-1]+"D") node[x],node[x+N] = node[x+N],node[x] node[x],node[x-1] = node[x-1],node[x] successors += node[:-1:] successors.append(node[-1]+"L") node[x],node[x-1] = node[x-1],node[x] node[x],node[x+1] = node[x+1],node[x] successors += node[:-1:] successors.append(node[-1]+"R") return successors #------------------------------------------ |
# 633xxxxx21 246 (2020-09-20 22:41) def gen_successors(node): successors = [] i = node.index(0) if i == 1 or i == 2 or i == 3 or i == 4 or i == 5 : a = node[:-1] ; a.remove(0) a.insert(i+3,0) ; a += [node[-1] + "D"] for e in a : successors += [e] if i == 1 or i == 2 or i == 4 or i == 5 or i == 7 or i == 8 : a = node[:-1] ; a.remove(0) a.insert(i-1,0) ; a += [node[-1] + "L"] for e in a : successors += [e] if i == 3 or i == 4 or i == 5 or i == 6 or i == 7 or i == 8 : a = node[:-1] ; a.remove(0) a.insert(i-3,0) ; a += [node[-1] + "U"] for e in a : successors += [e] if i == 0 or i == 1 or i == 3 or i == 4 or i == 6 or i == 7 : a = node[:-1] ; a.remove(0) a.insert(i+1,0) ; a += [node[-1] + "R"] for e in a : successors += [e] return successors #------------------------------------------ |
# 633xxxxx21 247 (2020-09-20 21:40) def gen_successors(node): successors = [] a1=[0]*len(node) a2=[0]*len(node) a3=[0]*len(node) a4=[0]*len(node) for i in range (len(node)): a1[i]=node[i] a2[i]=node[i] a3[i]=node[i] a4[i]=node[i] a= int((len(node)-1)**0.5) #n*n =table if 0 in node: i=node.index(0) if i%a-1 >= 0: a1[i],a1[i-1]=a1[i-1],a1[i] a1[-1]+='L' successors+=a1 if i%a+1 < a: a2[i],a2[i+1]=a2[i+1],a2[i] a2[-1]+='R' successors+=a2 if i-a > 0: a3[i],a3[i-a]=a3[i-a],a3[i] a3[-1]+='U' successors+=a3 if i+a < a**2: a4[i],a4[i+a]=a4[i+a],a4[i] a4[-1]+='D' successors+=a4 return successors #------------------------------------------ |
# 633xxxxx21 248 (2020-09-20 21:54) def gen_successors(node): successors = [] board1=[0]*len(node) board2=[0]*len(node) board3=[0]*len(node) board4=[0]*len(node) for i in range (len(node)): board1[i]=node[i] board2[i]=node[i] board3[i]=node[i] board4[i]=node[i] if 0 in node: pos=node.index(0) if pos%3-1 >= 0: board1[pos],board1[pos-1]=board1[pos-1],board1[pos] board1[-1]+='L' successors+=board1 if pos%3+1 < 3: board2[pos],board2[pos+1]=board2[pos+1],board2[pos] board2[-1]+='R' successors+=board2 if pos-3 > 0: board3[pos],board3[pos-3]=board3[pos-3],board3[pos] board3[-1]+='U' successors+=board3 if pos+3 < 3**2: board4[pos],board4[pos+3]=board4[pos+3],board4[pos] board4[-1]+='D' successors+=board4 return successors #------------------------------------------ |
# 633xxxxx21 249 (2020-09-20 23:04) def gen_successors(node): successors = [] i = node.index(0) if str(i) in '012345': #down y = node[0:-1:] y.remove(0) y.insert(i+2,0) g = y.pop(i+3) y.insert(i,g) y.append(node[-1]+'D') for e in y : successors.append(e) if str(i) in '345678': #up y = node[0:-1:] y.remove(0) y.insert(i-3,0) g = y.pop(i-2) y.insert(i,g) y.append(node[-1]+'U') for e in y : successors.append(e) if str(i) in '124578': #left y = node[0:-1:] y.remove(0) y.insert(i-1,0) y.append(node[-1]+'L') for e in y : successors.append(e) if str(i) in '013467': #right y = node[0:-1:] y.remove(0) y.insert(i+1,0) y.append(node[-1]+'R') for e in y : successors.append(e) return successors #------------------------------------------ |
# 633xxxxx21 250 (2020-09-20 23:51) def gen_successors(node): successors = [] dot = node.index(0) if dot == 0 : node1 = list(node) node1[0],node[1] = node[1],node[0] node1[-1] += "R" successors += node1 node1 = list(node) node1[0],node[3] = node[3],node[0] node1[-1] += "D" successors += node1 if dot == 2 : node1 = list(node) node1[2],node[1] = node[1],node[2] node1[-1] += "L" successors += node1 node1 = list(node) node1[2],node[5] = node[5],node[2] node1[-1] += "D" successors += node1 if dot == 6 : node1 = list(node) node1[6],node[3] = node[3],node[6] node1[-1] += "U" successors += node1 node1 = list(node) node1[6],node[7] = node[7],node[6] node1[-1] += "R" successors += node1 if dot == 8 : node1 = list(node) node1[8],node[5] = node[5],node[8] node1[-1] += "U" successors += node1 node1 = list(node) node1[8],node[7] = node[7],node[8] node1[-1] += "L" successors += node1 if dot == 1 : node1 = list(node) node1[1],node[0] = node[0],node[1] node1[-1] += "L" successors += node1 node1 = list(node) node1[1],node[4] = node[4],node[1] node1[-1] += "D" successors += node1 node1 = list(node) node1[1],node[2] = node[2],node[1] node1[-1] += "R" successors += node1 if dot == 3 : node1 = list(node) node1[3],node[0] = node[0],node[3] node1[-1] += "U" successors += node1 node1 = list(node) node1[3],node[4] = node[4],node[3] node1[-1] += "R" successors += node1 node1 = list(node) node1[3],node[6] = node[6],node[3] node1[-1] += "D" successors += node1 if dot == 5 : node1 = list(node) node1[5],node[2] = node[2],node[5] node1[-1] += "U" successors += node1 node1 = list(node) node1[5],node[4] = node[4],node[5] node1[-1] += "L" successors += node1 node1 = list(node) node1[5],node[8] = node[8],node[5] node1[-1] += "D" successors += node1 if dot == 7 : node1 = list(node) node1[7],node[6] = node[6],node[7] node1[-1] += "L" successors += node1 node1 = list(node) node1[7],node[4] = node[4],node[7] node1[-1] += "U" successors += node1 node1 = list(node) node1[7],node[8] = node[8],node[7] node1[-1] += "R" successors += node1 if dot == 4 : node1 = list(node) node1[4],node[3] = node[3],node[4] node1[-1] += "L" successors += node1 node1 = list(node) node1[4],node[1] = node[1],node[4] node1[-1] += "U" successors += node1 node1 = list(node) node1[4],node[5] = node[5],node[4] node1[-1] += "R" successors += node1 node1 = list(node) node1[4],node[7] = node[7],node[4] node1[-1] += "D" successors += node1 return successors #------------------------------------------ |
# 633xxxxx21 251 (2020-09-20 21:29) def gen_successors(node): successors = [] successors = [] a = ['DR','DLR','DL','UDR','UDLR','UDL','UR','ULR','UL'] y = node.index(0) c = a[y] for i in c : z = node.copy() if i == 'D': z.remove(0) z.insert(y+2,0) z.insert(y,z[y+3]) z.pop(y+4) z[-1] = z[-1]+'D' elif i == 'U': z.remove(0) z.insert(y-3,0) z.insert(y+1,z[y-2]) z.pop(y-2) z[-1] = z[-1]+'U' elif i == 'R': z.remove(0) z.insert(y+1,0) z[-1] = z[-1]+'R' elif i == 'L': z.remove(0) z.insert(y-1,0) z[-1] = z[-1]+'L' successors += z return successors #------------------------------------------ |
# 633xxxxx21 252 (2020-09-20 17:31) def gen_successors(node): successors = [] if 0 == node[0] or 0 == node[2] or 0 == node[6] or 0 == node[8]: M = 2 successors = node * M if 0 == node[0]: successors[0],successors[3] = successors[3],successors[0] successors[9] += 'D' successors[10],successors[11] = successors[11],successors[10] successors[19] += 'R' elif 0 == node[2]: successors[2],successors[5] = successors[5],successors[2] successors[9] += 'D' successors[11],successors[12] = successors[12],successors[11] successors[19] += 'L' elif 0 == node[6]: successors[3],successors[6] = successors[6],successors[3] successors[9] += 'U' successors[16],successors[17] = successors[17],successors[16] successors[19] += 'R' elif 0 == node[8]: successors[5],successors[8] = successors[8],successors[5] successors[9] += 'U' successors[18],successors[17] = successors[17],successors[18] successors[19] += 'L' elif 0 == node[1] or 0 == node[3] or 0 == node[5] or 0 == node[7]: M = 3 successors = node * M if 0 == node[1]: successors[0],successors[1] = successors[1],successors[0] successors[9] += 'L' successors[12],successors[11] = successors[11],successors[12] successors[19] += 'R' successors[21],successors[24] = successors[24],successors[21] successors[29] += 'D' elif 0 == node[3]: successors[0],successors[3] = successors[3],successors[0] successors[9] += 'U' successors[13],successors[14] = successors[14],successors[13] successors[19] += 'R' successors[23],successors[26] = successors[26],successors[23] successors[29] += 'D' elif 0 == node[5]: successors[2],successors[5] = successors[5],successors[2] successors[9] += 'U' successors[14],successors[15] = successors[15],successors[14] successors[19] += 'L' successors[25],successors[28] = successors[28],successors[25] successors[29] += 'D' elif 0 == node[7]: successors[6],successors[7] = successors[7],successors[6] successors[9] += 'L' successors[14],successors[17] = successors[17],successors[14] successors[19] += 'U' successors[27],successors[28] = successors[28],successors[27] successors[29] += 'R' elif 0 == node[4]: M = 4 successors = node * M if 0 == node[4]: successors[3],successors[4] = successors[4],successors[3] successors[9] += 'L' successors[14],successors[15] = successors[15],successors[14] successors[19] += 'R' successors[24],successors[27] = successors[27],successors[24] successors[29] += 'D' successors[31],successors[34] = successors[34],successors[31] successors[39] += 'U' return successors #------------------------------------------ |
# 633xxxxx21 253 (2020-09-20 20:22) def gen_successors(node): successors = [] p = ["UL", "ULR", "UR", "UDL", "UDLR", "UDR", "DL", "DLR", "DR"] x = node.index(0) y = p[x] for i in y: a = node.copy() if i == "U": a.remove(0) a.insert(x-3,0) a.insert(x+1,a[x-2]) a.pop(x-2) a[-1] += "U" elif i == "R": a.remove(0) a.insert(x+1,0) a[-1] += "R" elif i == "L": a.remove(0) a.insert(x-1,0) a[-1] += "L" elif i == "D": a.remove(0) a.insert(x+2,0) a.insert(x,a[x+3]) a.pop(x+4) a[-1] += "D" successors += a return successors #------------------------------------------ |
# 633xxxxx21 254 (2020-09-20 14:13) def gen_successors(node): successors = [] n= int((len(node)-1)**0.5) if n>=2: i = node.index(0) if not((n**2 - n) <= i <= ( n**2 -1)): #DOWN y = node[0:-1:] f = y.pop(i+n) y.insert(i,f) y.remove(0) y.insert(i+n,0) y.append(node[-1]+'D') for e in y : successors.append(e) if not(0 <= i <= (n-1)): #UP y = node[0:-1:] f = y.pop(i-n) y.insert(i,f) y.remove(0) y.insert(i-n,0) y.append(node[-1]+'U') for e in y : successors.append(e) if not(i%n == 0): #LEFT y = node[0:-1:] y.remove(0) y.insert(i-1,0) y.append(node[-1]+'L') for e in y : successors.append(e) if not((i-(n-1))%n == 0): #RIGHT y = node[0:-1:] y.remove(0) y.insert(i+1,0) y.append(node[-1]+'R') for e in y : successors.append(e) return successors #------------------------------------------ |
# 633xxxxx21 255 (2020-09-20 16:07) def gen_successors(node): successors = \ [0,7,4,1,5,3,2,6,8,'UDRL', 7,4,0,1,5,3,2,6,8,'UDRR', 7,5,4,1,0,3,2,6,8,'UDRD' ] return successors #------------------------------------------ |
# 633xxxxx21 256 (2020-09-20 19:58) def gen_successors(node): successors = [] move = ['DR','DLR','DL','UDR','UDLR','UDL','UR','ULR','UL'] # 0 1 2 3 4 5 6 7 8 x = node.index(0) y = move[x] z = node for e in y: if e == 'D': z.remove(0) z.insert(x+2,0) z.insert(x,z[x+3]) z.pop(x+4) z[-1]+='D' elif e == "L": z.remove(0) z.insert(x-1,0) z[-1]+="L" elif e == 'R': z.remove(0) z.insert(x+1,0) z[-1]+="R" elif e == "U": z.remove(0) z.insert(x-3,0) z.insert(x+1,z[x-2]) z.pop(x-2) z[-1]+="U" successors += z return successors #------------------------------------------ |
# 633xxxxx21 257 (2020-09-20 21:12) def gen_successors(node): successors = [] i = node.index(0) if str(i) in "123456" : h = node[0:-1] h.remove(0) h.insert(i+3,0) h.append(node[-1]+"D") for s in h: successors.append(s) if str(i) in "345678" : h = node[0:-1] h.remove(0) h.insert(i-3,0) h.append(node[-1]+"U") for s in h: successors.append(s) if str(i) in "235678" : h = node[0:-1] h.remove(0) h.insert(i+1,0) h.append(node[-1]+"L") for s in h: successors.append(s) if str(i) in "123567" : h = node[0:-1] h.remove(0) h.insert(i+3,0) h.append(node[-1]+"R") for s in h: successors.append(s) return successors #------------------------------------------ |
# 633xxxxx21 258 (2020-09-20 23:50) def gen_successors(node): successors = [] i = node.index(0) if str(i) in '012345': #down a = node[0:-1:] a.remove(0) a.insert(i+2,0) b = a.pop(i+3) a.insert(i,b) a.append(node[-1]+'D') for e in a : successors.append(e) if str(i) in '345678': #up a = node[0:-1:] a.remove(0) a.insert(i-3,0) b = a.pop(i-2) a.insert(i,b) a.append(node[-1]+'U') for e in a : successors.append(e) if str(i) in '124578': #left a = node[0:-1:] a.remove(0) a.insert(i-1,0) a.append(node[-1]+'L') for e in a : successors.append(e) if str(i) in '013467': #right a = node[0:-1:] a.remove(0) a.insert(i+1,0) a.append(node[-1]+'R') for e in a : successors.append(e) return successors #------------------------------------------ |
# 633xxxxx21 259 (2020-09-19 17:23) def gen_successors(node): successors = [] if node[0] == 0: node1 = node node2 = node node1[0],node1[1] = node1[1],node1[0] node1[9] += 'R' node2[0],node2[3] = node2[3],node2[0] node2[9] += 'D' successors = node1 + node2 elif node[1] == 0: node1 = node node2 = node node3 = node node1[1],node1[0] = node1[0],node1[1] node1[9] += 'L' node2[1],node2[2] = node2[2],node2[1] node2[9] += 'R' node3[1],node3[4] = node3[4],node3[1] node3[9] += 'D' successors = node1 + node2 + node3 elif node[2] == 0: node1 = node node2 = node node1[2],node1[1] = node1[1],node1[2] node1[9] += 'L' node2[2],node2[5] = node2[5],node2[2] node2[9] += 'D' successors = node1 + node2 elif node[3] == 0: node1 = node node2 = node node3 = node node1[3],node1[0] = node1[0],node1[3] node1[9] += 'U' node2[3],node2[4] = node2[4],node2[3] node2[9] += 'R' node3[3],node3[6] = node3[6],node3[3] node3[9] += 'D' successors = node1 + node2 + node3 elif node[4] == 0: node1 = node node2 = node node3 = node node4 = node node1[4],node1[3] = node1[3],node1[4] node1[9] += 'L' node2[4],node2[1] = node2[1],node2[4] node2[9] += 'U' node3[4],node3[5] = node3[5],node3[4] node3[9] += 'R' node4[4],node4[7] = node4[7],node4[4] node4[9] += 'D' successors = node1 + node2 + node3 + node4 elif node[5] == 0: node1 = node node2 = node node3 = node node1[5],node1[4] = node1[4],node1[5] node1[9] += 'L' node2[5],node2[2] = node2[2],node2[5] node2[9] += 'U' node3[5],node3[8] = node3[8],node3[5] node3[9] += 'D' successors = node1 + node2 + node3 elif node[6] == 0: node1 = node node2 = node node1[6],node1[3] = node1[3],node1[6] node1[9] += 'U' node2[6],node2[7] = node2[7],node2[6] node2[9] += 'R' successors = node1 + node2 elif node[7] == 0: node1 = node node2 = node node3 = node node1[7],node1[6] = node1[6],node1[7] node1[9] += 'L' node2[7],node2[4] = node2[4],node2[7] node2[9] += 'U' node3[7],node3[8] = node3[8],node3[7] node3[9] += 'R' successors = node1 + node2 + node3 elif node[8] == 0: node1 = node node2 = node node1[8],node1[7] = node1[7],node1[8] node1[9] += 'R' node2[8],node2[5] = node2[5],node2[8] node2[9] += 'U' successors = node1 + node2 return successors #------------------------------------------ |
# 633xxxxx21 260 (2020-09-20 21:03) def gen_successors(node): successors = [] if node[0] == 0: node1 = node node2 = node node1[0],node1[1] = node1[1],node1[0] node1[9] += "R" node2[0],node2[3] = node2[3],node2[0] node2[9] += "D" successors = node1 + node2 elif node[1] == 0: node1 = node node2 = node node3 = node node1[1],node1[0] = node1[0],node1[1] node1[9] += "L" node2[1],node2[2] = node2[2],node2[1] node2[9] += "R" node3[1],node3[4] = node3[4],node3[1] node3[9] += "D" successors = node1 + node2 + node3 elif node[2] == 0: node1 = node node2 = node node1[2],node1[1] = node1[1],node1[2] node1[9] += "L" node2[2],node2[5] = node2[5],node2[2] node2[9] += "D" successors = node1 + node2 elif node[3] == 0: node1 = node node2 = node node3 = node node1[3],node1[0] = node1[0],node1[3] node1[9] += "U" node2[3],node2[4] = node2[4],node2[3] node2[9] += "R" node3[3],node3[6] = node3[6],node3[3] node3[9] += "D" successors = node1 + node2 + node3 elif node[4] == 0: node1 = node node2 = node node3 = node node4 = node node1[4],node[3] = node1[3],node1[4] node1[9] += "L" node2[4],node2[1] = node2[1],node2[4] node2[9] += "U" node3[4],node3[5] = node3[5],node3[4] node3[9] += "R" node4[4],node4[7] = node4[7],node4[4] node4[9] += "D" successors = node1 + node2 + node3 + node4 elif node[5] == 0: node1 = node node2 = node node3 = node node1[5],node1[4] = node1[4],node1[5] node1[9] += "L" node2[5],node2[2] = node2[2],node2[5] node2[9] += "U" node3[5],node3[8] = node3[8],node3[5] node3[9] += "D" successors = node1 + node2 + node3 elif node[6] == 0: node1 = node node2 = node node1[6],node1[3] = node1[3],node1[6] node1[9] += "U" node2[6],node2[7] = node2[7],node2[6] node2[9] += "R" successors = node1 + node2 elif node[7] == 0: node1 = node node2 = node node3 = node node1[7],node1[6] = node1[6],node1[7] node1[9] += "L" node2[7],node2[4] = node2[4],node2[7] node2[9] += "U" node3[7],node3[8] = node3[8],node3[7] node3[9] += "R" successors = node1 + node2 + node3 elif node[8] == 0: node1 = node node2 = node node1[8],node1[7] = node1[7],node1[8] node1[9] += "R" node2[8],node2[5] = node2[5],node2[8] node2[9] += "U" successors = node1 + node2 return successors #------------------------------------------ |
# 633xxxxx21 261 (2020-09-20 17:52) def gen_successors(node): successors = [] target = node[:9].index(0) move = ['U', 'D', 'L', 'R'] if target == 0: for e in move: number = node[:9] order = node[-1] if e == "D": oldnum = number[target+3] number[target+3] = 0 number[target] = oldnum order += "D" successors += number + [order] elif e == "R": oldnum = number[target+1] number[target+1] = 0 number[target] = oldnum order += "R" successors += number + [order] elif target == 1: for e in move: number = node[:9] order = node[-1] if e == "D": oldnum = number[target+3] number[target+3] = 0 number[target] = oldnum order += "D" successors += number + [order] elif e == "R": oldnum = number[target+1] number[target+1] = 0 number[target] = oldnum order += "R" successors += number + [order] elif e == "L": oldnum = number[target-1] number[target-1] = 0 number[target] = oldnum order += "L" successors += number + [order] elif target == 2: for e in move: number = node[:9] order = node[-1] if e == "D": oldnum = number[target+3] number[target+3] = 0 number[target] = oldnum order += "D" successors += number + [order] elif e == "L": oldnum = number[target-1] number[target-1] = 0 number[target] = oldnum order += "L" successors += number + [order] elif target == 3: for e in move: number = node[:9] order = node[-1] if e == "D": oldnum = number[target+3] number[target+3] = 0 number[target] = oldnum order += "D" successors += number + [order] elif e == "R": oldnum = number[target+1] number[target+1] = 0 number[target] = oldnum order += "R" successors += number + [order] elif e == "U": oldnum = number[target-3] number[target-3] = 0 number[target] = oldnum order += "U" successors += number + [order] elif target == 4: for e in move: number = node[:9] order = node[-1] if e == "D": oldnum = number[target+3] number[target+3] = 0 number[target] = oldnum order += "D" successors += number + [order] elif e == "R": oldnum = number[target+1] number[target+1] = 0 number[target] = oldnum order += "R" successors += number + [order] elif e == "U": oldnum = number[target-3] number[target-3] = 0 number[target] = oldnum order += "U" successors += number + [order] elif e == "L": oldnum = number[target-1] number[target-1] = 0 number[target] = oldnum order += "L" successors += number + [order] elif target == 5: for e in move: number = node[:9] order = node[-1] if e == "D": oldnum = number[target+3] number[target+3] = 0 number[target] = oldnum order += "D" successors += number + [order] elif e == "R": oldnum = number[target+1] number[target+1] = 0 number[target] = oldnum order += "R" successors += number + [order] elif e == "L": oldnum = number[target-1] number[target-1] = 0 number[target] = oldnum order += "L" successors += number + [order] elif target == 6: for e in move: number = node[:9] order = node[-1] if e == "U": oldnum = number[target-3] number[target-3] = 0 number[target] = oldnum order += "U" successors += number + [order] elif e == "R": oldnum = number[target+1] number[target+1] = 0 number[target] = oldnum node[-1] += "R" successors += number + [node[-1]] elif target == 7: for e in move: number = node[:9] order = node[-1] if e == "U": oldnum = number[target-3] number[target-3] = 0 number[target] = oldnum order += "U" successors += number + [order] elif e == "R": oldnum = number[target+1] number[target+1] = 0 number[target] = oldnum order += "R" successors += number + [order] elif e == "L": oldnum = number[target-1] number[target-1] = 0 number[target] = oldnum order += "L" successors += number + [order] elif target == 8: for e in move: number = node[:9] order = node[-1] if e == "U": oldnum = number[target-3] number[target-3] = 0 number[target] = oldnum order += "U" successors += number + [order] elif e == "L": oldnum = number[target-1] number[target-1] = 0 number[target] = oldnum order += "L" successors += number + [order] return successors #------------------------------------------ |
# 633xxxxx21 262 (2020-09-20 21:28) def gen_successors(node): successors = [] e = node.index(0) if str(e) in "012345": #Go Down a = node[:-1] b = a.pop(e+3) a.insert(e,b) a.remove(0) a.insert(e+3,0) a.append(node[-1]+"D") for i in a: successors.append(i) if str(e) in "013467": #Go Right a = node[:-1] b = a.pop(e+1) a.insert(e,b) a.remove(0) a.insert(e+1,0) a.append(node[-1]+"R") for i in a: successors.append(i) if str(e) in "124578": #Go Left a = node[:-1] b = a.pop(e-1) a.insert(e,b) a.remove(0) a.insert(e-1,0) a.append(node[-1]+"L") for i in a: successors.append(i) if str(e) in "345678": #Go Up a = node[:-1] b = a.pop(e-3) a.insert(e,b) a.remove(0) a.insert(e-3,0) a.append(node[-1]+"U") for i in a: successors.append(i) return successors #------------------------------------------******************* |
# 633xxxxx21 263 (2020-09-20 22:54) def gen_successors(node): def swap(board, p1, p2): board[p1], board[p2] = board[p2], board[p1] return board successors = [] board = node[:-1] move = node[-1] N = int(len(board)**0.5) for pos, num in enumerate(board): if num == 0: blank = pos moves = [("U", -N), ("D", N)] for m in moves: if 0 <= blank + m[1] <= N**2-1: successors.extend(swap(board.copy(), blank, blank + m[1]) + [move+m[0]]) if blank not in range(0,N**2, N): successors.extend(swap(board.copy(), blank, blank + -1) + [move+"L"]) if blank not in range(N-1,N**2, N): successors.extend(swap(board.copy(), blank, blank + 1) + [move+"R"]) return successors #------------------------------------------ |
# 633xxxxx21 264 (2020-09-20 23:53) def gen_successors(node): successors = [] k = 0 for i in range(len(node)-1): if node[i] == 0: if i == 0 or i == 1 or i == 2 or i == 3 or i == 4 or i == 5: a = list(node) aa = a[-1] successors += a successors[successors.index(aa)] += 'D' successors[a.index(0)],successors[a.index(0)+3] = successors[a.index(0)+3],successors[a.index(0)] k += 10 if i == 1 or i == 2 or i == 4 or i == 5 or i == 7 or i == 8: b = list(node) bb = b[-1] successors += b successors[successors.index(bb)] += 'L' successors[b.index(0)+k],successors[b.index(0)+k-1] = successors[b.index(0)+k-1],successors[b.index(0)+k] k += 10 if i == 0 or i == 1 or i == 3 or i == 4 or i == 6 or i == 7: c = list(node) cc = c[-1] successors += c successors[successors.index(cc)] += 'R' successors[c.index(0)+k],successors[c.index(0)+k+1] = successors[c.index(0)+k+1],successors[c.index(0)+k] k += 10 if i-3 >= 0: d = list(node) dd = d[-1] successors += d successors[successors.index(dd)] += 'U' successors[d.index(0)+k],successors[d.index(0)+k-3] = successors[d.index(0)+k-3],successors[d.index(0)+k] return successors #------------------------------------------ |
# 633xxxxx21 265 (2020-09-20 23:56) def gen_successors(node): successors = [] i = node.index(0) if str(i) in '012345': #down a = node[0:-1:] a.remove(0) a.insert(i+2,0) b = a.pop(i+3) a.insert(i,b) a.append(node[-1]+'D') for e in a : successors.append(e) if str(i) in '345678': #up a = node[0:-1:] a.remove(0) a.insert(i-3,0) b = a.pop(i-2) a.insert(i,b) a.append(node[-1]+'U') for e in a : successors.append(e) if str(i) in '124578': #left a = node[0:-1:] a.remove(0) a.insert(i-1,0) a.append(node[-1]+'L') for e in a : successors.append(e) if str(i) in '013467': #right a = node[0:-1:] a.remove(0) a.insert(i+1,0) a.append(node[-1]+'R') for e in a : successors.append(e) return successors #------------------------------------------ |
# 633xxxxx21 266 (2020-09-20 23:27) def gen_successors(node): # นีคือจุดที่ต้องทำ (สีเขียว) successors = [] k = 0 for i in range(len(node)-1): if node[i] == 0: if i == 0 or i == 1 or i == 2 or i == 3 or i == 4 or i == 5: fai = node[-1] successors += node successors[successors.index(fai)] += 'D' successors[node.index(0)],successors[node.index(0)+3] = successors[node.index(0)+3],successors[node.index(0)] k += 10 if i == 1 or i == 2 or i == 4 or i == 5 or i == 7 or i == 8: pooh = node[-1] successors += node successors[successors.index(pooh)] += 'L' successors[node.index(0)+k],successors[node.index(0)+k-1] = successors[node.index(0)+k-1],successors[node.index(0)+k] k += 10 if i == 0 or i == 1 or i == 3 or i == 4 or i == 6 or i == 7: kim = node[-1] successors += node successors[successors.index(kim)] += 'R' successors[node.index(0)+k],successors[node.index(0)+k+1] = successors[node.index(0)+k+1],successors[node.index(0)+k] k += 10 if i-3 >= 0: fha = node[-1] successors += node successors[successors.index(fha)] += 'U' successors[node.index(0)+k],successors[node.index(0)+k-3] = successors[node.index(0)+k-3],successors[node.index(0)+k] return successors #------------------------------------------ |
# 633xxxxx21 267 (2020-09-20 13:21) def gen_successors(node): successors = [] N = int((len(node)-1)**0.5) if type(N) is int and N>=2: i = node.index(0) if not(((N-1)*(N))<= i <= ((N**2)-1)): #down y = node[0:-1:] y.remove(0) y.insert((i+N-1),0) g = y.pop(i+N) y.insert(i,g) y.append(node[-1]+'D') for e in y : successors.append(e) if not(0<= i <= (N-1)): #up y = node[0:-1:] y.remove(0) y.insert(i-N,0) g = y.pop(i-N+1) y.insert(i,g) y.append(node[-1]+'U') for e in y : successors.append(e) if not(i%N == 0): #left y = node[0:-1:] y.remove(0) y.insert(i-1,0) y.append(node[-1]+'L') for e in y : successors.append(e) if not((i-(N-1))%N == 0): #right y = node[0:-1:] y.remove(0) y.insert(i+1,0) y.append(node[-1]+'R') for e in y : successors.append(e) return successors #------------------------------------------ |
# 633xxxxx21 268 (2020-09-20 22:07) def gen_successors(node): successors = [] node_u = [] node_d = [] node_l = [] node_r = [] N = 3 blank_pos = node.index(0) # for blank_pos in range(9): # x_blankpos = (blank_pos % N) + 1 # y_blankpos = (blank_pos // N) + 1 # print(x_blankpos, y_blankpos) x_blankpos = (blank_pos % N) + 1 y_blankpos = (blank_pos // N) + 1 # print(x_blankpos, y_blankpos) # move up if (y_blankpos > 1): node_u = node.copy() node_u[blank_pos], node_u[blank_pos - 3] = node[blank_pos - 3], node[blank_pos] node_u[len(node_u) - 1] = node_u[len(node_u) - 1] + 'U' # print(node_u) # move down if (y_blankpos < N): node_d = node.copy() node_d[blank_pos], node_d[blank_pos + 3] = node[blank_pos + 3], node[blank_pos] node_d[len(node_d) - 1] = node_d[len(node_d) - 1] + 'D' # print(node_d) # move left if (x_blankpos > 1): node_l = node.copy() node_l[blank_pos], node_l[blank_pos - 1] = node[blank_pos - 1], node[blank_pos] node_l[len(node_l) - 1] = node_l[len(node_l) - 1] + 'L' # print(node_l) # move right if (x_blankpos < N): node_r = node.copy() node_r[blank_pos], node_r[blank_pos + 1] = node[blank_pos + 1], node[blank_pos] node_r[len(node_r) - 1] = node_r[len(node_r) - 1] + 'R' # print(node_r) successors = node_u + node_d + node_l + node_r # successors = node_l + node_r + node_u + node_d # print(successors) return successors # ------------------------------------------ |
# 633xxxxx21 269 (2020-09-20 22:06) def gen_successors(node): successors = [] num0 = node.index(0) if num0 in [3,4,5,6,7,8]: noden = node[0:9] new = [''] moven = node[-1] num0U = num0-3 num0instead = node[num0U] node.remove(0) node.insert(num0U,0) node.remove(num0instead) node.insert(num0,num0instead) moven = [moven+'U'] new = noden[0:9]+moven successors += new num0 = node.index(0) if num0 in [1,2,4,5,7,8]: noden = node[0:9] new = [''] moven = node[-1] num0L = num0-1 node.remove(0) node.insert(num0L,0) moven = [moven+'L'] new = noden[0:9]+moven successors += new num0 = node.index(0) if num0 in [0,1,2,3,4,5]: noden = node[0:9] new = [''] moven = node[-1] num0D = num0+3 num0instead = node[num0D] node.remove(0) node.insert(num0D,0) node.remove(num0instead) node.insert(num0,num0instead) moven = [moven+'D'] new = noden[0:9]+moven successors += new num0 = node.index(0) if num0 in [0,1,3,4,6,7]: noden = node[0:9] new = [''] moven = node[-1] num0R = num0+1 node.remove(0) node.insert(num0R,0) moven = [moven+'R'] new = noden[0:9]+moven successors += new return successors #------------------------------------------ |
# 633xxxxx21 270 (2020-09-19 16:38) def gen_successors(node): successors = [] node = [1,2,3,0,8,5,4,7,6,"LR"] successors = \ [1,2,3,4,8,5,0,7,6,"LRD", 1,2,3,4,8,5,7,0,6,"LRR", 1,2,3,4,0,5,7,8,6,"LRU", 1,2,3,4,5,0,7,8,6,"LRR", 1,2,3,4,5,6,7,8,0,"LRD", ] return successors #------------------------------------------ |
# 633xxxxx21 271 (2020-09-19 11:51) def gen_successors(node): successors = [] # find N (math.sqrt(node)) N = 1 while N*N != len(node)-1: N += 1 empty = node.index(0); status = {"top":False, "bottom":False, "left":False, "right":False} # check side # top if 0 <= empty <= N-1: status["top"] = True # bottom if N*(N-1) <= empty <= (N*N)-1: status["bottom"] = True # left if empty%N == 0: status["left"] = True # right if (empty+1)%N == 0: status["right"] = True # create permutation # up if not status["top"]: nu = node.copy() nu[empty], nu[empty-N] = nu[empty-N], nu[empty] nu[len(nu)-1] += "U" successors += nu # down if not status["bottom"]: nd = node.copy() nd[empty], nd[empty+N] = nd[empty+N], nd[empty] nd[len(nd)-1] += "D" successors += nd # left if not status["left"]: nl = node.copy() nl[empty], nl[empty-1] = nl[empty-1], nl[empty] nl[len(nl)-1] += "L" successors += nl # right if not status["right"]: nr = node.copy() nr[empty], nr[empty+1] = nr[empty+1], nr[empty] nr[len(nr)-1] += "R" successors += nr return successors #------------------------------------------ |
# 633xxxxx21 272 (2020-09-20 21:39) def gen_successors(node): successors = [] empty = node.index(0); if (empty == 0): ndd = node.copy() ndr = node.copy() ndd[0], ndd[3] = ndd[3], ndd[0] ndd[9] += "D" successors += ndd ndr[0], ndr[1] = ndr[1], ndr[0] ndr[9] += "R" successors += ndr elif (empty == 1): ndd = node.copy() ndl = node.copy() ndr = node.copy() ndd[1], ndd[4] = ndd[4], ndd[1] ndd[9] += "D" successors += ndd ndl[0], ndl[1] = ndl[1], ndl[0] ndl[9] += "L" successors += ndl ndr[1], ndr[2] = ndr[2], ndr[1] ndr[9] += "R" successors += ndr elif (empty == 2): ndd = node.copy() ndl = node.copy() ndd[2], ndd[5] = ndd[5], ndd[2] ndd[9] += "D" successors += ndd ndl[1], ndl[2] = ndl[2], ndl[1] ndl[9] += "L" successors += ndl elif (empty == 3): ndu = node.copy() ndd = node.copy() ndr = node.copy() ndu[0], ndu[3] = ndu[3], ndu[0] ndu[9] += "U" successors += ndu ndd[3], ndd[6] = ndd[6], ndd[3] ndd[9] += "D" successors += ndd ndr[3], ndr[4] = ndr[4], ndr[3] ndr[9] += "R" successors += ndr elif (empty == 4): ndu = node.copy() ndd = node.copy() ndl = node.copy() ndr = node.copy() ndu[1], ndu[4] = ndu[4], ndu[1] ndu[9] += "U" successors += ndu ndd[4], ndd[7] = ndd[7], ndd[4] ndd[9] += "D" successors += ndd ndl[3], ndl[4] = ndl[4], ndl[3] ndl[9] += "L" successors += ndl ndr[4], ndr[5] = ndr[5], ndr[4] ndr[9] += "R" successors += ndr elif (empty == 5): ndu = node.copy() ndd = node.copy() ndl = node.copy() ndu[2], ndu[5] = ndu[5], ndu[2] ndu[9] += "U" successors += ndu ndd[5], ndd[8] = ndd[8], ndd[5] ndd[9] += "D" successors += ndd ndl[4], ndl[5] = ndl[5], ndl[4] ndl[9] += "L" successors += ndl elif (empty == 6): ndu = node.copy() ndr = node.copy() ndu[3], ndu[6] = ndu[6], ndu[3] ndu[9] += "U" successors += ndu ndr[6], ndr[7] = ndr[7], ndr[6] ndr[9] += "R" successors += ndr elif (empty == 7): ndu = node.copy() ndl = node.copy() ndr = node.copy() ndu[4], ndu[7] = ndu[7], ndu[4] ndu[9] += "U" successors += ndu ndl[6], ndl[7] = ndl[7], ndl[6] ndl[9] += "L" successors += ndl ndr[7], ndr[8] = ndr[8], ndr[7] ndr[9] += "R" successors += ndr elif (empty == 8): ndu = node.copy() ndl = node.copy() ndu[5], ndu[8] = ndu[8], ndu[5] ndu[9] += "U" successors += ndu ndl[7], ndl[8] = ndl[8], ndl[7] ndl[9] += "L" successors += ndl return successors #------------------------------------------ |
# 633xxxxx21 273 (2020-09-20 22:52) def gen_successors(node): successors = [] i = node.index(0) N = int((len(node)-1)**(1/2)) R = [] L = [] D = [] U = [] nums = 0 while 0 <= nums <= (len(node)-1): if (nums+1)%N != 0: R.append(nums) if (nums+N)%N != 0: L.append(nums) if nums < (len(node)-1)-N: D.append(nums) if nums >= N: U.append(nums) nums+= 1 if i in R : node1=list(node) node1[i], node1[i+1] = node1[i+1], node1[i] node1[-1] += 'R' successors.extend(node1) if i in L: node1=list(node) node1[i], node1[i-1] = node1[i-1], node1[i] node1[-1] += 'L' successors.extend(node1) if i in U: node1=list(node) node1[i], node1[i-N] = node1[i-N], node1[i] node1[-1] += 'U' successors.extend(node1) if i in D: node1=list(node) node1[i], node1[i+N] = node1[i+N], node1[i] node1[-1] += 'D' successors.extend(node1) return successors #------------------------------------------ |
# 633xxxxx21 274 (2020-09-20 22:54) def gen_successors(node): successors = [] pos=node.index(0) node_hold = node[:-1] ; move = node[-1] row = node_hold.index(0)//3 colm = node_hold.index(0)%3 if colm == 0 : node_hold[pos],node_hold[pos+1]=node_hold[pos+1],node_hold[pos] node_hold.append(move+"R") successors+=node_hold if colm == 1 : node_hold[pos],node_hold[pos+1]=node_hold[pos+1],node_hold[pos] node_hold.append(move+"R") successors+=node_hold node_hold = node[:-1] ; move = node[-1] node_hold[pos],node_hold[pos-1]=node_hold[pos-1],node_hold[pos] node_hold.append(move+"L") successors+=node_hold if colm == 2 : node_hold[pos],node_hold[pos-1]=node_hold[pos-1],node_hold[pos] node_hold.append(move+"L") successors+=node_hold node_hold = node[:-1] ; move = node[-1] if row == 0 : node_hold[pos],node_hold[pos+3]=node_hold[pos+3],node_hold[pos] node_hold.append(move+"D") successors+=node_hold if row == 1 : node_hold[pos],node_hold[pos+3]=node_hold[pos+3],node_hold[pos] node_hold.append(move+"D") successors+=node_hold node_hold = node[:-1] ; move = node[-1] node_hold[pos],node_hold[pos-3]=node_hold[pos-3],node_hold[pos] node_hold.append(move+"U") successors+=node_hold if colm == 2 : node_hold[pos],node_hold[pos-3]=node_hold[pos-3],node_hold[pos] node_hold.append(move+"U") successors+=node_hold return successors #------------------------------------------ |
# 633xxxxx21 275 (2020-09-20 19:13) def gen_successors(node): position = board.index(0) #Corner if position == 0: successors = [board[1],0,board[2],board[3],board[4],board[5],board[6],board[7],board[8],'UDRR',\ board[3],board[1],board[2],0,board[4],board[5],board[6],board[7],board[8],'UDRD',] elif position == 2: successors = [board[0],0,board[1],board[3],board[4],board[5],board[6],board[7],board[8],'UDRL',\ board[0],board[1],board[5],board[3],board[4],0,board[6],board[7],board[8],'UDRD'] elif position == 6: successors = [board[0],board[1],board[2],board[3],board[4],board[5],board[7],0,board[8],'UDRR',\ board[0],board[1],board[2],0,board[4],board[5],board[3],board[7],board[8],'UDRU'] elif position == 8: successors = [board[0],board[1],board[2],board[3],board[4],board[5],board[6],0,board[7],'UDRL',\ board[0],board[1],board[2],board[3],board[4],0,board[6],board[7],board[5],'UDRU'] #Between corner elif position == 1: successors = [0,board[0],board[2],board[3],board[4],board[5],board[6],board[7],board[8],'UDRL',\ board[0],board[2],0,board[3],board[4],board[5],board[6],board[7],board[8],'UDRR',\ board[0],board[4],board[2],board[3],0,board[5],board[6],board[7],board[8],'UDRD'] elif position == 3: successors = [board[0],board[1],board[2],board[4],0,board[5],board[6],board[7],board[8],'UDRR',\ 0,board[1],board[2],board[0],board[4],board[5],board[6],board[7],board[8],'UDRU',\ board[0],board[1],board[2],board[6],board[4],board[5],0,board[7],board[8],'UDRD'] elif position == 5: successors = [board[0],board[1],board[2],board[3],0,board[4],board[6],board[7],board[8],'UDRL',\ board[0],board[1],0,board[3],board[4],board[2],board[6],board[7],board[8],'UDRU',\ board[0],board[1],board[2],board[3],board[4],board[8],board[6],board[7],0,'UDRD'] elif position == 7: successors = [board[0],board[1],board[2],board[3],board[4],board[5],0,board[6],board[8],'UDRL',\ board[0],board[1],board[2],board[3],board[4],board[5],board[6],board[8],0,'UDRR',\ board[0],board[1],board[2],board[3],0,board[5],board[6],board[4],board[8],'UDRU'] #Middle elif position == 4: successors = [board[0],board[1],board[2],0,board[3],board[5],board[6],board[7],board[8],'UDRL',\ board[0],board[1],board[2],board[3],board[5],0,board[6],board[7],board[8],'UDRR',\ board[0],0,board[2],board[3],board[1],board[5],board[6],board[7],board[8],'UDRU',\ board[0],board[1],board[2],board[3],board[7],board[5],board[6],0,board[8],'UDRD'] return successors #------------------------------------------ |
# 633xxxxx21 276 (2020-09-19 20:20) def gen_successors(node): successors = [] #print("node : ",node,"\n") m = node.index(0); if (m == 0): #copy node ndd = node.copy() ndr = node.copy() #down ndd[0], ndd[3] = ndd[3], ndd[0] #add path ndd[9] += "D" successors += ndd #right ndr[0], ndr[1] = ndr[1], ndr[0] #add path ndr[9] += "R" successors += ndr elif (m == 1): #copy node ndd = node.copy() ndl = node.copy() ndr = node.copy() #down ndd[1], ndd[4] = ndd[4], ndd[1] #add path ndd[9] += "D" successors += ndd #left ndl[0], ndl[1] = ndl[1], ndl[0] #add path ndl[9] += "L" successors += ndl #right ndr[1], ndr[2] = ndr[2], ndr[1] #add path ndr[9] += "R" successors += ndr elif (m == 2): #copy node ndd = node.copy() ndl = node.copy() #down ndd[2], ndd[5] = ndd[5], ndd[2] #add path ndd[9] += "D" successors += ndd #left ndl[1], ndl[2] = ndl[2], ndl[1] #add path ndl[9] += "L" successors += ndl elif (m == 3): #copy node ndu = node.copy() ndd = node.copy() ndr = node.copy() #up ndu[0], ndu[3] = ndu[3], ndu[0] #add path ndu[9] += "U" successors += ndu #down ndd[3], ndd[6] = ndd[6], ndd[3] #add path ndd[9] += "D" successors += ndd #right ndr[3], ndr[4] = ndr[4], ndr[3] #add path ndr[9] += "R" successors += ndr elif (m == 4): #copy node ndu = node.copy() ndd = node.copy() ndl = node.copy() ndr = node.copy() #up ndu[1], ndu[4] = ndu[4], ndu[1] #add path ndu[9] += "U" successors += ndu #down ndd[4], ndd[7] = ndd[7], ndd[4] #add path ndd[9] += "D" successors += ndd #left ndl[3], ndl[4] = ndl[4], ndl[3] #add path ndl[9] += "L" successors += ndl #right ndr[4], ndr[5] = ndr[5], ndr[4] #add path ndr[9] += "R" successors += ndr elif (m == 5): #copy node ndu = node.copy() ndd = node.copy() ndl = node.copy() #up ndu[2], ndu[5] = ndu[5], ndu[2] #add path ndu[9] += "U" successors += ndu #down ndd[5], ndd[8] = ndd[8], ndd[5] #add path ndd[9] += "D" successors += ndd #left ndl[4], ndl[5] = ndl[5], ndl[4] #add path ndl[9] += "L" successors += ndl elif (m == 6): #copy node ndu = node.copy() ndr = node.copy() #up ndu[3], ndu[6] = ndu[6], ndu[3] #add path ndu[9] += "U" successors += ndu #right ndr[6], ndr[7] = ndr[7], ndr[6] #add path ndr[9] += "R" successors += ndr elif (m == 7): #copy node ndu = node.copy() ndl = node.copy() ndr = node.copy() #up ndu[4], ndu[7] = ndu[7], ndu[4] #add path ndu[9] += "U" successors += ndu #left ndl[6], ndl[7] = ndl[7], ndl[6] #add path ndl[9] += "L" successors += ndl #right ndr[7], ndr[8] = ndr[8], ndr[7] #add path ndr[9] += "R" successors += ndr elif (m == 8): #copy node ndu = node.copy() ndl = node.copy() #up ndu[5], ndu[8] = ndu[8], ndu[5] #add path ndu[9] += "U" successors += ndu #left ndl[7], ndl[8] = ndl[8], ndl[7] #add path ndl[9] += "L" successors += ndl return successors #------------------------------------------ |
# 633xxxxx21 277 (2020-09-20 15:20) def gen_successors(node): successors = [4, 1, 3, 2, 5, 6, 7, 0, 8, 'UDRL',4, 1, 3, 2, 5, 0, 7, 8, 6, 'UDRU',] return successors #------------------------------------------ |
# 633xxxxx21 278 (2020-09-20 15:01) def gen_successors(node): x = board.index(0) if x == 0: successors = [board[1],0,board[2],board[3],board[4],board[5],board[6],board[7],board[8],'UDRR'\ ,board[3],board[1],board[2],0,board[4],board[5],board[6],board[7],board[8],'UDRD'] elif x==1: successors = [0,board[0],board[2],board[3],board[4],board[5],board[6],board[7],board[8],'UDRL'\ ,board[0],board[2],0,board[3],board[4],board[5],board[6],board[7],board[8],'UDRR'\ ,board[0],board[4],board[2],board[3],0,board[5],board[6],board[7],board[8],'UDRD'] elif x==2: successors = [board[0],0,board[1],board[3],board[4],board[5],board[6],board[7],board[8],'UDRL'\ ,board[0],board[1],board[5],board[3],board[4],0,board[6],board[7],board[8],'UDRD'] elif x==3: successors = [0,board[1],board[2],board[0],board[4],board[5],board[6],board[7],board[8],'UDRU'\ ,board[0],board[1],board[2],board[4],0,board[5],board[6],board[7],board[8],'UDRR'\ ,board[0],board[1],board[2],board[6],board[4],board[5],0,board[7],board[8],'UDRD'] elif x==4: successors = [board[0],0,board[2],board[3],board[1],board[5],board[6],board[7],board[8],'UDRU'\ ,board[0],board[1],board[2],0,board[3],board[5],board[6],board[7],board[8],'UDRL'\ ,board[0],board[1],board[2],board[3],board[5],0,board[6],board[7],board[8],'UDRR'\ ,board[0],board[1],board[2],board[3],board[7],board[5],board[6],0,board[8],'UDRD'] elif x==5: successors = [board[0],board[1],0,board[3],board[4],board[2],board[6],board[7],board[8],'UDRU'\ ,board[0],board[1],board[2],board[3],0,board[4],board[6],board[7],board[8],'UDRL' ,board[0],board[1],board[2],board[3],board[4],board[8],board[6],board[7],0,'UDRD'] elif x==6: successors = [board[0],board[1],board[2],0,board[4],board[5],board[3],board[7],board[8],'UDRU' ,board[0],board[1],board[2],board[3],board[4],board[5],board[7],0,board[8],'UDRR'] elif x==7: successors = [board[0],board[1],board[2],board[3],0,board[5],board[6],board[4],board[8],'UDRU'\ ,board[0],board[1],board[2],board[3],board[4],board[5],0,board[6],board[8],'UDRL' ,board[0],board[1],board[2],board[3],board[4],board[5],board[6],board[8],0,'UDRR'] elif x==8: successors = [board[0],board[1],board[2],board[3],board[4],board[5],board[6],0,board[7],'UDRL'\ ,board[0],board[1],board[2],board[3],board[4],0,board[6],board[7],board[5],'UDRU'] return successors #------------------------------------------ |
# 633xxxxx21 279 (2020-09-19 14:47) def gen_successors(node): successors = [] #print("node : ",node,"\n") empty = node.index(0); if (empty == 0): #copy node ndd = node.copy() ndr = node.copy() #down ndd[0], ndd[3] = ndd[3], ndd[0] #add path ndd[9] += "D" successors += ndd #right ndr[0], ndr[1] = ndr[1], ndr[0] #add path ndr[9] += "R" successors += ndr elif (empty == 1): #copy node ndd = node.copy() ndl = node.copy() ndr = node.copy() #down ndd[1], ndd[4] = ndd[4], ndd[1] #add path ndd[9] += "D" successors += ndd #left ndl[0], ndl[1] = ndl[1], ndl[0] #add path ndl[9] += "L" successors += ndl #right ndr[1], ndr[2] = ndr[2], ndr[1] #add path ndr[9] += "R" successors += ndr elif (empty == 2): #copy node ndd = node.copy() ndl = node.copy() #down ndd[2], ndd[5] = ndd[5], ndd[2] #add path ndd[9] += "D" successors += ndd #left ndl[1], ndl[2] = ndl[2], ndl[1] #add path ndl[9] += "L" successors += ndl elif (empty == 3): #copy node ndu = node.copy() ndd = node.copy() ndr = node.copy() #up ndu[0], ndu[3] = ndu[3], ndu[0] #add path ndu[9] += "U" successors += ndu #down ndd[3], ndd[6] = ndd[6], ndd[3] #add path ndd[9] += "D" successors += ndd #right ndr[3], ndr[4] = ndr[4], ndr[3] #add path ndr[9] += "R" successors += ndr elif (empty == 4): #copy node ndu = node.copy() ndd = node.copy() ndl = node.copy() ndr = node.copy() #up ndu[1], ndu[4] = ndu[4], ndu[1] #add path ndu[9] += "U" successors += ndu #down ndd[4], ndd[7] = ndd[7], ndd[4] #add path ndd[9] += "D" successors += ndd #left ndl[3], ndl[4] = ndl[4], ndl[3] #add path ndl[9] += "L" successors += ndl #right ndr[4], ndr[5] = ndr[5], ndr[4] #add path ndr[9] += "R" successors += ndr elif (empty == 5): #copy node ndu = node.copy() ndd = node.copy() ndl = node.copy() #up ndu[2], ndu[5] = ndu[5], ndu[2] #add path ndu[9] += "U" successors += ndu #down ndd[5], ndd[8] = ndd[8], ndd[5] #add path ndd[9] += "D" successors += ndd #left ndl[4], ndl[5] = ndl[5], ndl[4] #add path ndl[9] += "L" successors += ndl elif (empty == 6): #copy node ndu = node.copy() ndr = node.copy() #up ndu[3], ndu[6] = ndu[6], ndu[3] #add path ndu[9] += "U" successors += ndu #right ndr[6], ndr[7] = ndr[7], ndr[6] #add path ndr[9] += "R" successors += ndr elif (empty == 7): #copy node ndu = node.copy() ndl = node.copy() ndr = node.copy() #up ndu[4], ndu[7] = ndu[7], ndu[4] #add path ndu[9] += "U" successors += ndu #left ndl[6], ndl[7] = ndl[7], ndl[6] #add path ndl[9] += "L" successors += ndl #right ndr[7], ndr[8] = ndr[8], ndr[7] #add path ndr[9] += "R" successors += ndr elif (empty == 8): #copy node ndu = node.copy() ndl = node.copy() #up ndu[5], ndu[8] = ndu[8], ndu[5] #add path ndu[9] += "U" successors += ndu #left ndl[7], ndl[8] = ndl[8], ndl[7] #add path ndl[9] += "L" successors += ndl return successors #------------------------------------------ |
# 633xxxxx21 280 (2020-09-20 20:57) def gen_successors(node): x = board.index(0) if x==0: successors = [board[1],0,board[2],board[3],board[4],board[5],board[6],board[7],board[8],'UDRR'\ ,board[3],board[1],board[2],0,board[4],board[5],board[6],board[7],board[8],'UDRD'] elif x==1: successors = [0,board[0],board[2],board[3],board[4],board[5],board[6],board[7],board[8],'UDRL'\ ,board[0],board[2],0,board[3],board[4],board[5],board[6],board[7],board[8],'UDRR'\ ,board[0],board[4],board[2],board[3],0,board[5],board[6],board[7],board[8],'UDRD'] elif x==2: successors = [board[0],0,board[1],board[3],board[4],board[5],board[6],board[7],board[8],'UDRL'\ ,board[0],board[1],board[5],board[3],board[4],0,board[6],board[7],board[8],'UDRD'] elif x==3: successors = [0,board[1],board[2],board[0],board[4],board[5],board[6],board[7],board[8],'UDRU'\ ,board[0],board[1],board[2],board[4],0,board[5],board[6],board[7],board[8],'UDRR'\ ,board[0],board[1],board[2],board[6],board[4],board[5],0,board[7],board[8],'UDRD'] elif x==4: successors = [board[0],0,board[2],board[3],board[1],board[5],board[6],board[7],board[8],'UDRU'\ ,board[0],board[1],board[2],board[3],board[5],0,board[6],board[7],board[8],'UDRR'\ ,board[0],board[1],board[2],0,board[3],board[5],board[6],board[7],board[8],'UDRL'\ ,board[0],board[1],board[2],board[3],board[7],board[5],board[6],0,board[8],'UDRD'] elif x==5: successors = [board[0],board[1],0,board[3],board[4],board[2],board[6],board[7],board[8],'UDRU'\ ,board[0],board[1],board[2],board[3],0,board[4],board[6],board[7],board[8],'UDRL'\ ,board[0],board[1],board[2],board[3],board[4],board[8],board[6],board[7],0,'UDRD'] elif x==6: successors = [board[0],board[1],board[2],0,board[4],board[5],board[3],board[7],board[8],'UDRU'\ ,board[0],board[1],board[2],board[3],board[4],board[5],board[7],0,board[8],'UDRR'] elif x==7: successors = [board[0],board[1],board[2],board[3],0,board[5],board[6],board[4],board[8],'UDRU'\ ,board[0],board[1],board[2],board[3],board[4],board[5],0,board[6],board[8],'UDRL'\ ,board[0],board[1],board[2],board[3],board[4],board[5],board[6],board[8],0,'UDRR'] elif x==8: successors = [board[0],board[1],board[2],board[3],board[4],0,board[6],board[7],board[5],'UDRU'\ ,board[0],board[1],board[2],board[3],board[4],board[5],board[6],0,board[7],'UDRL'] return successors #------------------------------------------ |
# 633xxxxx21 281 (2020-09-20 23:25) def gen_successors(node): successors = [] x = board.index(0) if x == 0: successors = [board[1],0,board[2],board[3],board[4],board[5],board[6],board[7],board[8],'UDRR'\ ,board[3],board[1],board[2],0,board[4],board[5],board[6],board[7],board[8],'UDRD'] elif x == 1: successors = [0,board[0],board[2],board[3],board[4],board[5],board[6],board[7],board[8],'UDRL'\ ,board[0],board[2],0,board[3],board[4],board[5],board[6],board[7],board[8],'UDRR'\ ,board[0],board[4],board[2],board[3],0,board[5],board[6],board[7],board[8],'UDRD'] elif x == 2: successors = [board[0],0,board[1],board[3],board[4],board[5],board[6],board[7],board[8],'UDRL'\ ,board[0],board[1],board[5],board[3],board[4],0,board[6],board[7],board[8],'UDRD'] elif x == 3: successors = [0,board[1],board[2],board[0],board[4],board[5],board[6],board[7],board[8],'UDRU'\ ,board[0],board[1],board[2],board[4],0,board[5],board[6],board[7],board[8],'UDRR'\ ,board[0],board[1],board[2],board[6],board[4],board[5],0,board[7],board[8],'UDRD'] elif x == 4: successors = [board[0],0,board[2],board[3],board[1],board[5],board[6],board[7],board[8],'UDRU'\ ,board[0],board[1],board[2],0,board[3],board[5],board[6],board[7],board[8],'UDRL'\ ,board[0],board[1],board[2],board[3],board[5],0,board[6],board[7],board[8],'UDRR'\ ,board[0],board[1],board[2],board[3],board[7],board[5],board[6],0,board[8],'UDRD'] elif x == 5 : successors = [board[0],board[1],0,board[3],board[4],board[2],board[6],board[7],board[8],'UDRU'\ ,board[0],board[1],board[2],board[3],0,board[4],board[6],board[7],board[8],'UDRL'\ ,board[0],board[1],board[2],board[3],board[4],board[8],board[6],board[4],0,'UDRD'] elif x == 6: successors = [board[0],board[1],board[2],0,board[4],board[5],board[3],board[7],board[8],'UDRU'\ ,board[0],board[1],board[2],board[3],board[4],board[5],board[7],0,board[8],'UDRR'] elif x == 7: successors = [board[0],board[1],board[2],board[3],board[4],board[5],0,board[6],board[8],'UDRL'\ ,board[0],board[1],board[2],board[3],0,board[5],board[6],board[4],board[8],'UDRU'\ ,board[0],board[1],board[2],board[3],board[4],board[5],board[6],board[8],0,'UDRR'] elif x == 8: successors = [board[0],board[1],board[2],board[3],board[4],board[5],board[6],0,board[7],'UDRL'\ ,board[0],board[1],board[2],board[3],board[4],0,board[6],board[7],board[8],board[5],'UDRU'] return successors #------------------------------------------ |
# 633xxxxx21 282 (2020-09-20 21:49) def gen_successors(node): successors = [] m=['DR','DLR','DL','UDR','UDLR','UDL','UR','ULR','UL'] j=node.index(0) k=m[j] for i in k: h=node.copy() if i=='D': h.remove(0) h.insert(j+2,0) h.insert(j,h[j+3]) h.pop(j+4) h[-1]+='D' elif i=='L': h.remove(0) h.insert(j-1,0) h[-1]+='L' elif i=='R': h.remove(0) h.insert(j+1,0) h[-1]+='R' elif i=='U': h.remove(0) h.insert(j-3,0) h.insert(j+1,h[j-2]) h.pop(j-2) h[-1]+='U' successors+=h return successors #------------------------------------------ |
# 633xxxxx21 283 (2020-09-20 13:08) def gen_successors(node): successors = [] #print("node : ",node,"\n") x = node.index(0); if (x == 0): #copy node ndd = node.copy() ndr = node.copy() #down ndd[0], ndd[3] = ndd[3], ndd[0] #add path ndd[9] += "D" successors += ndd #right ndr[0], ndr[1] = ndr[1], ndr[0] #add path ndr[9] += "R" successors += ndr elif (x == 1): #copy node ndd = node.copy() ndl = node.copy() ndr = node.copy() #down ndd[1], ndd[4] = ndd[4], ndd[1] #add path ndd[9] += "D" successors += ndd #left ndl[0], ndl[1] = ndl[1], ndl[0] #add path ndl[9] += "L" successors += ndl #right ndr[1], ndr[2] = ndr[2], ndr[1] #add path ndr[9] += "R" successors += ndr elif (x == 2): #copy node ndd = node.copy() ndl = node.copy() #down ndd[2], ndd[5] = ndd[5], ndd[2] #add path ndd[9] += "D" successors += ndd #left ndl[1], ndl[2] = ndl[2], ndl[1] #add path ndl[9] += "L" successors += ndl elif (x == 3): #copy node ndu = node.copy() ndd = node.copy() ndr = node.copy() #up ndu[0], ndu[3] = ndu[3], ndu[0] #add path ndu[9] += "U" successors += ndu #down ndd[3], ndd[6] = ndd[6], ndd[3] #add path ndd[9] += "D" successors += ndd #right ndr[3], ndr[4] = ndr[4], ndr[3] #add path ndr[9] += "R" successors += ndr elif (x == 4): #copy node ndu = node.copy() ndd = node.copy() ndl = node.copy() ndr = node.copy() #up ndu[1], ndu[4] = ndu[4], ndu[1] #add path ndu[9] += "U" successors += ndu #down ndd[4], ndd[7] = ndd[7], ndd[4] #add path ndd[9] += "D" successors += ndd #left ndl[3], ndl[4] = ndl[4], ndl[3] #add path ndl[9] += "L" successors += ndl #right ndr[4], ndr[5] = ndr[5], ndr[4] #add path ndr[9] += "R" successors += ndr elif (x == 5): #copy node ndu = node.copy() ndd = node.copy() ndl = node.copy() #up ndu[2], ndu[5] = ndu[5], ndu[2] #add path ndu[9] += "U" successors += ndu #down ndd[5], ndd[8] = ndd[8], ndd[5] #add path ndd[9] += "D" successors += ndd #left ndl[4], ndl[5] = ndl[5], ndl[4] #add path ndl[9] += "L" successors += ndl elif (x == 6): #copy node ndu = node.copy() ndr = node.copy() #up ndu[3], ndu[6] = ndu[6], ndu[3] #add path ndu[9] += "U" successors += ndu #right ndr[6], ndr[7] = ndr[7], ndr[6] #add path ndr[9] += "R" successors += ndr elif (x == 7): #copy node ndu = node.copy() ndl = node.copy() ndr = node.copy() #up ndu[4], ndu[7] = ndu[7], ndu[4] #add path ndu[9] += "U" successors += ndu #left ndl[6], ndl[7] = ndl[7], ndl[6] #add path ndl[9] += "L" successors += ndl #right ndr[7], ndr[8] = ndr[8], ndr[7] #add path ndr[9] += "R" successors += ndr elif (x == 8): #copy node ndu = node.copy() ndl = node.copy() #up ndu[5], ndu[8] = ndu[8], ndu[5] #add path ndu[9] += "U" successors += ndu #left ndl[7], ndl[8] = ndl[8], ndl[7] #add path ndl[9] += "L" successors += ndl return successors #------------------------------------------ |
# 633xxxxx21 284 (2020-09-20 23:39) def gen_successors(node): successors = [] node = [1,2,3,0,8,5,4,7,6,"LR"] successors = \ [1,2,3,4,8,5,0,7,6,"LRD", 1,2,3,4,8,5,7,0,6,"LRR", 1,2,3,4,0,5,7,8,6,"LRU", 1,2,3,4,5,0,7,8,6,"LRR", 1,2,3,4,5,6,7,8,0,"LRD", ] return successors #------------------------------------------ |
# 633xxxxx21 285 (2020-09-20 22:16) def gen_successors(node): successors = [] d = node.index(0) a = d if d//3 != 0: for i in range(len(node)-1): successors.append(node[i]) successors.append(str(node[9])+'U') up = successors.pop(a-3) s = successors.pop(a) successors.insert(a-3,0) successors.insert(a,up) a +=10 if d//3 != 2: for i in range(len(node)-1): successors.append(node[i]) successors.append(str(node[9])+'D') down = successors.pop(a+3) s = successors.pop(a) successors.insert(a,down) successors.insert(a+3,0) a+=10 if d%3 != 0: for i in range(len(node)-1): successors.append(node[i]) successors.append(str(node[9])+'L') left = successors.pop(a-3) s = successors.pop(a) successors.insert(a-3,0) successors.insert(a,left) a+=10 if d%3 != 2: for i in range(len(node)-1): successors.append(node[i]) successors.append(str(node[9])+'R') right = successors.pop(a+1) s = successors.pop(a) successors.insert(a,right) successors.insert(a+1,0) return successors #------------------------------------------ |
# 633xxxxx21 286 (2020-09-19 15:00) def gen_successors(node): successors = [] #print("node : ",node,"\n") a = node.index(0); if (a == 0): #copy node ndd = node.copy() ndr = node.copy() #down ndd[0], ndd[3] = ndd[3], ndd[0] #add path ndd[9] += "D" successors += ndd #right ndr[0], ndr[1] = ndr[1], ndr[0] #add path ndr[9] += "R" successors += ndr elif (a == 1): #copy node ndd = node.copy() ndl = node.copy() ndr = node.copy() #down ndd[1], ndd[4] = ndd[4], ndd[1] #add path ndd[9] += "D" successors += ndd #left ndl[0], ndl[1] = ndl[1], ndl[0] #add path ndl[9] += "L" successors += ndl #right ndr[1], ndr[2] = ndr[2], ndr[1] #add path ndr[9] += "R" successors += ndr elif (a == 2): #copy node ndd = node.copy() ndl = node.copy() #down ndd[2], ndd[5] = ndd[5], ndd[2] #add path ndd[9] += "D" successors += ndd #left ndl[1], ndl[2] = ndl[2], ndl[1] #add path ndl[9] += "L" successors += ndl elif (a == 3): #copy node ndu = node.copy() ndd = node.copy() ndr = node.copy() #up ndu[0], ndu[3] = ndu[3], ndu[0] #add path ndu[9] += "U" successors += ndu #down ndd[3], ndd[6] = ndd[6], ndd[3] #add path ndd[9] += "D" successors += ndd #right ndr[3], ndr[4] = ndr[4], ndr[3] #add path ndr[9] += "R" successors += ndr elif (a == 4): #copy node ndu = node.copy() ndd = node.copy() ndl = node.copy() ndr = node.copy() #up ndu[1], ndu[4] = ndu[4], ndu[1] #add path ndu[9] += "U" successors += ndu #down ndd[4], ndd[7] = ndd[7], ndd[4] #add path ndd[9] += "D" successors += ndd #left ndl[3], ndl[4] = ndl[4], ndl[3] #add path ndl[9] += "L" successors += ndl #right ndr[4], ndr[5] = ndr[5], ndr[4] #add path ndr[9] += "R" successors += ndr elif (a == 5): #copy node ndu = node.copy() ndd = node.copy() ndl = node.copy() #up ndu[2], ndu[5] = ndu[5], ndu[2] #add path ndu[9] += "U" successors += ndu #down ndd[5], ndd[8] = ndd[8], ndd[5] #add path ndd[9] += "D" successors += ndd #left ndl[4], ndl[5] = ndl[5], ndl[4] #add path ndl[9] += "L" successors += ndl elif (a == 6): #copy node ndu = node.copy() ndr = node.copy() #up ndu[3], ndu[6] = ndu[6], ndu[3] #add path ndu[9] += "U" successors += ndu #right ndr[6], ndr[7] = ndr[7], ndr[6] #add path ndr[9] += "R" successors += ndr elif (a == 7): #copy node ndu = node.copy() ndl = node.copy() ndr = node.copy() #up ndu[4], ndu[7] = ndu[7], ndu[4] #add path ndu[9] += "U" successors += ndu #left ndl[6], ndl[7] = ndl[7], ndl[6] #add path ndl[9] += "L" successors += ndl #right ndr[7], ndr[8] = ndr[8], ndr[7] #add path ndr[9] += "R" successors += ndr elif (a == 8): #copy node ndu = node.copy() ndl = node.copy() #up ndu[5], ndu[8] = ndu[8], ndu[5] #add path ndu[9] += "U" successors += ndu #left ndl[7], ndl[8] = ndl[8], ndl[7] #add path ndl[9] += "L" successors += ndl return successors #------------------------------------------ |
# 633xxxxx21 287 (2020-09-20 21:41) def gen_successors(node): successors = [] if node[0] == 0 : a = [] + node a[0],a[3] = a[3],a[0] a[9] += 'D' successors += a #print(successors) #board = [0,1,3,2,5,6,7,8,4] a = [] + node a[0],a[1] = a[1],a[0] a[9] += 'R' successors += a #print(successors) elif node[1] == 0 : a = node.copy() a[1],a[4] = a[4],a[1] a[9] += 'D' successors += a a = node.copy() a[1],a[2] = a[2],a[1] a[9] += 'R' successors += a a = node.copy() a[0],a[1] = a[1],a[0] a[9] += 'L' successors += a elif node[2] == 0 : a = node.copy() a[2],a[5] = a[5],a[2] a[9] += 'D' successors += a a = node.copy() a[2],a[1] = a[1],a[2] a[9] += 'L' successors += a elif node[3] == 0 : a = node.copy() a[3],a[0] = a[3],a[0] a[9] += 'U' successors += a a = node.copy() a[3],a[6] = a[6],a[1] a[9] += 'D' successors += a a = node.copy() a[3],a[4] = a[4],a[3] a[9] += 'R' successors += a elif node[4] == 0 : a = node.copy() a[4],a[7] = a[7],a[4] a[9] += 'D' successors += a a = node.copy() a[4],a[5] = a[5],a[4] a[9] += 'R' successors += a a = node.copy() a[4],a[3] = a[3],a[4] a[9] += 'L' successors += a a = node.copy() a[4],a[1] = a[1],a[4] a[9] += 'U' successors += a elif node[5] == 0 : a = node.copy() a[5],a[8] = a[8],a[5] a[9] += 'D' successors += a a = node.copy() a[5],a[2] = a[2],a[5] a[9] += 'U' successors += a a = node.copy() a[5],a[4] = a[4],a[5] a[9] += 'L' successors += a elif node[6] == 0 : a = node.copy() a[6],a[3] = a[3],a[6] a[9] += 'U' successors += a a = node.copy() a[6],a[7] = a[7],a[6] a[9] += 'R' successors += a elif node[7] == 0 : a = node.copy() a[7],a[4] = a[4],a[7] a[9] += 'U' successors += a a = node.copy() a[7],a[8] = a[8],a[7] a[9] += 'R' successors += a a = node.copy() a[7],a[6] = a[6],a[7] a[9] += 'L' successors += a elif node[8] == 0 : a = node.copy() a[8],a[5] = a[5],a[8] a[9] += 'U' successors += a a = node.copy() a[8],a[7] = a[8],a[7] a[9] += 'L' successors += a return successors #------------------------------------------ #def print_moves(board, moves): # bonus function: optional #return #------------------------------------------ |
# 633xxxxx21 288 (2020-09-20 19:26) def gen_successors(node): successors = [] #print("node : ",node,"\n") empty = node.index(0); if (empty == 0): #copy node ndd = node.copy() ndr = node.copy() #down ndd[0], ndd[3] = ndd[3], ndd[0] #add path ndd[9] += "D" successors += ndd #right ndr[0], ndr[1] = ndr[1], ndr[0] #add path ndr[9] += "R" successors += ndr elif (empty == 1): #copy node ndd = node.copy() ndl = node.copy() ndr = node.copy() #down ndd[1], ndd[4] = ndd[4], ndd[1] #add path ndd[9] += "D" successors += ndd #left ndl[0], ndl[1] = ndl[1], ndl[0] #add path ndl[9] += "L" successors += ndl #right ndr[1], ndr[2] = ndr[2], ndr[1] #add path ndr[9] += "R" successors += ndr elif (empty == 2): #copy node ndd = node.copy() ndl = node.copy() #down ndd[2], ndd[5] = ndd[5], ndd[2] #add path ndd[9] += "D" successors += ndd #left ndl[1], ndl[2] = ndl[2], ndl[1] #add path ndl[9] += "L" successors += ndl elif (empty == 3): #copy node ndu = node.copy() ndd = node.copy() ndr = node.copy() #up ndu[0], ndu[3] = ndu[3], ndu[0] #add path ndu[9] += "U" successors += ndu #down ndd[3], ndd[6] = ndd[6], ndd[3] #add path ndd[9] += "D" successors += ndd #right ndr[3], ndr[4] = ndr[4], ndr[3] #add path ndr[9] += "R" successors += ndr elif (empty == 4): #copy node ndu = node.copy() ndd = node.copy() ndl = node.copy() ndr = node.copy() #up ndu[1], ndu[4] = ndu[4], ndu[1] #add path ndu[9] += "U" successors += ndu #down ndd[4], ndd[7] = ndd[7], ndd[4] #add path ndd[9] += "D" successors += ndd #left ndl[3], ndl[4] = ndl[4], ndl[3] #add path ndl[9] += "L" successors += ndl #right ndr[4], ndr[5] = ndr[5], ndr[4] #add path ndr[9] += "R" successors += ndr elif (empty == 5): #copy node ndu = node.copy() ndd = node.copy() ndl = node.copy() #up ndu[2], ndu[5] = ndu[5], ndu[2] #add path ndu[9] += "U" successors += ndu #down ndd[5], ndd[8] = ndd[8], ndd[5] #add path ndd[9] += "D" successors += ndd #left ndl[4], ndl[5] = ndl[5], ndl[4] #add path ndl[9] += "L" successors += ndl elif (empty == 6): #copy node ndu = node.copy() ndr = node.copy() #up ndu[3], ndu[6] = ndu[6], ndu[3] #add path ndu[9] += "U" successors += ndu #right ndr[6], ndr[7] = ndr[7], ndr[6] #add path ndr[9] += "R" successors += ndr elif (empty == 7): #copy node ndu = node.copy() ndl = node.copy() ndr = node.copy() #up ndu[4], ndu[7] = ndu[7], ndu[4] #add path ndu[9] += "U" successors += ndu #left ndl[6], ndl[7] = ndl[7], ndl[6] #add path ndl[9] += "L" successors += ndl #right ndr[7], ndr[8] = ndr[8], ndr[7] #add path ndr[9] += "R" successors += ndr elif (empty == 8): #copy node ndu = node.copy() ndl = node.copy() #up ndu[5], ndu[8] = ndu[8], ndu[5] #add path ndu[9] += "U" successors += ndu #left ndl[7], ndl[8] = ndl[8], ndl[7] #add path ndl[9] += "L" successors += ndl return successors #------------------------------------------ |
# 633xxxxx21 289 (2020-09-20 12:20) def gen_successors(node): def cp(list, p1, p2): list[p1], list[p2] = list[p2], list[p1] return list successors = [] x=node[9]+"U" x1=node[9]+"D" x2=node[9]+"L" x3=node[9]+"R" node.pop(9) y=node+[x] y1=node+[x1] y2=node+[x2] y3=node+[x3] if node[0]==0: y1=cp(y1,3,0) y3=cp(y2,1,0) successors=successors+y1+y3 elif node[1]==0: y1=cp(y1,4,1) y2=cp(y2,1,0) y3=cp(y3,2,1) successors=successors+y1+y2+y3 elif node[2]==0: y1=cp(y1,2,5) y2=cp(y2,1,2) successors=successors+y1+y2 elif node[3]==0: y=cp(y,3,0) y1=cp(y1,3,6) y3=cp(y3,3,4) successors=successors+y+y1+y3 elif node[4]==0: y=cp(y,4,1) y1=cp(y1,4,7) y2=cp(y2,3,4) y3=cp(y3,4,5) successors=successors+y+y1+y2+y3 elif node[5]==0: y=cp(y,5,2) y1=cp(y1,5,8) y2=cp(y2,5,4) successors=successors+y+y1+y2 elif node[6]==0: y=cp(y,6,3) y3=cp(y3,6,7) successors=successors+y+y3 elif node[7]==0: y=cp(y,7,4) y2=cp(y2,7,6) y3=cp(y3,7,8) successors=successors+y+y2+y3 elif node[8]==0: y2=cp(y2,8,7) y=cp(y,8,5) successors=successors+y2+y return successors #------------------------------------------ |
# 633xxxxx21 290 (2020-09-20 17:54) def gen_successors(node): successors = [] node = [1,3,0,4,2,5,7,8,6,'LR'] successors = \ [1,0,3,4,2,5,7,8,6,'LRL', 1,2,3,4,0,5,7,8,6,'LRD', 1,2,3,4,5,0,7,8,6,'LRR', 1,2,3,4,5,6,7,8,0,'LRD'] return successors #------------------------------------------ |
# 633xxxxx21 291 (2020-09-20 20:24) def gen_successors(node): successors = [] def L(index): node[index], node[index-1] = node[index-1], node[index] return node[0:9:1] + ([node[9] + "L"]) def R(index): node[index], node[index+1] = node[index+1], node[index] return node[0:9:1] + ([node[9] + "R"]) def U(index): node[index], node[index-3] = node[index-3], node[index] return node[0:9:1] + ([node[9] + "U"]) def D(index): node[index], node[index+3] = node[index+3], node[index] return node[0:9:1] + ([node[9] + "D"]) def fixL(index): node[index], node[index-1] = node[index-1], node[index] return node def fixR(index): node[index], node[index+1] = node[index+1], node[index] return node def fixU(index): node[index], node[index-3] = node[index-3], node[index] return node def fixD(index): node[index], node[index+3] = node[index+3], node[index] return node if(node[0] == 0): successors += D(0) fixD(0) successors += R(0) fixR(0) elif(node[1] == 0): successors += (D(1)) fixD(1) successors += (L(1)) fixL(1) successors += (R(1)) fixR(1) elif(node[2] == 0): successors += (D(2)) fixD(2) successors += (L(2)) fixL(2) elif(node[3] == 0): successors += (U(3)) fixU(3) successors += (D(3)) fixD(3) successors += (R(3)) fixR(3) elif(node[4] == 0): successors += (U(4)) fixU(4) successors += (D(4)) fixD(4) successors += (L(4)) fixL(4) successors += (R(4)) fixR(4) elif(node[5] == 0): successors += (U(5)) fixU(5) successors += (D(5)) fixD(5) successors += (L(5)) fixL(5) elif(node[6] == 0): successors += (U(6)) fixU(6) successors += (R(6)) fixR(6) elif(node[7] == 0): successors += (U(7)) fixU(7) successors += (L(7)) fixL(7) successors += (R(7)) fixR(7) elif(node[8] == 0): successors += (L(8)) fixL(8) successors += (U(8)) fixU(8) return successors #------------------------------------------ |
# 633xxxxx21 292 (2020-09-20 20:45) def gen_successors(node): successors = [] x = board.index(0) if x == 0: successors = [board[1],0,board[2],board[3],board[4],board[5],board[6],board[7],board[8],'UDRR'\ ,board[3],board[1],board[2],0,board[4],board[5],board[6],board[7],board[8],'UDRD'] elif x==8: successors = [board[0],board[1],board[2],board[3],board[4],board[5],board[6],0,board[7],'UDRL'\ ,board[0],board[1],board[2],board[3],board[4],0,board[6],board[7],board[5],'UDRU'] elif x==7: successors = [board[0],board[1],board[2],board[3],0,board[5],board[6],board[4],board[8],'UDRU'\ ,board[0],board[1],board[2],board[3],board[4],board[5],0,board[6],board[8],'UDRL' ,board[0],board[1],board[2],board[3],board[4],board[5],board[6],board[8],0,'UDRR'] elif x==6: successors = [board[0],board[1],board[2],0,board[4],board[5],board[3],board[7],board[8],'UDRU' ,board[0],board[1],board[2],board[3],board[4],board[5],board[7],0,board[8],'UDRR'] elif x==5: successors = [board[0],board[1],0,board[3],board[4],board[2],board[6],board[7],board[8],'UDRU'\ ,board[0],board[1],board[2],board[3],0,board[4],board[6],board[7],board[8],'UDRL' ,board[0],board[1],board[2],board[3],board[4],board[8],board[6],board[7],0,'UDRD'] elif x==4: successors = [board[0],0,board[2],board[3],board[1],board[5],board[6],board[7],board[8],'UDRU'\ ,board[0],board[1],board[2],0,board[3],board[5],board[6],board[7],board[8],'UDRL'\ ,board[0],board[1],board[2],board[3],board[5],0,board[6],board[7],board[8],'UDRR'\ ,board[0],board[1],board[2],board[3],board[7],board[5],board[6],0,board[8],'UDRD'] elif x==3: successors = [0,board[1],board[2],board[0],board[4],board[5],board[6],board[7],board[8],'UDRU'\ ,board[0],board[1],board[2],board[4],0,board[5],board[6],board[7],board[8],'UDRR'\ ,board[0],board[1],board[2],board[6],board[4],board[5],0,board[7],board[8],'UDRD'] elif x==2: successors = [board[0],0,board[1],board[3],board[4],board[5],board[6],board[7],board[8],'UDRL'\ ,board[0],board[1],board[5],board[3],board[4],0,board[6],board[7],board[8],'UDRD'] elif x==1: successors = [0,board[0],board[2],board[3],board[4],board[5],board[6],board[7],board[8],'UDRL'\ ,board[0],board[2],0,board[3],board[4],board[5],board[6],board[7],board[8],'UDRR'\ ,board[0],board[4],board[2],board[3],0,board[5],board[6],board[7],board[8],'UDRD'] return successors #------------------------------------------ |
# 633xxxxx21 293 (2020-09-20 22:23) def gen_successors(node): node = [1,2,3,0,8,5,4,7,6,"LR"] successors = \ [1,2,3,4,8,5,0,7,6,"LRD", 1,2,3,4,8,5,7,0,6,"LRR", 1,2,3,4,0,5,7,8,6,"LRU", 1,2,3,4,5,0,7,8,6,"LRR", 1,2,3,4,5,6,7,8,0,"LRD", ] return successors #------------------------------------------ |
# 633xxxxx21 294 (2020-09-20 17:58) def gen_successors(node): successors = [] x = ["DR","RDL","DL","UDR","DLUR","UDL","RU","RUL","LU"] y = node.index(0) z = x[y] for i in z: g = node.copy() if i == "D": g.remove(0) g.insert(y+2,0) g.insert(y,g[y+3]) g.pop(y+4) g[-1] += "D" elif i == "U": g.remove(0) g.insert(y-3,0) g.insert(y+1,g[y-2]) g.pop(y-2) g[-1] += "U" elif i == "R": g.remove(0) g.insert(y+1,0) g[-1] += "R" elif i == "L": g.remove(0) g.insert(y-1,0) g[-1] += "L" successors += g return successors #------------------------------------------ |
# 633xxxxx21 295 (2020-09-20 23:22) def gen_successors(node): successors = [] x = ['UL','UR','DL','DR','ULD','DLU','URD','DRU','URDL'] y = node.index(0) z = x[y] for i in z : w = node.copy() if i == 'U' : w.remove(0) w.insert(y-3,0) w.insert(y+1,w[y-2]) w.pop(y-2) w[-1] += 'U' elif i == 'D' : w.remove(0) w.insert(y+2,0) w.insert(y,w[y+3]) w.pop(y+4) w[-1] += 'D' elif i == 'L' : w.remove(0) w.insert(y-1,0) w[-1] += 'L' elif i == 'R' : w.remove(0) w.insert(y+1,0) w[-1] += 'R' successors += w return successors #------------------------------------------ |
# 633xxxxx21 296 (2020-09-20 21:43) def gen_successors(node): successors = [] q = ['DR','DLR','DL',\ 'UDR','UDLR','UDL',\ 'UR','ULR','UL'] w = node.index(0); e = q[w] for i in e: a = node.copy() if i == 'U' : a.remove(0) ; a.insert(w-3,0) a.insert(w+1,a[w-2]) ; a.pop(w-2) a[-1] += 'U' elif i == 'D' : a.remove(0) ; a.insert(w+2,0) a.insert(w,a[w+3]) ; a.pop(w+4) a[-1] += 'D' elif i == 'L' : a.remove(0) ; a.insert(w-1,0) a[-1] += 'L' else : a.remove(0) ; a.insert(w+1,0) a[-1] += 'R' successors += a return successors #------------------------------------------ |
# 633xxxxx21 297 (2020-09-20 23:27) def gen_successors(node): successors = [] m = ['DR','DLR','DL','UDR','UDLR','UDL','UR','ULR','UL'] b = node. index(0) c = m[b] for i in c : a = node.copy() if i == 'D' : a.remove(0) a.insert(b+2,0) a.insert(b,a[b+3]) a.pop(b+4) a[-1] += 'D' elif i == 'L' : a.remove(0) a.insert(b-1,0) a[-1] += 'L' elif i == 'R' : a.remove (0) a.insert(b+1,0) a[-1] += 'R' elif i == 'U' : a.remove(0) a.insert(b-3,0) a.insert(b+1,a[b-2]) a.pop(b-2) a[-1] += 'U' successors += a return successors #------------------------------------------ |
# 633xxxxx21 298 (2020-09-20 01:38) def gen_successors(node): successors = [] z = ['DR','DLR','DL','UDR','UDLR','UDL','UR','ULR','UL'] q = node.index(0) r = z[q] for i in r : a = node.copy() if i == 'R' : a.remove(0) a.insert(q+1,0) a[-1] += 'R' elif i == 'L' : a.remove(0) a.insert(q-1,0) a[-1] += 'L' elif i == 'D' : a.remove(0) a.insert(q+2,0) a.insert(q,a[q+3]) a.pop(q+4) a[-1] += 'D' elif i == 'U' : a.remove(0) a.insert(q-3,0) a.insert(q+1,a[q-2]) a.pop(q-2) a[-1] += 'U' successors += a return successors #------------------------------------------ |
# 633xxxxx21 299 (2020-09-20 18:36) def gen_successors(node): successors = [] M = ['DR','DLR','DL','URD','UDRL','UDL','UR','URL','UL'] a = node.index(0) b = M[a] for i in b : c = node.copy() if i == "D": c[a],c[a+3]=c[a+3],c[a] c[-1]+=i elif i == "U": c[a],c[a-3]=c[a-3],c[a] c[-1]+=i elif i == "L": c[a],c[a-1]=c[a-1],c[a] c[-1]+=i elif i == "R": c[a],c[a+1]=c[a+1],c[a] c[-1]+=i successors += c return successors #------------------------------------------ |
# 633xxxxx21 300 (2020-09-17 04:04) def gen_successors(node): successors = [] m = ['DR','DLR','DL','UDR','UDLR','UDL','UR','ULR','UL'] b = node.index(0) c = m[b] for i in c : a = node.copy() if i == 'D' : a.remove(0) a.insert(b+2,0) a.insert(b,a[b+3]) a.pop(b+4) a[-1] += 'D' elif i == 'L' : a.remove(0) a.insert(b-1,0) a[-1] += 'L' elif i == 'R' : a.remove(0) a.insert(b+1,0) a[-1] += 'R' elif i == 'U' : a.remove(0) a.insert(b-3,0) a.insert(b+1,a[b-2]) a.pop(b-2) a[-1] += 'U' successors += a return successors #------------------------------------------ |
# 633xxxxx21 301 (2020-09-20 20:52) def gen_successors(node): successors = [] m = ['DR','DLR','DL','UDR','UDLR','UDL','UR','ULR','UL'] n = node.index(0) p = m[n] for i in p : c = node.copy() if i == 'D' : c.remove(0) c.insert(n+2,0) c.insert(n,c[n+3]) c.pop(n+4) c[-1] += 'D' elif i == 'L' : c.remove(0) c.insert(n-1,0) c[-1] += 'L' elif i == 'R' : c.remove(0) c.insert(n+1,0) c[-1] += 'R' elif i == 'U' : c.remove(0) c.insert(n-3,0) c.insert(n+1,c[n-2]) c.pop(n-2) c[-1] += 'U' successors += c return successors #------------------------------------------ |
# 633xxxxx21 302 (2020-09-19 14:32) def gen_successors(node): node = [1,2,3,4,6,0,7,5,8,'UR'] successors = [1,2,0,4,6,3,7,5,8,'URU', 1,2,3,4,0,6,7,5,8,'URL', 1,2,3,4,6,8,7,5,0,'URD'] return successors #------------------------------------------ |
# 633xxxxx21 303 (2020-09-20 22:19) def gen_successors(node): successors = [] j = node.index(0) if j == 0 : node[-1] += "D" for i in range(len(node)): if i == j: successors.append(node[i+3]) elif i == j+3 : successors.append(node[i-3]) else: successors.append(node[i]) #Down node[-1] = node[-1][0:-1]+ "R" for i in range(len(node)): if i == j: successors.append(node[i+1]) elif i == j+1 : successors.append(node[i-1]) else: successors.append(node[i]) #Right elif j == 1 : node[-1] += "D" for i in range(len(node)): if i == j: successors.append(node[i+3]) elif i == j+3 : successors.append(node[i-3]) else: successors.append(node[i]) #Down node[-1] = node[-1][0:-1]+ "R" for i in range(len(node)): if i == j: successors.append(node[i+1]) elif i == j+1 : successors.append(node[i-1]) else: successors.append(node[i]) #Right node[-1] = node[-1][0:-1]+ "L" for i in range(len(node)): if i == j : successors.append(node[i-1]) elif i == j-1: successors.append(node[i+1]) else: successors.append(node[i]) #Left elif j == 2: node[-1] += "D" for i in range(len(node)): if i == j: successors.append(node[i+3]) elif i == j+3 : successors.append(node[i-3]) else: successors.append(node[i]) #Down node[-1] = node[-1][0:-1]+ "L" for i in range(len(node)): if i == j : successors.append(node[i-1]) elif i == j-1: successors.append(node[i+1]) else: successors.append(node[i]) #Left elif j == 3: node[-1] += "U" for i in range(len(node)): if i == j: successors.append(node[i-3]) elif i == j-3 : successors.append(node[i+3]) else: successors.append(node[i]) #Up node[-1] = node[-1][0:-1]+ "D" for i in range(len(node)): if i == j: successors.append(node[i+3]) elif i == j+3 : successors.append(node[i-3]) else: successors.append(node[i]) #Down node[-1] = node[-1][0:-1]+ "R" for i in range(len(node)): if i == j: successors.append(node[i+1]) elif i == j+1 : successors.append(node[i-1]) else: successors.append(node[i]) #Right elif j == 4: node[-1] += "U" for i in range(len(node)): if i == j: successors.append(node[i-3]) elif i == j-3 : successors.append(node[i+3]) else: successors.append(node[i]) #Up node[-1] = node[-1][0:-1]+ "D" for i in range(len(node)): if i == j: successors.append(node[i+3]) elif i == j+3 : successors.append(node[i-3]) else: successors.append(node[i]) #Down node[-1] = node[-1][0:-1]+ "L" for i in range(len(node)): if i == j : successors.append(node[i-1]) elif i == j-1: successors.append(node[i+1]) else: successors.append(node[i]) #Left node[-1] = node[-1][0:-1]+ "R" for i in range(len(node)): if i == j: successors.append(node[i+1]) elif i == j+1 : successors.append(node[i-1]) else: successors.append(node[i]) #Right elif j == 5 : node[-1] += "U" for i in range(len(node)): if i == j: successors.append(node[i-3]) elif i == j-3 : successors.append(node[i+3]) else: successors.append(node[i]) #Up node[-1] = node[-1][0:-1]+ "D" for i in range(len(node)): if i == j: successors.append(node[i+3]) elif i == j+3 : successors.append(node[i-3]) else: successors.append(node[i]) #Down node[-1] = node[-1][0:-1]+ "L" for i in range(len(node)): if i == j : successors.append(node[i-1]) elif i == j-1: successors.append(node[i+1]) else: successors.append(node[i]) #Left elif j == 6: node[-1] += "U" for i in range(len(node)): if i == j: successors.append(node[i-3]) elif i == j-3 : successors.append(node[i+3]) else: successors.append(node[i]) #Up node[-1] = node[-1][0:-1]+ "R" for i in range(len(node)): if i == j: successors.append(node[i+1]) elif i == j+1 : successors.append(node[i-1]) else: successors.append(node[i]) #Right elif j == 7: node[-1] += "U" for i in range(len(node)): if i == j: successors.append(node[i-3]) elif i == j-3 : successors.append(node[i+3]) else: successors.append(node[i]) #Up node[-1] = node[-1][0:-1]+ "L" for i in range(len(node)): if i == j : successors.append(node[i-1]) elif i == j-1: successors.append(node[i+1]) else: successors.append(node[i]) #Left node[-1] = node[-1][0:-1]+ "R" for i in range(len(node)): if i == j: successors.append(node[i+1]) elif i == j+1 : successors.append(node[i-1]) else: successors.append(node[i]) #Right elif j == 8: node[-1] += "U" for i in range(len(node)): if i == j: successors.append(node[i-3]) elif i == j-3 : successors.append(node[i+3]) else: successors.append(node[i]) #Up node[-1] = node[-1][0:-1]+ "L" for i in range(len(node)): if i == j : successors.append(node[i-1]) elif i == j-1: successors.append(node[i+1]) else: successors.append(node[i]) #Left return successors #------------------------------------------ |
# 633xxxxx21 304 (2020-09-20 20:46) def gen_successors(node): successors = [] t = ["DR","DLR","DL","UDR","UDLR","UDL","UR","ULR","UL"] e = node.index(0) a = t[e] for i in a : m = node.copy() if i == "D" : m.remove(0) m.insert(e+2,0) m.insert(e,m[e+3]) m.pop(e+4) m[-1] += "D" elif i == "U" : m.remove(0) m.insert(e-3,0) m.insert(e+1,m[e-2]) m.pop(e-2) m[-1] += "U" elif i == "L" : m.remove(0) m.insert(e-1,0) m[-1] += "L" elif i == "R" : m.remove(0) m.insert(e+1,0) m[-1] += "R" successors += m return successors #------------------------------------------ |
# 633xxxxx21 305 (2020-09-20 17:46) def gen_successors(node): successors = [] a=[] b = node.index(0) c = 0 if str(b) in '0268' : n = 2 elif str(b) in '1357' : n = 3 else : n = 4 for i in range(n): for ch in node: a.append(ch) if str(b) in '012345' and c == 0: x = a.pop(b) a.insert(3+b,0) d = a.pop(2+b) a.insert(b,d) a[9] = a[9]+ "D" c = 1 elif str(b) in '013467' and c == 1 : x = a.pop(b) a.insert(1+b,0) a[9] = a[9]+ "R" c = 2 elif str(b) in '124578' and c == 2 or c == 1: x = a.pop(b) a.insert(b-1,0) a[9] = a[9]+ "L" c = 3 elif str(b) in '345678' and c == 3 or c == 2 or c == 0: x = a.pop(b) a.insert(b-3,0) d = a.pop(b-2) a.insert(b,d) a[9] = a[9]+ "U" c = 1 successors += a a=[] return successors #------------------------------------------ |
# 633xxxxx21 306 (2020-09-20 23:13) def gen_successors(node): successors = [] move = ['RD','LDR','DL','URD','ULDR','ULD','UR','LUR','LU'] x = node.index(0) y = move[x] for i in y: z = [] if i == 'D': z = node[:x] + node[x+3:x+4] + node[x+1:x+3] + node[x:x+1] + node[x+4:len(node)] z[-1] += 'D' elif i == 'U': z = node[:x-3] + node[x:x+1] + node[x-2:x] + node[x-3:x-2] + node[x+1:len(node)] z[-1] += 'U' elif i == 'L': z = node[:x-1] + node[x:x+1] + node[x-1:x] + node[x+1:len(node)] z[-1] += 'L' elif i == 'R': z = node[:x] + node[x+1:x+2] + node[x:x+1] + node[x+2:len(node)] z[-1] += 'R' else: pass successors += z return successors #------------------------------------------ |
# 633xxxxx21 307 (2020-09-17 17:58) def gen_successors(node): successors = [] if (node.index(0)==8): n=0 while(n<2): i=0 while(i<len(node)): successors.append(node[i]) i+=1 n+=1 successors[9]=successors[9]+'U' tmp=successors[5] successors[8]=tmp successors[5]=0 successors[19]=successors[19]+'L' tmp=successors[17] successors[18]=tmp successors[17]=0 elif (node.index(0)==7): n=0 while(n<3): i=0 while(i<len(node)): successors.append(node[i]) i+=1 n+=1 successors[9]=successors[9]+'U' tmp=successors[4] successors[7]=tmp successors[4]=0 successors[19]=successors[19]+'L' tmp=successors[16] successors[17]=tmp successors[16]=0 successors[29]=successors[29]+'R' tmp=successors[28] successors[27]=tmp successors[28]=0 elif (node.index(0)==6): n=0 while(n<2): i=0 while(i<len(node)): successors.append(node[i]) i+=1 n+=1 successors[9]=successors[9]+'U' tmp=successors[3] successors[6]=tmp successors[3]=0 successors[19]=successors[19]+'R' tmp=successors[17] successors[16]=tmp successors[17]=0 elif (node.index(0)==5): n=0 while(n<3): i=0 while(i<len(node)): successors.append(node[i]) i+=1 n+=1 successors[9]=successors[9]+'U' tmp=successors[2] successors[5]=tmp successors[2]=0 successors[19]=successors[19]+'L' tmp=successors[14] successors[15]=tmp successors[14]=0 successors[29]=successors[29]+'D' tmp=successors[28] successors[25]=tmp successors[28]=0 elif (node.index(0)==4): n=0 while(n<4): i=0 while(i<len(node)): successors.append(node[i]) i+=1 n+=1 successors[9]=successors[9]+'U' tmp=successors[1] successors[4]=tmp successors[1]=0 successors[19]=successors[19]+'L' tmp=successors[13] successors[14]=tmp successors[13]=0 successors[29]=successors[29]+'R' tmp=successors[25] successors[24]=tmp successors[25]=0 successors[39]=successors[39]+'D' tmp=successors[37] successors[34]=tmp successors[37]=0 elif (node.index(0)==3): n=0 while(n<3): i=0 while(i<len(node)): successors.append(node[i]) i+=1 n+=1 successors[9]=successors[9]+'U' tmp=successors[0] successors[3]=tmp successors[0]=0 successors[19]=successors[19]+'R' tmp=successors[14] successors[13]=tmp successors[14]=0 successors[29]=successors[29]+'D' tmp=successors[26] successors[23]=tmp successors[26]=0 elif (node.index(0)==2): n=0 while(n<2): i=0 while(i<len(node)): successors.append(node[i]) i+=1 n+=1 successors[9]=successors[9]+'D' tmp=successors[5] successors[2]=tmp successors[5]=0 successors[19]=successors[19]+'L' tmp=successors[14] successors[15]=tmp successors[14]=0 elif (node.index(0)==1): n=0 while(n<3): i=0 while(i<len(node)): successors.append(node[i]) i+=1 n+=1 successors[9]=successors[9]+'D' tmp=successors[4] successors[1]=tmp successors[4]=0 successors[19]=successors[19]+'L' tmp=successors[10] successors[11]=tmp successors[10]=0 successors[29]=successors[29]+'R' tmp=successors[22] successors[21]=tmp successors[22]=0 elif (node.index(0)==0): n=0 while(n<2): i=0 while(i<len(node)): successors.append(node[i]) i+=1 n+=1 successors[9]=successors[9]+'D' tmp=successors[3] successors[0]=tmp successors[3]=0 successors[19]=successors[19]+'R' tmp=successors[11] successors[10]=tmp successors[11]=0 return successors #------------------------------------------ |
# 633xxxxx21 308 (2020-09-20 13:52) def gen_successors(node): successors = [] M = ['DR','DLR','DL','UDR','UDLR','UDL','UR','ULR','UL'] b = node.index(0) a = M[b] for i in a : z = node.copy() if i == 'D' : z.remove(0) z.insert(b+2,0) z.insert(b,z[b+3]) z.pop(b+4) z[-1] += 'D' elif i == 'L' : z.remove(0) z.insert(b-1,0) z[-1] += 'L' elif i == 'R' : z.remove(0) z.insert(b+1,0) z[-1] += 'R' elif i == 'U': z.remove(0) z.insert(b-3,0) z.insert(b+1,z[b-2]) z.pop(b-2) z[-1] += 'U' successors += z return successors #------------------------------------------ |
# 633xxxxx21 309 (2020-09-20 16:28) def gen_successors(node): successors = [] w = ['DR','DLR','DL','UDR','UDLR','UDL','UR','ULR','UL'] b = node.index(0) c = w[b] for i in c : x = node.copy() if i== 'U' : x.remove(0) x.insert(b-3,0) x.insert(b+1,x[b-2]) x.pop(b-2) x[-1]+= 'U' elif i== "D": x.remove(0) x.insert(b+2,0) x.insert(b,x[b+3]) x.pop(b+4) x[-1] += "D" elif i == 'L': x.remove(0) x.insert(b-1,0) x[-1] += 'L' elif i == "R": x.remove(0) x.insert(b+1,0) x[-1] += "R" successors += x return successors #------------------------------------------ |
# 633xxxxx21 310 (2020-09-20 23:51) def gen_successors(node): successors = [] N = len(board) n = int(len(board)**0.5) x = node.index(0) if x<N-n: b1 = [e for e in node] b1[x],b1[x+n]=b1[x+n],b1[x] b1 = b1[:N]+[b1[N]+'D'] successors += b1 if x>n-1: b2 = [e for e in node] b2[x],b2[x-n]=b2[x-n],b2[x] b2 = b2[:N]+[b2[N]+'U'] successors += b2 if x%n!=0: b3 = [e for e in node] b3[x],b3[x-1]=b3[x-1],b3[x] b3 = b3[:N]+[b3[N]+'L'] successors += b3 if x%n!=n-1: b4 = [e for e in node] b4[x],b4[x+1]=b4[x+1],b4[x] b4 = b4[:N]+[b4[N]+'R'] successors += b4 return successors #------------------------------------------ |
# 633xxxxx21 311 (2020-09-20 22:06) def gen_successors(node): successors = [] x = node.index(0) n = int((len(node)-1)**(1/2)) if x > n-1: node1=[]+node node1[x],node1[x-n]=node1[x-n],node1[x] node1[-1]=node1[-1]+'U' successors +=node1 if x < ((n*n)-1-n): node2=[]+node node2[x],node2[x+n]=node2[x+n],node2[x] node2[-1]=node2[-1]+'D' successors +=node2 if x%n !=0: node3=[]+node node3[x],node3[x-1]=node3[x-1],node3[x] node3[-1]=node3[-1]+'L' successors +=node3 if x%n !=n-1: node4 = []+node node4[x],node4[x+1]=node4[x+1],node4[x] node4[-1]=node4[-1]+'R' successors +=node4 return successors #------------------------------------------ |
# 633xxxxx21 312 (2020-09-20 16:40) def gen_successors(node): successors = [] M = ['DR','DLR','DL','UDR','UDLR','UDL','UR','ULR','UL'] b = node.index(0) a = M[b] for i in a : c = node.copy() if i == 'D' : c.remove(0) c.insert(b+2,0) c.insert(b,c[b+3]) c.pop(b+4) c[-1] += 'D' elif i == 'L' : c.remove(0) c.insert(b-1,0) c[-1] += 'L' elif i == 'R' : c.remove(0) c.insert(b+1,0) c[-1] += 'R' elif i == 'U': c.remove(0) c.insert(b-3,0) c.insert(b+1,c[b-2]) c.pop(b-2) c[-1] += 'U' successors += c return successors #------------------------------------------ |
# 633xxxxx21 313 (2020-09-19 23:32) def gen_successors(node): successors = [] n=int(len(board)**(1/2)) x = node[:-1] b=node.index(0) if b%n==0 and (b//n)!=0 and (b//n)!=(n-1): x[b]=x[b+1] x[b+1]=0 x.append(node[-1] + 'R') successors += x x = node[:-1] x[b]=x[b-n] x[b-n]=0 x.append(node[-1] + 'U') successors += x x = node[:-1] x[b]=x[b+n] x[b+n]=0 x.append(node[-1] + 'D') successors += x elif b%n==(n-1) and (b//n)!=0 and (b//n)!=(n-1): x[b]=x[b-1] x[b-1]=0 x.append(node[-1] + 'L') successors += x x = node[:-1] x[b]=x[b-n] x[b-n]=0 x.append(node[-1] + 'U') successors += x x = node[:-1] x[b]=x[b+n] x[b+n]=0 x.append(node[-1] + 'D') successors += x elif (b//n)==(n-1): if b%n==(n-1): x[b]=x[b-1] x[b-1]=0 x.append(node[-1] + 'L') successors += x x = node[:-1] x[b]=x[b-n] x[b-n]=0 x.append(node[-1] + 'U') successors += x elif b%n==0: x[b]=x[b+1] x[b+1]=0 x.append(node[-1] + 'R') successors += x x = node[:-1] x[b]=x[b-n] x[b-n]=0 x.append(node[-1] + 'U') successors += x else: x[b]=x[b+1] x[b+1]=0 x.append(node[-1] + 'R') successors += x x = node[:-1] x.append(node[-1] + 'R') successors += x x = node[:-1] x[b]=x[b-1] x[b-1]=0 x.append(node[-1] + 'L') successors += x x = node[:-1] x[b]=x[b-n] x[b-n]=0 x.append(node[-1] + 'U') successors += x elif (b//n)==0: if b%n==(n-1): x[b]=x[b-1] x[b-1]=0 x.append(node[-1] + 'L') successors += x x = node[:-1] x[b]=x[b+n] x[b+n]=0 x.append(node[-1] + 'D') successors += x elif b%n==0: x[b]=x[b+1] x[b+1]=0 x.append(node[-1] + 'R') successors += x x = node[:-1] x.append(node[-1] + 'R') successors += x x = node[:-1] x[b]=x[b+n] x[b+n]=0 x.append(node[-1] + 'D') successors += x else: x[b]=x[b+1] x[b+1]=0 x.append(node[-1] + 'R') successors += x x = node[:-1] x[b]=x[b-1] x[b-1]=0 x.append(node[-1] + 'L') successors += x x = node[:-1] x[b]=x[b+n] x[b+n]=0 x.append(node[-1] + 'D') successors += x x = node[:-1] x[b]=x[b-n] x = node[:-1] x.append(node[-1] + 'R') successors += x else: x[b]=x[b-1] x[b-1]=0 x.append(node[-1] + 'L') successors += x x = node[:-1] x[b]=x[b+1] x[b+1]=0 x.append(node[-1] + 'R') successors += x x = node[:-1] x[b]=x[b-n] x[b-n]=0 x.append(node[-1] + 'U') successors += x x = node[:-1] x[b]=x[b+n] x[b+n]=0 x.append(node[-1] + 'D') successors += x return successors #------------------------------------------ |
# 633xxxxx21 314 (2020-09-20 21:52) def gen_successors(node): successors = [] # print(node) index = node.index(0) movement = ["U","R","L","D"] if index + 1 > 8: movement.remove("R") if index - 1 < 0: movement.remove("L") if index + 3 > 8: movement.remove("D") if index - 3 < 0: movement.remove("U") Unode = node.copy() Dnode = node.copy() Lnode = node.copy() Rnode = node.copy() for i in movement: if i == "U": temp = Unode[index - 3] Unode[index - 3] = Unode[index] Unode[index] = temp Unode[-1] = Unode[-1] + "U" successors = successors + Unode elif i == "D": temp = Dnode[index + 3] Dnode[index + 3] = Dnode[index] Dnode[index] = temp Dnode[-1] = Dnode[-1] + "D" successors = successors + Dnode elif i == "L": temp = Lnode[index - 1] Lnode[index - 1] = Lnode[index] Lnode[index] = temp Lnode[-1] = Lnode[-1] + "L" successors = successors + Lnode elif i == "R": temp = Rnode[index + 1] Rnode[index + 1] = Rnode[index] Rnode[index] = temp Rnode[-1] = Lnode[-1] + "R" successors = successors + Rnode return successors #------------------------------------------ |
# 633xxxxx21 315 (2020-09-20 23:50) def gen_successors(node): successors = [] board = node[:-1] command = node[-1] idx = board.index(0) if idx + 3 <= 8 : board[idx], board[idx+3] = board[idx+3], board[idx] successors += (board + [(command + 'D')]) board[idx], board[idx+3] = board[idx+3], board[idx] if idx - 3 >= 0 : board[idx], board[idx-3] = board[idx-3], board[idx] successors += (board + [(command + 'U')]) board[idx], board[idx-3] = board[idx-3], board[idx] if (idx - 1)//3 == (idx)//3 and idx > 0: board[idx], board[idx-1] = board[idx-1], board[idx] successors += (board + [(command + 'L')]) board[idx], board[idx-1] = board[idx-1], board[idx] if (idx + 1)//3 == (idx)//3 and idx < 8: board[idx], board[idx+1] = board[idx+1], board[idx] successors += (board + [(command + 'R')]) board[idx], board[idx+1] = board[idx+1], board[idx] return successors #------------------------------------------ |
# 633xxxxx21 316 (2020-09-20 17:40) def gen_successors (node): successors = [] x = ["DR","DL","DLR","UDR","UDLR","UDL","UR","UL","ULR"] A = node.index(0) B = x[A] for i in B: C = node.copy() if i == "D" : C.remove (0) C.insert (A+2,0) C.insert (A,C[A+3]) C.pop (A+4) C[-1] += "D" elif i == "L" : C.remove (0) C.insert (A-1,0) C[-1] += "L" elif i == 'U' : C.remove (0) C.insert (A-3,0) C.insert (A+1,C[A-2]) C.pop (A-2) C[-1] += 'U' elif i == "R" : C.remove (0) C.insert (A+1,0) C[-1] += 'R' successors += C return successors # ------------------------------------------ |
# 633xxxxx21 317 (2020-09-20 23:36) def gen_successors(node): successors = [] board = node[:-1] command = node[-1] idx = board.index(0) if idx + 3 <= 8 : board[idx], board[idx+3] = board[idx+3], board[idx] successors += (board + [(command + 'D')]) board[idx], board[idx+3] = board[idx+3], board[idx] if idx - 3 >= 0 : board[idx], board[idx-3] = board[idx-3], board[idx] successors += (board + [(command + 'U')]) board[idx], board[idx-3] = board[idx-3], board[idx] if (idx - 1)//3 == (idx)//3 and idx > 0: board[idx], board[idx-1] = board[idx-1], board[idx] successors += (board + [(command + 'L')]) board[idx], board[idx-1] = board[idx-1], board[idx] if (idx + 1)//3 == (idx)//3 and idx < 8: board[idx], board[idx+1] = board[idx+1], board[idx] successors += (board + [(command + 'R')]) board[idx], board[idx+1] = board[idx+1], board[idx] return successors #------------------------------------------ |
# 633xxxxx21 318 (2020-09-20 23:15) def gen_successors(node): successors = [ ] # print(node) index = node.index(0) movement = ["U","R","L","D"] if index + 1 > 8: movement.remove("R") if index - 1 < 0: movement.remove("L") if index + 3 > 8: movement.remove("D") if index - 3 < 0: movement.remove("U") Unode = node.copy() Dnode = node.copy() Lnode = node.copy() Rnode = node.copy() for i in movement: if i == "U": temp = Unode[index - 3] Unode[index - 3] = Unode[index] Unode[index] = temp Unode[-1] = Unode[-1] + "U" successors = successors + Unode elif i == "D": temp = Dnode[index + 3] Dnode[index + 3] = Dnode[index] Dnode[index] = temp Dnode[-1] = Dnode[-1] + "D" successors = successors + Dnode elif i == "L": temp = Lnode[index - 1] Lnode[index - 1] = Lnode[index] Lnode[index] = temp Lnode[-1] = Lnode[-1] + "L" successors = successors + Lnode elif i == "R": temp = Rnode[index + 1] Rnode[index + 1] = Rnode[index] Rnode[index] = temp Rnode[-1] = Lnode[-1] + "R" successors = successors + Rnode return successors #------------------------------------------ |
# 633xxxxx21 319 (2020-09-20 23:10) def gen_successors(node): successors = [] index = node.index(0) movement = ["U","R","L","D"] if index + 1 > 8: movement.remove("R") if index - 1 < 0: movement.remove("L") if index + 3 > 8: movement.remove("D") if index - 3 < 0: movement.remove("U") Unode = node.copy() Dnode = node.copy() Lnode = node.copy() Rnode = node.copy() for i in movement: if i == "U": temp = Unode[index - 3] Unode[index - 3] = Unode[index] Unode[index] = temp Unode[-1] = Unode[-1] + "U" successors = successors + Unode elif i == "D": temp = Dnode[index + 3] Dnode[index + 3] = Dnode[index] Dnode[index] = temp Dnode[-1] = Dnode[-1] + "D" successors = successors + Dnode elif i == "L": temp = Lnode[index - 1] Lnode[index - 1] = Lnode[index] Lnode[index] = temp Lnode[-1] = Lnode[-1] + "L" successors = successors + Lnode elif i == "R": temp = Rnode[index + 1] Rnode[index + 1] = Rnode[index] Rnode[index] = temp Rnode[-1] = Lnode[-1] + "R" successors = successors + Rnode return successors #------------------------------------------ |
# 633xxxxx21 320 (2020-09-20 12:47) def gen_successors(node): successors = [] m = node[0:-1] n = node[-1] succ = [] if m.index(0) == 0 : succ.append("r") succ.append("d") elif m.index(0) == 1 : succ.append("r") succ.append("l") succ.append("d") elif m.index(0) == 2 : succ.append("l") succ.append("d") elif m.index(0) == 3 : succ.append("r") succ.append("u") succ.append("d") elif m.index(0) == 4 : succ.append("d") succ.append("l") succ.append("r") succ.append("u") elif m.index(0) == 5 : succ.append("l") succ.append("u") succ.append("d") elif m.index(0) == 6 : succ.append("r") succ.append("u") elif m.index(0) == 7 : succ.append("l") succ.append("r") succ.append("u") else : succ.append("l") succ.append("u") for e in succ : temp=list(m) if e == "r" : temp[m.index(0)],temp[m.index(0)+1]=temp[m.index(0)+1],temp[m.index(0)] temp.append(n+"R") elif e == "l" : temp[m.index(0)-1],temp[m.index(0)]=temp[m.index(0)],temp[m.index(0)-1] temp.append(n+"L") elif e == "u" : temp[m.index(0)-3],temp[m.index(0)]=temp[m.index(0)],temp[m.index(0)-3] temp.append(n+"U") elif e == "d" : temp[m.index(0)],temp[m.index(0)+3]=temp[m.index(0)+3],temp[m.index(0)] temp.append(n+"D") for x in temp : successors.append(x) return successors #------------------------------------------ |
# 633xxxxx21 321 (2020-09-20 22:57) def gen_successors(node): successors = [] blank = node.index(0) for e in node[-1]: if (e == 'U'): if blank not in [0,1,2]: node[blank], node[blank-3] = node[blank-3], node[blank] blank = node.index(0) elif (e == 'D'): if blank not in [6,7,8]: node[blank], node[blank+3] = node[blank+3], node[blank] blank = node.index(0) elif (e == 'R'): if blank not in [2,5,8]: node[blank], node[blank+1] = node[blank+1], node[blank] blank = node.index(0) elif (e == 'L'): if blank not in [0,3,6]: node[blank], node[blank-1] = node[blank-1], node[blank] blank = node.index(0) method = '' if blank == 0: method = 'DR' elif blank == 1: method = 'LDR' elif blank == 2: method = 'LD' elif blank == 3: method = 'URD' elif blank == 4: method = 'URDL' elif blank == 5: method = 'UDL' elif blank == 6: method = 'UR' elif blank == 7: method = 'LUR' elif blank == 8: method = 'LU' successorss = [] for m in method: node_temp = list(node) if m == 'U': node_temp[blank], node_temp[blank-3] = node_temp[blank-3], node_temp[blank] node_temp[-1]+='U' elif m == 'D': node_temp[blank], node_temp[blank+3] = node_temp[blank+3], node_temp[blank] node_temp[-1]+='D' elif m == 'R': node_temp[blank], node_temp[blank+1] = node_temp[blank+1], node_temp[blank] node_temp[-1]+='R' elif m == 'L': node_temp[blank], node_temp[blank-1] = node_temp[blank-1], node_temp[blank] node_temp[-1]+='L' successorss.append(node_temp) for s in successorss: for ss in s: successors.append(ss) return successors #------------------------------------------ |
# 633xxxxx21 322 (2020-09-20 20:14) def gen_successors(node): successors = [] ret = node i = node.index(0) if i%3 != 2: ret[i],ret[i+1] = ret[i+1],ret[i] ret[9] += "R" successors += ret ret[i],ret[i+1] = ret[i+1],ret[i] ret[9] = ret[9][0:-1] if i%3 != 0: ret[i],ret[i-1] = ret[i-1],ret[i] ret[9] += "L" successors += ret ret[i],ret[i-1] = ret[i-1],ret[i] ret[9] = ret[9][0:-1] if i >= 3: ret[i],ret[i-3] = ret[i-3],ret[i] ret[9] += "U" successors += ret ret[i],ret[i-3] = ret[i-3],ret[i] ret[9] = ret[9][0:-1] if i <= 5: ret[i],ret[i+3] = ret[i+3],ret[i] ret[9] += 'D' successors += ret ret[i],ret[i+3] = ret[i+3],ret[i] ret[9] = ret[9][0:-1] return successors #------------------------------------------ |
# 633xxxxx21 323 (2020-09-20 13:55) def gen_successors(node): successors = [] coco = node[0:-1] nut = node[-1] size = int(len(coco)**(1/2)) check = [] if coco.index(0) == 1 : check.append("r") check.append("d") elif coco.index(0) == size-2 : check.append("l") check.append("d") elif coco.index(0) == (size**2)-size : check.append("u") check.append("r") elif coco.index(0) == (size**2)-1 : check.append("u") check.append("l") elif 0 < coco.index(0) < size-2 : check.append("d") check.append("l") check.append("r") elif coco.index(0)%size == 0 : check.append("r") check.append("u") check.append("d") elif coco.index(0)%size == size-3 : check.append("l") check.append("d") check.append("u") elif (size**2)-size < coco.index(0) < (size**2)-1 : check.append("l") check.append("r") check.append("u") else : check.append("l") check.append("r") check.append("u") check.append("d") for e in check : temp=list(coco) if e == "r" : temp[coco.index(0)],temp[coco.index(0)+1]=temp[coco.index(0)+1],temp[coco.index(0)] temp.append(nut+"R") elif e == "l" : temp[coco.index(0)-1],temp[coco.index(0)]=temp[coco.index(0)],temp[coco.index(0)-1] temp.append(nut+"L") elif e == "u" : temp[coco.index(0)-size],temp[coco.index(0)]=temp[coco.index(0)],temp[coco.index(0)-size] temp.append(nut+"U") elif e == "d" : temp[coco.index(0)],temp[coco.index(0)+size]=temp[coco.index(0)+size],temp[coco.index(0)] temp.append(nut+"D") for x in temp : successors.append(x) return successors #------------------------------------------ |
# 633xxxxx21 324 (2020-09-19 23:31) def gen_successors(node): successors = [] coco = node[0:-1] nut = node[-1] size = int(len(coco)**(1/2)) check = [] if coco.index(0) == 0 : check.append("r") check.append("d") elif coco.index(0) == size-1 : check.append("l") check.append("d") elif coco.index(0) == (size**2)-size : check.append("u") check.append("r") elif coco.index(0) == (size**2)-1 : check.append("u") check.append("l") elif 0 < coco.index(0) < size-1 : check.append("d") check.append("l") check.append("r") elif coco.index(0)%size == 0 : check.append("r") check.append("u") check.append("d") elif coco.index(0)%size == size-1 : check.append("l") check.append("d") check.append("u") elif (size**2)-size < coco.index(0) < (size**2)-1 : check.append("l") check.append("r") check.append("u") else : check.append("l") check.append("r") check.append("u") check.append("d") for e in check : temp=list(coco) if e == "r" : temp[coco.index(0)],temp[coco.index(0)+1]=temp[coco.index(0)+1],temp[coco.index(0)] temp.append(nut+"R") elif e == "l" : temp[coco.index(0)-1],temp[coco.index(0)]=temp[coco.index(0)],temp[coco.index(0)-1] temp.append(nut+"L") elif e == "u" : temp[coco.index(0)-size],temp[coco.index(0)]=temp[coco.index(0)],temp[coco.index(0)-size] temp.append(nut+"U") elif e == "d" : temp[coco.index(0)],temp[coco.index(0)+size]=temp[coco.index(0)+size],temp[coco.index(0)] temp.append(nut+"D") for x in temp : successors.append(x) return successors #------------------------------------------ |
# 633xxxxx21 325 (2020-09-20 14:29) def gen_successors(node): successors = [] # for i in range(len(node)) : # if node[i] == 0 : # # node[9] += 'R' # if i == 0 : # successors = node # # node[i], node[1] = node[1], node[i] # # successors = node + 'R' # # print(successors,'*') # # if i == 8 : # # node[8], node[7] = node[7], node[8] # # # successors = node.append('L') U=list(node) D=list(node) L=list(node) R=list(node) i0 = node.index(0) if i0 == 0 : D0 = D i = D0.pop(3) D0.remove(0) D0.insert(0,i) D0.insert(3,0) D0[-1] += 'D' successors += D0 R0 = R i = R0.pop(1) R0.remove(0) R0.insert(0,i) R0.insert(1,0) R0[-1] += 'R' successors += R0 if i0 == 1 : R1 = R i = R1.pop(2) R1.remove(0) R1.insert(1,i) R1.insert(2,0) R1[-1] += 'R' successors += R1 L1 = L i = L1.pop(0) L1.remove(0) L1.insert(0,i) L1.insert(0,0) L1[-1] += 'L' successors += L1 D1 = D i = D1.pop(4) D1.remove(0) D1.insert(1,i) D1.insert(4,0) D1[-1] += 'D' successors += D1 if i0 == 2 : L2 = L i = L2.pop(1) L2.remove(0) L2.insert(1,i) L2.insert(1,0) L2[-1] += 'L' successors += L2 D2 = D i = D2.pop(5) D2.remove(0) D2.insert(2,i) D2.insert(5,0) D2[-1] += 'D' successors += D2 if i0 == 3 : U3 = U i = U3.pop(0) U3.remove(0) U3.insert(3,i) U3.insert(0,0) U3[-1] += 'U' successors += U3 D3 = D i = D3.pop(6) D3.remove(0) D3.insert(3,i) D3.insert(6,0) D3[-1] += 'D' successors += D3 R3 = R i = R3.pop(4) R3.remove(0) R3.insert(3,i) R3.insert(4,0) R3[-1] += 'R' successors += R3 if i0 == 4 : R4 = R i = R4.pop(5) R4.remove(0) R4.insert(4,i) R4.insert(5,0) R4[-1] += 'R' successors += R4 L4 = L i = L4.pop(3) L4.remove(0) L4.insert(3,i) L4.insert(3,0) L4[-1] += 'L' successors += L4 D4 = D i = D4.pop(7) D4.remove(0) D4.insert(4,i) D4.insert(7,0) D4[-1] += 'D' successors += D4 U4 = U i = U4.pop(1) U4.remove(0) U4.insert(3,i) U4.insert(1,0) U4[-1] += 'U' successors += U4 if i0 == 5 : L5 = L i = L5.pop(4) L5.remove(0) L5.insert(4,i) L5.insert(4,0) L5[-1] += 'L' successors += L5 D5 = D i = D5.pop(8) D5.remove(0) D5.insert(5,i) D5.insert(8,0) D5[-1] += 'D' successors += D5 U5 = U i = U5.pop(2) U5.remove(0) U5.insert(4,i) U5.insert(2,0) U5[-1] += 'U' successors += U5 if i0 == 6 : R6 = R i = R6.pop(7) R6.remove(0) R6.insert(6,i) R6.insert(7,0) R6[-1] += 'R' successors += R6 U6 = U i = U6.pop(3) U6.remove(0) U6.insert(5,i) U6.insert(3,0) U6[-1] += 'U' successors += U6 if i0 == 7 : R7 = R i = R7.pop(8) R7.remove(0) R7.insert(7,i) R7.insert(8,0) R7[-1] += 'R' successors += R7 L7 = L i = L7.pop(6) L7.remove(0) L7.insert(6,i) L7.insert(6,0) L7[-1] += 'L' successors += L7 U7 = U i = U7.pop(4) U7.remove(0) U7.insert(6,i) U7.insert(4,0) U7[-1] += 'U' successors += U7 if i0 == 8 : L8 = L i = L8.pop(7) L8.remove(0) L8.insert(7,i) L8.insert(7,0) L8[-1] += 'L' successors += L8 U8 = U i = U8.pop(5) U8.remove(0) U8.insert(7,i) U8.insert(5,0) U8[-1] += 'U' successors += U8 return successors #------------------------------------------ |
# 633xxxxx21 326 (2020-09-20 21:34) def gen_successors(node): successors = [] empty = node.index(0); if (empty == 0): ndd = node.copy() ndr = node.copy() ndd[0], ndd[3] = ndd[3], ndd[0] ndd[9] += "D" successors += ndd ndr[0], ndr[1] = ndr[1], ndr[0] ndr[9] += "R" successors += ndr elif (empty == 1): ndd = node.copy() ndl = node.copy() ndr = node.copy() ndd[1], ndd[4] = ndd[4], ndd[1] ndd[9] += "D" successors += ndd ndl[0], ndl[1] = ndl[1], ndl[0] ndl[9] += "L" successors += ndl ndr[1], ndr[2] = ndr[2], ndr[1] ndr[9] += "R" successors += ndr elif (empty == 2): ndd = node.copy() ndl = node.copy() ndd[2], ndd[5] = ndd[5], ndd[2] ndd[9] += "D" successors += ndd ndl[1], ndl[2] = ndl[2], ndl[1] ndl[9] += "L" successors += ndl elif (empty == 3): ndu = node.copy() ndd = node.copy() ndr = node.copy() ndu[0], ndu[3] = ndu[3], ndu[0] ndu[9] += "U" successors += ndu ndd[3], ndd[6] = ndd[6], ndd[3] ndd[9] += "D" successors += ndd ndr[3], ndr[4] = ndr[4], ndr[3] ndr[9] += "R" successors += ndr elif (empty == 4): ndu = node.copy() ndd = node.copy() ndl = node.copy() ndr = node.copy() ndu[1], ndu[4] = ndu[4], ndu[1] ndu[9] += "U" successors += ndu ndd[4], ndd[7] = ndd[7], ndd[4] ndd[9] += "D" successors += ndd ndl[3], ndl[4] = ndl[4], ndl[3] ndl[9] += "L" successors += ndl ndr[4], ndr[5] = ndr[5], ndr[4] ndr[9] += "R" successors += ndr elif (empty == 5): ndu = node.copy() ndd = node.copy() ndl = node.copy() ndu[2], ndu[5] = ndu[5], ndu[2] ndu[9] += "U" successors += ndu ndd[5], ndd[8] = ndd[8], ndd[5] ndd[9] += "D" successors += ndd ndl[4], ndl[5] = ndl[5], ndl[4] ndl[9] += "L" successors += ndl elif (empty == 6): ndu = node.copy() ndr = node.copy() ndu[3], ndu[6] = ndu[6], ndu[3] ndu[9] += "U" successors += ndu ndr[6], ndr[7] = ndr[7], ndr[6] ndr[9] += "R" successors += ndr elif (empty == 7): ndu = node.copy() ndl = node.copy() ndr = node.copy() ndu[4], ndu[7] = ndu[7], ndu[4] ndu[9] += "U" successors += ndu ndl[6], ndl[7] = ndl[7], ndl[6] ndl[9] += "L" successors += ndl ndr[7], ndr[8] = ndr[8], ndr[7] ndr[9] += "R" successors += ndr elif (empty == 8): ndu = node.copy() ndl = node.copy() ndu[5], ndu[8] = ndu[8], ndu[5] ndu[9] += "U" successors += ndu ndl[7], ndl[8] = ndl[8], ndl[7] ndl[9] += "L" successors += ndl return successors #------------------------------------------ |
# 633xxxxx21 327 (2020-09-20 23:05) def gen_successors(node): successors = [] index = node.index(0) movement = ["U","R","L","D"] if index + 1 > 8: movement.remove("R") if index - 1 < 0: movement.remove("L") if index + 3 > 8: movement.remove("D") if index - 3 < 0: movement.remove("U") Unode = node.copy() Dnode = node.copy() Lnode = node.copy() Rnode = node.copy() for i in movement: if i == "U": temp = Unode[index - 3] Unode[index - 3] = Unode[index] Unode[index] = temp Unode[-1] = Unode[-1] + "U" successors = successors + Unode elif i == "D": temp = Dnode[index + 3] Dnode[index + 3] = Dnode[index] Dnode[index] = temp Dnode[-1] = Dnode[-1] + "D" successors = successors + Dnode elif i == "L": temp = Lnode[index - 1] Lnode[index - 1] = Lnode[index] Lnode[index] = temp Lnode[-1] = Lnode[-1] + "L" successors = successors + Lnode elif i == "R": temp = Rnode[index + 1] Rnode[index + 1] = Rnode[index] Rnode[index] = temp Rnode[-1] = Lnode[-1] + "R" successors = successors + Rnode return successors #------------------------------------------ |
# 633xxxxx21 328 (2020-09-20 23:39) def gen_successors(node): successors = [] node_1 = node[0:3] node_2 = node[3:6] node_3 = node[6:9] def add_successors(move): nonlocal node_1, node_2, node_3 node_move = [node[9] + move] node_complete = node_1 + node_2 + node_3 + node_move for i in node_complete: successors.append(i) node_1 = node[0:3] node_2 = node[3:6] node_3 = node[6:9] index_zero = node.index(0) if index_zero == 0: # Move R node_1[0] = node_1[1] node_1[1] = 0 add_successors("R") # Move D node_1[0] = node_2[0] node_2[0] = 0 add_successors("D") elif index_zero == 1: # Move L node_1[1] = node_1[0] node_1[0] = 0 add_successors("L") # Move R node_1[1] = node_1[2] node_1[2] = 0 add_successors("R") # Move D node_1[1] = node_2[1] node_2[1] = 0 add_successors("D") elif index_zero == 2: # Move L node_1[2] = node_1[1] node_1[1] = 0 add_successors("L") # Move D node_1[2] = node_2[2] node_2[2] = 0 add_successors("D") elif index_zero == 3: # Move R node_2[0] = node_2[1] node_2[1] = 0 add_successors("R") # Move U node_2[0] = node_1[0] node_1[0] = 0 add_successors("U") # Move D node_2[0] = node_3[0] node_3[0] = 0 add_successors("D") elif index_zero == 4: # Move L node_2[1] = node_2[0] node_2[0] = 0 add_successors("L") # Move R node_2[1] = node_2[2] node_2[2] = 0 add_successors("R") # Move U node_2[1] = node_1[1] node_1[1] = 0 add_successors("U") # Move D node_2[1] = node_3[1] node_3[1] = 0 add_successors("D") elif index_zero == 5: # Move L node_2[2] = node_2[1] node_2[1] = 0 add_successors("L") # Move U node_2[2] = node_1[2] node_1[2] = 0 add_successors("U") # Move D node_2[2] = node_3[2] node_3[2] = 0 add_successors("D") elif index_zero == 6: # Move R node_3[0] = node_3[1] node_3[1] = 0 add_successors("R") # Move U node_3[0] = node_2[0] node_2[0] = 0 add_successors("U") elif index_zero == 7: # Move L node_3[1] = node_3[0] node_3[0] = 0 add_successors("L") # Move R node_3[1] = node_3[2] node_3[2] = 0 add_successors("R") # Move U node_3[1] = node_2[1] node_2[1] = 0 add_successors("U") elif index_zero == 8: # Move L node_3[2] = node_3[1] node_3[1] = 0 add_successors("L") # Move U node_3[2] = node_2[2] node_2[2] = 0 add_successors("U") return successors # ------------------------------------------ |
# 633xxxxx21 329 (2020-09-20 23:58) def gen_successors(node): successors = [] a=[0]*len(node) b=[0]*len(node) c=[0]*len(node) d=[0]*len(node) for i in range (len(node)): a[i]=node[i] b[i]=node[i] c[i]=node[i] d[i]=node[i] n= int((len(node)-1)**0.5) if 0 in node: i=node.index(0) if i%n-1 >= 0: a[i],a[i-1]=a[i-1],a[i] a[-1]+='L' successors+=a if i%n+1 < n: b[i],b[i+1]=b[i+1],b[i] b[-1]+='R' successors+=b if i-n > 0: c[i],c[i-n]=c[i-n],c[i] c[-1]+='U' successors+=c if i+n < n**2: d[i],d[i+n]=d[i+n],d[i] d[-1]+='D' successors+=d return successors #------------------------------------------ |
# 633xxxxx21 330 (2020-09-20 21:47) def gen_successors(node): successors = [] i=node.index(0) if node.index(0) in [3,4,5,6,7,8]: successors+=node[:i-3]+[node[i]]+node[i-2:i]+[node[i-3]]+node[i+1:-1]+[node[-1]+'U'] if node.index(0) in [0,1,2,3,4,5]: successors+=node[:i]+[node[i+3]]+node[i+1:i+3]+[node[i]]+node[i+4:-1]+[node[-1]+'D'] if node.index(0) in [0,1,3,4,6,7]: successors+=node[:i]+[node[i+1]]+[node[i]]+node[i+2:-1]+[node[-1]+'R'] if node.index(0) in [1,2,4,5,7,8]: successors+=node[:i-1]+[node[i]]+[node[i-1]]+node[i+1:-1]+[node[-1]+'L'] return successors #------------------------------------------ |
# 633xxxxx21 331 (2020-09-20 18:23) def gen_successors(node): successors = [] node.index(0) if node.index(0) == 0: ns = node[:] ns[-1] += 'U' ns[0],ns[3] = ns[3],ns[0] successors += ns ns = node[:] ns[-1] += 'R' ns[0],ns[1] = ns[1],ns[0] successors += ns elif node.index(0) == 1: ns = node[:] ns[-1] += 'D' ns[1],ns[4] = ns[4],ns[1] successors += ns ns = node[:] ns[-1] += 'R' ns[1],ns[2] = ns[2],ns[1] successors += ns ns = node[:] ns[-1] += 'L' ns[1],ns[0] = ns[0],ns[1] successors += ns elif node.index(0) == 2: ns = node[:] ns[-1] += 'D' ns[2],ns[5] = ns[5],ns[2] successors += ns ns = node[:] ns[-1] += 'L' ns[2],ns[1] = ns[1],ns[2] successors += ns elif node.index(0) == 3: ns = node[:] ns[-1] += 'D' ns[3],ns[6] = ns[6],ns[3] successors += ns ns = node[:] ns[-1] += 'R' ns[3],ns[4] = ns[4],ns[3] successors += ns ns = node[:] ns[-1] += 'U' ns[3],ns[0] = ns[0],ns[3] successors += ns elif node.index(0) == 4: ns = node[:] ns[-1] += 'D' ns[4],ns[7] = ns[7],ns[4] successors += ns ns = node[:] ns[-1] += 'R' ns[5],ns[4] = ns[4],ns[5] successors += ns ns = node[:] ns[-1] += 'U' ns[4],ns[1] = ns[1],ns[4] successors += ns ns = node[:] ns[-1] += 'L' ns[4],ns[3] = ns[3],ns[4] successors += ns elif node.index(0) == 5: ns = node[:] ns[-1] += 'D' ns[5],ns[8] = ns[8],ns[5] successors += ns ns = node[:] ns[-1] += 'L' ns[5],ns[4] = ns[4],ns[5] successors += ns ns = node[:] ns[-1] += 'U' ns[5],ns[2] = ns[2],ns[5] successors += ns elif node.index(0) == 6: ns = node[:] ns[-1] += 'R' ns[6],ns[7] = ns[7],ns[6] successors += ns ns = node[:] ns[-1] += 'U' ns[3],ns[6] = ns[6],ns[3] successors += ns elif node.index(0) == 7: ns = node[:] ns[-1] += 'L' ns[7],ns[6] = ns[6],ns[7] successors += ns ns = node[:] ns[-1] += 'U' ns[7],ns[4] = ns[4],ns[7] successors += ns ns = node[:] ns[-1] += 'R' ns[7],ns[8] = ns[8],ns[7] successors += ns else: ns = node[:] ns[-1] += 'L' ns[7],ns[8] = ns[8],ns[7] successors += ns ns = node[:] ns[-1] += 'U' ns[5],ns[8] = ns[8],ns[5] successors += ns return successors #------------------------------------------ |
# 633xxxxx21 332 (2020-09-19 12:26) def gen_successors(node): #print('node',node) successors = [] a=node.index(0) if a%3==0: nod=node[:] nod[a+1],nod[a]= nod[a],nod[a+1] nod[-1]+='R' successors+=nod elif a%3==1: nod=node[:] nod[a+1],nod[a]= nod[a],nod[a+1] nod[-1]+='R' successors+=nod nod=node[:] nod[a-1],nod[a]= nod[a],nod[a-1] nod[-1]+='L' successors+=nod elif a%3==2: nod=node[:] nod[a-1],nod[a]= nod[a],nod[a-1] nod[-1]+='L' successors+=nod if 0<=a<=2: nod=node[:] nod[a],nod[a+3]= nod[a+3],nod[a] nod[-1]+='D' successors+=nod elif 3<=a<=5: nod=node[:] nod[a],nod[a+3]= nod[a+3],nod[a] nod[-1]+='D' successors+=nod nod=node[:] nod[a],nod[a-3]= nod[a-3],nod[a] nod[-1]+='U' successors+=nod elif 6<=a<=8: nod=node[:] nod[a],nod[a-3]= nod[a-3],nod[a] nod[-1]+='U' successors+=nod return successors #------------------------------------------ |
# 633xxxxx21 333 (2020-09-20 02:55) def gen_successors(node): successors = [] l=[] j = node.index(0) s = 0 if str(j) in '0268' : M = 2 elif str(j) in '1357' : M = 3 else : M = 4 for i in range(M): for ch in node: l.append(ch) if str(j) in '012345' and s == 0: x = l.pop(j) l.insert(j+3,0) d = l.pop(j+2) l.insert(j,d) l[9] = l[9]+ "D" s = 1 elif str(j) in '013467' and s == 1 : x = l.pop(j) l.insert(j+1,0) l[9] = l[9]+ "R" s = 2 elif str(j) in '124578' and s == 2 or s == 1: x = l.pop(j) l.insert(j-1,0) l[9] = l[9]+ "L" s = 3 elif str(j) in '345678' and s == 3 or s == 2 or s == 0: x = l.pop(j) l.insert(j-3,0) d = l.pop(j-2) l.insert(j,d) l[9] = l[9]+ "U" s = 1 successors += l l=[] return successors #------------------------------------------ |
# 633xxxxx21 334 (2020-09-20 22:50) def gen_successors(node): node = [1,5,0,2,4,3,7,8,6,'UDR'] successors= [] successors =\ [1,5,3,2,4,0,7,8,6,'UDRD', 1,5,3,2,0,4,7,8,6,'UDRL', 1,5,3,0,2,4,7,8,6,'UDRL', 0,5,3,1,2,4,7,8,6,'UDRU', 5,0,3,1,2,4,7,8,6,'UDRR', 5,2,3,1,0,4,7,8,6,'UDRD', 5,2,3,1,4,0,7,8,6,'UDRR', 5,2,0,1,4,3,7,8,6,'UDRU', 5,0,2,1,4,3,7,8,6,'UDRL', 0,5,2,1,4,3,7,8,6,'UDRL', 1,5,2,0,4,3,7,8,6,'UDRD', 1,5,2,4,0,3,7,8,6,'UDRR', 1,0,2,4,5,3,7,8,6,'UDRU', 1,2,0,4,5,3,7,8,6,'UDRR', 1,2,3,4,5,0,7,8,6,'UDRD', 1,2,3,4,5,6,7,8,0,'UDRD' ] return successors #------------------------------------------ |
# 633xxxxx21 335 (2020-09-20 19:31) def gen_successors(node): successors = [] t =0 te =0 index = node.index(0) if index==0 or index==2 or index==6 or index==8: successors = node+node te = 2 elif index==1 or index==3 or index==5 or index==7: successors = node+node+node te = 3 else: successors = node+node+node+node te = 4 if index==1 or index==2 or index==4 or index==5 or index==7 or index==8: m = index+(10*t) successors[m] = successors[m-1] successors[m-1] = 0 successors[((t+1)*10)-1] +='L' t+=1 if index==0 or index==1 or index==2 or index==3 or index==4 or index==5: m = index+(10*t) successors[m] = successors[m+3] successors[m+3] = 0 successors[((t+1)*10)-1] +='D' t+=1 if index==0 or index==1 or index==3 or index==4 or index==6 or index==7: m = index+(10*t) successors[m] = successors[m+1] successors[m+1] = 0 successors[((t+1)*10)-1] +='R' t+=1 if index==3 or index==4 or index==5 or index==6 or index==7 or index==8: m = index+(10*t) successors[m] = successors[m-3] successors[m-3] = 0 successors[((t+1)*10)-1] +='U' t+=1 return successors #------------------------------------------ |
# 633xxxxx21 336 (2020-09-20 16:04) def gen_successors(node): successors = [] g = node.index(0) P = int((len(node)-1)**0.5) L = int(len(node)-1) if g in [i for i in range(0,P)]: noded = list(node) noded[g],noded[g+P]=noded[g+P],noded[g] noded[L] = node[L]+'D' successors = successors + noded elif g in [i for i in range(P,P**2-P)]: noded = list(node) noded[g],noded[g+P]=noded[g+P],noded[g] noded[L] = node[L]+'D' successors = successors + noded nodeu = list(node) nodeu[g],nodeu[g-P]=nodeu[g-P],nodeu[g] nodeu[L] = node[L]+'U' successors = successors + nodeu elif g in [i for i in range(P**2-P,P**2)]: nodeu = list(node) nodeu[g],nodeu[g-P]=nodeu[g-P],nodeu[g] nodeu[L] = node[L]+'U' successors = successors + nodeu if g in [(i-1)*P for i in range(1,P+1)]: noder = list(node) noder[g],noder[g+1]=noder[g+1],noder[g] noder[L] = node[L]+'R' successors = successors + noder elif g in [(i-1)*P+P-1 for i in range(1,P+1)]: nodel = list(node) nodel[g],nodel[g-1]=nodel[g-1],nodel[g] nodel[L] = node[L]+'L' successors = successors + nodel else : noder = list(node) noder[g],noder[g+1]=noder[g+1],noder[g] noder[L] = node[L]+'R' successors = successors + noder nodel = list(node) nodel[g],nodel[g-1]=nodel[g-1],nodel[g] nodel[L] = node[L]+'L' successors = successors + nodel return successors #------------------------------------------ |
# 633xxxxx21 337 (2020-09-20 21:41) def gen_successors(node): successors = [] t=0 te=0 index=node.index(0) if index in [0,2,6,8]: successors=node+node te=2 elif index in [1,3,5,7]: successors=node+node+node te=3 else: successors=node+node+node+node te=4 if index in [1,2,4,5,7,8]: m=index+10*t successors[m]=successors[m-1] successors[m-1]=0 successors[(t+1)*10-1]+='L' t+=1 if index in [0,1,2,3,4,5]: m=index+10*t successors[m]=successors[m+3] successors[m+3]=0 successors[(t+1)*10-1]+='D' t+=1 if index in [0,1,3,4,6,7]: m=index+10*t successors[m]=successors[m+1] successors[m+1]=0 successors[(t+1)*10-1]+='R' t+=1 if index in [3,4,5,6,7,8]: m = index+10*t successors[m]=successors[m-3] successors[m-3]=0 successors[(t+1)*10-1]+='U' t+=1 return successors #------------------------------------------ |
# 633xxxxx21 338 (2020-09-20 20:40) def gen_successors(node): sucessors = [] blankspace = board.index(0) if blankspace == 8 : successors = [board[0],board[1],board[2],board[3],board[4],board[5],board[6],0,board[7],'UDRL'\ ,board[0],board[1],board[2],board[3],board[4],0,board[6],board[7],board[5],'UDRU'] elif blankspace == 4 : successors = [board[0],0,board[2],board[3],board[1],board[5],board[6],board[7],board[8],'UDRU'\ ,board[0],board[1],board[2],0,board[3],board[5],board[6],board[7],board[8],'UDRL'\ ,board[0],board[1],board[2],board[3],board[5],0,board[6],board[7],board[8],'UDRR'\ ,board[0],board[1],board[2],board[3],board[7],board[5],board[6],0,board[8],'UDRD'] elif blankspace == 3 : successors = [0,board[1],board[2],board[0],board[4],board[5],board[6],board[7],board[8],'UDRU'\ ,board[0],board[1],board[2],board[4],0,board[5],board[6],board[7],board[8],'UDRR'\ ,board[0],board[1],board[2],board[6],board[4],board[5],0,board[7],board[8],'UDRD'] elif blankspace == 1 : successors = [0,board[0],board[2],board[3],board[4],board[5],board[6],board[7],board[8],'UDRL'\ ,board[0],board[2],0,board[3],board[4],board[5],board[6],board[7],board[8],'UDRR'\ ,board[0],board[4],board[2],board[3],0,board[5],board[6],board[7],board[8],'UDRD'] elif blankspace == 0 : successors = [board[1],0,board[2],board[3],board[4],board[5],board[6],board[7],board[8],'UDRR'\ ,board[3],board[1],board[2],0,board[4],board[5],board[6],board[7],board[8],'UDRD'] elif blankspace == 2 : successors = [board[0],0,board[1],board[3],board[4],board[5],board[6],board[7],board[8],'UDRL'\ ,board[0],board[1],board[5],board[3],board[4],0,board[6],board[7],board[8],'UDRD'] elif blankspace == 5 : successors = [board[0],board[1],0,board[3],board[4],board[2],board[6],board[7],board[8],'UDRU'\ ,board[0],board[1],board[2],board[3],0,board[4],board[6],board[7],board[8],'UDRL' ,board[0],board[1],board[2],board[3],board[4],board[8],board[6],board[7],0,'UDRD'] elif blankspace == 6 : successors = [board[0],board[1],board[2],0,board[4],board[5],board[3],board[7],board[8],'UDRU' ,board[0],board[1],board[2],board[3],board[4],board[5],board[7],0,board[8],'UDRR'] elif blankspace == 7 : successors = [board[0],board[1],board[2],board[3],0,board[5],board[6],board[4],board[8],'UDRU'\ ,board[0],board[1],board[2],board[3],board[4],board[5],0,board[6],board[8],'UDRL' ,board[0],board[1],board[2],board[3],board[4],board[5],board[6],board[8],0,'UDRR'] return successors #------------------------------------------ |
# 633xxxxx21 339 (2020-09-20 16:03) def gen_successors(node): successors = [] n = len(node) if 0 in node: ch = node.index(0) if ch == 0: #R,D for i in range(n): successors.append(node[i]) successors[0],successors[1] = successors[1],successors[0] a = successors.pop(-1) successors.append(a + 'R') for i in range(n): successors.append(node[i]) successors[10],successors[13] = successors[13],successors[10] a = successors.pop(-1) successors.append(node[-1] + 'D') if ch == 1: #R,L,D for i in range(n): successors.append(node[i]) successors[1],successors[2] = successors[2],successors[1] a = successors.pop(-1) successors.append(a +'R') for i in range(n): successors.append(node[i]) successors[11],successors[10] = successors[10],successors[11] a = successors.pop(-1) successors.append(a + 'L') for i in range(n): successors.append(node[i]) successors[21],successors[24] = successors[24],successors[21] a = successors.pop(-1) successors.append(a + 'D') if ch == 2: #L,D for i in range(n): successors.append(node[i]) successors[2],successors[1] = successors[1],successors[2] a = successors.pop(-1) successors.append(a + 'L') for i in range(n): successors.append(node[i]) successors[12],successors[15] = successors[15],successors[12] a = successors.pop(-1) successors.append(node[-1] + 'D') if ch == 3: #R,U,D for i in range(n): successors.append(node[i]) successors[3],successors[4] = successors[4],successors[3] a = successors.pop(-1) successors.append(a + 'R') for i in range(n): successors.append(node[i]) successors[13],successors[10] = successors[10],successors[13] a = successors.pop(-1) successors.append(a + 'U') for i in range(n): successors.append(node[i]) successors[23],successors[26] = successors[26],successors[23] a = successors.pop(-1) successors.append(a + 'D') if ch == 4: #R,L,U,D for i in range(n): successors.append(node[i]) successors[4],successors[5] = successors[5],successors[4] a = successors.pop(-1) successors.append(a + 'R') for i in range(n): successors.append(node[i]) successors[14],successors[13] = successors[13],successors[14] a = successors.pop(-1) successors.append(a + 'L') for i in range(n): successors.append(node[i]) successors[24],successors[21] = successors[21],successors[24] a = successors.pop(-1) successors.append(a + 'U') for i in range(n): successors.append(node[i]) successors[34],successors[37] = successors[37],successors[34] a = successors.pop(-1) successors.append(a + 'D') if ch == 5: #L,U,D for i in range(n): successors.append(node[i]) successors[5],successors[4] = successors[4],successors[5] a = successors.pop(-1) successors.append(a + 'L') for i in range(n): successors.append(node[i]) successors[15],successors[12] = successors[12],successors[15] a = successors.pop(-1) successors.append(a + 'U') for i in range(n): successors.append(node[i]) successors[25],successors[28] = successors[28],successors[25] a = successors.pop(-1) successors.append(a + 'D') if ch == 6: #R,U for i in range(n): successors.append(node[i]) successors[6],successors[7] = successors[7],successors[6] a = successors.pop(-1) successors.append(a + 'R') for i in range(n): successors.append(node[i]) successors[16],successors[13] = successors[13],successors[16] a = successors.pop(-1) successors.append(node[-1] + 'U') if ch == 7: #R,L,U for i in range(n): successors.append(node[i]) successors[7],successors[8] = successors[8],successors[7] a = successors.pop(-1) successors.append(a + 'R') for i in range(n): successors.append(node[i]) successors[17],successors[16] = successors[16],successors[17] a = successors.pop(-1) successors.append(a + 'L') for i in range(n): successors.append(node[i]) successors[27],successors[24] = successors[24],successors[27] a = successors.pop(-1) successors.append(a + 'U') if ch == 8: #L,U for i in range(n): successors.append(node[i]) successors[8],successors[7] = successors[7],successors[8] a = successors.pop(-1) successors.append(a + 'L') for i in range(n): successors.append(node[i]) successors[18],successors[15] = successors[15],successors[18] a = successors.pop(-1) successors.append(node[-1] + 'U') return successors #------------------------------------------ |
# 633xxxxx21 340 (2020-09-20 22:29) def gen_successors(node): successors = [] import copy n1=copy.copy(node) n2=copy.copy(node) n3=copy.copy(node) n4=copy.copy(node) #มุมบนซ้าย if node.index(0)==0: #ขวาา n1[9]+='R' n1[0],n1[1]=n1[1],n1[0] successors+=n1 #ลงงง n2[9]+='D' n2[0],n2[3]=n2[3],n2[0] successors+=n2 #กลางแถวบน elif node.index(0)==1: #ซ้าย n1[9]+='L' n1[1],n1[0]=n1[0],n1[1] successors+=n1 #ลงงง n2[9]+='D' n2[1],n2[4]=n2[4],n2[1] successors+=n2 #ขวาา n3[9]+='R' n3[1],n3[2]=n3[2],n3[1] successors+=n3 #แถวบนขวา elif node.index(0)==2: #ซ้ายย n1[9]+='L' n1[2],n1[1]=n1[1],n1[2] successors+=n1 #ลงงง n2[9]+='U' n2[2],n2[5]=n2[5],n2[2] successors+=n2 #แถวกลางซ้าย elif node.index(0)==3: #ซ้าย n1[9]+='L' n1[3],n1[4]=n1[4],n1[3] successors+=n1 #ลงงง n2[9]+='D' n2[3],n2[6]=n2[6],n2[3] successors+=n2 #ขึ้นน n3[9]+='U' n3[3],n3[0]=n3[0],n3[3] successors+=n3 #อันกลาง elif node.index(0)==4: #ซ้าย n1[9]+='L' n1[4],n1[3]=n1[3],n1[4] successors+=n1 #ลงงง n2[9]+='D' n2[4],n2[7] =n2[7],n2[4] successors+=n2 #ขึ้นน n3[9]+='U' n3[4],n3[1]=n3[1],n3[4] successors+=n3 #ขวาา n4[9]+='R' n4[4],n4[5]=n4[5],n4[4] successors+=n4 #แถวกลางขวา elif node.index(0)==5: #ลงงง n1[9]+='D' n1[5],n1[8]=n1[8],n1[5] successors+=n1 #ขึ้นน n2[9]+='U' n2[5],n2[2]=n2[2],n2[5] successors+=n2 #ขวาา n3[9]+='R' n3[5],n3[4]=n3[4],n3[5] successors+=n3 #แถวล่างซ้าย elif node.index(0)==6: #ขวาา n1[9]+='R' n1[6],n1[7]=n1[7],n1[6] successors+=n1 #ขึ้นน n2[9]+='U' n2[6],n2[3]=n2[3],n2[6] successors+=n2 #กลางแถวล่าง elif node.index(0)==7: #ซ้ายย n1[9]+='L' n1[7],n1[6]=n1[6],n1[7] successors+=n1 #ขึ้นน n2[9]+='U' n2[7],n2[4]=n2[4],n2[7] successors+=n2 #ขวาา n3[9]+='R' n3[7],n3[8]=n3[8],n3[7] successors+=n3 #แถวล่างขวา elif node.index(0)==8: #ซ้ายย n1[9]+='L' n1[8],n1[7]=n1[7],n1[8] successors+=n1 #ขึ้นน n2[9]+='U' n2[8],n2[5]=n2[5],n2[8] successors+=n2 return successors #------------------------------------------ |
# 633xxxxx21 341 (2020-09-20 21:47) def gen_successors(node): successors = [] # print(node) index = node.index(0) movement = ["U","R","L","D"] if index + 1 > 8: movement.remove("R") if index - 1 < 0: movement.remove("L") if index + 3 > 8: movement.remove("D") if index - 3 < 0: movement.remove("U") Unode = node.copy() Dnode = node.copy() Lnode = node.copy() Rnode = node.copy() for i in movement: if i == "U": temp = Unode[index - 3] Unode[index - 3] = Unode[index] Unode[index] = temp Unode[-1] = Unode[-1] + "U" successors = successors + Unode elif i == "D": temp = Dnode[index + 3] Dnode[index + 3] = Dnode[index] Dnode[index] = temp Dnode[-1] = Dnode[-1] + "D" successors = successors + Dnode elif i == "L": temp = Lnode[index - 1] Lnode[index - 1] = Lnode[index] Lnode[index] = temp Lnode[-1] = Lnode[-1] + "L" successors = successors + Lnode elif i == "R": temp = Rnode[index + 1] Rnode[index + 1] = Rnode[index] Rnode[index] = temp Rnode[-1] = Lnode[-1] + "R" successors = successors + Rnode return successors #------------------------------------------ |
# 633xxxxx21 342 (2020-09-20 02:21) def gen_successors(node): successors = [] X=node[:9] Y=node[-1] ZERO = node.index(0) m=0 Z = '' if ZERO in [0,1,2]: m+= 1 Z+= 'D' if ZERO in [3,4,5]: m+= 2 Z+= 'UD' if ZERO in [6,7,8]: m+= 1 Z+= 'U' if ZERO in [0,3,6]: m+= 1 Z+= 'R' if ZERO in [1,4,7]: m+= 2 Z+= 'RL' if ZERO in [2,5,8]: m+= 1 Z+= 'L' for e in range(m): if Z[e] == 'L': X[ZERO],X[ZERO-1] = X[ZERO-1], X[ZERO] for e in X: successors+= [e] Y+= 'L' successors+=[Y] elif Z[e] == 'R': X[ZERO],X[ZERO+1] = X[ZERO+1], X[ZERO] for e in X: successors+= [e] Y+= 'R' successors+=[Y] elif Z[e] == 'D': X[ZERO],X[ZERO+3] = X[ZERO+3],X[ZERO] for e in X: successors+= [e] Y+= 'D' successors+=[Y] elif Z[e] == 'U': X[ZERO],X[ZERO-3] = X[ZERO-3],X[ZERO] for e in X: successors+= [e] Y+= 'U' successors+=[Y] X =node[0:9] Y =node[-1] return successors #------------------------------------------ |
# 633xxxxx21 343 (2020-09-20 12:27) def gen_successors(node): successors = [] n = check_N(node) x = node.index(0) if x == 0: #มุมซ้ายบน D = Down_0(node) R = Right_0(node) successors += D+R elif x == n-1: #มุมขวาบน D = Down_0(node) L = Left_0(node) successors += D+L elif x == n**2-n: #มุมซ้ายล่าง U = Up_0(node) R = Right_0(node) successors += U+R elif x == n**2-1: #มุมขวาล่าง U = Up_0(node) L = Left_0(node) successors += U+L elif 0 < x < n-1: #ขอบบน D = Down_0(node) R = Right_0(node) L = Left_0(node) successors += D+R+L elif x%n == 0 and x != n**2 and x != 0 and x != n**2-n: #ขอบซ้าย U = Up_0(node) D = Down_0(node) R = Right_0(node) successors += U+D+R elif x%n == n-1 and x != n-1 and x != n**2-1: #ขอบขวา U = Up_0(node) D = Down_0(node) L = Left_0(node) successors += U+D+L elif n**2-n < x < n**2-1: #ขอบล่าง U = Up_0(node) R = Right_0(node) L = Left_0(node) successors += U+R+L elif x == n**2 : pass else: #ตรงกลาง U = Up_0(node) D = Down_0(node) R = Right_0(node) L = Left_0(node) successors += U+D+R+L return successors #------------------------------------------ def check_N(node): N = int((len(node[:-1]))**(1/2)) return N def Left_0(d): x = d.index(0) d1 = list(d) d1[x],d1[x-1] = d1[x-1],d1[x] d1[-1] += 'L' return d1 def Down_0(d): n = check_N(d) x = d.index(0) d1 = list(d) if x < n**2-n: d1[x],d1[x+n] = d1[x+n],d1[x] d1[-1] += 'D' return d1 def check_N(node): N = int((len(node[:-1]))**(1/2)) return N def Right_0(d): x = d.index(0) d1 = list(d) d1[x],d1[x+1] = d1[x+1],d1[x] d1[-1] += 'R' return d1 def Up_0(d): n = check_N(d) x = d.index(0) d1 = list(d) d1[x],d1[x-n] = d1[x-n],d1[x] d1[-1] += 'U' return d1 def check_N(node): N = int((len(node[:-1]))**(1/2)) return N |
# 633xxxxx21 344 (2020-09-20 20:08) def gen_successors(node): successors = [] a = []; b = []; c = []; d = [] a[:] = node; b[:] = node; c[:] = node; d[:] = node if 0 in [node[0],node[2],node[6],node[8]]: if node[0] == 0: a[0],a[3] = a[3],a[0] a[-1] += 'D' b[0],b[1] = b[1],b[0] b[-1] += 'R' elif node[2] == 0: a[2],a[5] = a[5],a[2] a[-1] += 'D' b[1],b[2] = b[2],b[1] b[-1] += 'L' elif node[6] == 0: a[3],a[6] = a[6],a[3] a[-1] += 'U' b[6],b[7] = b[7],b[6] b[-1] += 'R' else: a[8],a[5] = a[5],a[8] a[-1] += 'U' b[8],b[7] = b[7],b[8] b[-1] += 'L' for e in a: successors.append(e) for e in b: successors.append(e) elif 0 in [node[1],node[3],node[5],node[7]]: if node[1] == 0: a[1],a[4] = a[4],a[1] a[-1] += 'D' b[0],b[1] = b[1],b[0] b[-1] += 'L' c[1],c[2] = c[2],c[1] c[-1] += 'R' elif node[3] == 0: a[3],a[0] = a[0],a[3] a[-1] += 'U' b[3],b[6] = b[6],b[3] b[-1] += 'D' c[3],c[4] = c[4],c[3] c[-1] += 'R' elif node[5] == 0: a[5],a[2] = a[2],a[5] a[-1] += 'U' b[5],b[8] = b[8],b[5] b[-1] += 'D' c[5],c[4] = c[4],c[5] c[-1] += 'L' else: a[7],a[4] = a[4],a[7] a[-1] += 'U' b[7],b[6] = b[6],b[7] b[-1] += 'L' c[7],c[8] = c[8],c[7] c[-1] += 'R' for e in a: successors.append(e) for e in b: successors.append(e) for e in c: successors.append(e) else: a[4],a[1] = a[1],a[4] a[-1] += 'U' b[4],b[7] = b[7],b[4] b[-1] += 'D' c[4],c[3] = c[3],c[4] c[-1] += 'L' d[4],d[5] = d[5],d[4] d[-1] += 'R' for e in a: successors.append(e) for e in b: successors.append(e) for e in c: successors.append(e) for e in d: successors.append(e) return successors #------------------------------------------ |
# 633xxxxx21 345 (2020-09-20 19:39) def gen_successors(node): r = len(node)-1 rn = int(r**0.5) successors = [] cnode = [] for c in node: cnode.append(c) if node[0] == 0: cnode[0], cnode[rn] = cnode[rn], 0 cnode[-1] += 'D' for e in cnode: successors.append(e) cnode = node cnode[0], cnode[1] = cnode[1], 0 cnode[-1] += 'R' for e in cnode: successors.append(e) elif 0 in node[1:rn-1]: n = node.index(0) cnode[n], cnode[n+rn] = cnode[n+rn], 0 cnode[-1] += 'D' for e in cnode: successors.append(e) cnode = [] for c in node: cnode.append(c) cnode[n], cnode[n-1] = cnode[n-1], 0 cnode[-1] += 'L' for e in cnode: successors.append(e) cnode = node cnode[n], cnode[n+1] = cnode[n+1], 0 cnode[-1] += 'R' for e in cnode: successors.append(e) elif node[rn-1] == 0: cnode[rn-1], cnode[2*rn-1] = cnode[2*rn-1], 0 cnode[-1] += 'D' for e in cnode: successors.append(e) cnode = node cnode[rn-1], cnode[rn-2] = cnode[rn-2], 0 cnode[-1] += 'L' for e in cnode: successors.append(e) elif 0 in node[rn:r-rn:rn]: n = node.index(0) cnode[n], cnode[n-rn] = cnode[n-rn], 0 cnode[-1] += 'U' for e in cnode: successors.append(e) cnode = [] for c in node: cnode.append(c) cnode[n], cnode[n+rn] = cnode[n+rn], 0 cnode[-1] += 'D' for e in cnode: successors.append(e) cnode = node cnode[n], cnode[n+1] = cnode[n+1], 0 cnode[-1] += 'R' for e in cnode: successors.append(e) elif node[2*rn-1:r-1:rn] == 0: n = node.index(0) cnode[n], cnode[n-rn] = cnode[n-rn], 0 cnode[-1] += 'U' for e in cnode: successors.append(e) cnode = [] for c in node: cnode.append(c) cnode[n], cnode[n+rn] = cnode[n+rn], 0 cnode[-1] += 'D' for e in cnode: successors.append(e) cnode = node cnode[n], cnode[n-1] = cnode[n-1], 0 cnode[-1] += 'L' for e in cnode: successors.append(e) elif node[r-rn] == 0: cnode[r-rn], cnode[r-rn*2] = cnode[r-rn*2], 0 cnode[-1] += 'U' for e in cnode: successors.append(e) cnode = node cnode[r-rn], cnode[r-rn+1] = cnode[r-rn+1], 0 cnode[-1] += 'R' for e in cnode: successors.append(e) elif 0 in node[r-rn+1:r-1]: n = node.index(0) cnode[n], cnode[n-rn] = cnode[n-rn], 0 cnode[-1] += 'U' for e in cnode: successors.append(e) cnode = [] for c in node: cnode.append(c) cnode[n], cnode[n-1] = cnode[n-1], 0 cnode[-1] += 'L' for e in cnode: successors.append(e) cnode = node cnode[n], cnode[n+1] = cnode[n+1], 0 cnode[-1] += 'R' for e in cnode: successors.append(e) elif node[r-1] == 0: cnode[r-1], cnode[r-rn-1] = cnode[r-rn-1], 0 cnode[-1] += 'U' for e in cnode: successors.append(e) cnode = node cnode[r-1], cnode[r-2] = cnode[r-2], 0 cnode[-1] += 'L' for e in cnode: successors.append(e) else: n = node.index(0) cnode[n], cnode[n-rn] = cnode[n-rn], 0 cnode[-1] += 'U' for e in cnode: successors.append(e) cnode = [] for c in node: cnode.append(c) cnode[n], cnode[n+rn] = cnode[n+rn], 0 cnode[-1] += 'D' for e in cnode: successors.append(e) cnode = [] for c in node: cnode.append(c) cnode[n], cnode[n-1] = cnode[n-1], 0 cnode[-1] += 'L' for e in cnode: successors.append(e) cnode = node cnode[n], cnode[n+1] = cnode[n+1], 0 cnode[-1] += 'R' for e in cnode: successors.append(e) return successors #------------------------------------------ |
# 633xxxxx21 346 (2020-09-18 20:10) def gen_successors(node): successors = [] i = node.index(0) N = int((len(node)-1)**0.5) if not 0 <= i <= N-1 : x = list(node) x[i],x[i-N] = x[i-N],x[i] x[-1] = node[-1] +'U' successors += list(x) if not N*(N-1) <= i <= (N**2)-1 : x = list(node) x[i],x[i+N] = x[i+N],x[i] x[-1] = node[-1] +'D' successors += list(x) if i%N != 0 : x = list(node) x[i],x[i-1] = x[i-1],x[i] x[-1] = node[-1] +'L' successors += list(x) if (i+1)%N != 0 : x = list(node) x[i],x[i+1] = x[i+1],x[i] x[-1] = node[-1] +'R' successors += list(x) return successors #------------------------------------------ |
# 633xxxxx21 347 (2020-09-20 03:07) def gen_successors(node): successors = [] zeroIdx=node.index(0) N=int((len(node)-1)**0.5) #U if (zeroIdx>=N): tmp=list(node) tmp[len(node)-1]+="U" tmp[zeroIdx],tmp[zeroIdx-N]=tmp[zeroIdx-N],tmp[zeroIdx] for i in tmp: successors.append(i) #D if (zeroIdx<=len(node)-1-1-N): tmp=list(node) tmp[len(node)-1]+="D" tmp[zeroIdx],tmp[zeroIdx+N]=tmp[zeroIdx+N],tmp[zeroIdx] for i in tmp: successors.append(i) #L if (zeroIdx%N!=0): tmp=list(node) tmp[len(node)-1]+="L" tmp[zeroIdx],tmp[zeroIdx-1]=tmp[zeroIdx-1],tmp[zeroIdx] for i in tmp: successors.append(i) #R if (zeroIdx%N!=N-1): tmp=list(node) tmp[len(node)-1]+="R" tmp[zeroIdx],tmp[zeroIdx+1]=tmp[zeroIdx+1],tmp[zeroIdx] for i in tmp: successors.append(i) return successors #------------------------------------------ |
# 633xxxxx21 348 (2020-09-20 16:43) def gen_successors(node): successors=[] i=node.index(0) N=int(len(node[:-1])**0.5) if i in [0, N-1, N*(N-1), N**2-1]:#M==2 if i==0: #DR node1=[e for e in node];node2=[e for e in node] node1[i],node1[i+N]=node1[i+N],node1[i] node1[-1]+='D' node2[i],node2[i+1]=node2[i+1],node2[i] node2[-1]+='R' successors+=node1+node2 elif i==N-1: #LD node1=[e for e in node];node2=[e for e in node] node1[i],node1[i-1]=node1[i-1],node1[i] node1[-1]+='L' node2[i],node2[i+N]=node2[i+N],node2[i] node2[-1]+='D' successors+=node1+node2 elif i==N*(N-1): #UR node1=[e for e in node];node2=[e for e in node] node1[i],node1[i-N]=node1[i-N],node1[i] node1[-1]+='U' node2[i],node2[i+1]=node2[i+1],node2[i] node2[-1]+='R' successors+=node1+node2 elif i==N**2-1: #LU node1=[e for e in node];node2=[e for e in node] node1[i],node1[i-1]=node1[i-1],node1[i] node1[-1]+='L' node2[i],node2[i-N]=node2[i-N],node2[i] node2[-1]+='U' successors+=node1+node2 elif 1<=i<=N-2 or i%N==0 or (i+1)%N==0 or N**2-N+1<=i<=N**2-2 :#M==3 if 1<=i<=N-2: #DRL node1=[e for e in node];node2=[e for e in node] node3=[e for e in node] node1[i],node1[i+N]=node1[i+N],node1[i] node1[-1]+='D' node2[i],node2[i+1]=node2[i+1],node2[i] node2[-1]+='R' node3[i],node3[i-1]=node3[i-1],node3[i] node3[-1]+='L' successors+=node1+node2+node3 elif i%N==0: #UDR node1=[e for e in node];node2=[e for e in node] node3=[e for e in node] node1[i],node1[i-N]=node1[i-N],node1[i] node1[-1]+='U' node2[i],node2[i+N]=node2[i+N],node2[i] node2[-1]+='D' node3[i],node3[i+1]=node3[i+1],node3[i] node3[-1]+='R' successors+=node1+node2+node3 elif (i+1)%N==0: #UDL node1=[e for e in node];node2=[e for e in node] node3=[e for e in node] node1[i],node1[i-N]=node1[i-N],node1[i] node1[-1]+='U' node2[i],node2[i+N]=node2[i+N],node2[i] node2[-1]+='D' node3[i],node3[i-1]=node3[i-1],node3[i] node3[-1]+='L' successors+=node1+node2+node3 elif N**2-N+1<=i<=N**2-2: #URL node1=[e for e in node];node2=[e for e in node] node3=[e for e in node] node1[i],node1[i-N]=node1[i-N],node1[i] node1[-1]+='U' node2[i],node2[i+1]=node2[i+1],node2[i] node2[-1]+='R' node3[i],node3[i-1]=node3[i-1],node3[i] node3[-1]+='L' successors+=node1+node2+node3 else:#M==4 #URLD node1=[e for e in node];node2=[e for e in node] node3=[e for e in node];node4=[e for e in node] node1[i],node1[i-N]=node1[i-N],node1[i] node1[-1]+='U' node2[i],node2[i+1]=node2[i+1],node2[i] node2[-1]+='R' node3[i],node3[i-1]=node3[i-1],node3[i] node3[-1]+='L' node4[i],node4[i+N]=node4[i+N],node4[i] node4[-1]+='D' successors+=node1+node2+node3+node4 return successors #------------------------------------------ |
# 633xxxxx21 349 (2020-09-19 20:16) def gen_successors(node): successors = [] U = list(node) D = list(node) L = list(node) R = list(node) LS = [] RS = [] i0 = node.index(0) N = int((len(node)-1)**0.5) for i in range (N,N*N,N): LS.append(i) for i in range (2*N-1,N*N,N): RS.append(i) if i0 == 0: # m = 2 D,R i = D.pop(N+i0) D.insert(N+i0,0) D.remove(0) D.insert(i0,i) D[-1] += "D" successors += D i = R.pop(i0+1) R.insert(i0+1,0) R.remove(0) R.insert(i0,i) R[-1] += "R" successors += R elif i0 == N-1: #m = 2 D,L i = D.pop(N+i0) D.insert(N+i0,0) D.remove(0) D.insert(i0,i) D[-1] += "D" successors += D i = L.pop(i0-1) L.insert(i0-1,0) L.remove(0) L.insert(i0,i) L[-1] += "L" successors += L elif i0 == N*(N-1): #m = 2 U,R i = U.pop(i0-N) U.remove(0) U.insert(i0-N,0) U.insert(i0,i) U[-1] += "U" successors += U i = R.pop(i0+1) R.insert(i0+1,0) R.remove(0) R.insert(i0,i) R[-1] += "R" successors += R elif i0 == (N**2)-1: #m = 2 U,L i = U.pop(i0-N) U.remove(0) U.insert(i0-N,0) U.insert(i0,i) U[-1] += "U" successors += U i = L.pop(i0-1) L.insert(i0-1,0) L.remove(0) L.insert(i0,i) L[-1] += "L" successors += L elif i0 in LS : #m = 3 U,D,R i = U.pop(i0-N) U.remove(0) U.insert(i0-N,0) U.insert(i0,i) U[-1] += "U" successors += U i = D.pop(N+i0) D.insert(N+i0,0) D.remove(0) D.insert(i0,i) D[-1] += "D" successors += D i = R.pop(i0+1) R.insert(i0+1,0) R.remove(0) R.insert(i0,i) R[-1] += "R" successors += R elif i0 in RS : #m = 3 U,D,L i = U.pop(i0-N) U.remove(0) U.insert(i0-N,0) U.insert(i0,i) U[-1] += "U" successors += U i = D.pop(N+i0) D.insert(N+i0,0) D.remove(0) D.insert(i0,i) D[-1] += "D" successors += D i = L.pop(i0-1) L.insert(i0-1,0) L.remove(0) L.insert(i0,i) L[-1] += "L" successors += L elif 0 < i0 < N-1: #m = 3 D,L,R i = D.pop(N+i0) D.insert(N+i0,0) D.remove(0) D.insert(i0,i) D[-1] += "D" successors += D i = L.pop(i0-1) L.insert(i0-1,0) L.remove(0) L.insert(i0,i) L[-1] += "L" successors += L i = R.pop(i0+1) R.insert(i0+1,0) R.remove(0) R.insert(i0,i) R[-1] += "R" successors += R elif N*(N-1) < i0 < (N**2)-1: #m = 3 D,L,R i = U.pop(i0-N) U.remove(0) U.insert(i0-N,0) U.insert(i0,i) U[-1] += "U" successors += U i = L.pop(i0-1) L.insert(i0-1,0) L.remove(0) L.insert(i0,i) L[-1] += "L" successors += L i = R.pop(i0+1) R.insert(i0+1,0) R.remove(0) R.insert(i0,i) R[-1] += "R" successors += R else: i = U.pop(i0-N) U.remove(0) U.insert(i0-N,0) U.insert(i0,i) U[-1] += "U" successors += U i = D.pop(N+i0) D.insert(N+i0,0) D.remove(0) D.insert(i0,i) D[-1] += "D" successors += D i = L.pop(i0-1) L.insert(i0-1,0) L.remove(0) L.insert(i0,i) L[-1] += "L" successors += L i = R.pop(i0+1) R.insert(i0+1,0) R.remove(0) R.insert(i0,i) R[-1] += "R" successors += R return successors #------------------------------------------ |
# 633xxxxx21 350 (2020-09-18 16:20) def gen_successors(node): successors = [] #รับได้NxNช่อง indx=node.index(0) N=int((len(node)-1)**0.5) Up=node[:-1:]+[node[-1]+"U"] Up[indx],Up[indx-N]=Up[indx-N],Up[indx] Down=node[:-1:]+[node[-1]+"D"] Down[indx],Down[(indx+N)%len(Down)]=Down[(indx+N)%len(Down)],Down[indx] Right=node[:-1:]+[node[-1]+"R"] Right[indx],Right[indx+1]=Right[indx+1],Right[indx] Left=node[:-1:]+[node[-1]+"L"] Left[indx],Left[indx-1]=Left[indx-1],Left[indx] #conner lefttop=[0] righttop=[N-1] leftbot=[N**2-N] rightbot=[N**2-1] conner=lefttop+righttop+leftbot+rightbot #side leftside=[int(e)*N for e in range(1,N-1)] rightside=[int(e)+N-1 for e in leftside] topside=[int(e) for e in range(1,N-1)] downside=[int(e) for e in range(N**2-N+1,N**2-1)] side=leftside+rightside+topside+downside if indx in conner: if indx in lefttop: successors=Down+Right elif indx in righttop: successors=Down+Left elif indx in leftbot: successors=Right+Up elif indx in rightbot: successors=Left+Up elif indx in side: if indx in leftside: successors=Down+Right+Up elif indx in rightside: successors=Down+Left+Up elif indx in topside: successors=Right+Left+Down elif indx in downside: successors=Left+Up+Right else:#in mid successors=Up+Down+Left+Right return successors #------------------------------------------ |
# 633xxxxx21 351 (2020-09-20 21:34) def gen_successors(node): successors = [] u = [] d = [] l = [] r = [] slot = [e for e in range(0,len(node)-1,1)] N = int(len(board)**0.5) for i in range(N,len(slot),1): u.append(i) for j in range(0,len(slot)-N,1): d.append(j) for k in range(1,len(slot),N): for f in range(k,k+N-1,1): l.append(f) for m in range(0,len(slot),N): for t in range(m,m+N-1,1): r.append(t) q = node.index(0) temp = list(node[:-1]) temppath = node[-1] if q in u : node[-1] += "U" node[q-N],node[q] = node[q],node[q-N] for i in range(0,len(node)): successors.append(node[i]) node = temp + [temppath] if q in d : node[-1] += "D" node[q+N],node[q] = node[q],node[q+N] for i in range(0,len(node)): successors.append(node[i]) node = temp + [temppath] if q in l : node[-1] += "L" node[q-1],node[q] = node[q],node[q-1] for i in range(0,len(node)): successors.append(node[i]) node = temp + [temppath] if q in r : node[-1] += "R" node[q+1],node[q] = node[q],node[q+1] for i in range(0,len(node)): successors.append(node[i]) node = temp + [temppath] return successors #------------------------------------------ |