संपीड़ित विरल पंक्ति (CSR, CRS या येल प्रारूप) का उपयोग करके एक विरल मैट्रिक्स को संपीड़ित करें ।
ये सभी संपीड़न के समान रूप हैं (नए येल को अनदेखा करें)।
इनपुट किसी भी 2d डेटा संरचना (सूची की सूची, आदि) हो सकता है: उदाहरण के लिए
[[0 0 0 0],
[5 8 0 0],
[0 0 3 0],
[0 6 0 0]]
और आउटपुट तीन 1d डेटा संरचना (सूची आदि) होना चाहिए, जो आउटपुट को निरूपित करता है A
, IA
और JA
, उदाहरण के लिए
[5, 8, 3, 6]
[0, 0, 2, 3, 4]
[0, 1, 2, 1,]
इस प्रक्रिया का वर्णन विकिपीडिया द्वारा किया गया है:
सरणी A लंबाई NNZ की है और बाएं से दाएं ऊपर-नीचे ("पंक्ति-प्रमुख") क्रम में M की सभी गैर-अक्षीय प्रविष्टियाँ रखती हैं।
सरणी IA लंबाई m + 1 है। यह इस पुनरावर्ती परिभाषा द्वारा परिभाषित किया गया है:
IA [0] = 0 IA [i] = IA [i - 1] + (मूल मैट्रिक्स में (i - 1) -th रो पर नॉनजरो तत्वों की संख्या)
इस प्रकार, IA के पहले m तत्व M की प्रत्येक पंक्ति में पहले गैर-अक्ष तत्व में से एक में अनुक्रमणिका को संग्रहीत करते हैं, और अंतिम तत्व IA [m] NNZ को संग्रहीत करता है, A में तत्वों की संख्या, जिन्हें इस प्रकार भी माना जा सकता है मैट्रिक्स एम के अंत से परे एक प्रेत पंक्ति के पहले तत्व के ए में सूचकांक। मूल मैट्रिक्स की आई-वें पंक्ति के मूल्यों को ए [आईए [आईए] तत्वों से पढ़ा जाता है। 1] - 1] (दोनों सिरों पर सम्मिलित), यानी अगली पंक्ति के शुरू होने से ठीक पहले एक पंक्ति से अंतिम सूचकांक तक। [५]
तीसरा सरणी, JA, A के प्रत्येक तत्व के M में कॉलम इंडेक्स सम्मिलित करता है और इसलिए NNZ की लंबाई भी है।
यदि आपकी भाषा वास्तविक डेटा संरचनाओं का समर्थन नहीं करती है, तो इनपुट और आउटपुट पाठ हो सकता है।
परीक्षण के मामलों
इनपुट 1:
[[0 0 0 0],
[5 8 0 0],
[0 0 3 0],
[0 6 0 0]]
आउटपुट 1:
[ 5, 8, 3, 6 ]
[ 0, 0, 2, 3, 4 ]
[ 0, 1, 2, 1, ]
इनपुट 2
[[10 20 0 0 0 0],
[0 30 0 40 0 0],
[0 0 50 60 70 0],
[0 0 0 0 0 80]]
आउटपुट 2:
[ 10 20 30 40 50 60 70 80 ]
[ 0 2 4 7 8 ]
[ 0 1 1 3 2 3 4 5 ]
इनपुट 3:
[[0 0 0],
[0 0 0],
[0 0 0]]
आउटपुट 3:
[ ]
[ 0 0 0 0 ]
[ ]
इनपुट 4:
[[1 1 1],
[1 1 1],
[1 1 1]]
आउटपुट 4:
[ 1 1 1 1 1 1 1 1 1 ]
[ 0 3 6 9 ]
[ 0 1 2 0 1 2 0 1 2 ]
इनपुट 5:
[[0 0 0 0],
[5 -9 0 0],
[0 0 0.3 0],
[0 -400 0 0]]
आउटपुट 5:
[ 5, -9, 0.3, -400 ]
[ 0, 0, 2, 3, 4 ]
[ 0, 1, 2, 1, ]
मान लें कि इनपुट में कोई वास्तविक संख्या हो सकती है, तो आपको गणितीय प्रतीकों या घातांक प्रतिनिधित्व पर विचार करने की आवश्यकता नहीं है (उदाहरण 5,000 को 5e3 के रूप में कभी भी दर्ज नहीं किया जाएगा)। आप को संभालने के लिए की जरूरत नहीं होगी inf
, -inf
, NaN
या किसी अन्य 'छद्म संख्या'। आप संख्या का एक अलग प्रतिनिधित्व आउटपुट कर सकते हैं ( यदि आप चुनते हैं तो 5,000 का उत्पादन 5e3 के रूप में हो सकता है)।
स्कोरिंग:
यह एक कोड-गोल्फ , सबसे कम बाइट्स जीतता है।
लीडरबोर्ड
यहां एक नियमित लीडरबोर्ड और भाषा के अनुसार विजेताओं का अवलोकन करने के लिए एक स्टैक स्निपेट है।
यह सुनिश्चित करने के लिए कि आपका उत्तर दिख रहा है, कृपया अपना उत्तर शीर्षक मार्कडाउन टेम्पलेट का उपयोग करके शीर्षक के साथ शुरू करें:
# Language Name, N bytes
N
आपके प्रस्तुत करने का आकार कहां है। यदि आप अपने स्कोर में सुधार करते हैं, तो आप पुराने अंकों को हेडलाइन में रख सकते हैं , उनके माध्यम से स्ट्राइक करके। उदाहरण के लिए:
# Ruby, <s>104</s> <s>101</s> 96 bytes
यदि आप अपने हेडर में कई संख्याओं को शामिल करना चाहते हैं (जैसे कि आपका स्कोर दो फ़ाइलों का योग है या आप दुभाषिया ध्वज दंड को अलग से सूचीबद्ध करना चाहते हैं), तो सुनिश्चित करें कि हेडर में वास्तविक अंक अंतिम संख्या है:
# Perl, 43 + 2 (-p flag) = 45 bytes
आप भाषा के नाम को एक लिंक भी बना सकते हैं जो लीडरबोर्ड स्निपेट में दिखाई देगा:
# [><>](http://esolangs.org/wiki/Fish), 121 bytes
IA[0] = 0
पूरी तरह से अनावश्यक नहीं है ? यह केवल परिभाषित करने के लिए आवश्यक है IA[i] = IA[i − 1]...
, फिर भी हम केवल यह बता सकते हैं कि यदि i-1 < 0
0. का उपयोग करना है, अर्थात IA [0] हमेशा 0 के बराबर होता है, तो इसे संपीड़ित किया जा सकता है (हाँ, मुझे पता है कि यह एल्गोरिथ्म का एक समालोचक है,) यह चुनौती नहीं है)।