কম্পিউটার টিউটোরিয়াল

পাইথনে ক্রমবর্ধমান ক্রমে খুলতে পারে এমন কার্ড সাজানোর প্রোগ্রাম


মান लीजिए हमारे पास कार्ड्स की एक सूची है, और हम उन्हें इस तरह व्यवस्थित करना चाहते हैं कि वे आरोही क्रम में प्रकट हों। जैसा कि हम जानते हैं, कार्ड्स इस तरीके से प्रकट होते हैं: 1. शीर्ष कार्ड को हटाकर प्रकट किया जाता है और फिर अगला कार्ड पीछे चला जाता है। 2. चरण 1 को तब तक दोहराया जाता है जब तक कोई कार्ड नहीं बचता। हमें कार्ड्स का एक ऐसा क्रम ढूंढना है जिससे वे आरोही क्रम में प्रकट हों।

उदाहरण के लिए, यदि इनपुट है cards = [1, 2, 3, 4, 5, 6, 7, 8], तो आउटपुट होगा [1, 5, 2, 7, 3, 6, 4, 8], क्योंकि 1 हटाया जाता है और 5 पीछे चला जाता है, वर्तमान स्थिति [2, 7, 3, 6, 4, 8, 5]। 2 हटाया जाता है और 7 पीछे चला जाता है, वर्तमान स्थिति [3, 6, 4, 8, 5, 7]। 3 हटाया जाता है और 6 पीछे चला जाता है, वर्तमान स्थिति [4, 8, 5, 7, 6]। 4 हटाया जाता है और 8 पीछे चला जाता है, वर्तमान स्थिति [5, 7, 6, 8]। 5 हटाया जाता है और 7 पीछे चला जाता है, वर्तमान स्थिति [6, 8, 7]। 6 हटाया जाता है और 8 पीछे चला जाता है, वर्तमान स्थिति [7, 8]। 7 हटाया जाता है और केवल एक कार्ड [8] बचता है। फिर [8] हटाया जाता है।

इसे हल करने के लिए, हम निम्नलिखित चरणों का पालन करेंगे:

  • कार्ड्स की सूची को सॉर्ट करें
  • idx := 0 से कार्ड्स की लंबाई तक के तत्वों वाली एक सूची
  • order := एक नई सूची
  • q := एक कतार और idx के तत्वों को डालें
  • जब तक q शून्येतर है, करें
    • q के बाएं से तत्व को हटाएं और order में डालें
    • यदि q शून्येतर है, तो
  • ans := कार्ड्स के आकार की एक सूची बनाएं, और 0 से भरें
  • order के प्रत्येक तत्व i और कार्ड्स के कार्ड के लिए, करें
    • ans[i] := कार्ड
  • ans वापस करें

बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:

उदाहरण

from collections import deque class Solution:    def solve(self, cards):       cards.sort()       idx=[i for i in range(len(cards))]       order=[]       q=deque(idx)       while q:          order.append(q.popleft())          if q: q.append(q.popleft())       ans=[0 for _ in cards]       for i,card in zip(order,cards):          ans[i]=card       return ans ob = Solution() print(ob.solve([1, 2, 3, 4, 5, 6, 7, 8]))

इनपुट

[1, 2, 3, 4, 5, 6, 7, 8]

आउटपुट

[1, 5, 2, 7, 3, 6, 4, 8]

  1. পাইথনে n রুক বসিয়ে পারস্পরিক আক্রমণ রোধের উপায়ের সংখ্যা খুঁজে বের করার প্রোগ্রাম

  2. পাইথনে তালিকাকে আরোহী বা অবরোহী ক্রমে সাজাতে ন্যূনতম খরচ খুঁজে বের করার প্রোগ্রাম

  3. পাইথনে দিয়ে गये অক্ষरों থেকে বানানো সবচেয়ে বড় শব্দের দৈর্ঘ্য বের করার প্রোগ্রাম

  4. পাইথনে বাক্যের শব্দগুলো ক্রমবর্ধমান কন্ডিশনে সর্ট করার প্রোগ্রাম