यह सवाल नंबर-प्लेसमेंट पहेली टावर्स (जिसे गगनचुंबी इमारतों के रूप में भी जाना जाता है) पर आधारित है, जिसे आप ऑनलाइन खेल सकते हैं । आपका लक्ष्य पहेली का हल निकालना और सुराग निर्धारित करना है - प्रत्येक पंक्ति और स्तंभ के साथ दिखने वाले टावरों की संख्या। यह कोड गोल्फ है, इसलिए सबसे कम बाइट जीतती है।
टावर्स कैसे काम करता है
टावर्स पहेली का समाधान एक लैटिन वर्ग है - एक n*n
ग्रिड जिसमें प्रत्येक पंक्ति और स्तंभ के 1
माध्यम से संख्याओं का क्रमचय होता है n
। इसके लिए एक उदाहरण n=5
है:
4 3 5 2 1
5 4 1 3 2
1 5 2 4 3
2 1 3 5 4
3 2 4 1 5
प्रत्येक पंक्ति और स्तंभ को प्रत्येक छोर पर एक सुराग के साथ लेबल किया जाता है:
2 3 1 4 5
v v v v v
2 > 4 3 5 2 1 < 3
1 > 5 4 1 3 2 < 4
2 > 1 5 2 4 3 < 3
3 > 2 1 3 5 4 < 2
3 > 3 2 4 1 5 < 1
^ ^ ^ ^ ^
2 2 2 2 1
प्रत्येक सुराग एक संख्या 1
है n
जो आपको बताती है कि आप उस दिशा से पंक्ति / स्तंभ को देखते हुए कितने टॉवर "देख" रहे हैं, यदि संख्या को उस ऊँचाई के साथ टॉवर माना जाता है। प्रत्येक टॉवर इसके पीछे छोटे टॉवरों को अवरुद्ध करता है। दूसरे शब्दों में, जिन टावरों को आप देख सकते हैं, वे पहले के किसी भी टॉवर से लम्बे हैं।
उदाहरण के लिए, आइए पहली पंक्ति देखें।
2 > 4 3 5 2 1 < 3
यह 2
बाईं ओर से एक सुराग है क्योंकि आप 4
और को देख सकते हैं 5
। 4
ब्लॉक 3
दृष्टि और से 5
किसी और ब्लॉक सब कुछ। दाईं ओर से, आप देख सकते हैं 3
टावरों: 1
, 2
, और 5
।
कार्यक्रम की आवश्यकताएं
एक प्रोग्राम या फ़ंक्शन लिखें जो संख्याओं और आउटपुटों की ग्रिड में लेता है या सुराग को प्रिंट करता है, शीर्ष बाएं से दक्षिणावर्त जा रहा है।
इनपुट
के साथ एक n*n
लैटिन-वर्ग 2<=n<=9
।
प्रारूप लचीला है। आप किसी भी डेटा संरचना का उपयोग कर सकते हैं जो एक ग्रिड या सूची का प्रतिनिधित्व करता है जिसमें संख्या या अंक वर्ण होते हैं। आपको पंक्तियों के बीच एक विभाजक या किसी विभाजक की आवश्यकता नहीं हो सकती है। कुछ संभावनाएं एक सूची, सूचियों की एक सूची, एक मैट्रिक्स, एक टोकन-अलग स्ट्रिंग है जैसे
43521 54132 15243 21354 32415,
या रिक्त स्थान के बिना एक स्ट्रिंग।
आपको n
इनपुट के हिस्से के रूप में नहीं दिया गया है।
उत्पादन
ऊपर बाईं ओर से शुरू होकर और दक्षिणावर्त जाते हुए सुरागों को वापस लौटाएं या प्रिंट करें। इसलिए, पहले ऊपरी सुराग दाईं ओर पढ़ते हैं, फिर दाएं सुराग नीचे की ओर पढ़ते हैं, फिर निचले सुराग बाईं ओर पढ़ते हैं, बाएं सुराग ऊपर की ओर पढ़ते हैं।
यह 23145 34321 12222 33212
पिछले उदाहरण के लिए होगा
2 3 1 4 5
v v v v v
2 > 4 3 5 2 1 < 3
1 > 5 4 1 3 2 < 4
2 > 1 5 2 4 3 < 3
3 > 2 1 3 5 4 < 2
3 > 3 2 4 1 5 < 1
^ ^ ^ ^ ^
2 2 2 2 1
बस इनपुट के लिए, आप एक सूची, स्ट्रिंग, या किसी भी आदेशित संरचना का उपयोग कर सकते हैं। चार "समूहों" को एक नेस्टेड या एक फ्लैट संरचना में अलग किया जा सकता है या नहीं। लेकिन, प्रारूप प्रत्येक समूह के लिए समान होना चाहिए।
उदाहरण के परीक्षण के मामले:
(आपका इनपुट / आउटपुट फॉर्मेट इन जैसा नहीं होना चाहिए।)
>> [[1 2] [2 1]]
[2 1]
[1 2]
[2 1]
[1 2]
>> [[3 1 2] [2 3 1] [1 2 3]]
[1 2 2]
[2 2 1]
[1 2 3]
[3 2 1]
>> [[4 3 5 2 1] [5 4 1 3 2] [1 5 2 4 3] [2 1 3 5 4] [3 2 4 1 5]]
[2 3 1 4 5]
[3 4 3 2 1]
[1 2 2 2 2]
[3 3 2 1 2]
>> [[2 6 4 1 3 7 5 8 9] [7 2 9 6 8 3 1 4 5] [5 9 7 4 6 1 8 2 3] [6 1 8 5 7 2 9 3 4] [1 5 3 9 2 6 4 7 8] [3 7 5 2 4 8 6 9 1] [8 3 1 7 9 4 2 5 6] [9 4 2 8 1 5 3 6 7] [4 8 6 3 5 9 7 1 2]]
[4 2 2 3 3 3 3 2 1]
[1 3 3 2 2 2 2 3 3]
[4 3 2 1 2 3 3 2 2]
[3 1 2 4 3 3 2 2 5]
आपकी सुविधा के लिए, यहां फ्लैट स्ट्रिंग प्रारूप में समान परीक्षण मामले हैं।
>> 1221
21
12
21
12
>> 312231123
122
221
123
321
>> 4352154132152432135432415
23145
34321
12222
33212
>> 264137589729683145597461823618572934153926478375248691831794256942815367486359712
422333321
133222233
432123322
312433225
≢¨∪¨↓⌈\(⍉⍪⌽⍪⍉∘⌽∘⊖⍪⊖)