मुझे एक बहुत ही छोटा पायथन प्रोग्राम लिखना है जो जांचता है कि निर्देशांक के कुछ समूह सभी एक साथ जुड़े हुए हैं (रेखा से, तिरछे नहीं)। अगले 2 चित्र दिखाते हैं कि मेरा क्या मतलब है। छोड़ दिया चित्र में सभी रंगीन समूहों सही तस्वीर नहीं है, एकजुट कर रहे हैं:जांचें कि मैट्रिक्स में कुछ तत्व एकजुट हैं
मैं पहले से ही कोड के इस टुकड़े कर दिया है, लेकिन यह काम करने के लिए प्रतीत नहीं होता है और मैं काफी अटक कर रहा हूँ, कोई राय कि इसे कैसे ठीक किया जाए?
def cohesive(container):
co = container.pop()
container.add(co)
return connected(co, container)
def connected(co, container):
done = {co}
todo = set(container)
while len(neighbours(co, container, done)) > 0 and len(todo) > 0:
done = done.union(neighbours(co, container, done))
return len(done) == len(container)
def neighbours(co, container, done):
output = set()
for i in range(-1, 2):
if i != 0:
if (co[0] + i, co[1]) in container and (co[0] + i, co[1]) not in done:
output.add((co[0] + i, co[1]))
if (co[0], co[1] + i) in container and (co[0], co[1] + i) not in done:
output.add((co[0], co[1] + i))
return output
इस
कुछ संदर्भ सामग्री है कि True
लौट जाना है:
cohesive({(1, 2), (1, 3), (2, 2), (0, 3), (0, 4)})
और इस False
लौटना चाहिए:
cohesive({(1, 2), (1, 4), (2, 2), (0, 3), (0, 4)})
दोनों परीक्षण काम करते हैं, लेकिन जब मैं अलग से यह परीक्षण करने की कोशिश संख्याओं की संख्या विफल हो जाती है।
आप क्यों जांच नहीं सकते कि सभी तत्वों का एक ही रंग है या नहीं? या यहां तक कि मूल्य? या "विकर्ण रूप से मतलब नहीं है कि {(1,1), (2,2)} को झूठी वापसी की जानी चाहिए? – Pavel
इसके अलावा, आपके उदाहरण प्रश्न पिछड़े हैं क्योंकि उनका मतलब है (y, x) और नहीं (x , वाई), वास्तव में अनजान है, लेकिन मैं बस कह रहा हूं। – Pavel
@ paulpaul1076 वे नहीं हैं (वाई, एक्स) लेकिन (पंक्ति, कॉलम)। यह एक मैट्रिक्स है, यहां तक कि शीर्षक भी कहता है। –