चुनौती
ड्यूरर के प्रसिद्ध जादू वर्ग के एक सरणी या स्ट्रिंग प्रतिनिधित्व को आउटपुट करें :
अर्थात्,
16 3 2 13
5 10 11 8
9 6 7 12
4 15 14 1
इस वर्ग के कुछ गुण , जिनका शायद शोषण किया जा सकता है:
- यह से प्रत्येक पूर्णांक शामिल
1
करने के लिए16
वास्तव में एक बार - प्रत्येक स्तंभ या पंक्ति का योग, साथ ही दो विकर्णों में से प्रत्येक का योग समान होता है। यह एक जादू वर्ग की परिभाषित संपत्ति है । योग वर्ग का जादू स्थिरांक है।
- इसके अलावा, इस विशेष वर्ग के लिए, चार चतुर्भुज में से प्रत्येक का योग भी जादू के बराबर होता है, जैसा कि केंद्र के चार वर्गों और चार वर्गों के योग का योग होता है।
नियम
जादू के वर्गों को उत्पन्न करने वाले Bultins की अनुमति नहीं है (जैसे कि Matlab magic
या Mathematica की MagicSquare
)। किसी भी अन्य बिलिन का उपयोग किया जा सकता है।
कोड एक कार्यक्रम या एक फ़ंक्शन हो सकता है।
कोई इनपुट नहीं है।
संख्या आधार 10 में होनी चाहिए। आउटपुट स्वरूप हमेशा की तरह लचीला होता है। कुछ संभावनाएं हैं:
एक नेस्टेड सरणी (या तो फ़ंक्शन आउटपुट, या इसके स्ट्रिंग प्रतिनिधित्व, विभाजक के साथ या बिना, किसी भी प्रकार के मिलान ब्रैकेट):
[[16, 3, 2, 13], [5, 10, 11, 8], [9, 6, 7, 12], [4, 15, 14, 1]]
एक 2D सरणी:
{16, 3, 2, 13; 5, 10, 11, 8; 9, 6, 7, 12; 4, 15, 14, 1}
चार तार की एक सरणी, या चार लाइनों से मिलकर एक स्ट्रिंग। संख्याएँ सही-संरेखित हो सकती हैं
16 3 2 13 5 10 11 8 9 6 7 12 4 15 14 1
या बाएं-संरेखित करें
16 3 2 13 5 10 11 8 9 6 7 12 4 15 14 1
पंक्ति और स्तंभ के लिए दो अलग विभाजकों के साथ एक स्ट्रिंग, जैसे
16,3,2,13|5,10,11,8|9,6,7,12|4,15,14,1
आउटपुट स्वरूप स्पष्ट रूप से पंक्तियों और स्तंभों में अंतर करना चाहिए। उदाहरण के लिए, यह एक फ्लैट सरणी, या रिक्त स्थान द्वारा अलग किए गए सभी नंबरों के साथ एक स्ट्रिंग को आउटपुट करने की अनुमति नहीं है।
कोड गोल्फ। सबसे छोटी जीत।
[15]
घटाते हैं, तो आप सरणी के साथ शुरू करके वर्ग उत्पन्न कर सकते हैं , फिर बार-बार इसे प्रत्येक आइटम के साथ 13, 3, 8, और 15 द्वारा XORed के साथ संक्षिप्त कर सकते हैं।