एन-आयामी एन ^ एन सरणी एन के साथ भरा


62

में:  पर्याप्त मेमोरी और एक सकारात्मक पूर्णांक N

आउट:  एन-आयामी एन ^ एन सरणी एन से भरा, जहां एन ^ एन का मतलब एन-बाय-एन-बाय-एन-बाय ...

उदाहरण:

1: [1]जो एक 1D सरणी (एक सूची) लंबाई 1 है, जिसमें एक एकल 1 है

2: [[2,2],[2,2]]जो 2 पंक्तियों और 2 कॉलम के साथ 2 डी से भरा एक 2 डी सरणी (एक तालिका) है

3: [[[3,3,3],[3,3,3],[3,3,3]],[[3,3,3],[3,3,3],[3,3,3]],[[3,3,3],[3,3,3],[3,3,3]]]जो 3 डी परतों, 3 पंक्तियों, और 3 कॉलमों के साथ 3 डी से भरा एक 3 डी सरणी (एक घन) है

4: [[[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]]],[[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]]],[[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]]],[[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]]]]

5 और 6: कृपया उत्तर में से एक देखें।


यदि हमारी भाषा सरणियों का समर्थन नहीं करती है, तो एक स्वीकार्य आउटपुट प्रारूप क्या होगा?
ओकेक्स

17
चूंकि "पर्याप्त मेमोरी" इनपुट का हिस्सा है, मैं एक जवाब देखना चाहता हूं जो एक रोबोट को वास्तव में इनपुट के रूप में मेमोरी लेने और इसे उपयोग करने से पहले प्लग में नियंत्रित करता है।
user2357112

1
क्या सभी सरणियों को अलग-अलग ऑब्जेक्ट होने की आवश्यकता है?
नील

1
@ user2357112 मुझे लगता है कि यह एक पूर्व शर्त प्रकार की समस्या है। मुझे संदेह है कि ऑप वास्तव में मेमोरी को इनपुट के रूप में स्वीकार करने की अपेक्षा करता है।
द ग्रेट डक

2
@ TheGreatDuck सही है, लेकिन मुझे पूरा यकीन है कि user2357112 का मतलब एक मजाक के रूप में था।
एडम

जवाबों:


50

पायथन , 32 बाइट्स

lambda n:eval('['*n+'n'+']*n'*n)

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

गुणन के "[[[n]*n]*n]*n"साथ एक स्ट्रिंग बनाता है n, और इसका मूल्यांकन पायथन कोड के रूप में करता है। चूंकि मूल्यांकन फ़ंक्शन के दायरे में होता है, चर नाम nफ़ंक्शन इनपुट का मूल्यांकन करता है।


3
गुंजाइश चाल प्रतिभा है
ग्रिफिन

+1, यह स्पष्ट चाल वास्तव में बहुत सारे बाइट्स को नीचे गिरा देती है
मिल्कीवेय 90

31

जे, 4 बाइट्स

$~#~

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

व्याख्या

$~#~  Input: integer n
  #~  Create n copies of n
$~    Shape n into an array with dimensions n copies of n

6
जब मैंने चुनौती शीर्षक देखा, तो मैंने तुरंत जे के बारे में सोचा। बहुत अच्छा है कि J भी Jelly (J से प्रेरित गोल्फ भाषा) को हरा देता है।
डेन

1
भी नहीं है $~$~जो बराबर है जबकि यह भी अपने आप में दोहरा
मील की दूरी पर

2
$~$~अंग्रेजी में अनुवाद किया ... पैसा, अधिक मिलता है, पैसा, अधिक मिलता है ...
मैजिक ऑक्टोपस Urn



9

आर, २६

यह स्पष्ट जवाब है लेकिन शायद कुछ चालाक है?

n=scan();array(n,rep(n,n))

है scan()आवश्यक?
21

अन्य उत्तरों को देखते हुए, ऐसा लगता है कि या तो यह एक फ़ंक्शन है या किसी भी तरह इनपुट स्वीकार करना है?
Flounderer

1
ठीक है, मैं आर बिल्कुल नहीं जानता। मैंने अभी सोचा था कि आप इसके बजाय किसी तरह एक फ़ंक्शन निर्दिष्ट कर सकते हैं।
21

हाँ, आप बदल सकते हैं n=scan();द्वारा function(n), लेकिन यह यह अब बनाता है।
फ्लाउंडर

5
आप रख कर एक बाइट बचा सकता है nके अंदर काम array: array(n<-scan(),rep(n,n))
rturnbull

8

जावास्क्रिप्ट (ईएस 6),  44  40 बाइट्स

f=(n,k=i=n)=>i--?f(n,Array(n).fill(k)):k

डेमो


8

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

f n=iterate(filter(>'"').show.(<$[1..n]))(show n)!!n

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

@ निम्मी के उत्तर से प्रेरित है , लेकिन अधिक पूर्वनिर्धारित कार्यों का उपयोग करते हुए।

  • उपयोग करता है iterateऔर !!एक पुनरावर्ती सहायता समारोह के बजाय।
  • "हाथ से" सूची सीमांकक का निर्माण करने के बजाय, filter(>'"').showतार की एक सूची को प्रारूपित करने के लिए उपयोग करता है, फिर अतिरिक्त "वर्णों को अलग कर देता है ।

8

05AB1E (विरासत) , 6 5 बाइट्स

-1 केविन क्रूज़सेन को धन्यवाद

F¹.D)

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

F     # For 0 .. input
 ¹.D) # Push <input> copies of the result of the last step as an array

प्रमुख Dको हटाया जा सकता है क्योंकि इनपुट का फिर से उपयोग किया जाता है (यह सुनिश्चित नहीं है कि जब यह एक चीज थी जब आपने उत्तर पोस्ट किया था, लेकिन आपको Dअब स्पष्ट रूप से आवश्यकता नहीं है)।
केविन क्रूज़सेन

1
@ केविनक्रूजसेन मुझे लगता है कि यह उन उत्तरों में से एक है जिसने हमें कई बार निहित इनपुट लेने का विचार दिया है
रिले

आह अच्छा। मैं वास्तव में उम्मीद कर रहा था कि पोस्टिंग के समय अभी तक इसका स्पष्ट रूप से अनुमान नहीं लगाया जा सकता है, लेकिन एहसास हुआ कि मेरी टिप्पणी (जो मैंने संपादित की) पोस्ट करने के बाद। ;) कभी-कभी यह मजाकिया होता है कि पुराने उत्तर (आमतौर पर 2017 पूर्व) द्वारा कितनी स्पष्ट चीजें की जा रही हैं, और अब इसे कितना कम किया जा सकता है।
केविन क्रूज़सेन

7

ऑक्टेव, 35 33 25 23 20 बाइट्स

@(N)ones(N+!(1:N))*N

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

@(N)ones(N*ones(1,N))*N

@(N)repmat(N,N*ones(1,N))

@LuisMendo की बदौलत 8 बाइट बच गईं

@(N)ones(num2cell(!(1:N)+N){:})*N

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

पिछला उत्तर:

@(N)repmat(N,num2cell(!(1:N)+N){:})

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


@LuisMendo चूहों, मैं बस उस पोस्ट करने जा रहा था;)
बीकर

@ बीकर व्हूप्स :-)
लुइस

7

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

n#0=show n
n#l='[':tail((',':)=<<n#(l-1)<$[1..n])++"]"
f n=n#n

प्रयोग उदाहरण: f 2-> "[[2,2],[2,2]]"इसे ऑनलाइन आज़माएं!

हास्केल की सख्त प्रकार प्रणाली एक फ़ंक्शन को रोकती है जो विभिन्न गहराई की नेस्टेड सूचियों को लौटाती है, इसलिए मैं एक स्ट्रिंग के रूप में परिणाम का निर्माण करता हूं।

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

n#l=                         n with the current level l is
    '[':                     a literal [ followed by
           n#(l-1)<$[1..n]   n copies of   n # (l-1)
        (',':)=<<            each prepended by a , and flattened into a single list
      tail                   and the first , removed
                  ++"]"      followed by a literal ]

n#0=show n                   the base case is n as a string

f n=n#n                      main function, start with level n         

हम और अधिक builtin कार्यों के साथ ही विचार कम कर सकते हैं: f n=iterate(filter(>'#').show.(<$[1..n]))(show n)!!n
अर्जन जोहानसन

@ IdearjanJohansen: यह एक महान विचार है। कृपया इसे एक अलग उत्तर के रूप में पोस्ट करें।
nimi

आप के साथ एक बाइट दाढ़ी कर सकते हैं (#0)=show? हास्केल से बहुत परिचित नहीं है
साइको

@ कैश: नहीं, यह एक वाक्यविन्यास त्रुटि है। एक सही वाक्यविन्यास के लिए मैं तर्कों और उपयोग को फ्लिप कर सकता हूं (#)0=show, लेकिन किसी फ़ंक्शन की सभी परिभाषाओं में समान संख्या में तर्क होने चाहिए। दूसरी पंक्ति ( n#l='['...) को दो तर्कों की आवश्यकता है, इसलिए पहली पंक्ति में भी दो तर्क होने चाहिए।
नीमी

6

MATL, 8 बाइट्स

ttY"l$l*

MATL ऑनलाइन पर इसे आज़माएं (मैंने कुछ कोड जोड़े हैं जो आउटपुट के वास्तविक आकार को दर्शाते हैं क्योंकि MATL में सभी n- आयामी आउटपुट को 2D मैट्रिक्स के रूप में दिखाया गया है जहाँ सभी आयाम> 2 को दूसरे आयाम में समतल किया जाता है)।

व्याख्या

        % Implicitly grab the input (N)
tt      % Make two copies of N
Y"      % Perform run-length decoding to create N copies of N
l$1     % Create a matrix of ones that is this size  
*       % Multiply this matrix of ones by N
        % Implicitly display the result  

मैं वास्तव में MATL ऑनलाइन से नहीं बता सकता कि क्या आपका सबम सही काम करता है। ऐसा लगता है कि प्रत्येक उत्तर एक विस्तृत मैट्रिक्स है।
Adám

4
@ दूसरे से परे आयाम दूसरे में ढह गए के रूप में प्रदर्शित किए जाते हैं। इसलिए उदाहरण उत्पादित 3x3x3 सरणी के बजाय एक 3x9 सरणी दिखाता है। यदि आप Zyकोड के अंत में जोड़ते हैं तो यह वास्तविक आकार बताता है
लुइस मेंडो

6

पायथन 2 , 36 बाइट्स

-2 बाइट्स @CalculatorFeline को धन्यवाद

a=n=input()
exec"a=[a]*n;"*n
print a

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



क्या TIO लिंक को शामिल करना संभव होगा ?
Adám

1
वास्तव में, यह! (-8 बाइट्स अनुकूलित एल्गोरिथ्म के कारण, आउटपुट जोड़ने के लिए +9 बाइट्स)
कैलक्यूलेटरफलाइन

@CalculatorFeline बाइट काउंट में शामिल करने से बचने के लिए आप हैडर और फुटर में चीजें रख सकते हैं।
अड्म

1
पूर्ण कार्यक्रम प्रस्तुतियाँ में इनपुट और आउटपुट आवश्यक नहीं हैं?
कैलक्यूलेटर


5

जेली , 5 बाइट्स

⁾Wẋẋv

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

कैसे?

⁾Wẋẋv - Main link: n                            e.g.       3
⁾Wẋ   - character pair literal ['W','ẋ']                  "Wẋ"
   ẋ  - repeat list n times                               "WẋWẋWẋ"
    v - evaluate as Jelly code with input n          eval("WẋWẋWẋ", 3)
      - ...
        WẋWẋ... - toEval: n                e.g. 3
        W        - wrap                        [3]
         ẋ       - repeat list n times         [3,3,3]
          Wẋ     - wrap and repeat            [[3,3,3],[3,3,3],[3,3,3]]
            ...  - n times total             [[[3,3,3],[3,3,3],[3,3,3]],[[3,3,3],[3,3,3],[3,3,3]],[[3,3,3],[3,3,3],[3,3,3]]]

दूसरा 5-बाइट जेली उत्तर। अभी भी अस्वीकार्य रूप से J :-)
Adám

2
... और कोशिश करने की इच्छा के लिए नहीं: D
जोनाथन एलन

5

जावा 97 96 95 बाइट्स

Object c(int n,int i){Object[]a=new Object[n];for(int j=0;j<n;)a[j++]=i<2?n:c(n,i-1);return a;}

Ungolfed:

public class N_Dim {

    public static Object create(int n) {
        return create(n, n);
    }

    public static Object create(int n, int i) {
        Object[] array = new Object[n];
        for(int j=0;j<n;j++) {
            array[j] = i<2?n:create(n, i - 1);
        }
        return array;
    }

    public static void main(String[] args) {
        System.out.println(Arrays.deepToString((Object[]) create(3)));
    }

}

1
आप के i<=1साथ बदल सकते हैं i<2?
क्लिफरॉट

हाँ @cliffrott। वह काम किया। धन्यवाद!!
एनाक्रॉन

1
आप (n,i)->{...}

जावा 8 लैम्ब्डा

1
हम्म, ऐसा लगता है कि यह अतिरिक्त इनपुट लेता है। इसे मान्य करने के लिए आपको केवल एक पैरामीटर की एक अलग विधि बनाने की आवश्यकता होगी।
जकॉब

5

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

f=(n,m=n)=>m?Array(n).fill(f(n,m-1)):n

इस का मेमोरी-भूखा संस्करण 45 बाइट्स है:

f=(n,m=n)=>m?[...Array(n)].map(_=>f(n,m-1)):n

5

बैश + जीएनयू उपयोगिताओं, 117 बाइट्स

n=$[$1**$1]
seq -f$1o%.fd$n+1-p $n|dc|rev|sed -r "s/(0+|$[$1-1]*).*$/\1/;s/^(0*)/\1$1/;s/^1/[1]/"|tr \\n0$[$1-1] \ []

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


कार्यक्रम अनिवार्य रूप से 0 से (n ^ n) -1 बेस n में गिना जाता है, जहां n इनपुट है। गिनती में प्रत्येक आधार-एन संख्या k के लिए, यह निम्नलिखित कार्य करता है:

  1. यदि k कम से कम एक अंक 0 के साथ समाप्त होता है, तो k के अंत में प्रत्येक अंक 0 के लिए '[' प्रिंट करें।
  2. प्रिंट एन।
  3. यदि k कम से कम एक अंक n-1 के साथ समाप्त होता है, तो k के अंत में प्रत्येक अंक n-1 के लिए ']' प्रिंट करें।

(मान n = 1 को एक विशेष मामले के रूप में ब्रैकेट्स को जोड़ने की आवश्यकता है। यह इनपुट मूल्य स्टैडर के लिए कुछ आउटपुट भी उत्पन्न करता है, जिसे मानक PPCG नियमों के तहत अनदेखा किया जा सकता है।)

शायद इस विचार को लागू करने का एक छोटा तरीका है।


नमूना रन:

./array 3
[[[3 3 3] [3 3 3] [3 3 3]] [[3 3 3] [3 3 3] [3 3 3]] [[3 3 3] [3 3 3] [3 3 3]]]

5

जेली , 4 बाइट्स

R»µ¡

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

R»µ¡
R     Range. 2 -> [1, 2]
 »    Max between left arg and right arg. Vectorizes. -> [2, 2]
  µ   Separates into a new chain.
   ¡  Repeat 2 times. After another iteration this yields [[2, 2], [2, 2]].

एक ही बात और एक एकल मोनाड के साथ और श्रृंखला विभाजक की कोई आवश्यकता नहीं:

4 निवाले

»€`¡


4

पायथन 3 , 57 53 50 38 बाइट्स

f=lambda n,c=0:n-c and[f(n,c+1)*n]or 1

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


-4 बाइट्स @CalculatorFeline को धन्यवाद


34 बाइट्स:

f=lambda c,n:c and[f(c-1,n)*n]or 1

के रूप में बुलाया जाना चाहिए f(4,4)


आपके TIO लिंक की तुलना में आपकी कोड लाइनें उलट क्यों हैं?
Adám

आप बदल सकते हैं c>1के साथ c 1 बाइट को बचाने के लिए। (मार्कडाउन, `एस के पार रिक्त स्थान को रोकें )
कैलकुलेटर

@CalculatorFeline मुझे नहीं लगता कि वह कर सकती है; यह c>0इस विशेष मामले में होगा।
आउटगॉल्फ

फिर अंत को बदल दें <space>n। समस्या हल हो गई और बोनस-अधिक बाइट्स बचाए गए! : D (इनलाइन कोड के अंत में रिक्त स्थान संभव है, लेकिन शुरुआत नहीं। यह अजीब बात है ...) TIO लिंक
कैलक्यूलेटर

@ Adám: TIO पर मुख्य फ़ंक्शन को हेडर में और यहां मुख्य फ़ंक्शन को अंतिम पंक्ति पर रखने की अनुमति देने के लिए।
कैलक्यूलेटरफैलिन


4

रूबी, 27 बाइट्स

->a{(z=a).times{z=[z]*a};z}

केवल 1 बाइट अधिक है लेकिन xnor के अद्भुत पायथन जवाब से 'eval' चाल के बजाय एक अलग दृष्टिकोण का उपयोग करना।


3

पर्ल 6 , 25 बाइट्स

{($^n,{$_ xx$n}...*)[$n]}

के साथ शुरू होता है n, और पुनरावृत्तिकरण "बार-बार एन" को लागू करता है n, हर बार Listनेस्टिंग का एक अतिरिक्त स्तर बनाता है।

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


$_बाइट बचाने के लिए इस्तेमाल करें
Jo King

@JoKing: मैं पहले से ही $_आंतरिक ब्लॉक के पैरामीटर के रूप में उपयोग करता हूं, इसलिए मैं बाहरी ब्लॉक के पैरामीटर के रूप में भी इसका उपयोग नहीं कर सकता।
SMLS

हाँ, पर $nऔर $_हमेशा एक ही मूल्य है। इसे ऑनलाइन आज़माएं!
जो किंग

3

PHP, 70 62 बाइट्स

यह सबसे सरल है जिसके साथ मैं आ सकता हूं।

for(;$i++<$n=$argv[1];)$F=array_fill(0,$n,$F?:$n);print_r($F);

इनपुट को पहले तर्क के रूप में लेता है और स्क्रीन पर परिणामी सरणी को प्रिंट करता है।


मुझे 8 बाइट बचाने के लिए @ user59178 का धन्यवाद !


जैसा कि अनावश्यक है, वैसा ही पूर्व-असाइन करना $l। गिराने $i=0,और जगह $lके साथ $n 7 बाइट्स बचाता है। एक अतिरिक्त बाइट को असाइन नहीं करने $F, $nसशर्त में असाइन करने और एक टर्नरी का उपयोग करके बचाया जा सकता $F?:$nहैarray_fill()
user59178

@ user59178 मुझे नहीं पता कि यह वही है जो आपके मन में था या नहीं, लेकिन, सुझावों के लिए धन्यवाद। आपने मुझे 8 बाइट्स से बचाया है!
इस्माइल मिगुएल

3

क्लोजर, 36 बाइट्स

#(nth(iterate(fn[a](repeat % a))%)%)

Iterates फ़ंक्शन जो अपने तर्क nसमय को दोहराता है , यह ऐसे तत्वों के अनंत अनुक्रम का उत्पादन करता है और फिर इसका nतत्व लेता है ।

इसे ऑनलाइन देखें



3

बैच, 141 बाइट्स

@set t=.
@for /l %%i in (2,1,%1)do @call set t=%%t%%,.
@set s=%1
@for /l %%i in (1,1,%1)do @call call set s=[%%%%t:.=%%s%%%%%%]
@echo %s%

बैच में वास्तव में सरणियाँ नहीं होती हैं, इसलिए यह एक सरणी के स्ट्रिंग प्रतिनिधित्व को प्रिंट करता है। व्याख्या: पहली दो पंक्तियाँ चर में एस N .द्वारा अलग किए गए N-1 ,एस के दोहराया पैटर्न का निर्माण करती हैं t। चौथी लाइन तब -dimensional सरणी Nबनाने के लिए प्रतिस्थापन पैटर्न बार के रूप में इसका उपयोग करती है Ncallकैसे forऔर setकथन काम करते हैं, इस कारण डबल आवश्यक है । सबसे पहले, forकमांड वेरिएबल्स को प्रतिस्थापित करता है। जैसा कि होता है, मेरे सभी %संकेत दोगुने हो जाते हैं, इसलिए यह उन सभी को रेखांकित करने के अलावा कुछ नहीं करता है, जिसके परिणामस्वरूप call call set s=[%%t:.=%s%%%]। यह तब परिणामी कथन Nबार दोहराता है । हर बार, callकमांड चर का स्थान लेती है। इस बिंदु पर, sचर में केवल एक ही सेट होता है%एस, इसलिए इसे प्रतिस्थापित किया जाता है, जिसके परिणामस्वरूप (जैसे) call set s=[%t:.=[2,2]%]। आंतरिक कॉल तब tचर को प्रतिस्थापित करता है, जिसके परिणामस्वरूप set s=[[2,2],[2,2]]वांछित कार्य करता है (जैसे) । का अंतिम मान sतब मुद्रित किया जाता है।


+1 वाह, मुझे उम्मीद नहीं थी कि। सभी नम्र .bat फ़ाइल का जय हो!
आदम

3

क्लोजर, 49 बाइट्स

(defmacro r[n]`(->> ~n ~@(repeat n`(repeat ~n))))

कम से कम क्लोजर उदाहरण नहीं है, लेकिन मैं खुद को उद्धृत और निर्विवाद के साथ खुश कर रहा हूं।


3

मैं , 7 बाइट्स

मुझे यह मेरे सहयोगी के निर्माता से मिला है।

#Bbhph~

#Bb     प्रतिलिपि #फ़ंक्शन B ound to b inding
   hp  h ook तर्क को ( p का अधिकार) p ower फ़ंक्शन (दोहराने)
     h~h को तर्क को बाईं ओर ~(संपूर्ण परिणामी फ़ंक्शन का) ook

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


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