सूचकांकों की सूची और पूर्णांकों की शून्य या अधिक सूचियों को देखते हुए, पहले इनपुट से प्रमुख प्राथमिकता के साथ, पूर्णांक में क्रमबद्ध किए गए पूर्णांकों की सूचियों को आउटपुट करते हैं।
उदाहरण
कुंजी इनपुट हो [1, 0, 2]
, और सूची इनपुट हो [[5, 3, 4], [6, 2, 1], [5, 2, 1]]
। उन सूचियों को उनके दूसरे तत्व, फिर पहला तत्व, फिर तीसरा तत्व, आरोही क्रम में क्रमबद्ध किया जाना चाहिए:
- सबसे पहले, हम सूचकांक में मूल्यों के आधार पर छाँटते हैं
1
:[[6, 2, 1], [5, 2, 1], [5, 3, 4]]
- अगला, हम सूचकांक में मूल्यों का उपयोग करते हुए पहले प्रकार से किसी भी संबंध को तोड़ते हैं
0
:[[5, 2, 1], [6, 2, 1], [5, 3, 4]]
- अंत में, हम अनुक्रमणिका पर vlues के साथ किसी भी शेष संबंधों को तोड़ते हैं
2
(यह वास्तव में कुछ भी नहीं बदलता है, क्योंकि कोई संबंध शेष नहीं हैं)।
विवरण
- सॉर्टिंग स्थिर है: यदि दो तत्व दिए गए सॉर्ट कुंजी के संबंध में बराबर की तुलना करते हैं, तो उन्हें आउटपुट में समान सापेक्ष क्रम में रहना चाहिए। उदाहरण के लिए यदि
A
औरB
दिया तरह कुंजी के तहत बराबर हैं, और इनपुट था[..., A, ..., B, ...]
,A
पहले रखा जाना चाहिएB
उत्पादन में। - एक प्रकार की कुंजी इनपुट सूची में से एक में कभी भी गैर-मौजूद तत्व का संदर्भ नहीं देगी।
- किसी प्रकार की कुंजी नहीं दोहराई जाएगी। इस प्रकार,
[1, 2, 1]
सॉर्ट कीज़ की एक मान्य सूची नहीं है। - सॉर्ट कीज़ द्वारा संदर्भित कोई भी तत्व सॉर्टिंग ऑर्डर में कारक नहीं हैं। केवल प्रारंभिक सापेक्ष क्रम और सॉर्ट कुंजी द्वारा संदर्भित तत्वों के मूल्य आउटपुट ऑर्डर निर्धारित करते हैं।
- आप चुन सकते हैं कि सॉर्ट कुंजियाँ शून्य-अनुक्रमित हैं या एक-अनुक्रमित हैं।
- सॉर्ट कुंजी में कोई नकारात्मक मान नहीं होगा। यदि आप एक-इंडेक्सिंग का उपयोग करना चुनते हैं, तो सॉर्ट कुंजी में कोई शून्य नहीं होगा।
- पूर्णांक मान आपकी भाषा की मूल-प्रतिनिधित्व योग्य सीमा से अधिक नहीं होंगे। यदि आपकी चुनी हुई भाषा मूल-परिशुद्धता पूर्णांक (जैसे पायथन) की मूल रूप से सक्षम है, तो कोई भी पूर्णांक मान इनपुट में मौजूद हो सकता है, मेमोरी बाधाओं के अधीन हो सकता है।
संदर्भ कार्यान्वयन (पायथन 2)
#!/usr/bin/env python
keys = input()
lists = input()
print sorted(lists, key=lambda l:[l[x] for x in keys])
परीक्षण के मामलों
प्रारूप: keys lists -> output
। सभी प्रकार की चाबियाँ शून्य-अनुक्रमित हैं।
[1, 0, 2] [[5, 3, 4], [6, 2, 1], [5, 2, 1]] -> [[5, 2, 1], [6, 2, 1], [5, 3, 4]]
[1, 2] [[5, 3, 4], [6, 2, 1], [5, 2, 1]] -> [[6, 2, 1], [5, 2, 1], [5, 3, 4]]
[0, 1] [[1, 2], [2, 1]] -> [[1, 2], [2, 1]]
[1, 0] [[1, 2], [2, 1]] -> [[2, 1], [1, 2]]
[0] [[4], [10, 11, -88], [-2, 7]] -> [[-2, 7], [4], [10, 11, -88]]
[2] [[-1, -5, 8, -1, -4, -10, -5, 4, 4, 6, -8, 4, 2], [-7, 6, 2, -8, -7, 7, -3, 3, 0, -6, 1], [-9, 8, -5, -1, -7, -8, -5, -6, 5, -6, 6]] -> [[-9, 8, -5, -1, -7, -8, -5, -6, 5, -6, 6], [-7, 6, 2, -8, -7, 7, -3, 3, 0, -6, 1], [-1, -5, 8, -1, -4, -10, -5, 4, 4, 6, -8, 4, 2]]
[2, 1] [[9, 2, -2, -10, -6], [3, -4, -2]] -> [[3, -4, -2], [9, 2, -2, -10, -6]]
[2, 4, 8] [[5, -3, 4, -6, -1, -2, -2, -4, 5], [-2, -3, 6, -4, -1, -4, -4, -5, 8, 9, 9, -3, 3, -9, -3], [2, 0, 10, -10, -1, 2, -1, 5, -1, 10, -5], [-7, -8, -6, 7, 3, 8, 6, -7, -2, 0, -6, -4, 4, -3, 2, -3]] -> [[-7, -8, -6, 7, 3, 8, 6, -7, -2, 0, -6, -4, 4, -3, 2, -3], [5, -3, 4, -6, -1, -2, -2, -4, 5], [-2, -3, 6, -4, -1, -4, -4, -5, 8, 9, 9, -3, 3, -9, -3], [2, 0, 10, -10, -1, 2, -1, 5, -1, 10, -5]]
[1, 2, 3, 4, 5] [[-7, 3, -8, 3, 5, -1, 6, -6, 9, 8], [-9, -1, -7, -9, -10, -2, -8, -10, -10, -3], [5, 3, -6, -5, -4, -4, -8, 2], [9, -4, 1, -1, -3, -2], [-6, -10, 4, -10, 6, 6, -1, 3, 0, 0], [1, -2, -7, -6, -7, -7, -1, 0, -4, 3, 3], [7, -1, -7, 2, -2, 9, 7, 5, -6, -8], [1, -5, -3, -10, -7, 9, -8, -5, -1], [-9, 4, -1, -1, 2, 4]] -> [[-6, -10, 4, -10, 6, 6, -1, 3, 0, 0], [1, -5, -3, -10, -7, 9, -8, -5, -1], [9, -4, 1, -1, -3, -2], [1, -2, -7, -6, -7, -7, -1, 0, -4, 3, 3], [-9, -1, -7, -9, -10, -2, -8, -10, -10, -3], [7, -1, -7, 2, -2, 9, 7, 5, -6, -8], [-7, 3, -8, 3, 5, -1, 6, -6, 9, 8], [5, 3, -6, -5, -4, -4, -8, 2], [-9, 4, -1, -1, 2, 4]]
[8, 7, 3, 2, 4, 9, 1] [[8, -5, 1, -6, -1, -4, 6, 10, 10, 6, 9, 5], [4, -8, 6, -10, -2, -3, 2, -6, 9, 5, 4, 10, 2, 3], [10, -1, 3, 0, -4, 1, -5, -4, -1, -7, 9, -9, -1, -5, 7, 8, 9, 6, -3], [0, -9, -7, -2, 2, -5, 7, 4, 6, -4, 1, 8, -7, 10], [5, 6, -9, 0, -1, 5, 4, 7, 5, 10, 2, 5, 7, -9]] -> [[10, -1, 3, 0, -4, 1, -5, -4, -1, -7, 9, -9, -1, -5, 7, 8, 9, 6, -3], [5, 6, -9, 0, -1, 5, 4, 7, 5, 10, 2, 5, 7, -9], [0, -9, -7, -2, 2, -5, 7, 4, 6, -4, 1, 8, -7, 10], [4, -8, 6, -10, -2, -3, 2, -6, 9, 5, 4, 10, 2, 3], [8, -5, 1, -6, -1, -4, 6, 10, 10, 6, 9, 5]]