ฉันกำลังพยายามทำ 8 ปริศนาเป็นคนแก้ปัญหาโดยใช้ต่างกันดร.ปาร์,อย่างเช่น BFS,DFS มี*เป็นต้น ใช้ไพธอน. สำหรับคนที่ไม่คุ้นเคยกับปัญหา,8 ปริศนาปัญหาคือเกม consisting 3 ของแถวและ 3 ๆคอลัมน์ คุณสามารถย้ายเปล่าหั่นชิ้นเรียงต่อเนื่องเดียวที่พอเหมาะทางแนวนอนหรือทางแนวตั้ง,0 เป็นตัวแทนของว่างหั่นชิ้นเรียงต่อเนื่อง. มันดูเหมือนนี้(ฉันไม่สามารถเพิ่มภาพต่างๆเนื่องจากบัญชีของฉันชื่อเสียงของ):
https://miro.medium.com/max/679/1*yekmcvT48y6mB8dIcK967Q.แฟ้มภาพประเภท pngname
initial_state = [0,1,3,4,2,5,7,8,6]
goal_state = [1,2,3,4,5,6,7,8,0]
def find_zero(state):
global loc_of_zero
loc_of_zero = (state.index(0))
def swap_positions(list, pos1, pos2):
first = list.pop(pos1)
second = list.pop(pos2-1)
list.insert(pos1,second)
list.insert(pos2,first)
return list
def find_new_nodes(state):
if loc_of_zero == 0:
right = swap_positions(initial_state,0,1)
left = swap_positions(initial_state,0,3)
return(right,left)
find_zero(initial_state)
print(find_new_nodes(initial_state))
ปัญหาที่ฉันมีคือเรื่องนี้ฉันต้องการฟังก์ชัน"find_new_nodes(เมือง)"คืน 2 ต่างออกรายการดังนั้นฉันสามารถเลือกส่วนใหญ่มีความหวังขึ้นโหนดมันขึ้นอยู่กับอัลกอริธึม)สืบทอดต่อๆกันมา แต่การส่งออกของฉันต้องใช้รหัสของสองคนเหมือนรายการ
นี่คือของฉันแสดงผล: ([4, 0, 3, 1, 2, 5, 7, 8, 6], [4, 0, 3, 1, 2, 5, 7, 8, 6])
ผมสามารถทำอะไรเพื่อทำให้มันกลับมา 2 ต่างออกรายชื่อเหรอ เป้าหมายของผมคือการได้กลับมาทั้งหมดเท่าที่ทำได้เลื่อนขึ้นอยู่กับที่ 0 คือการใช้ find_new_nodes ฟังก์ชัน. ขอโทษถ้ามันเป็นคำถามง่ายๆนี่เป็นครั้งแรกที่ฉันทำโครงการนี้ค่อนข้างซับซ้อน