बेतरतीब ढंग से ग्रिड में भरें


9

सकारात्मक पूर्णांक को देखते हुए n < 10, एक 2 आयामी मैट्रिक्स बनाएं जहां प्रत्येक स्थान इसके xऔर yसूचकांक (शीर्ष बाईं ओर से शुरू) से भरा हो ।

उदाहरण के लिए:

इनपुट: २

00 10
10 11

इनपुट: ३

00 10 20
01 11 21
02 12 22

ग्रिड बनने के बाद, प्रत्येक इंडेक्स को बेतरतीब ढंग से भरें। यह एक 'x' या किसी अन्य तरीके से हो सकता है जो किसी स्थान को दर्शाने के लिए भरा हो।

आप यह निर्धारित करते हैं कि मैट्रिक्स को भरने के लिए बेतरतीब ढंग से उत्पन्न करने वाले सूचक द्वारा किस स्थान को भरना है। आप केवल n ^ 2 बार भर सकते हैं ताकि आप जितनी बार चाहें उतनी बार नहीं भर सकें जब तक कि मैट्रिक्स पूरी तरह से भर न जाए। अंत में मैट्रिक्स को भरना चाहिए ताकि आप यह सुनिश्चित करने के लिए कुछ काम करें कि आप उन यादृच्छिक संख्याओं की जांच करें जिन्हें आप भरने के लिए उपयोग करते हैं यह सुनिश्चित करने के लिए कि स्पॉट पहले से ही भरा नहीं है।

भरने पुनरावृत्तियों की प्रगति दिखाने के लिए प्रत्येक भरने के बाद ताज़ा करें या प्रिंट करें।

भरने के लिए उदाहरण:

इनपुट: २

00 10
01 11

00 बेतरतीब ढंग से चुना गया है:

XX 10
01 11

01 बेतरतीब ढंग से चुना गया है:

XX 10
XX 11

00बेतरतीब ढंग से चुना है, लेकिन जब से यह पहले से ही एक फिर से चुना गया है चुनता है 10:

XX XX
XX 11

11 बेतरतीब ढंग से चुना गया है:

XX XX
XX XX

यादृच्छिक संख्याओं को प्रिंट न करें क्योंकि नेत्रहीन मुझे यह देखने में सक्षम होना चाहिए कि किस सूचकांक का चयन किया गया था। इसके द्वारा मेरा मतलब है कि प्रिंट न करें " 11बेतरतीब ढंग से चुना गया है:"। यह खोजपूर्ण खातिर यहाँ है।

चूंकि यह कोड-गोल्फ है, सबसे छोटा कोड जीतता है।

मज़े और खुश गोल्फ!


मुझे समझ नहीं आ रहा है कि निर्देशों के बारे में क्या इतना जटिल है जो बहुत स्पष्ट हैं। "एक 2 आयामी मैट्रिक्स बनाएं जहां प्रत्येक स्थान xy सूचकांक से भरा हो (बाईं ओर से शुरू हो रहा है)" (एक मुद्रण योग्य स्ट्रिंग नहीं)। "भरने वाले पुनरावृत्तियों की प्रगति दिखाने के लिए प्रत्येक भरने के बाद ताज़ा करें या प्रिंट करें।" प्रगति दिखाना चाहिए। अत्यधिक विशिष्ट क्यों हो सकते हैं जब यह बताता है कि रचनात्मक उपयोगकर्ता अपने समाधान के साथ कैसे हो सकते हैं?
जैक्सनसेक

है n>= 10संभव? (आपको 0 की तत्कालीन स्थिति को ठीक से भरने के लिए अधिकतम लंबाई के बारे में जानना शुरू करना होगा)। उस स्थिति के लिए भरना एक समय में एक सूचकांक है, एक बार में 1 अंक नहीं, है ना?
टन हास्पेल

@TimmyD मैं इस बात से सहमत हूं कि यह सैंडबॉक्स में अधिक समय बिताना चाहिए था, क्योंकि सैंडबॉक्स यही है, लेकिन मेरे लिए निर्देश स्पष्ट हैं कि क्या आवश्यक है। नहीं एक खराब चुनौती IMHO।
एलपेड्रो

@ टोनहॉस्ट गुड पॉइंट। मैं
jacksonecac

1
यह बहुत बेहतर लग रहा है। मैं अभी भी "एक कोड के साथ सबसे छोटा कोड जीतता है अगर कुछ एएससीआईआई के बजाय कुछ जीयूआई का उपयोग किया गया था" के संदर्भों को बाहर ले जाएगा। यह अभी भी अपरिभाषित है।
मॉर्गन थ्रैप

जवाबों:


5

05AB1E , 29 बाइट्स

<ÝDâJU[X¹ä»,XÐÙg#Jþ2ô.R„  :)U

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

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

व्याख्या

                                # implicit input n
<ÝDâ                            # cartesian product of [0..n-1] and [0..n-1]
    JU                          # join pairs and store in X
      [     XÐÙg#               # loop until there's only spaces left in X
       X¹ä                      # split X into n pieces
          »,                    # join rows by space and columns by newlines and print
                 Jþ             # join X to string and remove all non-digits
                   2ô.R         # split in pieces of 2 and pick a pair at random
                       „  :)    # replace this pair with 2 spaces
                            U   # and store in X

यह बहुत अच्छा लग रहा है, लेकिन जैसा कि मैंने इसका परीक्षण किया है, ऐसा लगता है कि यह हर वर्ग को नहीं भरता है?
जैक्सनसेक

@jacksonecac: जैसा कि मैंने इसे समझा, मुझे यादृच्छिक रूप से n ^ 2 बार भरना चाहिए, यदि सभी वर्गों को भरने की संभावना नहीं है, अगर एक ही सूचकांक एक से अधिक बार यादृच्छिक पर चुना जाता है। अगर यह गलत है, तो मुझे इसे बाद में फिर से करना होगा (अब चलाना होगा)
Emigna

"आप यह निर्धारित करते हैं कि मैट्रिक्स को भरने के लिए बेतरतीब ढंग से उत्पन्न करने वाले सूचक द्वारा किस स्थान को भरना है। आप केवल n ^ 2 बार भर सकते हैं ताकि आप जितनी बार चाहें उतनी बार भर न सकें जब तक कि मैट्रिक्स पूरी तरह से भर न जाए।" इसलिए इसे भरना होगा। मैं विवरण में अधिक स्पष्ट करूंगा।
जैक्सनसेक

@jacksonecac स्पष्टीकरण के लिए धन्यवाद। मैंने उत्तर तदनुसार अपडेट किया है :)
एमिग्ना

उत्तम! अच्छा काम है यार!
जैकसनेक

3

पिप , 41 40 38 36 बाइट्स

-Sध्वज के लिए कोड के 35 बाइट्स, +1 ।

Pm:J_MM ZCGa{ST:mmR:asX2}M$ALmSK{r}

Cmdline तर्क से इनपुट लेता है। अंतरिक्ष के साथ स्थान (किसी भी अन्य चरित्र +1 बाइट के लिए संभव है)। एकल पुनरावृत्ति द्वारा अलग किए गए क्रमिक पुनरावृत्तियों को आउटपुट करता है (जो कि कानूनी है लेकिन इसे पढ़ना थोड़ा कठिन हो सकता है)। इसे ऑनलाइन आज़माएं!

इस एक में सभी तरह के गंदे टोटके। कम संस्करण में गंदे चालें कम होती हैं। : ^ (स्पष्टीकरण:

Pm:J_MM ZCGa{ST:mmR:asX2}M$ALmSK{r}
                                     -S flag means nested lists are delimited first
                                       by newlines then by spaces when stringified/printed
           a                         1st cmdline arg
         CG                          Coordinate Grid, a list of lists of coord pairs
        Z                            Zip (transposes so it's x,y instead of row,col)
   J_                                Function that takes a list and joins all items
     MM                              MapMap: map this function to each sublist
                                       This joins a coord pair [1;0] into a string "10"
 Pm:                                 Assign the result to m and print it

                          $ALm       Fold m on Append List: appends all sublists of m
                                       together, making a single list of coord pairs
                              SK     Sort with the following function as key:
                                {r}  Return a random number
                                     We now have a randomly-ordered list of all the
                                       coord pairs from m

            {           }M           Map this function to that list:
             ST:m                    Convert m to string in-place
                 mR:                 Replace (in-place)...
                    a                  the argument (a coord pair)...
                     sX2               ... with two spaces
                                     The map operation returns a list of strings, one for
                                       each step of the process, which are autoprinted
                                       (separated by newlines)

अच्छी नौकरी! यह पूरी तरह से काम करता है
jacksonecac

दरअसल, n>=10रैंडमाइजेशन के लिए सही ढंग से काम नहीं किया जा रहा है, लेकिन यह अभी भी संक्षिप्त रूप से हिट करता है। 10 से बड़ी संख्या के लिए यह केवल जहां हटाता है index_i==index_j। इस कारण के पीछे कोई विचार क्यों होगा?
मैजिक ऑक्टोपस Urn

1
@carusocomputing पूरी तरह से निश्चित नहीं है, लेकिन यह संभवत: कुछ करने के लिए है कि (mi@##Pmi@0)भाग में सूचकांक कैसे चुने जाते हैं । मैंने कई बाइट कम करने वाले हैक्स लगाए जो सूचकांकों पर एकल अंक होने पर निर्भर करते हैं।
DLosc

##, समझ गया। मान्यताओं का अच्छा उपयोग। स्पष्टीकरण के लिए धन्यवाद हा।
मैजिक ऑक्टोपस Urn

1

ग्रूवी (202 बाइट्स)

{a->b=new String[a][a];while(b.flatten().flatten().contains(null)){b[(int)(Math.random()*a)][(int)(Math.random()*a)]="XX";b.eachWithIndex{e,i->e.eachWithIndex{f,j->print f?"XX ":"${i}${j} "}println()}}}

उस विशिष्ट आउटपुट प्रारूप ने वास्तव में मेरी बाइट की गिनती को गड़बड़ कर दिया, लेकिन meh।
इसे आज़माएं: https://groovyconsole.appspot.com/edit/5171951567896576 (प्रीटियर प्रिंट के लिए +9 बाइट्स)

Ungolfed:

y={a->
    b=new String[a][a];
    while(b.flatten().flatten().contains(null)) {
        b[(int)(Math.random()*a)][(int)(Math.random()*a)]="XX";
        b.eachWithIndex{
            e,i->
            e.eachWithIndex{
                f,j->
                print f ? "XX ": "${i}${j} " 
            }
            println()
        }
    }
}
y(4)​

आउटपुट उदाहरण:

00 01 02 XX 
10 11 12 13 
20 21 22 23 
30 31 32 33 
00 01 02 XX 
XX 11 12 13 
20 21 22 23 
30 31 32 33 
XX 01 02 XX 
XX 11 12 13 
20 21 22 23 
30 31 32 33 
XX 01 XX XX 
XX 11 12 13 
20 21 22 23 
30 31 32 33 
XX 01 XX XX 
XX 11 12 XX 
20 21 22 23 
30 31 32 33 
XX 01 XX XX 
XX 11 12 XX 
XX 21 22 23 
30 31 32 33 
XX 01 XX XX 
XX 11 XX XX 
XX 21 22 23 
30 31 32 33 
XX 01 XX XX 
XX XX XX XX 
XX 21 22 23 
30 31 32 33 
XX XX XX XX 
XX XX XX XX 
XX 21 22 23 
30 31 32 33 
XX XX XX XX 
XX XX XX XX 
XX 21 22 23 
30 31 32 33 
XX XX XX XX 
XX XX XX XX 
XX 21 22 23 
XX 31 32 33 
XX XX XX XX 
XX XX XX XX 
XX 21 22 23 
XX 31 32 33 
XX XX XX XX 
XX XX XX XX 
XX 21 22 23 
XX 31 32 33 
XX XX XX XX 
XX XX XX XX 
XX 21 22 23 
XX 31 32 33 
XX XX XX XX 
XX XX XX XX 
XX 21 22 23 
XX 31 32 33 
XX XX XX XX 
XX XX XX XX 
XX 21 22 23 
XX 31 32 33 
XX XX XX XX 
XX XX XX XX 
XX 21 22 23 
XX 31 32 33 
XX XX XX XX 
XX XX XX XX 
XX 21 22 23 
XX 31 32 33 
XX XX XX XX 
XX XX XX XX 
XX 21 22 XX 
XX 31 32 33 
XX XX XX XX 
XX XX XX XX 
XX 21 22 XX 
XX 31 32 33 
XX XX XX XX 
XX XX XX XX 
XX 21 22 XX 
XX 31 32 33 
XX XX XX XX 
XX XX XX XX 
XX 21 22 XX 
XX 31 32 XX 
XX XX XX XX 
XX XX XX XX 
XX XX 22 XX 
XX 31 32 XX 
XX XX XX XX 
XX XX XX XX 
XX XX 22 XX 
XX 31 32 XX 
XX XX XX XX 
XX XX XX XX 
XX XX 22 XX 
XX 31 32 XX 
XX XX XX XX 
XX XX XX XX 
XX XX 22 XX 
XX 31 32 XX 
XX XX XX XX 
XX XX XX XX 
XX XX 22 XX 
XX 31 32 XX 
XX XX XX XX 
XX XX XX XX 
XX XX 22 XX 
XX 31 32 XX 
XX XX XX XX 
XX XX XX XX 
XX XX 22 XX 
XX 31 32 XX 
XX XX XX XX 
XX XX XX XX 
XX XX 22 XX 
XX 31 32 XX 
XX XX XX XX 
XX XX XX XX 
XX XX 22 XX 
XX 31 32 XX 
XX XX XX XX 
XX XX XX XX 
XX XX 22 XX 
XX 31 32 XX 
XX XX XX XX 
XX XX XX XX 
XX XX 22 XX 
XX 31 32 XX 
XX XX XX XX 
XX XX XX XX 
XX XX 22 XX 
XX XX 32 XX 
XX XX XX XX 
XX XX XX XX 
XX XX 22 XX 
XX XX 32 XX 
XX XX XX XX 
XX XX XX XX 
XX XX 22 XX 
XX XX 32 XX 
XX XX XX XX 
XX XX XX XX 
XX XX 22 XX 
XX XX 32 XX 
XX XX XX XX 
XX XX XX XX 
XX XX 22 XX 
XX XX 32 XX 
XX XX XX XX 
XX XX XX XX 
XX XX 22 XX 
XX XX 32 XX 
XX XX XX XX 
XX XX XX XX 
XX XX 22 XX 
XX XX 32 XX 
XX XX XX XX 
XX XX XX XX 
XX XX 22 XX 
XX XX 32 XX 
XX XX XX XX 
XX XX XX XX 
XX XX 22 XX 
XX XX 32 XX 
XX XX XX XX 
XX XX XX XX 
XX XX 22 XX 
XX XX 32 XX 
XX XX XX XX 
XX XX XX XX 
XX XX 22 XX 
XX XX 32 XX 
XX XX XX XX 
XX XX XX XX 
XX XX 22 XX 
XX XX 32 XX 
XX XX XX XX 
XX XX XX XX 
XX XX 22 XX 
XX XX 32 XX 
XX XX XX XX 
XX XX XX XX 
XX XX 22 XX 
XX XX 32 XX 
XX XX XX XX 
XX XX XX XX 
XX XX 22 XX 
XX XX XX XX 
XX XX XX XX 
XX XX XX XX 
XX XX 22 XX 
XX XX XX XX 
XX XX XX XX 
XX XX XX XX 
XX XX 22 XX 
XX XX XX XX 
XX XX XX XX 
XX XX XX XX 
XX XX 22 XX 
XX XX XX XX 
XX XX XX XX 
XX XX XX XX 
XX XX 22 XX 
XX XX XX XX 
XX XX XX XX 
XX XX XX XX 
XX XX 22 XX 
XX XX XX XX 
XX XX XX XX 
XX XX XX XX 
XX XX 22 XX 
XX XX XX XX 
XX XX XX XX 
XX XX XX XX 
XX XX 22 XX 
XX XX XX XX 
XX XX XX XX 
XX XX XX XX 
XX XX XX XX 
XX XX XX XX 

मैट्रिक्स NxN होना चाहिए ताकि एक सही वर्ग हो।
जैक्सनसेक

@jacksonecac यह एक 0-अनुक्रमित 4x4वर्ग है। वर्ग अपने आप में केवल नई रेखा से अलग होता है, साथ ही प्रत्येक पुनरावृत्ति को अलग किया जाता है, इसलिए आउटपुट थोड़ा एक साथ चलता है।
AdmBorkBork

यदि आप पुनरावृत्तियों के बीच परिसीमन चाहते हैं, तो इसे संक्षेप में निर्दिष्ट करें।
मैजिक ऑक्टोपस Urn

यहाँ, इसे नई लाइन के साथ आज़माएँ, इनबेटीन
मैजिक ऑक्टोपस Urn

मैं माफी माँगता हूँ मैं निष्कर्ष पर कूद गया। मुझे इसे बाहर पार्स करें: डी
जैक्सनसेक 18

1

आर, 84 81 74 बाइट्स

अब शून्य-अनुक्रमण के बजाय एक-अनुक्रमण का उपयोग करता है। @ बेलीवोब के लिए 7 बाइट्स से छुटकारा मिल गया।

N=scan()
m=outer(1:N,1:N,paste0)
for(i in sample(N^2)){m[i]="XX";print(m)}

N = 3 के लिए उदाहरण आउटपुट

     [,1] [,2] [,3]
[1,] "11" "12" "XX"
[2,] "21" "22" "23"
[3,] "31" "32" "33"
     [,1] [,2] [,3]
[1,] "11" "12" "XX"
[2,] "21" "22" "23"
[3,] "31" "XX" "33"
     [,1] [,2] [,3]
[1,] "11" "12" "XX"
[2,] "XX" "22" "23"
[3,] "31" "XX" "33"
     [,1] [,2] [,3]
[1,] "11" "XX" "XX"
[2,] "XX" "22" "23"
[3,] "31" "XX" "33"
     [,1] [,2] [,3]
[1,] "XX" "XX" "XX"
[2,] "XX" "22" "23"
[3,] "31" "XX" "33"
     [,1] [,2] [,3]
[1,] "XX" "XX" "XX"
[2,] "XX" "22" "23"
[3,] "XX" "XX" "33"
     [,1] [,2] [,3]
[1,] "XX" "XX" "XX"
[2,] "XX" "XX" "23"
[3,] "XX" "XX" "33"
     [,1] [,2] [,3]
[1,] "XX" "XX" "XX"
[2,] "XX" "XX" "XX"
[3,] "XX" "XX" "33"
     [,1] [,2] [,3]
[1,] "XX" "XX" "XX"
[2,] "XX" "XX" "XX"
[3,] "XX" "XX" "XX"

अच्छी नौकरी! इसका लाभ उठाएं। उन बाइट्स बचाओ!
जैकसनैक

आप सीधे प्रतिस्थापन के बजाय कुछ बाइट्स को बचा सकते हैं replace:for(i in sample(N^2)){m[i]="XX";print(m)}
बिलीवोब

@Billywob धन्यवाद, मैंने आपके सुझाव को शामिल करने के लिए कोड को संपादित किया है। शानदार कैच!
rturnbull

0

AWK, 229 बाइट्स

func p(a){for(k=1;k<=m;k++){if(k==a)gsub("[0-9]","X",M[k])
printf"%s",M[k]}}{n=$1;m=n*n
k=1
for(i=0;i<n;i++)for(j=0;j<n;j++){s=k%n==0?k==m?"\n\n":"\n":" "
M[k++]=i j s}p()
for(;z<m;z++){do{y=int(rand()*m+1)}while(M[y]~"X")p(y)}}

मैंने प्रत्येक मैट्रिक्स के बीच आउटपुट को स्थान देने के लिए कुछ बाइट्स जोड़े।

नोट: इसे रन के बीच अधिक 'यादृच्छिक' बनाने के srand()लिए, 7 अतिरिक्त बाइट्स के लिए एक कॉल जोड़ा जा सकता है।

उपरोक्त कोड में स्टोर करने के बाद उपयोग और आउटपुट FILE:

    awk -f FILE <<< 2

00 01
10 11

XX 01
10 11

XX XX
10 11

XX XX
10 XX

XX XX
XX XX

0

PHP, 172 बाइट्स

for(;$x<$s=($a=$argv[1])*$a;)$r[]=$x%$a.($x++/$a^0);echo($c=chunk_split)(join(" ",$r),$a*3);for(;$q<$s;){if($r[$z=rand(0,$s-1)]<X)++$q&$r[$z]=XX;echo$c(join(" ",$r),$a*3);}

टूट - फूट

for(;$x<$s=($a=$argv[1])*$a;)$r[]=$x%$a.($x++/$a^0); #make the array
echo($c=chunk_split)(join(" ",$r),$a*3); # Output array
for(;$q<$s;)
{
  if($r[$z=rand(0,$s-1)]<X)++$q&$r[$z]=XX; #fill position if it is not XX and raise increment
  echo$c(join(" ",$r),$a*3); #Output array
}

0

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

from random import *
R=range(input())
G=[(x,y)for x in R for y in R]
def f():print"\n".join(" ".join(["XX","%d%d"%(x,y)][(x,y) in G]for x in R)for y in R)
f()
while G:G.remove(choice(G));f()
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.