क्यूबिकली क्यूब को लागू करें


10

मूल रूप से एक बहुत ही नई गूढ़ भाषा है जो समस्याओं के एक बहुत विशिष्ट सबसेट के लिए संक्षिप्त, गोल्फ की तरह जवाब बनाने में सक्षम है। यह अद्वितीय है कि यह 3x3 रूबिक के घन के रूप में स्मृति को संग्रहीत करता है, जिससे अधिकांश भाषाओं की तुलना में गणना बहुत कम तुच्छ हो जाती है। मूल रूप से, प्रोग्रामर को चेहरों पर संग्रहीत मूल्यों में हेरफेर करने के लिए आंतरिक क्यूब को घुमाना चाहिए, फिर उन गणनाओं का उपयोग करें। गणना एक एकल 32-बिट पूर्णांक पर की जाती है जिसे एक काल्पनिक चेहरे पर संग्रहीत किया जाता है जिसे "नोटपैड" के रूप में जाना जाता है। इसके अतिरिक्त, मूल रूप से उपयोगकर्ता इनपुट का अनुरोध कर सकता है और इसे केवल एक पूर्णांक मान वाले इनपुट बफर में संग्रहीत कर सकता है।

द क्यूब

घन के चेहरे हैं यू पी, डी खुद, एल ईएफटी, आर ight, एफ ront, और बी पावती:

   UUU
   UUU
   UUU
LLLFFFRRRBBB
LLLFFFRRRBBB
LLLFFFRRRBBB
   DDD
   DDD
   DDD

जब प्रोग्राम शुरू होता है, तो क्यूब को इस तरह से इनिशियलाइज़ किया जाता है कि उस चेहरे पर प्रत्येक वर्ग उस चेहरे के 0-आधारित इंडेक्स के बराबर हो:

   000
   000
   000
111222333444
111222333444
111222333444
   555
   555
   555

जब भी कोई चेहरा घुमाया जाता है, तो उसे हमेशा दक्षिणावर्त घुमाया जाता है:

Cubically> F1

   000
   000
   111
115222033444
115222033444
115222033444
   333
   555
   555

एक चेहरे के मूल्य को उस चेहरे पर हर वर्ग के योग के रूप में परिभाषित किया गया है। उदाहरण के लिए, उपरोक्त क्यूब में, चेहरे 0का मूल्य 3 है।

वाक्य - विन्यास

कमांड को पहले मेमोरी में कमांड लोड करके निष्पादित किया जाता है, फिर कमांड को निष्पादित करने के लिए इस पर तर्क दिया जाता है। उदाहरण के लिए, कमांड F1कमांड Fको मेमोरी में लोड करेगा , फिर इसे तर्क के साथ कॉल करें 1। इसके अतिरिक्त, F13कमांड Fको मेमोरी में लोड करेगा , फिर इसे तर्क 1से कॉल करें, फिर इसे तर्क से कॉल करें 3। किसी भी गैर-डिजिट वर्ण को एक कमांड के रूप में माना जाता है, और किसी भी अंक को एक तर्क के रूप में माना जाता है।

आपका कार्य

आपका काम अपनी पसंद की भाषा में क्यूबिकली इंटरनल मेमोरी क्यूब को लागू करना है। आपका कोड भाषा के बहुत छोटे हिस्से को निष्पादित करने में सक्षम होना चाहिए।

आदेश

  • R - घन की दाईं ओर घुमाएं निर्दिष्ट समय की संख्या।
  • L - क्यूब की बाईं ओर घुमाएँ निर्दिष्ट समय की संख्या।
  • U - घन के शीर्ष चेहरे को कई बार निर्दिष्ट संख्या में घुमाएं।
  • D - घन घड़ी के नीचे चेहरा घुमाएँ निर्दिष्ट समय की संख्या।
  • F - क्यूब के सामने के चेहरे को कई बार निर्दिष्ट संख्या में घुमाएं।
  • B - क्यूब क्लॉकवाइज़ के पीछे के चेहरे को निर्दिष्ट संख्या में घुमाएँ।
  • %- दिए गए चेहरे पर मूल्य को आउटपुट करता है। एक चेहरे के मूल्य को उस चेहरे पर सभी वर्गों के योग के रूप में परिभाषित किया गया है।

नियम

  • आप इस चुनौती को हल करने में सक्षम प्रोग्राम या फ़ंक्शन लिखने के लिए पोस्ट किए जाने से पहले या बाद में बनाई गई किसी भी भाषा का उपयोग कर सकते हैं।
  • इनपुट एसटीडीआईएन के माध्यम से या तो एक स्ट्रिंग के रूप में, या एक चरित्र सरणी के रूप में पारित किया जाएगा (आप चुनते हैं, कृपया निर्दिष्ट करें)।
  • आउटपुट या तो STDOUT या फ़ंक्शन के आउटपुट के रूप में पारित किया जाना चाहिए, और यह या तो पूर्णांक होना चाहिए, केवल अंकों वाला एक स्ट्रिंग या अंकों की एक सरणी। यदि आपकी भाषा आपको एक अनुगामी न्यूलाइन को आउटपुट करने की आवश्यकता है , तो आप ऐसा कर सकते हैं।
  • इनपुट हमेशा निम्न प्रारूप में होगा ([UDLRFB]\d*)*%[0-5]:। इनपुट में कोई व्हाट्सएप वर्ण नहीं होगा।
  • के लिए इनपुट %हमेशा 0-आधारित इंडेक्स का उपयोग करेगा।

यह , इसलिए बाइट्स जीत में सबसे छोटा जवाब है।

परीक्षण के मामलों

%0 -> 0
%1 -> 9
%2 -> 18
%3 -> 27
%4 -> 36
%5 -> 45
R1%2 -> 27
RD3F2%5 -> 32
L1R23F1B5U9D2%3 -> 17

अधिक परीक्षण मामलों के लिए, TIO दुभाषिया देखें । यदि TIO काम नहीं कर रहा है, तो आप इसके बजाय Lua दुभाषिया का उपयोग कर सकते हैं ।


3
इस सवाल का डुप्लिकेट है इस ?
तेहपर्स


@TehPers मुझे लगता है कि यह बहुत समान है। भविष्य की चुनौतियों के लिए, मैं उन्हें कम से कम 24 घंटे के लिए सैंडबॉक्स में छोड़ने की सलाह देता हूं, अगर आपके पास अभी भी इसके बारे में प्रश्न हैं। (मुझे इसे कठिन तरीके से सीखना था; मेरी पहली चुनौतियां बिल्कुल भी अच्छी तरह से प्राप्त नहीं हुई थीं। यह अभी तक बंद या अस्वीकृत नहीं है, इसलिए यह खराब नहीं है , लेकिन इसे सैंडबॉक्स में लंबे समय तक छोड़ दिया गया था, अन्य उपयोगकर्ता हो सकते हैं। उन दोषों को देखा जो मैंने नहीं किया।)
MD XF

@MDXF मैं अगली बार इसे ध्यान में रखूंगा। धन्यवाद!
तेहपर्स

क्या आपने उदाहरण के 4बीच Rऔर उसके बीच के कई को याद किया ? DRD3F2%5 -> 30
जोनाथन एलन

जवाबों:


8

अजगर 2 , 476 बाइट्स

import re
c=[[i]*9for i in range(6)]
r=lambda f:[f[a+b]for a in(0,1,2)for b in(6,3,0)]
U=lambda c:[r(c[0])]+[c[j+1][:3]+c[j or 4][3:]for j in(1,2,3,0)]+[c[5]]
y=lambda c:[r(c[0])]+c[2:5]+[c[1],r(r(r(c[5])))]
z=lambda c:[c[2],r(r(r(c[1]))),c[5],r(c[3]),c[0][::-1],c[4][::-1]]
s=input()
exec("c="+"(c);c=".join("".join("zzzUz U zzUzz yyyzUzzzy zUzzz yzUzzzyyy".split()[ord(t)%11%7]*sum(map(int,n))for t,n in re.findall("([BUDLFR])(\d*)",s[:-2])))+"(c)")
print sum(c[int(s[-1])])

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

मेरा सिम्यूलेट ए रुबिक क्यूब का उत्तरमुझे फिर से 47 बाइट्स में गोल्फ के लिए प्रेरित किया।


0

मूल रूप से , 1 बाइट

गैर-प्रतिस्पर्धात्मक कारण यह लंगड़ा है। इसे स्वीकार मत करो।

¶  Read a line from stdin and evaluate

मैंने कहा कि आज दोपहर: पी


2
खैर, मुझे लगता है कि आपके पास सबसे छोटा कोड है।
तेहपर्स

2
@TehPers मैं करता हूं, लेकिन जैसा मैंने कहा, यह लंगड़ा है। मूल रूप से इस बिल्डिन के साथ अन्य रूबिक्स -क्यूब चुनौतियों को जीत सकते हैं , इसे जीतने की आवश्यकता नहीं है।
एमडी एक्सएफ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.