क्यूबॉइड के प्रकार का निर्धारण करें


17

परिचय:

मैं एक जुझारू पहेली कलेक्टर हूं। यहाँ आप you 300 पहेलियों के मेरे वर्तमान संग्रह को देख सकते हैं।

मुझे लगता है कि हर कोई नियमित रूप से रूबिक्स क्यूब (3x3x3 क्यूब) जानता है, जो कि एक NxNxN क्यूब है। क्यूबॉइड्स (ब्लॉक-शेप्ड पज़ल्स) भी हैं, जो अलग-अलग रूपों में आते हैं, शायद सुपरअंटिओनियोविल्ड्डी द्वारा बेहतर ढंग से समझाया गया है :

  • नियमित डोमिनोज़ क्यूबॉइड्स (जैसे 2x2x3 ; 2x3x3 ; 3x3x4 ; आदि) - वे NxNx (N + O) या Nx (N + O) x (N + O) के रूप में आते हैं , जो या तो दो विषम आयाम हैं और a सम, या दो सम और विषम।
  • शेपशिफ्टर घनाभ (जैसे 2x2x4 ; 3x3x5; 3x3x9 ; 4x4x6 ; आदि) - वे के रूप में आते NxNx (N + पी) , के रूप में नाम का सुझाव है, जो (सभी दिशाओं में), shapeshifts। तीनों आयाम या तो विषम हैं या सम हैं।
  • फ्लॉपी क्यूबॉइड्स (जैसे 1x3x3 ; 2x4x4 ; आदि) - वे एनएक्स (एन + पी) एक्स (एन + पी) के रूप में आते हैं , जो लगभग शैफशिफ्टर्स के समान हैं, लेकिन तथाकथित फ्लॉपी पैरिटीज के साथ।
  • ईंट क्यूबॉइड्स (जैसे 2x3x4 ; 3x4x5 ; 2x3x5; आदि) - वे एनएक्स (एन + ओ) एक्स (एन + पी) के रूप में आते हैं, जो रेगुलर डोमिनोज़ क्यूबॉइड्स की तरह या तो दो आयामों और एक समान है, या दो सम और एक विषम; लेकिन किसी भी एक ही आयाम नहीं है।
  • अंतिम Shapeshifters (जैसे 2x4x6 ; 3x5x7; 2x4x10; आदि) - वे Nx (N + O) x (N + R) के रूप में आते हैं , और किसी भी दिशा में आकार-प्रकार। तीनों आयाम या तो विषम हैं या सम; लेकिन किसी भी एक ही आयाम नहीं है।

चुनौती:

इनपुट:

निम्नलिखित प्रतिबंध के साथ एक सकारात्मक पूर्णांक n : 8 <= n <= 125.
n तीन मूल्यों (आयाम) के उत्पाद के रूप में विशिष्ट रूप से डिकोड किया जा सकता है, जिनमें से प्रत्येक 2 और 5 के बीच है।

कारण मैंने इसे 2-5 तक सीमित कर दिया है, डुप्लिकेट किए गए इनपुट (जैसे 1x2x4 = 8और 2x2x2 = 8) को रोकने के लिए है , भले ही वहाँ कई निचले / उच्च आदेश क्यूबॉइड हैं। इसका मतलब यह भी है कि अल्टीमेट शापशिफ्टर्स के लिए कोई टेस्ट केस नहीं हैं।

आउटपुट / टेस्ट मामले:

ये वे सभी मामले हैं जिनका आपके कार्यक्रम / फ़ंक्शन को समर्थन करना चाहिए, हर संभव तीन-आयामी कॉन्फ़िगरेशन में किनारे की लंबाई 2 से लेकर 5 तक:

Input   Cuboid/Cube   Type/Output
8       2x2x2         Cube
12      2x2x3         Regular Domino Cuboid
16      2x2x4         Shapeshifter Cuboid
20      2x2x5         Regular Domino Cuboid
18      2x3x3         Regular Domino Cuboid
24      2x3x4         Brick Cuboid
30      2x3x5         Brick Cuboid
32      2x4x4         Floppy Cuboid
40      2x4x5         Brick Cuboid
50      2x5x5         Regular Domino Cuboid
27      3x3x3         Cube
36      3x3x4         Regular Domino Cuboid
45      3x3x5         Shapeshifter Cuboid
48      3x4x4         Regular Domino Cuboid
60      3x4x5         Brick Cuboid
75      3x5x5         Floppy Cuboid
64      4x4x4         Cube
80      4x4x5         Regular Domino Cuboid
100     4x5x5         Regular Domino Cuboid
125     5x5x5         Cube

चुनौती नियम:

  • 8-125 रेंज के भीतर किसी भी गैर-घन / गैर-क्यूबॉइड इनपुट का परिणाम आउटपुट के रूप में 'कोई नहीं' होना चाहिए।
  • आउटपुट स्वरूप आपकी अपनी पसंद है। मुझे लगता है कि सबसे उचित पूर्णांक है, जैसे 0= 'कोई नहीं'; 1= घन; 2= नियमित डोमिनोज़ क्यूबॉइड; 3= शापशीटर क्यूबॉइड; 4= फ्लॉपी क्यूबॉइड; 5= ईंट घनाभ। कोई अन्य आउटपुट स्वरूप भी ठीक है, जब तक आप निर्दिष्ट करते हैं कि आपने किसका उपयोग किया है।

सामान्य नियम:

  • यह , इसलिए बाइट्स जीत में सबसे छोटा जवाब है।
    कोड-गोल्फ भाषाओं को गैर-कोडगॉल्फिंग भाषाओं के साथ उत्तर पोस्ट करने से हतोत्साहित न करें। 'किसी भी' प्रोग्रामिंग भाषा के लिए यथासंभव संक्षिप्त उत्तर के साथ आने का प्रयास करें।
  • मानक नियम आपके उत्तर के लिए लागू होते हैं , इसलिए आपको उचित पैरामीटर, पूर्ण कार्यक्रमों के साथ STDIN / STDOUT, फ़ंक्शन / विधि का उपयोग करने की अनुमति है। तुम्हारा फोन।
  • डिफ़ॉल्ट लूपोल्स निषिद्ध हैं। ( नोट: चूंकि मुझे नहीं पता कि इनपुट-टू-आउटपुट रूपांतरण का कोई स्मार्ट फॉर्मूला है, इसलिए इनपुट के आधार पर उत्तरों को हार्डकोड करने की अनुमति है। )
  • यदि संभव हो, तो कृपया अपने कोड के लिए एक परीक्षण के साथ एक लिंक जोड़ें।
  • इसके अलावा, यदि आवश्यक हो तो एक स्पष्टीकरण जोड़ें।


1
आपके संग्रह में कोई हेलिकॉप्टर क्यूब नहीं है?
जीबी

@ जीबी नहीं। मेरे पास एक Curvy Copter, Curvy Copter Plus, Curvy Copter III, Curvy Chop Cube, Helicopter Dodecahedron और कस्टम-निर्मित Super Truncated Curvy Copter III है, लेकिन कोई Helicopter Cub नहीं है। :) यह कुछ हद तक सुडौल हैलीकॉप्टर के समान है, लेकिन मुझे यह किसी दिन मिल सकता है।
केविन क्रूज़सेन

क्या इनपुट सॉर्ट किया गया है? या क्या हमें मैन्युअल रूप से छाँटना होगा?
मैथ्यू रो

@MatthewRoh इनपुट एक पूर्णांक (यानी 24) है, इसलिए मुझे नहीं पता कि आप इसके बारे में क्या छांटना चाहते हैं?
केविन क्रूज़सेन

जवाबों:


6

05AB1E , 26 21 बाइट्स

None: 0 Cube: 1 Regular Domino Cuboid: 2 Shapeshifter Cuboid: 3 Brick Cuboid: 4 Floppy Cuboid: 5

•S3X@I¨%÷'•5L¦3ãPÙIkè

इसे ऑनलाइन आज़माएं! या एक के रूप में टेस्ट सूट के रूप में

व्याख्या

•S3X@I¨%÷'•            # push base-214 compression of the number 123224454212324512210
           5L¦         # push the list [2,3,4,5]
              3ã       # cartesian product with repetion of size 3
                P      # product of each sublist
                 Ù     # remove duplicates
                  Ik   # get the index of input in that list (-1 if non-existant)
                    è  # get the element at this index in the above number

एकमात्र जगह जो मैं देख रहा हूं कि हम यहां बाइट्स बचा सकते हैं, संख्या पैदा करने का एक बेहतर तरीका है 123224454212324512210

यह प्राइम से केवल 1-ऑफ है, इसलिए एक संभव बचत उस प्राइम के इंडेक्स को खोजने और 9 बाइट्स से कम में इंडेक्स उत्पन्न करना होगा।
मुझे नहीं पता कि 21-अंकों के अपराधों के लिए पाई-फ़ंक्शन कितनी अच्छी तरह काम करता है लेकिन यह एक संभावना हो सकती है।


अच्छा, मैं इस स्पष्टीकरण के लिए उत्सुक हूं कि यह देखने के लिए कि आपने क्यूब / क्यूबॉइड को निर्धारित करने के लिए किस सूत्र / क्वर्क / पैटर्न का उपयोग किया है। +1
केविन क्रूज़सेन

1
@ केविनक्रूजसेन: मैं एक बाइट या दो अभी भी बचा सकता हूं। मैंने कोशिश की है कि मैं एक कोशिश के बाद स्पष्टीकरण जोड़ देंगे। मेरे पास एक प्रधान है जिसे मैं ऑर्डर देना चाहता हूं (लेकिन मुझे मेरी मदद करने के लिए ऑनलाइन कुछ भी नहीं मिला है और मैं काम पर हूं इसलिए मेरे पास वास्तव में खुद को लागू करने का समय नहीं है :)
एमिगा

@Eignign jeebus creezy, कब तक kअस्तित्व में है? !! ??!?!?!?
मैजिक ऑक्टोपस Urn

30 दिसंबर, 2015 के बाद से @carusocomputing
अदनान

3

जावास्क्रिप्ट (ईएस 6), 97 92 86 बाइट्स

यह फ़ंक्शन पहले इनपुट की वैधता की जांच करता है, फिर लुकअप टेबल से सही मूल्य चुनता है।

हैरानी की बात है, सबसे लंबे समय तक हिस्सा वैधता की जांच (है n फार्म की x * y * जेड के साथ एक्स , वाई और जेड में [2,3,4,5] ?)। इसे करने का एक छोटा तरीका होना चाहिए, लेकिन मैं अभी तक इसका पता नहीं लगा सका।

n=>'NBBF..CRCC.BRR..SFRRRRR.B..C'[[34707324,0x80000800,4240,262208][n&3]>>n/4&1&&n%29]

एक चरित्र लौटाता है:

  • N : कोई नहीं
  • C : घन
  • आर : नियमित डोमिनोज़ क्यूबॉइड
  • एस : शापेशिफटर क्यूबॉइड
  • बी : ईंट क्यूबॉइड
  • एफ : फ्लॉपी क्यूबॉइड

परीक्षा


1

रूबी, 106 98 96 बाइट्स

->n{[[x=25,2421],[15,53],[9,21],[4,1232504350200510002]].any?{|a,b|n%a<1&&x="00#{b}"[n/a]}?x:?0}

क्योंकि, हार्डकोडिंग क्यों नहीं।

जैसा कि निर्दिष्ट किया गया है, 0 = 'कोई नहीं'; 1 = घन; 2 = नियमित डोमिनोज़ क्यूबॉइड; 3 = शापशीटर क्यूबॉइड; 4 = फ्लॉपी क्यूबॉइड; 5 = ईंट घनाभ


1

पर्ल 6 , 69 58 बाइट्स

{%(unique([X*] (2..5)xx 3)Z=>:32<AM0K21IHN61H5>.comb){$_}}

टास्क विवरण में सुझाए गए पूर्णांक आउटपुट प्रारूप का उपयोग करता है, सिवाय इसके कि इसके (Any)बजाय यह असमान मूल्य देता है0 आदानों कि एक वैध घन / घनाभ फार्म नहीं है के मामले में।

यह काम किस प्रकार करता है

  1. unique([X*] (2..5)xx 3)

    सूची तैयार करता है 8 12 16 20 18 24 30 32 40 50 27 36 45 48 60 75 64 80 100 125

  2. :32<AM0K21IHN61H5>.comb

    सूची बनाता है 1 2 3 2 2 5 5 4 5 2 1 2 3 2 5 4 1 2 2 1(एक बेस -32 शाब्दिक से)।

  3. %(   Z=>   )

    कुंजी के रूप में पहली सूची और मूल्यों के रूप में दूसरी सूची के साथ एक हैश (साहचर्य मानचित्र) बनाता है।

  4.    {$_}

    इनपुट नंबर के साथ हैश को अनुक्रमित करता है।


हे, मैं अब देख रहा हूं कि मैंने @ Emigna के 05AB1E उत्तर के समान दृष्टिकोण का उपयोग किया है। लेकिन मैं इसके साथ स्वतंत्र रूप से आया, ईमानदार! :)
SMLS

1

बैच, 163 बाइट्स

@set/as=0,c=29948521
@for /l %%i in (2,1,5)do @for /l %%j in (%%i,1,5)do @for /l %%k in (%%j,1,5)do @set/as+=c%%6*!(%%i*%%j*%%k-%1),c/=6,c+=14081593*!c
@echo %s%

सुझाए गए आउटपुट स्वरूप का उपयोग करता है। स्पष्टीकरण: मूल विचार प्रश्न में परिभाषित क्यूब्स की सूची पर लूप करना है। प्रत्येक क्यूब के लिए, हम यह देखने के लिए गणना करते हैं कि क्या इसकी मात्रा इनपुट पूर्णांक है, और यदि ऐसा है, तो लुकअप तालिका से क्यूब के प्रकार की गणना करें।

मूल लुकअप टेबल अक्षरों की एक स्ट्रिंग थी, लेकिन एक forलूप में स्ट्रिंग हेरफेर करना मुश्किल है, इसलिए मैंने अंकों को स्विच किया जिसे अंकगणित रूप से निकाला जा सकता है। सैडली बैच 32-बिट पूर्णांक तक सीमित है, इसलिए मैं सभी अंकों को एक एकल चर में फिट नहीं कर सकता (यहां तक ​​कि आधार 5 में भी आप केवल 13 अंक प्राप्त कर सकते हैं) इसलिए मैं चर को दो भागों में विभाजित करता हूं, आधार 6 में एन्कोडेड सुविधा के लिए। 29948521है 2545522321आधार 6 जो उलटे क्रम में 10 छोटी से छोटी cuboids कूटबद्ध; जब यह अंकों से बाहर निकलता है तो हम जोड़ते हैं 14081593जो कि 1221452321बेस 6 में 10 सबसे बड़े क्यूबॉइड्स को एन्कोड करता है।

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