एन के चौराहों को एन-स्क्वायर के निर्माण के साथ * कोन्यूसिटिव कोनों में घुमाते हैं


9

इसका उद्देश्य एक पूर्णांक के 0-9साथ यादृच्छिक पूर्णांकों ( ) के एन वर्गों (nxn) का उत्पादन करना है *जो शीर्ष बाएं से शुरू होकर कोनों के चारों ओर दक्षिणावर्त घूमता है। वर्गों को कंधे से कंधा मिलाकर एक ही स्थान से अलग किया जाना चाहिए।

यदि n = 0, आउटपुट खाली होना चाहिए।

इसके लिए आउटपुट n=1:

*

इसके लिए आउटपुट n=2:

*3 4*
14 07

इसके लिए आउटपुट n=3:

*34 82* 291
453 224 924
145 158 57*

इसके लिए आउटपुट n=4:

*153 135* 0154 0235
2352 5604 3602 2065
2245 6895 3561 7105
7225 5785 479* *662

ध्यान दें कि कैसे *घूमता है (वर्ग के कोनों के चारों ओर), बाएं से दाएं, इस तरह: ऊपर बाएं, ऊपर दाएं, नीचे दाएं, नीचे बाएं, ऊपर बाएं, आदि (दक्षिणावर्त)

यहां छवि विवरण दर्ज करें

सबसे छोटा उत्तर (बाइट्स में मापा गया) जीतता है।


5
कृपया मुझे यह समझने की कोशिश करें
रोहन झुनझुनवाला

1
फिर से मतदान करना। यह मेरे लिए पूरी तरह से स्पष्ट है। कुछ मामूली संपादन किए हैं। ("सही वर्ग" मेरे लिए बीजगणित शब्द की तरह बहुत ज्यादा लग रहा था)
लेवल रिवर सेंट

2
कैसे "यादृच्छिक" यादृच्छिक संख्याओं की आवश्यकता है? यह संभवतः इस तथ्य के बारे में आपके प्रश्न में स्पष्ट होने के लायक है कि अंकों के लिए तारांकन की गणना करते हुए संख्याओं को बिल्कुल एन अंकों की आवश्यकता होती है।
जेसी अमानो

1
<Shrug> शायद मैं धीमा हो रहा हूं, लेकिन अभी भी यह मेरे लिए अस्पष्ट है। क्या आप उदाहरण *में एस के रखने की व्याख्या कर सकते हैं n=4? शायद कुछ और उदाहरण दें?
डिजिटल ट्रॉमा

2
@DigitalTrauma मैं या तो इसका पता नहीं लगा सका, जब तक मुझे एहसास नहीं हुआ कि आप एक "घड़ी" नहीं प्रिंट कर रहे हैं, आप एन - क्लॉक साइड-बाय-साइड प्रिंट कर रहे हैं (जो सवाल से बिल्कुल साफ नहीं था)। इसलिए n = 4 उदाहरण में, आप चार "घड़ियां" देखते हैं- पहली शीर्ष पंक्ति के साथ *153, दूसरी शीर्ष पंक्ति के साथ *135, और इसी तरह।
जॉर्डन

जवाबों:


4

05AB1E , 50 49 बाइट्स

3mF9Ý.R}J¹ô¹ävy`¦'*ìN4%©>ir}®iRr}®<iR})ˆ}¯øvyðý}»

व्याख्या

इनपुट के लिए उदाहरण = 4।

पहले हम 0 और 9 के बीच इनपुट 3 स्ट्रिंग नंबर बनाते हैं।

3mF9Ý.R}J

उत्पादन

6799762549425893341317984133999075245812305412010122884262903656

फिर हम इनपुट के प्रत्येक आकार को टुकड़ों में विभाजित करते हैं।
इसे इनपुट टुकड़ों में विभाजित किया गया है।

¹ô¹ä

यह हमें संख्याओं का एक मैट्रिक्स देता है।

[['6799', '7625', '4942', '5893'], 
 ['3413', '1798', '4133', '9990'], 
 ['7524', '5812', '3054', '1201'], 
 ['0122', '8842', '6290', '3656']]

हम तब मैट्रिक्स की पंक्तियों पर लूप करते हैं, सही स्थानों पर तारांकन सम्मिलित करते हैं।

v                          } # for each row in matrix 
 y`                          # flatten list to stack
   ¦'*ì                      # replace the first digit of the last number with "*"
       N4%©>ir}              # if row-nr % 4 == 0, move the number with "*" to the front
               ®iRr}         # if row-nr % 4 == 1, move the number with "*" to the front
                             # and reverse the number, moving "*" to the numbers right side
                    ®<iR}    # if row-nr % 4 == 2, reverse the number, moving "*" 
                             # to the numbers right side
                         )ˆ  # wrap row in a list and add to global array

अब हमारे पास प्रत्येक पंक्ति पर "*" वाला मैट्रिक्स है, लेकिन हम प्रति कॉलम तारांकन चाहते हैं।

[['*893', '4942', '7625', '6799'], 
 ['099*', '4133', '1798', '3413'], 
 ['7524', '5812', '3054', '102*'], 
 ['0122', '8842', '6290', '*656']]

तो हम इस सूची को कॉलम और इसके विपरीत पंक्तियों में बदल देते हैं।

[['*893', '099*', '7524', '0122'], 
 ['4942', '4133', '5812', '8842'], 
 ['7625', '1798', '3054', '6290'], 
 ['6799', '3413', '102*', '*656']]

अब जो कुछ बचा है वह आउटपुट स्वरूपित करना है।

vyðý}»

रिक्त स्थान पर पंक्तियों में शामिल होने और नईलाइन पर कॉलम हमें अंतिम परिणाम देता है।

*893 099* 7524 0122
4942 4133 5812 8842
7625 1798 3054 6290
6799 3413 102* *656

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

पुराने 50 बाइट का घोल

F¹Fõ¹F9Ý.R«}}¦'*ì})¹ävyN4%©>iR}®iíÁ}®<ií}})øvyðý}»

4

दिल्लोग एपीएल , 57 बाइट्स

⎕IO←0कई सिस्टम पर डिफ़ॉल्ट की आवश्यकता होती है।

ओपी के पहले उदाहरण के अनुसार, दोहरे रिक्ति की अनुमति है।

{A←⊃∘⍕¨?10⍴⍨3⍴⍵⋄A[(⍳⍵),¨⍵⍴2↑¨1⍵(⍵ ⍵)(1⍵)-1]←'*'⋄⍉⎕FMT A}

TryAPL ऑनलाइन!

गैर-प्रतिस्पर्धी 49-बाइट समाधान (डायलॉग एपीएल 16.0):

{⍉⎕FMT'*'@((⍳⍵),¨⍵⍴2↑¨1⍵(⍵ ⍵)(1⍵)-1)⊃∘⍕¨?10⍴⍨3⍴⍵}

3

जावा 7, 372 370 366 बाइट्स

String c(int i){String s="*",a[][]=new String[i][i],t,r="";int j=0,k,z=i-1,m=(int)Math.pow(10,z);for(;j<i;j++)for(k=0;k<i;a[j][k++]=(new java.util.Random().nextInt((int)Math.pow(10,i)-m+1)+m)+"");for(j=0;j<i;k=j%4,t=a[m=k<2?0:z][k],a[m][j++]=k<1|k>2?s+t.substring(1,i):t.substring(0,z)+s);for(j=0;j<i;j++,r+="\n")for(k=0;k<i;r+=a[j][k++]+" ");return i<1?"":i<2?s:r;}

शायद एक-एक करके तारों के बजाय तारांकन करके और एक ही समय में आउटपुट बनाकर कुछ और गोल्फिंग की जा सकती है।

Ungolfed और परीक्षण कोड:

इसे यहाँ आज़माएँ।

class M{
  static String c(int i){
    String s = "*",
           a[][] = new String[i][i],
           t,
           r = "";
    int j = 0,
        k,
        z = i-1,
        m = (int)Math.pow(10, z);
    for(; j < i; j++){
      for(k = 0; k < i; a[j][k++] = (new java.util.Random().nextInt((int)Math.pow(10, i) - m + 1) + m)+"");
    }
    for(j = 0; j < i; k = j % 4,
                      t = a[m = k < 2 ? 0 : z][k],
                      a[m][j++] = k < 1 | k > 2
                                   ? s + t.substring(1, i)
                                   : t.substring(0, z) + s);

    for(j = 0; j < i; j++,
                      r += "\n"){
      for(k = 0; k < i; r += a[j][k++] + " ");
    }
    return i < 1
            ? ""
            : i < 2
               ? s
               : r;
  }

  public static void main(String[] a){
    for (int i = 0; i < 6; i++) {
      System.out.println(c(i));
      System.out.println();
    }
  }
}

संभावित उत्पादन:

(empty)

*

*9 4* 
92 47 


*25 55* 754 
910 197 108 
635 439 35* 


*512 407* 9646 5017 
1663 3847 9772 3149 
7796 2997 5494 1362 
7283 9720 242* *539 


*0726 7743* 52096 50958 *0726 
60322 20914 76387 92716 41579 
89994 18781 33379 84189 31777 
11781 89323 12180 51814 63536 
58411 32935 5168* *6597 43216 

1

PHP, 181 बाइट्स

for($i=-1;++$i<$c=($n=$argv[1])**3;){echo!($i%$q=$n*$n)?"\n":((!$m=$i%$n)?" ":"");echo(!$m&!($b=$i%$q/$n&3)|$m==$n-1&$b==1)&$i<$q|($m==$n-1&$b==2|!$m&$b==3)&$i>$c-$q?"*":rand(0,9);}

क्या आप इसे "ऑनलाइन आज़मा सकते हैं" - इस का संस्करण?
फॉरवर्डिंग

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