Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

पायथन में 1 से n तक के लेक्सिकोग्राफिक क्रम से kth अनुक्रम ज्ञात करने का प्रोग्राम


मान लीजिए हमारे पास n और k दो मान हैं। अब 1 से n तक की संख्याओं की एक सूची [1, 2, ..., n] पर विचार करें और इस सूची के हर क्रमचय को लेक्सिकोग्राफिक क्रम में उत्पन्न करें। उदाहरण के लिए, यदि n = 4 तो हमारे पास [1234, 1243, 1324, 1342, 1423, 1432, 2134, 2143, 2314, 2341, 2413, 2431, 3124, 3142, 3214, 3241, 3412, 3421, 4123, 4132, 4213, 4231, 4312, 4321] होगा। हमें इस क्रमचय अनुक्रम के kth मान को स्ट्रिंग के रूप में ज्ञात करना है।

इसलिए, यदि इनपुट n = 4 k = 5 जैसा है, तो आउटपुट "1432" होगा।

हल करने के चरण

  • factors() फ़ंक्शन परिभाषित करें। यह num लेगा

    • quo := num

    • res := एक डबल एंडेड क्यू और शुरुआत में 0 डालें

    • i := 2

    • जब तक quo खाली नहीं है, करें

      • quo := (quo / i) का भागफल, rem := quo mod i

      • res के बाएं में rem डालें

      • i := i + 1

    • res लौटाएं

  • मुख्य विधि से निम्नलिखित करें:

    • numbers := 1 से n तक के मानों वाली सूची

    • res := खाली स्ट्रिंग

    • k_fact := factors(k)

    • जब तक k_fact का आकार, numbers के आकार से कम है, करें

      • res := res + numbers के पहले तत्व को स्ट्रिंग में बदलकर, फिर numbers का पहला तत्व हटाएं

    • k_fact में प्रत्येक index के लिए, करें

      • number := numbers का index-वां तत्व, फिर उस तत्व को हटाएं

      • res := res + number

    • res लौटाएं

उदाहरण

from collections import deque

def factors(num):
    quo = num
    res = deque([0])
    i = 2
    while quo:
        quo, rem = divmod(quo, i)
        res.appendleft(rem)
        i += 1
    return res

class Solution:
    def solve(self, n, k):
        numbers = [num for num in range(1, n + 1)]
        res = ""
        k_fact = factors(k)
        while len(k_fact) < len(numbers):
            res += str(numbers.pop(0))
        for index in k_fact:
            number = numbers.pop(index)
            res += str(number)
        return res

ob = Solution()
n = 4
k = 5
print(ob.solve(n, k))

इनपुट

4, 5

आउटपुट

1432
  1. - पायथन में शब्द सूची से एनाग्राम के सबसे बड़े समूह को खोजने का प्रोग्राम

    मान लीजिए हमारे पास words नामक स्ट्रिंग्स की एक सूची है, हमें सभी एनाग्राम को एक साथ समूहित करना है और सबसे बड़े समूह का आकार लौटाना है। उदाहरण के लिए, यदि इनपुट words = [xy, yx, xyz, zyx, yzx, wwwww] है, तो आउटपुट 3 होगा, क्योंकि [xyz, zyx, yzx] सबसे बड़ा समूह है। इसे हल करने के लिए हम निम्न चरणों

  1. - पायथन में सूची से Kवां गायब नंबर खोजने का प्रोग्राम

    मान लीजिए हमारे पास nums नामक सॉर्टेड अद्वितीय संख्याओं की एक सूची और एक पूर्णांक k है। हमें दी गई सूची के पहले तत्व से kवां गायब नंबर ढूंढना है। उदाहरण के लिए, यदि इनपुट nums = [5,6,8,10,11], k = 1 है, तो आउटपुट 9 होगा, क्योंकि 9 दूसरा (इंडेक्स 1) गायब नंबर है। इसे हल करने के लिए हम निम्न चरणों का

  1. - पायथन प्रोग्राम सूची से N सबसे बड़े तत्व खोजने के लिए

    एक पूर्णांक सूची दी गई है, हमारा कार्य सूची में N सबसे बड़े तत्व ढूंढना है। उदाहरण इनपुट : [40, 5, 10, 20, 9] N = 2 आउटपुट: [40, 20] एल्गोरिदम चरण 1: एक पूर्णांक सूची और सबसे बड़ी संख्या की संख्या इनपुट करें। चरण 2: पहले सूची को N बार पार करें। चरण 3: प्रत्येक पारगमन में सबसे बड़ा मान ढूंढें और इसे