केवल पंक्तियों और स्तंभों को फ़्लिप करके (केंद्र बिंदु के चारों ओर उलट) अंकों के एक वर्ग को रोकने के लिए एक कार्यक्रम या फ़ंक्शन बनाएं।
इनपुट
इनपुट 9 लाइन स्ट्रिंग के रूप में अंकों का 9x9 ग्रिड होगा जैसे कि निम्नलिखित:
986553229
264564891
759176443
643982153
567891234
526917874
685328912
891732537
117644378
यह इनपुट प्रारूप गैर-परक्राम्य है - कोई भी समाधान जो इनपुट प्रारूप के साथ "रचनात्मक" हैं, को अमान्य माना जाएगा।
उत्पादन
आउटपुट फ़्लिप चालों की एक सूची होनी चाहिए जो दिए गए क्रम में इनपुट पर लागू होने पर, लक्ष्य ग्रिड को फिर से बनाना चाहिए।
एक उदाहरण आउटपुट (पिछले इनपुट उदाहरण का समाधान नहीं):
28IF5D3EAB9G3
यह आउटपुट स्वरूप गैर-परक्राम्य भी है। आउटपुट में कोई नयालेख या स्थान नहीं होना चाहिए, केवल वर्ण 1- 9और A- I(यदि आप चाहें तो ऊपरी मामले के पात्रों के स्थान पर निम्न केस वर्ण स्वीकार्य हैं)।
लक्ष्य ग्रिड (जिस राज्य को आपको पुनः बनाने की आवश्यकता है) इस प्रकार है:
123456789
234567891
345678912
456789123
567891234
678912345
789123456
891234567
912345678
संख्याओं 1- 9पंक्तियों को फ्लिप करने के लिए निर्देश के रूप में उपयोग किया जाना चाहिए, और पत्र A- Iकॉलम के लिए उपयोग किया जाना चाहिए। यह नीचे की स्थिति में ग्रिड के साथ दिखाया गया है।
ABCDEFGHI
|||||||||
vvvvvvvvv
1 -> 123456789
2 -> 234567891
3 -> 345678912
4 -> 456789123
5 -> 567891234
6 -> 678912345
7 -> 789123456
8 -> 891234567
9 -> 912345678
तो एक 8साधन नीचे से दूसरी पंक्ति को फ्लिप करता है, और एक Fसाधन छठे कॉलम को फ्लिप करता है।
इस मामले में कि कोई समाधान संभव नहीं है, प्रोग्राम को कुछ भी आउटपुट किए बिना समाप्त होना चाहिए।
उदाहरण
इनपुट:
987654321
234567891
345678912
456789123
567891234
678912345
789123456
891234567
912345678
आउटपुट:
1
इस स्थिति में केवल शीर्ष पंक्ति को लक्ष्य स्थिति पर लौटने के लिए फ़्लिपिंग की आवश्यकता होती है।
इनपुट:
123456788
234567897
345678916
456789125
567891234
678912343
789123452
891234561
912345679
आउटपुट:
I
इस स्थिति में केवल अंतिम कॉलम (कॉलम I) को लक्ष्य स्थिति को फिर से बनाने के लिए फ़्लिपिंग की आवश्यकता होती है।
इनपुट:
123456788
798765432
345678916
456789125
567891234
678912343
789123452
891234561
912345679
आउटपुट:
2I
इस स्थिति में हमें लक्ष्य स्थिति पर लौटने के लिए पंक्ति को फ़्लिप करना होगा 2और फिर कॉलम Iको फ्लिप करना होगा।
टिप्पणियाँ:
- कृपया अपने उत्तर में एक उदाहरण का उपयोग शामिल करें।
- दिए गए आउटपुट में सबसे छोटा अनुक्रम नहीं होता है जो लक्ष्य स्थिति को लौटा देगा - कोई भी क्रम जो लक्ष्य राज्य को लौटाता है जब तक यह काम करता है (यानी जब तक मैं इसे परीक्षण कर सकता हूं)
- मैं प्रत्येक उत्तर का परीक्षण करने और उन सभी कामों को उभारने का प्रयास करूंगा और जाहिर तौर पर गोल्फिंग का प्रयास किया होगा।
- यह एक ओपन-एंडेड प्रतियोगिता है - मैं अगले हफ्ते कुछ समय में सबसे छोटा जवाब स्वीकार करूंगा, लेकिन अगर एक नया वैध जवाब आता है, जो भविष्य में किसी भी बिंदु पर छोटा है, तो मैं प्रतिबिंबित करने के लिए स्वीकृत उत्तर को बदल दूंगा ।
२६/०१/२०१४ (GMT) को २६/०१/२०१४को मिले सबसे छोटे उत्तर के लिए २०० की प्रतिष्ठा में यह इनाम निर्धारित किया गया है। बाउंटी को हावर्ड को २६ Golf चरित्रों वाले गोल्फस्क्रिप्ट समाधान के लिए सम्मानित किया गया ।
परिक्षण
कृपया अपने उत्तर के साथ निम्नलिखित तीन टेस्ट ग्रिड के लिए अपने प्रोग्राम का आउटपुट प्रदान करें:
986553229
264564891
759176443
643982153
567891234
526917874
685328912
891732537
117644378
927354389
194762537
319673942
351982676
567891234
523719844
755128486
268534198
812546671
813654789
738762162
344871987
341989324
567891234
576217856
619623552
194435598
926543271
मैंने परीक्षण उद्देश्यों के लिए वैध ग्रिड उत्पन्न करने के लिए एक छोटा अजगर कार्यक्रम बनाया है:
import random
def output(array):
print '\n'.join([''.join(row) for row in array])
def fliprow(rownum, array):
return [row[::1-2*(rownum==idx)] for idx,row in enumerate(array)]
def flipcol(colnum, array):
return zip(*fliprow(colnum, zip(*array)))
def randomflip(array):
op=random.randint(0,1)
row=random.randint(0,9)
if(op==1):
return fliprow(row, array)
else:
return flipcol(row, array)
def jumble(array):
arraycopy=array
for i in range(10, 1000):
arraycopy=randomflip(arraycopy)
return arraycopy
startarray=[
['1','2','3','4','5','6','7','8','9'],
['2','3','4','5','6','7','8','9','1'],
['3','4','5','6','7','8','9','1','2'],
['4','5','6','7','8','9','1','2','3'],
['5','6','7','8','9','1','2','3','4'],
['6','7','8','9','1','2','3','4','5'],
['7','8','9','1','2','3','4','5','6'],
['8','9','1','2','3','4','5','6','7'],
['9','1','2','3','4','5','6','7','8']]
print output(jumble(startarray))
(-2, 4), (2, 4), (2, -4), या (-2, -4)।
A1) को लेने और इसे स्थानांतरित करने का प्रयास करें B1। आप 1स्थिति को प्राप्त कर सकते हैं B1, लेकिन यह टाइल से होगा B9, न कि टाइल से A1। क्योंकि हमें केवल पूरी पंक्ति / स्तंभ फ़्लिप की अनुमति है, ऊपरी तौर पर 1 केवल चार सबसे बाहरी कोनों में से एक में होगा। अगर मैंने नियमों को गलत माना है, तो कृपया मुझे बताएं।



