में प्रतिबंधों के साथ एक सूची को shuffling मुझे Python (3) में प्रतिबंधों के साथ एक सूची यादृच्छिक करने में एक समस्या है। मैंने इससे संबंधित कुछ अन्य प्रश्न देखे हैं, लेकिन उनमें से कोई भी वास्तव में मेरी समस्या का समाधान नहीं कर रहा है। मैं एक नौसिखिया हूँ, इसलिए किसी भी मदद की बहुत सराहना की है!पायथन
मैं दो प्रकार के उत्तेजना का उपयोग करके एक प्रयोग तैयार कर रहा हूं: आकार और रंग (प्रत्येक में से चार)। मैं सभी 16 संयोजनों, जो मैं random.shuffle-समारोह के साथ किया है के क्रमपरिवर्तन उत्पन्न करने के लिए की जरूरत है:
import random
# letters are shapes, numbers are colors
x=["a1","a2","a3","a4","b1","b2","b3","b4","c1","c2","c3","c4","d1","d2","d3","d4"]
random.shuffle(x)
अब तक तो अच्छा। हालांकि, मैं अपने परिणाम में उत्तराधिकार में दो बार प्रकट होने के लिए एक आकार (अक्षर) या रंग (संख्या) से बचना चाहता हूं (उदाहरण के लिए "ए 2" "ए 4" या "सी 2" के बाद "ए 2")।
क्या ऐसा कोई प्रतिबंध बनाने का कोई तरीका है?
अग्रिम धन्यवाद!
अब तक तो अच्छा में एक उचित जवाब देना चाहिए? 'random.shuffle (x) 'कोई नहीं देता है क्योंकि यह जगह में' x' shuffles। इसलिए, 'परिणाम' कोई नहीं होगा। – zondo
यह एक ग्राफ समस्या की तरह लगता है। प्रत्येक नोड में एक ही आकार या रंग (इसलिए (एन -1)^2 किनारों प्रति नोड के अलावा अन्य सभी नोड्स को इंगित करने वाला किनारा होता है)। और फिर आप एक यादृच्छिक ट्रैवर्सल चाहते हैं जो हर चरम पर एक बार हिट करता है - एक हैमिल्टनियन पथ जो मुझे लगता है। –
@ ज़ोंडो ओह ठीक है, इसे इंगित करने के लिए धन्यवाद। मैंने उदाहरण को सही किया है। – Frederik