श्रेय
इस कोड-गोल्फ चुनौती के लिए प्रेरणा के लिए रैंड अल थोर के पत्र-आधारित प्रश्न के लिए मेरा धन्यवाद ।
पृष्ठभूमि
इस चुनौती की प्रकृति रैंड द्वारा उनके "ए ट्राइएंगल फॉर्मेड थ्री लेटर्स" में वर्णित एल्गोरिदम पर आधारित है:
- 10 अक्षरों के क्रम से शुरू करें जिनमें से प्रत्येक X, Y, या Z है।
- प्रत्येक पंक्ति के तहत, अगली पंक्ति का निर्माण निम्नानुसार है। यदि दो आसन्न पत्र समान हैं, तो उनके नीचे एक ही पत्र लिखें; यदि वे अलग हैं, तो उनके नीचे तीसरा पत्र लिखें।
आप तब तक पिछले चरण को दोहराएंगे जब तक कि आपकी दसवीं पंक्ति में एक अक्षर न हो।
चुनौती
हम उपरोक्त एल्गोरिथम पर एक गणितीय स्पिन लगाने जा रहे हैं:
- आइए 10 अंकों के अनुक्रम से शुरू करें, प्रत्येक को एक स्थान से अलग किया गया है, और जिनमें से प्रत्येक 1, 2 या 3 है।
- प्रत्येक पंक्ति के तहत, अगली पंक्ति का निर्माण निम्नानुसार है। यदि दो आसन्न अंक समान हैं, तो उनके नीचे एक ही अंक लिखें; यदि वे अलग हैं, तो उनके नीचे तीसरा अंक लिखें।
- पिछले चरण को तब तक दोहराएं जब तक आपके पास एक अंतिम संख्या न हो।
इसलिए, इस एल्गोरिथ्म का अनुसरण करते हुए, यदि पंक्ति के साथ शुरू होता है 1 2 3 3 1 3 1 3 1 2
, उदाहरण के लिए, निम्न त्रिकोण उत्पन्न होता है:
Input: 1 2 3 3 1 3 1 3 1 2
Output:
1 2 3 3 1 3 1 3 1 2
3 1 3 2 2 2 2 2 3
2 2 1 2 2 2 2 1
2 3 3 2 2 2 3
1 3 1 2 2 1
2 2 3 2 3
2 1 1 1
3 1 1
2 1
3
मैं संख्या त्रिकोण में सभी अंकों का योग जानने के लिए उत्सुक हूं, इसलिए इन सभी अंकों को जोड़ दूंगा, और इस कुल को ग्यारहवीं पंक्ति में डाल दूंगा, पहली पंक्ति में अंतिम अंक के लिए सही-सही। तो, हमारा नंबर त्रिकोण कुछ इस तरह दिखेगा (मेरे उदाहरण में रिक्तियां .
दिखाने के लिए चरित्र द्वारा नीचे दिए गए स्थान दर्शाए गए हैं ।)
Input: 1 2 3 3 1 3 1 3 1 2
Output:
1.2.3.3.1.3.1.3.1.2
.3.1.3.2.2.2.2.2.3.
..2.2.1.2.2.2.2.1..
...2.3.3.2.2.2.3...
....1.3.1.2.2.1....
.....2.2.3.2.3.....
......2.1.1.1......
.......3.1.1.......
........2.1........
.........3.........
................109
आपकी चुनौती कोड लिखने की है जो एक इनपुट स्ट्रिंग / सरणी / आदि के साथ शुरू हो सकती है। मेरे उदाहरण के अनुसार, दस अंक, और फिर संख्या त्रिकोण बनाने वाली दस पंक्तियों को उत्पन्न करने के लिए एल्गोरिथ्म लागू करें, इसके बाद 11 वीं पंक्ति होगी जो सही-औचित्य के साथ सभी अंकों का कुल प्रदर्शित करेगी।
परिक्षण
इस स्ट्रिंग का परीक्षण आपके चयन के दस अंकों के यादृच्छिक रूप से उत्पन्न स्ट्रिंग के साथ किया जा सकता है, या नीचे दिए गए स्निपेट से उत्पन्न ...
c1=()=>('1331123221'+(Math.random()*(1<<24)|0).toString(4)).replace(/0/g, "").slice(-10).split("").join(" ");
$("#btn").click(function(){
$("#str").val(c1());
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="str"><button id="btn">Get numbers</button>
<br>
Please use this snippet to generate a starting row for testing your code. Alternatively, you can also use a string of your choice, so long as it's ten digits (ranging from 1 to 3), separated by single spaces.
नियम
- कोड-गोल्फ नियम लागू होते हैं, इसलिए सबसे कम संख्या में बाइट चुनौती जीतते हैं। इस घटना में कि एक ही स्कोर के साथ दो प्रविष्टियाँ हैं, विजेता को अप-वोटों की संख्या के आधार पर सम्मानित किया जाएगा।
- हम 11 पंक्तियों, 19 वर्णों के बाद मूल रूप से क्या हैं ... आप अपने अंतिम आउटपुट को कैसे प्रस्तुत करते हैं, यह पूरी तरह से आप पर निर्भर है: सरणी, कंसोल, फ़ाइल आउटपुट, STDOUT, आदि, इसलिए कृपया जो भी आउटपुट विधि आपको पसंद आए, उसका उपयोग करें। अपने लाभ के लिए काम करें। आउटपुट में एकमात्र नियम यह है कि ऊपर के समान प्रारूप में प्रत्येक पंक्ति में 19 वर्णों के साथ हमारी 11 पंक्तियाँ हैं ...
- यदि यह आपके कोड को मदद करता है, तो अंकों के लिए जो भी विभाजक है उसका उपयोग करें ... बस याद रखें कि देयता एक योगदान कारक हो सकती है।
- कोई मूर्ख कमियां नहीं ।
- इनपुट की हार्ड-कोडिंग की अनुमति नहीं है। इस कोड का उद्देश्य ऐसा है कि इसका उपयोग हर बार अलग-अलग इनपुट के साथ अलग-अलग परिणाम देने के लिए किया जा सकता है।
1 1 1 1 1 1 1 1 1 1
उदाहरण के लिए हार्ड-कोडिंग , एल्गोरिथ्म के पूरे बिंदु को पूरी तरह से नकार देता है।
आप सभी के साथ आने के लिए देख सकते हैं!