এলোমেলোভাবে গ্রিড পূরণ করুন


9

ধনাত্মক পূর্ণসংখ্যা দেওয়া হয়েছে n < 10, একটি 2 মাত্রিক ম্যাট্রিক্স তৈরি করুন যেখানে প্রতিটি অবস্থান তার xএবং yসূচী দিয়ে ভরা থাকে (উপরের বাম থেকে শুরু করে)।

উদাহরণ স্বরূপ:

ইনপুট: 2

00 10
10 11

ইনপুট: 3

00 10 20
01 11 21
02 12 22

গ্রিডটি তৈরি হয়ে গেলে এলোমেলোভাবে প্রতিটি সূচি পূরণ করুন। এটি কোনও 'x' এর সাথে বা কোনও জায়গা বোঝাতে অন্য কোনও উপায়ে পূরণ করা যেতে পারে।

ম্যাট্রিক্স পূরণের জন্য এন্ডেক্সগুলি এলোমেলোভাবে তৈরি করে আপনি কোন স্থানটি পূরণ করবেন তা নির্ধারণ করুন। আপনি কেবলমাত্র n ^ 2 বার পূরণ করতে পারেন যাতে ম্যাট্রিক্স সম্পূর্ণরূপে পূরণ না হওয়া পর্যন্ত আপনি যতগুলি ইচ্ছা পূরণ করতে পারবেন না। শেষে ম্যাট্রিক্স অবশ্যই পূরণ করা উচিত তাই স্পটটি ইতিমধ্যে পূরণ করা হয়নি তা নিশ্চিত করার জন্য আপনি যে র্যান্ডম নম্বরগুলি পূরণ করার জন্য ব্যবহার করছেন তা যাচাই করে নেওয়ার জন্য আপনাকে অবশ্যই কিছু কাজ করতে হবে।

পূরণের পুনরাবৃত্তির অগ্রগতি দেখানোর জন্য প্রতিটি পূরণের পরে রিফ্রেশ বা মুদ্রণ করুন।

পূরণের উদাহরণ:

ইনপুট: 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এলোমেলোভাবে চয়ন করা হয়েছে:"। এটি অনুসন্ধানের জন্য এখানে রয়েছে।

যেহেতু এটি কোড-গল্ফ, সংক্ষিপ্ততম কোডটি জয়ী।

মজা এবং সুখী গল্ফিং আছে!


খুব পরিষ্কার যে নির্দেশাবলী সম্পর্কে এত জটিল তা আমি বুঝতে পারি না। "একটি দ্বিমাত্রিক ম্যাট্রিক্স তৈরি করুন যেখানে প্রতিটি অবস্থান এটির এক্স ইনডেক্স দিয়ে পূর্ণ হয় (উপরের বাম থেকে শুরু করে)" (মুদ্রণযোগ্য স্ট্রিং নয়)। "পূরণের পুনরাবৃত্তির অগ্রগতি দেখানোর জন্য প্রতিটি পূরণের পরে রিফ্রেশ বা মুদ্রণ করুন।" অগ্রগতি অবশ্যই দেখায় সৃজনশীল ব্যবহারকারীরা কীভাবে তাদের সমাধানগুলির সাথে থাকতে পারেন তা যখন সংকীর্ণ হয় তখন কেন অত্যধিক নির্দিষ্ট হতে হবে?
জ্যাকসোনাক

কি n>= 10সম্ভব? (তখনকার শীর্ষস্থানীয় 0 এর সঠিকভাবে পূরণ করার জন্য আপনাকে সর্বোচ্চ দৈর্ঘ্য সম্পর্কে জানতে হবে)। এই ক্ষেত্রে পূরণ করা একবারে একটি সূচক, একবারে 1 ডিজিট নয়, তাই না?
টন হসপেল

@ টিমিমিডি আমি সম্মতি জানাই যে স্যান্ডবক্সে এটি আরও বেশি সময় ব্যয় করা উচিত ছিল কারণ এটি স্যান্ডবক্সটি যা ছিল তবে আমার জন্য নির্দেশাবলী কী প্রয়োজন তা সম্পর্কে বেশ পরিষ্কার pretty কোনও খারাপ চ্যালেঞ্জ নয় আইএমএইচও।
এলপেড্রো

টনহোস্পেল ভালো পয়েন্ট আমি এন <10
জ্যাকসোনাক

1
এটি দেখতে আরও ভাল দেখাচ্ছে। আমি এখনও "ASCII এর পরিবর্তে কিছু GUI ব্যবহার করা হত যদি একটি বোনাসের সাথে সংক্ষিপ্ততম কোড জিততে পারে" এর উল্লেখগুলি বের করবো। এটি এখনও অপরিজ্ঞাত।
মরগান থ্র্যাপ

উত্তর:


5

05 এ বি 1 ই , 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

দেখতে দুর্দান্ত লাগছে তবে আমি যেমন এটি পরীক্ষা করে দেখছি মনে হচ্ছে এটি প্রতিটি স্কোয়ার পূরণ করে না?
জ্যাকসোনাক

@ জ্যাকসকোনাক: যেমনটি আমি বুঝতে পেরেছি, একই সূচিটি একাধিকবার এলোমেলোভাবে বেছে নেওয়া হলে সমস্ত বর্গক্ষেত্র পূরণ না হওয়ার সম্ভাবনা সহ আমার এলোমেলোভাবে n ^ 2 বার পূরণ করা উচিত। যদি এটি ভুল হয় তবে আমাকে এটি পরে আবার করতে হবে (এখনই চালাতে হবে)
এমিগানা

"আপনি নির্ধারণ করেছেন যে ম্যাট্রিক্স পূরণের জন্য এলোমেলোভাবে সূচকগুলি উত্পন্ন করে কোন স্থানটি পূরণ করতে হবে You আপনি কেবলমাত্র n ^ 2 বার পূরণ করতে পারবেন যাতে ম্যাট্রিক্স সম্পূর্ণরূপে পূরণ না হওয়া পর্যন্ত আপনি যতগুলি ইচ্ছা পূরণ করতে পারবেন না।" সুতরাং এটি পূরণ করা আবশ্যক। আমি বর্ণনায় আরও স্পষ্ট করে বলব।
জ্যাকসোনাক

@ জ্যাকসকনাক এই স্পষ্টতার জন্য ধন্যবাদ। আমি সেই অনুযায়ী উত্তর আপডেট করেছি :)
এমিগানা

পারফেক্ট! ভালো চাকরির মানুষ!
জ্যাকসোনাক

3

পিপ , 41 40 38 36 বাইট

কোডের 35 বাইট, -Sপতাকাটির জন্য +1 ।

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

সেমিডলাইন আর্গুমেন্ট থেকে ইনপুট নেয়। স্থানের সাথে প্রতিস্থাপন (অন্য কোনও অক্ষর +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)

সুন্দর কাজ! এটি পুরোপুরি কাজ করে
জ্যাকসোনাক

প্রকৃতপক্ষে, n>=10র্যান্ডমাইজেশনের জন্য সঠিকভাবে কাজ করছে না, তবে এটি সংক্ষেপে আঘাত করে। 10 এর চেয়ে বড় সংখ্যার জন্য এটি কেবল যেখানে সরিয়ে দেয় index_i==index_j। এর পিছনে কোন ধারণা আছে কেন?
ম্যাজিক অক্টোপাস উরন

1
@ কারাসোকম্পুটিং পুরোপুরি নিশ্চিত নয়, তবে সূচকগুলি (mi@##Pmi@0)অংশে কীভাবে বেছে নেওয়া হয়েছে এটি সম্ভবত এটি করার কিছু । আমি কয়েকটি বাইট-হ্রাসকারী হ্যাকগুলি রেখেছি যা সূচকগুলি একক অঙ্কের উপর নির্ভর করে।
ডিএলসক

##, বুঝেছি. অনুমানের দুর্দান্ত ব্যবহার। হাহাহা ব্যাখ্যার জন্য ধন্যবাদ।
ম্যাজিক অক্টোপাস উরন

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()}}}

এই নির্দিষ্ট আউটপুট ফর্ম্যাটটি সত্যিই আমার বাইট সংখ্যা গণনা করেছে তবে মেহ but
এটি ব্যবহার করে দেখুন: 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 হওয়া উচিত তাই নিখুঁত বর্গক্ষেত্র।
জ্যাকসোনাক

@ জ্যাকসকোনাক এটি এটি 0-সূচকযুক্ত 4x4বর্গ। বর্গক্ষেত্রটি কেবল নিউলাইন দ্বারা পৃথক, পাশাপাশি প্রতিটি পুনরাবৃত্তিটি নতুন লাইন পৃথক, সুতরাং আউটপুট কিন্ডা একসাথে চলে।
অ্যাডমবর্কবার্ক

যদি আপনি পুনরাবৃত্তির মধ্যে ডিলিমেটারগুলি চান তবে এটি সংক্ষেপে নির্দিষ্ট করুন।
ম্যাজিক অক্টোপাস উরান

এখানে, পুনরুদ্ধারের অভ্যন্তরের পুনরাবৃত্তির সাথে যুক্ত নিউলাইনটি দিয়ে এটি ব্যবহার করে দেখুন: গ্রোভাইকনসোল.এপস্পট / এডিট / 5171951567896576
ম্যাজিক অক্টোপাস

আমি ক্ষমাপ্রার্থী আমি সিদ্ধান্তে ঝাঁপিয়েছি। আমাকে এটিকে বিশ্লেষণ করতে দাও: ডি
জ্যাকসোনাক

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)}

এন = 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)}
বিলিউব

@ বিলিউব ধন্যবাদ, আমি আপনার পরামর্শটি অন্তর্ভুক্ত করার জন্য কোডটি সম্পাদনা করেছি। দুর্দান্ত ধর!
rturnbull

0

এডাব্লুকে, 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

পিএইচপি, 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()
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.