43 क्विंटल परमीशन


17

हम एक रूबिक क्यूब का प्रतिनिधित्व निम्नानुसार नेट के रूप में कर सकते हैं (हल होने पर):

   WWW
   WWW
   WWW
GGGRRRBBBOOO
GGGRRRBBBOOO
GGGRRRBBBOOO
   YYY
   YYY
   YYY

प्रत्येक अक्षर इसी रंग का प्रतिनिधित्व करता है ( Wसफेद, Gहरा आदि)

यह दिखाया गया है कि बिल्कुल (~ क्विंटल) विभिन्न क्रमपरिवर्तन हैं जो रूबिक के क्यूब में हो सकते हैं।43,252,003,274,489,856,00043

आपका कार्य और बीच पूर्णांक और ऊपर दिखाए गए तरीके से संबंधित क्रमचय का उत्पादन करना है। आप चुन सकते हैं कि कैसे क्रमपरिवर्तन का आदेश दिया गया है, लेकिन आपके द्वारा उपयोग किए जाने वाले एल्गोरिदम को एक अद्वितीय और सही बनाने के लिए दिखाया जाना चाहिए, प्रत्येक संभावित इनपुट के लिए क्रमपरिवर्तन।143,252,003,274,489,856,000

अमान्य क्रमांकन नियम

इस पेज से लिया गया

आरंभ करने के लिए, प्रत्येक 3x3 चेहरे का केंद्र समान रहना चाहिए, क्योंकि रूबिक के क्यूब पर केंद्र वर्ग को घुमाया नहीं जा सकता है। पूरे क्यूब को घुमाया जा सकता है, जहां एक चेहरा दिखता है, लेकिन यह क्यूब के जाल को प्रभावित नहीं करता है।

यदि हम कहते हैं कि प्रत्येक क्रमपरिवर्तन में एक समानता है, तो उस क्रमपरिवर्तन तक पहुँचने के लिए स्वैप की संख्या के आधार पर, हम कह सकते हैं

  • प्रत्येक कोने के टुकड़े में तीन संभावित झुकाव हैं। यह सही ढंग से उन्मुख हो सकता है (0), दक्षिणावर्त (1) या वामावर्त (2)। कोने के झुकाव का योग हमेशा 3 से विभाज्य रहता है

  • रूबिक के क्यूब पर प्रत्येक कानूनी घुमाव हमेशा किनारों की एक समान संख्या में फ़्लिप करता है, इसलिए केवल एक टुकड़ा उन्मुख गलत नहीं हो सकता है।

  • सभी कोनों और किनारों के क्रमपरिवर्तन को ध्यान में रखते हुए, समग्र समता का अर्थ यह होना चाहिए कि प्रत्येक कानूनी कदम हमेशा सम संख्या के स्वैप के बराबर प्रदर्शन करता है (अभिविन्यास को अनदेखा करते हुए)

उदाहरण के लिए निम्नलिखित तीन नेट अमान्य आउटपुट हैं:

   WWW
   WWW
   WWW
GGGWWWBBBOOO
GGGRRRBBBOOO
GGGRRRBBBOOO
   YYY
   YYY
   YYY

(Too many whites/not enough reds)

   WRW
   WRW
   WRW
GGGRWRBBBOOO
GGGWRRBBBOOO
YYGRWROOOBBB
   YYY
   GGY
   YYY

(There are two red/green center squares and no white/yellow center squares.
 In all valid permutations, the center squares are all different colours)

   WWW
   WWW
   WWW
GGGRRRBBBOOO
GGGRRRBBBOOO
GGGRRRBBOYOO
   YYY
   YYY
   YYB

(The yellow/orange/blue corner is rotated into an impossible permutation)

नियम

  • आपको यह साबित करना होगा कि आपकी इच्छानुसार, कि एल्गोरिथ्म मान्य है। जब तक आप अपने एल्गोरिथ्म की वैधता को साबित नहीं करते हैं, तब तक आपको हर एक क्रमपरिवर्तन की गणना करने की आवश्यकता नहीं है।
  • जब तक आपका कार्यक्रम और बीच सभी पूर्णांकों के लिए सैद्धांतिक रूप से काम करेगा , तब तक आपको वास्तव में अपनी भाषा को संभालने से अधिक इनपुट में लेने की व्यावहारिकता के बारे में चिंता करने की ज़रूरत नहीं है। 143,252,003,274,489,856,000
    • इसका मतलब यह है कि, यदि आपकी भाषा / प्रकार / जो भी केवल तक की संख्या को संभाल सकते हैं, यदि इनपुट से अधिक है , तो प्रोग्राम स्वयं विफल हो सकता है , लेकिन आपके द्वारा उपयोग किया जाने वाला एल्गोरिदम नहीं चाहिए।25312 53 - 12531
    • उदाहरण के लिए, यदि आपका जावास्क्रिप्ट प्रोग्राम शुद्ध रूप से इनपुट के लिए विफल रहता है, क्योंकि यह संख्या सीमा से बाहर है, यह ठीक है। हालाँकि, यदि आपके एल्गोरिथ्म को मनमाने आकार के पूर्णांक के साथ एक भाषा में पोर्ट किया गया था और उस इनपुट के लिए विफल रहा, तो आपका प्रोग्राम मान्य नहीं होगा।27,946,105,037,114,827,095
  • आपको अपने उत्तर में किसी प्रकार की वैधता का प्रमाण शामिल करना चाहिए । यह प्रमाण सभी संभावनाओं को मानने के अलावा, किसी भी स्वीकृत प्रमाण पद्धति में वैधता साबित कर सकता है।
  • यदि आप चाहें, तो आप एक वैकल्पिक इनपुट पद्धति का उपयोग करने का विकल्प चुन सकते हैं:
    • इनपुट बाउंड है
    • प्रत्येक इनपुट एक अद्वितीय आउटपुट से मेल खाती है
    • आप स्पष्ट रूप से इनपुट प्रारूप की व्याख्या करते हैं और यह कैसे प्रत्येक आउटपुट से मेल खाता है
  • आप ASCII वर्णों का उपयोग करने के लिए उपयोग किए गए वर्णों को बदल सकते हैं, 33 ( !) और 126 ( ~) के बजाय, के बीचWGRBOY
  • आप अपनी इच्छानुसार किसी भी तरीके से उत्पादन कर सकते हैं, इसलिए जब तक यह एक घन का एक स्पष्ट प्रतिनिधित्व करता है, जहां सभी 6 चेहरे दिखाए जा सकते हैं, जिसमें कोई भी वैध घन जाल, एक पंक्तिबद्ध स्ट्रिंग या एक 3D प्रतिपादन शामिल है। यदि आप किसी विशिष्ट प्रारूप के बारे में अनिश्चित हैं, तो टिप्पणियों में पूछने में संकोच न करें।

यह एक इसलिए बाइट्स में, प्रत्येक भाषा में सबसे छोटा कोड जीत जाता है।

उदाहरण मान्य आउटपुट

   YYY
   YYY
   YYY
GGGRRRBBBOOO
GGGRRRBBBOOO
GGGRRRBBBOOO
   WWW
   WWW
   WWW

(The `W` and `Y` faces have been swapped)

   ZZZ
   +++
   +}}
+[[}77ZZ7bbb
bb[}[[7}}+Z7
bb[}++[}}+Z7
   7bb
   [7Z
   [7Z

(To start with, the colours have been mapped W -> +, G -> b, R -> [, B -> }, O -> Z and Y -> 7.
 Then, the moves L, R, U and F' have been applied, in that order.
 Notice that each centre square is different, and corresponds to the same colour as in the mapping)

तीसरे अमान्य उदाहरण में यह सिर्फ यह नहीं है कि कोने एक अमान्य कॉन्फ़िगरेशन में है, r / y / o कोने r और o एक दूसरे के विपरीत होने के कारण एक असंभव कोना है
fəˈnɛtɪk

तीसरा अमान्य उदाहरण (CC @ fəˈn thirdt )k)
जोनाथन एलन

यही समस्या दूसरे अमान्य उदाहरण में भी थी, लेकिन मैंने इस पर ध्यान नहीं दिया। यह कम मायने रखता है क्योंकि रंगों को वैसे भी गड़बड़ कर दिया जाता है
f'nɪt Sepk

जब आप लिखते हैं कि वैकल्पिक इनपुट विधियों की अनुमति है, तो क्या इसका मतलब है कि हम सकारात्मक पूर्णांक के वेक्टर के रूप में इनपुट ले सकते हैं , जो, , , ? (उन नंबरों का उत्पाद 43 क्विंटल है)एक 18 ! एक 23 7 a 312 ! / 2 एक 42 11(a1,a2,a3,a4)a18!a237a312!/2a4211
रॉबिन राइडर

1
@ शिग्गी हाँ, एक एकल पंक्ति स्ट्रिंग ठीक है
21

जवाबों:


13

चारकोल , 334 297 बाइट्स

Nθ≔׳﹪θ²¹⁸⁷ε≧⁺﹪±Σ⍘峦³ε≧÷²¹⁸⁷θ≔⁴⁰³²⁰δ≔﹪θδζ≧÷δθ≔⊗﹪θ²⁰⁴⁸η≧⁺﹪Σ⍘粦²η≧÷²⁰⁴⁸θF⪪”B"↷:μêKO″KW#})”³«J⌕α§ι⁰I§ι¹§ι²»≔⁰ω≔⪪”A‽}y≔W⊞≦≦⧴!O×➙⟧ï!Y9⁺`↙1δQ1ξzT”⁶υ≔⪪”{➙∧⊙ηr⸿ξd⊕÷M→¡$≧”³δF²«Fδ«≔§υ⎇⁼Lυ⊗ιωζδ≧÷Lυζ≧⁺⌕υδω≔Φυ¬⁼λδυFLκ«J⌕α§δ⊗⁺λεI§δ⊕⊗⁺λε§κλ»≧÷Lκε»≔⪪”A‽}R›K<≡^μ≡⟦σD⎚+πη±t¿e∧L⸿~↑�w”⁴υ≔⪪”{➙∧⊙ηr⸿ξe'→↑Þ³№¹”²δ≔θζ≔ηε

इसे ऑनलाइन आज़माएं! लिंक कोड के वर्बोज़ संस्करण के लिए है। स्पष्टीकरण:

Nθ

पूर्णांक को चर में इनपुट करें q

≔׳﹪θ²¹⁸⁷ε≧⁺﹪±Σ⍘峦³ε≧÷²¹⁸⁷θ

विभाजित q3⁷ द्वारा, में शेष डाल e। फिर, eबेस 3 में एक संख्या के रूप में विचार करते हुए, एक अंक को प्रत्यय दें eताकि इसके अंक (बेस 3 में) कई को जोड़ सकें 3. यह eकोनों के घुमाव को परिभाषित करने की अनुमति देता है।

≔⁴⁰³²⁰δ≔﹪θδζ≧÷δθ

q8 से विभाजित करें ! शेष को अंदर रखें z। (8! dएक बाइट को बचाने के लिए अस्थायी रूप से संग्रहीत किया जाता है।) यह zकोनों की स्थिति को परिभाषित करने की अनुमति देता है।

≔⊗﹪θ²⁰⁴⁸η≧⁺﹪Σ⍘粦²η≧÷²⁰⁴⁸θ

विभाजित q2¹¹ द्वारा, में शेष डाल h। फिर, hबेस 2 में एक संख्या के रूप में विचार करते हुए, एक अंक को प्रत्यय दें hताकि उसके अंक (बेस 2 में) कई में जोड़ दें 2. यह hकिनारों के फ़्लिप को परिभाषित करने की अनुमति देता है।

F⪪”B"↷:μêKO″KW#})”³

केंद्रों के एक स्ट्रिंग प्रतिनिधित्व पर लूप।

«J⌕α§ι⁰I§ι¹§ι²»

प्रत्येक केंद्र की स्थिति पर जाएं और इसे प्रिंट करें।

≔⁰ω

चर में कोने के पदों की समता का ध्यान रखें w

≔⪪”A‽}y≔W⊞≦≦⧴!O×➙⟧ï!Y9⁺`↙1δQ1ξzT”⁶υ

कोने के पदों की एक सरणी बनाएं।

≔⪪”{➙∧⊙ηr⸿ξd⊕÷M→¡$≧”³δ

कोने के रंगों की एक सरणी बनाएं।

F²«

दो बार लूप, एक बार कोनों के लिए, एक बार किनारों के लिए, बाद में "क्यूब्स" के रूप में संदर्भित किया जाता है।

Fδ«

घन रंगों की सरणी पर लूप करें।

≔§υ⎇⁼Lυ⊗ιωζδ≧÷Lυζ≧⁺⌕υδω≔Φυ¬⁼λδυ

zमें समता को अद्यतन करते हुए, अगले क्यूब स्थिति को बाहर निकालें w। इस समानता का उपयोग अंतिम लेकिन एक किनारे के लिए करें। यह सुनिश्चित करता है कि किनारों और कोनों की समता का योग सम है।

FLκ«J⌕α§δ⊗⁺λεI§δ⊕⊗⁺λε§κλ»

उस स्थिति में क्यूब को प्रिंट करें, अगले रोटेशन के लिए समायोजित या उपयुक्त के रूप में फ्लिप करें।

≧÷Lκε»

घुमाव निकालें या से फ्लिप करें e

≔⪪”A‽}R›K<≡^μ≡⟦σD⎚+πη±t¿e∧L⸿~↑�w”⁴υ

धार पदों की एक सरणी बनाएँ। यह दूसरी बार लूप के माध्यम से उपयोग किया जाएगा।

≔⪪”{➙∧⊙ηr⸿ξe'→↑Þ³№¹”²δ

किनारे के रंगों की एक सरणी बनाएं।

≔θζ≔ηε

कोने के चर को zऔर eइसी किनारे के चर के साथ ओवरराइट करें qऔर hताकि किनारों को लूप के दूसरे पास के दौरान अनुमति दी जाए और फ़्लिप किया जाए।


अपने आप को सलाह दें: यदि चारकोल में रखी कोई चीज़ 330 बाइट्स है, तो इसे PHP में न आज़माएँ!
Night2

@ नाइट 2 अब बगफिक्स (गलत समता गणना) के कारण 334 हो गया है।
नील

8

रूबी , 570 408 बाइट्स

->g,h{z=[]
c=a="\x19)!$'%\x177\x1F495.)@7g~yp"
20.times{|i|z<<a[k=g%r=12+i/12*8-i];a[k]="";g/=r}
19.times{|i|z[0..i].map{|j|j>z[i+1]&&c=!c}}
c||(z[19],z[18]=z[18,2])
h+=h+("%b"%(h%2048)).sum%2
j=0
b="023451"
20.times{|i|b<<("%0*o"%[r=2+i/12,z[i].ord-20]*2)[h%r+i/19*j%3,r];j-=r/3*h;h/=r}
s=(t="...
"*3)+(?.*12+$/)*3+t
54.times{|i|s["<QTWZo;MP[ngD@RS^k=GVUpaJ8XYdsAFE?CN7LK9IHl_`jh]reftbc"[i].ord-55]=b[i]}
s}

इसे ऑनलाइन आज़माएं!

मूल संस्करण, मैजिक स्ट्रिंग्स के बजाय मैजिक नंबर के सरणियों के साथ

->g,h{z=[]
a=[05,025,015,020,023,021,03,043,013,040,045,041,   032,025,054,043,0123,0152,0145,0134]
#PERMUTE
20.times{|i|r=12+i/12*8-i;z<<a.delete_at(g%r);g/=r}
c=1
19.times{|i|z[0..i].map{|j|j>z[i+1]&&c=!c}}
c||(z[19],z[18]=z[18],z[19])
#ROTATE
h+=h+(h%2048).to_s(2).sum%2
j=0
b="023451"
20.times{|i|r=2+i/12;b<<("%0*o"%[r,z[i]]*2)[h%r+i/19*j%3,r];j-=r/3*h;h/=r}
#DISPLAY
s=(t="...
"*3)+(?.*12+$/)*3+t
54.times{|i|s[
[5,26,29,32,35,56,
4,22,25,36,55,48, 
13,9,27,28,39,52,
6,16,31,30,57,42,
19,1,33,34,45,60,
10,15,14,8,12,23,0,21,20,2,18,17,
53,40,41,51,49,38,59,46,47,61,43,44][i]]=b[i]}
s}

इसे ऑनलाइन आज़माएं!

एक अनाम फ़ंक्शन जो अपने वर्तमान स्वरूप में दो पूर्णांकों का इनपुट लेता है, जिसकी अनुमति दी गई है: "आप एक वैकल्पिक विधि चुन सकते हैं।" पहला है 0 से लेकर के रेंज में क्रमपरिवर्तन 12!*8!/2 - 1और दूसरा है 0 से रेंज में टुकड़ों का ओरिएंटेशन 2**11 * 3*7 - 1। हल किए गए राज्य में आउटपुट निम्न स्ट्रिंग है:

000
000
000
222333444555
222333444555
222333444555
111
111
111

आगे गोल्फिंग

आउटपुट स्वरूप को निम्न आकार में समायोजित करके लगभग 10 और वर्ण सहेजे जाने हैं। लेकिन यह पठनीयता को कम करेगा, इसलिए मैं इसे वर्तमान में नहीं करूंगा

      #########
      #########
      #########
#########
#########
#########

व्याख्या

परिवर्तन

आंतरिक रूप से, हल किए गए राज्य को सरणी में अष्टक संख्याओं की श्रृंखला द्वारा दर्शाया जाता है a। इनपुट gको 12..1मापांक के साथ संख्याओं से विभाजित किया जाता है, जिसका उपयोग किसी किनारे को निकालने और हटाने के लिए किया जाता aहै z। एक बार यह हो जाने के बाद, केवल कोने ही बने रहते हैं a, इसलिए एक कोने को हटाने और इसे अंदर रखने के लिए उपयोग किए जाने वाले मापांक gसे संख्याओं को विभाजित किया 8..1जाता aहै z

जैसा कि पिछले दो कोनों के क्रम को निर्धारित करने के लिए अपर्याप्त जानकारी है, gवसीयत के मूल्य को उन तक पहुंचने के समय तक शून्य से विभाजित किया जाएगा, इसलिए उन्हें हमेशा zवहां मूल क्रम में जोड़ा जाएगा । एक जांच तो यह निर्धारित करने के लिए की जाती है कि क्या समग्र क्रमपरिवर्तन भी या विषम है, और यदि आवश्यक हो तो क्रमपरिवर्तन करने के लिए अंतिम दो कोनों की अदला-बदली की जाती है।

अभिविन्यास

यह तय करने के विभिन्न तरीके हैं कि यदि एक कोने या किनारे को सही अभिविन्यास में रखा गया है यदि यह उसके हल किए गए स्थान पर नहीं है। इस उत्तर के प्रयोजन के लिए, एक कोने को उसके सही अभिविन्यास में माना जाता है यदि यह दिखाता है 0या 1ऊपर या नीचे के चेहरे पर है। इसलिए टॉप या बॉटम फेस को घुमाने से कॉर्नर ओरिएंटेशन नहीं बदलता है। अन्य चेहरों को घुमाने से अभिविन्यास बदल जाता है, लेकिन इस तरह से कि समग्र समता का योग अपरिवर्तित रहता है। किनारों सही ओरिएंटेशन में माना जाता है अगर वे एक दिखाने 2या 4सामने / वापस करने के लिए या एक 3या 5बाईं ओर / सही। इसका मतलब यह है कि एक चौथाई मोड़ से ऊपर या नीचे का घुमाव चार किनारों को फड़फड़ाता है लेकिन दूसरे चेहरों का रोटेशन फ्लिप स्थिति को अपरिवर्तित छोड़ देता है।

इनपुट में पहले किनारे और अंतिम कोने के लिए स्पष्ट जानकारी है। 11 कम से कम महत्वपूर्ण बिट्स h%2048को अभिव्यक्त किया गया है और पहले किनारे के उन्मुखीकरण को निर्धारित करने के लिए उपयोग किए जाने वाले मापांक। hइसे अपने आप से जोड़कर 2 से गुणा किया जाता है और पहले किनारे के उन्मुखीकरण के लिए मूल्य को कम से कम महत्वपूर्ण बिट के रूप में जोड़ा जाता है। अंतिम कोने का उन्मुखीकरण उत्तरोत्तर दूसरे कोनों के उन्मुखीकरण को घटाकर पाया जाता है j। बहुत अंतिम कोने के लिए (जहां i/19= 1) का मान j%3जोड़ा जाता है h(जो कि शून्य तक कम हो जाएगा) और यह अंतिम कोने के उन्मुखीकरण को निर्धारित करता है।

bचेहरों के केंद्रों के लिए पाठ के साथ स्ट्रिंग का प्रीइंस्टीट्यूशन होता है। टुकड़ों के उन्मुखीकरण का निर्धारण करने के लिए इस्तेमाल किया जा रहा modulos के साथ बारह बार तो आठ बार hसे विभाजित है । प्रत्येक स्थिति में, संख्या को उचित संख्या (2 या 3) के साथ एक स्ट्रिंग में परिवर्तित किया जाता है और फिर स्ट्रिंग को डुप्लिकेट किया जाता है। यह मॉडुलो द्वारा पाए गए अंकों के सही रोटेशन को अनुक्रमण द्वारा स्ट्रिंग से निकाले जाने और संलग्न करने की अनुमति देता है23zb

प्रदर्शन

अंत में, इंडेक्स टेबल में मैजिक नंबरों का उपयोग करके कच्चे स्टिकर को bअधिक मानवीय पठनीय प्रारूप से कॉपी किया जाता है s

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.