एक घन घन चेहरे


13

एक क्यूबिक क्यूब के चेहरे को मैन्युअल रूप से समेटना थकाऊ और समय लेने वाला है, जैसे कि क्यूबिक में ही कोड लिखना।

में सबसे कुशल cubifier , मैं Cubically स्रोत के लिए ASCII का अनुवाद करने के लिए कहा। उत्तरों में से एक क्यूब आरंभीकरण अनुक्रम का उपयोग करता है और फिर प्री-इनिशियलाइज्ड क्यूब के योगों के आधार पर परिणामी क्यूब को संशोधित करता है। इस पद्धति का उपयोग कई क्यूबिक से संबंधित कार्यक्रमों में किया गया है। नए इनिशियलाइज़ेशन अनुक्रम का परीक्षण करते समय, किसी को सभी चेहरों पर सभी मूल्यों को जोड़ना पड़ता है, जिसमें आमतौर पर दो या तीन मिनट लगते हैं।

आपका कार्य हमारे लिए इस प्रक्रिया को स्वचालित करना है!

आप दो इनपुट, एक पूर्णांक nऔर एक स्ट्रिंग लेंगे c। इन्हें कमांड लाइन के तर्कों, फ़ंक्शन तर्कों, मानक इनपुट, फ़ाइल या उन के किसी भी संयोजन से पढ़ा जा सकता है। दुभाषिया द्वारा सुंदर रूप से मुद्रित के रूप में आकार का cएक घन मेमोरी क्यूब होगा n

मूल रूप से दुभाषिया अपने घन को STDERR को प्रोग्राम समाप्ति पर, साधारण देखने के लिए अच्छी तरह से स्वरूपित करता है। क्यूबिक इंटरप्रेटर में एक खाली प्रोग्राम चलाएं और एक आरंभिक क्यूब के क्यूब डंप को देखने के लिए डिबग सेक्शन खोलें। 44x4x4 5देखने के लिए या 5x5x5 आदि देखने के लिए एक तर्क जोड़ें ।

यदि n3 है, cतो इस प्रारूप का अनुसरण करेंगे (पूर्णांक परिवर्तनशील होंगे):

   000
   000
   000
111222333444
111222333444
111222333444
   555
   555
   555

रिक्त स्थान, newlines और सभी। यदि n4 है, cतो इस तरह दिखेगा (चर पूर्णांक के साथ भी):

    0000
    0000
    0000
    0000
1111222233334444
1111222233334444
1111222233334444
1111222233334444
    5555
    5555
    5555
    5555

Et cetera।

आपका प्रोग्राम छह पूर्णांक आउटपुट करेगा। पहला पूर्णांक शीर्ष चेहरे पर सभी संख्याओं का योग होगा।

   000
   000          top face
   000
111222333444    left, front, right, and back faces, respectively
111222333444
111222333444
   555
   555          bottom face
   555

दूसरा पूर्णांक बाएं मुख का योग होगा, तीसरा अग्र भाग, चौथा दाहिना, पाँचवाँ भाग पीछे और छठा तल नीचे होगा।

तो अगर n3 cथा और यह था:

   242
   202
   242
000131555313
010121535343
000131555313
   424
   454
   424

आपका प्रोग्राम आउटपुट होगा 20 1 14 43 24 33

अतिरिक्त नियम:

  • आउटपुट पूर्णांकों को गैर-पूर्णांक वर्णों द्वारा सीमांकित किया जाना चाहिए। आप किसी सरणी को वापस करने का विकल्प भी चुन सकते हैं।
  • आप मान सकते हैं कि इनपुट सही है - nएक पूर्णांक है और क्यूबिकली डिबगिंग आउटपुटc से एक क्यूब है । तो अगर था और था , तो आपका कार्यक्रम टूट सकता है और फिर भी मान्य हो सकता है।n3.0cfoo bar
  • आपके कार्यक्रम को केवल n > 1और केवल काम करने की आवश्यकता है n < 1260। यह बड़े या छोटे घन आकारों को संभालने का प्रयास कर सकता है , लेकिन यह आवश्यक नहीं है।

यह , इसलिए सबसे छोटा कोड जीतता है! यदि आपको मदद की ज़रूरत है, तो बेझिझक क्यूबिकल चैट रूम में पूछें ।


क्या हम सभी अनुगामी रिक्त स्थान को शामिल करने के लिए इनपुट मान सकते हैं ताकि एक आयत हो?
फायरफ्लेम 241

@ fireflame241 अगर आपको nहर पंक्ति के बाद रिक्त स्थान का मतलब है , नहीं। वे डंप में शामिल नहीं हैं।
एमडी XF

1
हमें वास्तव में एक "घन" टैग की आवश्यकता है।
श्री Xcoder

@ Mr.Xcoder की स्थिति पूरी हो गई :) मैं भी यही सोच रहा था, और मैं चार और क्यूबिक चुनौतियों वाले एटीएम पर काम कर रहा हूं।
एमडी एक्सएफ

जवाबों:



5

पायथन 2 , 155 150 147 123 121 120 बाइट्स

शायद थोड़ा बहुत गोल्फ हो सकता है

संपादित करें: व्हाट्सएप को हटाने के लिए बेहतर विधि का उपयोग करके -5 बाइट्स

संपादित करें: -3 बाइट्स @Leaky नन को धन्यवाद

संपादित करें: -24 व्हाट्सएप को हटाकर बाइट्स नहीं

संपादित करें: पूर्ववर्ती शोषण द्वारा -2 बाइट्स

lambda n,a:[sum(sum(map(int,b[j*n:][:n]))for b in a.split("\n")[i*n:][:n])for i in range(3)for j in range(~i%2,i%2*2+2)]

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



3

भूसी , 15 बाइट्स

3 एस और 2 mएस

mṁṁiṁoC⁰TC⁰mf±¶

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

व्याख्या

                  Takes input as two arguments, the first being n, the second, the cube
              ¶   Split second argument into a list of lines
           m      For each line
            f±    keep only the digits (remove spaces)
         C⁰       Cut into lists of length n
    ṁ             Map then concatenate
        T           transpose
     oC⁰            then cut into lists of length n
mṁṁi              Takes list of lists of strings (or, in Husk, a list of lists of lists of chars) and returns the sum of the digits in each list
m                 Map function over list of lists
 ṁ                  map then sum
  ṁ                   map then sum
   i                  convert character to integer

1
mṁṁiये वाकई अच्छा है!
जर्गब

3

ऑक्टेव, 64 59 54 बाइट्स

@(c,n)sum(im2col(c'-48,[n n],'distinct'))([2 5:8 10])

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

पिछला उत्तर:

@(c,n)sparse(kron((1:4)+[0;4;8],!!e(n)),1,c-48)([2 5:8 10])

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

आउटपुट के रूप में एक सरणी देता है।


मैं जो उम्मीद नहीं करता था, लेकिन पूरी तरह से मान्य था, और ईमानदार होने के लिए मुझे किसी भी जवाब की उम्मीद नहीं थी। +1
एमडी एक्सएफ

@MDXF आपको क्या उम्मीद थी?
rahnema1

मुझे इस उत्तर की कमी की उम्मीद नहीं थी, न ही इस रूप को स्वीकार करने की। लेकिन यह सिर्फ यह है कि ऑक्टेव इसे कैसे करता है; मैंने कभी ऑक्टेव का उपयोग नहीं किया है।
एमडी XF



1

हास्केल, 128 बाइट्स

s n c=filter(>=0)$map(\[x,y]->sum$map(\[v,w]->fromEnum((lines c)!!(x*n+v)!!(y*n+w))-48)$n%n)$3%4
n%m=sequence[[0..n-1],[0..m-1]]

लाइन ब्रेक के साथ एक स्ट्रिंग को स्वीकार करता है।


1

पॉवरशेल , 236 बाइट्स

param($n,$z)
function f($y){$y-replace' '-split'(.)'-ne''-join'+'|iex}
$a=$z-split"`n"
f $a[0..($n-1)]
$a[$n..(2*$n-1)]|%{$x="($('.'*$n))";$1,$2,$3,$4=$_-split$x-ne'';$h+=$1;$i+=$2;$j+=$3;$k+=$4}
$h,$i,$j,$k|%{f $_}
f $a[(2*$n)..(3*$n)]

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

ऊफ, यह लंबा है। लेकिन, स्ट्रिंग्स का विभाजन और स्लाइसिंग पॉवरशेल के मजबूत सूटों में से एक नहीं है, इसलिए मुझे लगता है कि यह कुछ हद तक अपेक्षित है। ऐसा भी। अनेक। डॉलर।

क्रमशः मापदंडों $nऔर $zआकार और घन जाल के रूप में लेता है । फिर एक फंक्शन का निर्माण करता है जो कि पूरे इस्तेमाल किया जाता है। यहां, हम रिक्त स्थान हटा रहे हैं, प्रत्येक व्यक्तिगत अंक पर बंटवारा कर रहे हैं, बीच में खाली पात्रों को हटा रहे हैं, सभी वर्णों को एक साथ जोड़ रहे हैं +, और फिर एक संख्या प्राप्त करने के लिए परिणामी कथन को निष्पादित कर रहे हैं। उदाहरण के लिए, यह बदल जाता "123"है 1+2+3जिसमें निष्पादित किया जाता है 6

अगली पंक्ति splitनई इनपुट पर इनपुट क्यूब नेट, परिणाम को सरणी में संग्रहीत करती है $a। हम फिर पहली $nपंक्तियों पर कार्य करते हैं और क्यूब के शीर्ष चेहरे को आउटपुट करते हैं।

अगले सेट के लिए, हमें क्यूब के आकार के आधार पर तारों को विभाजित करने की आवश्यकता है। इसलिए, हम प्रत्येक पंक्ति के माध्यम से लूप करते हैं, $xउपयुक्त रेगेक्स पैटर्न (जैसे, आकार के लिए $n=3यह होगा "(...)") के रूप में निर्माण करते हैं, उस पैटर्न के आधार पर स्ट्रिंग को विभाजित करते हैं, फिर से खाली तत्वों को हटाते हैं, और चार चेहरों का प्रतिनिधित्व करने वाले चार चर में स्टोर करते हैं। उन के hमाध्यम से स्ट्रिंग को फिर से एकत्र किया जाता है k

अगली पंक्ति तब फ़ंक्शन के hमाध्यम kसे क्यूब के पक्षों (बाएं, सामने, दाएं, पीछे) को आउटपुट करने के लिए होती है।

अंत में, हम $nक्यूब के निचले चेहरे को आउटपुट करने के लिए फ़ंक्शन के माध्यम से अंतिम लाइनें चलाते हैं ।

सभी नंबरों को पाइप लाइन पर छोड़ दिया गया है, और आउटपुट निहित है।


1

एपीएल (डायलॉग क्लासिक) , 30 27 बाइट्स

{+/⍎¨6(⍺*2)⍴⍉⊃,⌿3⍺⍴⍵⊂⍨⍵∊⎕D}

@ Adám के लिए 3 बाइट्स बंद शेव किए गए

n है c

व्याख्या

                        ⍵⊂⍨⍵∊⎕D   c partitioned by D (digits 0..9)
                    3⍺⍴           reshape into 3 by n matrix
                 ,⌿              concatenate on first axis (results in n vectors)
              ⍉⊃                  ravel transpose mix (results in a simple string with all digits in side order)
      6(⍺*2)⍴                     reshape into 6 by n squared matrix (one row per side)
 +/⍎¨                            sum rows execute each (execute will turn characters into numbers)

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


मुझे 59 बाइट्स लगती हैं । के साथ प्रतिस्थापित ⎕U2286केवल 5 बाइट्स जोड़ देगा।
अड्म

मेरा बुरा, मैं बिना विभाजन के साथ खेल रहा था और केवल क्लासिक संस्करण के लिए बाइट काउंट का इस्तेमाल किया। प्रवासन स्तर 3 का उपयोग करने के लिए मेरे उत्तर को संपादित करेगा :)
गिल

1
इसके अलावा, आप 3और के बीच की जगह को हटा सकते हैं
एडम

1
(6,⍺*2) → 6(⍺*2)
एडम

1
IFAICT, के ,बाद आप की जरूरत नहीं है के रूप में हमेशा ravel आदेश में अपने सही तर्क का उपयोग करता है।
आरा

0

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

r%0@%1@%2@%3@%4@%5@

STDIN से क्यूब लेता है और इंटरप्रेटर के लिए कमांड-लाइन तर्क के रूप में आकार। शीर्ष चेहरे, एक अशक्त बाइट, बाएं चेहरे, एक अशक्त बाइट, ... निचला चेहरा और एक अशक्त बाइट का योग आउटपुट करता है।

इसे ऑनलाइन आज़माएं! ... जो स्पष्ट रूप से मेरे ब्राउज़र पर कुछ प्रकार के व्हाट्सएप के रूप में अशक्त बाइट्स प्रदर्शित करता है।

यह भाषा इस चुनौती के लिए नहीं बनाई गई थी, लेकिन चुनौती भाषा के लिए बनाई गई थी .... क्या यह अभी भी धोखा है? ;)

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