একটি সুডোকু বোর্ড আউটপুট


25

আজকের চ্যালেঞ্জটি সহজ: কোনও ইনপুট না নিয়ে কোনও বৈধ সুডোকু বোর্ড আউটপুট।

আপনি সুডোকুর সাথে অপরিচিত থাকলে, উইকিপিডিয়া বর্ণনা করে যে কোনও বৈধ বোর্ডের মতো দেখতে হবে :

উদ্দেশ্যটি হ'ল 9 × 9 গ্রিডটি অঙ্ক সহ পূরণ করুন যাতে প্রতিটি কলাম, প্রতিটি সারি এবং প্রতিটি 9 টি × 3 সাবগ্রিড যে গ্রিডটি রচনা করে (যাকে "বাক্স", "ব্লক", বা "অঞ্চল" বলা হয়) থাকে 1 থেকে 9 পর্যন্ত সমস্ত অঙ্ক।

এখন জিনিসটি এখানে ... 6,670,903,752,021,072,936,960 টি বিভিন্ন বৈধ সুডোকু বোর্ড রয়েছে । এর মধ্যে কয়েকটি কম বাইটে সংকোচনের এবং আউটপুট আউট করা খুব কঠিন হতে পারে। তাদের অন্যদের সহজ হতে পারে be এই চ্যালেঞ্জের অংশটি হ'ল কোন বোর্ডগুলি সবচেয়ে কমপ্রেসেবল হবে এবং খুব কম বাইটে আউটপুট করা যায় তা নির্ধারণ করা।

আপনার জমা দেওয়ার জন্য প্রতিবার একই বোর্ডকে আউটপুট দেওয়ার প্রয়োজন হয় না। তবে যদি একাধিক আউটপুট সম্ভব হয় তবে আপনাকে প্রমাণ করতে হবে যে প্রতিটি সম্ভাব্য আউটপুট একটি বৈধ বোর্ড is

নির্দিষ্ট স্ক্রিডের বৈধ সমাধান কিনা তা যাচাই করার জন্য আপনি এই স্ক্রিপ্টটি (যাদু অক্টোপাস আর্নকে ধন্যবাদ) বা এই উত্তরগুলির কোনওটি ব্যবহার করতে পারেন । এটি [1]একটি বৈধ বোর্ডের জন্য আউটপুট এবং একটি অবৈধ বোর্ডের জন্য অন্য কিছু আউটপুট দেয় ।

আপনি নিজের উত্তরটি কী আকারে আউটপুট আউট করবেন সে সম্পর্কে আমি খুব বেশি পছন্দ করি না যতক্ষণ না এটি স্পষ্টত দ্বিমাত্রিক। উদাহরণস্বরূপ, আপনি একটি 9x9 ম্যাট্রিক্স, নয় 3x3 ম্যাট্রিক্স, একটি স্ট্রিং, স্ট্রিংগুলির একটি অ্যারে, 9-সংখ্যার পূর্ণসংখ্যার একটি অ্যারে বা 9 বিহীন সংখ্যার সাথে 9 টি-সংখ্যার সংখ্যা আউটপুট করতে পারেন। 1 মাত্রায় 81 অঙ্কের আউটপুটিংয়ের অনুমতি দেওয়া হবে না। আপনি যদি কোনও নির্দিষ্ট আউটপুট ফর্ম্যাট সম্পর্কে জানতে চান, তবে মন্তব্যগুলিতে আমাকে নির্দ্বিধায় জিজ্ঞাসা করুন।

যথারীতি এটি , তাই আপনার পছন্দের ভাষা (গুলি) -এর সাথে সংক্ষিপ্ত উত্তরটি লিখুন!


আমরা তিনটি 3x9 ম্যাট্রিক কে আউটপুট দিতে পারি? সুডোকু বোর্ডে প্রতিটি সাবম্যাট্রিক্সের প্রতিটি সারি প্রতিনিধিত্ব করে। এটি পছন্দ করুন
ডাইলানান

2
সম্পর্কিত কিন্তু একটি dup নয় । এছাড়াও, আপনি যদি নমনীয় আউটপুটটি মঞ্জুর করে থাকেন তবে আমি নিশ্চিত নই যে কলমোগোরভ-জটিলতা প্রযোজ্য, যেহেতু এটি সাধারণত যথাযথ আসকি শিল্পের মতো স্থির আউটপুটগুলির জন্য।
ব্র্যাডিসি

উত্তর:


13

পাইথ, 22 14 12 10 বাইট

.<LS9%D3 9

মিঃ এক্সকোডারকে 2 বাইট সংরক্ষণ করা হয়েছে।

এখানে চেষ্টা করুন

.<LS9%D3 9
     %D3 9     Order the range [0, ..., 8] mod 3.
  >            For each, ...
.< S9          ... Rotate the list [1, ..., 9] that many times.


ক্রস যে, 10: .<LS9%D3 9
মিঃ এক্সকোডার

লিংক (আপডেট ওয়ানা পারে Tio )
bryc


8

টি-এসকিউএল, 96 89 বাইট

তুচ্ছ আউটপুট থেকে একটি খাটো পাওয়া গেছে!

SELECT SUBSTRING('12345678912345678',0+value,9)FROM STRING_SPLIT('1,4,7,2,5,8,3,6,9',',')

দ্বারা নির্মিত ইন-মেমরি টেবিল STRING_SPLIT(যা এসকিউএল 2016 এবং পরবর্তীকালে সমর্থিত) দ্বারা নির্ধারিত হিসাবে বিভিন্ন পয়েন্ট থেকে শুরু করে 9-অক্ষরের স্ট্রিংগুলি বের করে racts 0+valueসবচেয়ে কম আমি পূর্ণসংখ্যা একটি অন্তর্নিহিত ঢালাই না পারে।

আসল তুচ্ছ আউটপুট (96 বাইট):

PRINT'726493815
315728946
489651237
852147693
673985124
941362758
194836572
567214389
238579461'


6

পাইথন 2 , 53 বাইট

r=range(9)
for i in r:print[1+(j*10/3+i)%9for j in r]

এটি অনলাইন চেষ্টা করুন!


বিকল্প:

পাইথন 2 , 53 বাইট

i=0;exec"print[1+(i/3+j)%9for j in range(9)];i-=8;"*9

এটি অনলাইন চেষ্টা করুন!

পাইথন 2 , 54 বাইট

for i in range(81):print(i/9*10/3+i)%9+1,'\n'*(i%9>7),
i=0;exec"print[1+(i/3+j)%9for j in range(9)];i+=10;"*9
r=range(9);print[[1+(i*10/3+j)%9for j in r]for i in r]

5

পাইথন 3 , 58 55 বাইট

l=*range(10),
for i in b"	":print(l[i:]+l[1:i])

এটি অনলাইন চেষ্টা করুন!

  • -3 বাইট জো কিংকে ধন্যবাদ,

বাইট স্ট্রিংয়ের উপাদানগুলি সেই নম্বরগুলি দিয়ে শেষ করে [1, 4, 7, 2, 5, 8, 3, 6, 9]যাগুলির ঘূর্ণনগুলি ক্রমান্বয়ে ব্যবহৃত হয় [0..9]0সরানো হয় l[1:i]এবং একটি নাল বাইট যা দুই characaters লাগে জন্য কোন প্রয়োজন (নেই \0) একটি বাইট বস্তু প্রতিনিধিত্ব করতে।

55 বাইট

_,*l=range(10)
for i in b"	":print(l[i:]+l[:i])


@ জোকিং চালাক, ধন্যবাদ
ডাইলানান

4

জেলি , 9 8 বাইট

9Rṙ`s3ZẎ

এটি অনলাইন চেষ্টা করুন!

9Rṙ`s3ZẎ
9R         Range(9) -> [1,2,3,4,5,6,7,8,9]
   `       Use the same argument twice for the dyad:
  ṙ        Rotate [1..9] each of [1..9] times.
           This gives all cyclic rotations of the list [1..9]
    s3     Split into three lists.
      Z    Zip. This puts the first row of each list of three in it's own list, 
           as well as the the second and third.
       Ẏ   Dump into a single list of nine arrays.

4

ব্যাচ, 84 বাইট

@set s=123456789
@for %%a in (0 3 6 1 4 7 2 5 8)do @call echo %%s:~%%a%%%%s:~,%%a%%

@ স্মৃতিবিদ্যার আউটপুট ব্যবহার করে। callভেরিয়েবলটি স্লাইসিং অপারেশনে বিভক্ত করতে ব্যবহৃত হয় (সাধারণত এটি কেবল সংখ্যার ধ্রুবক গ্রহণ করে)।



4

পার্ল 6 , 40 32 27 বাইট

-৫ বাইট নোহেলহোফকে ধন্যবাদ

{[^9+1].rotate($+=3.3)xx 9}

এটি অনলাইন চেষ্টা করুন!

বেনামি কোড ব্লক যা একটি 9x9 ম্যাট্রিক্স দেয়। 1 থেকে 9 ব্যাপ্তির পৃথক ঘোরার জন্য প্রতিটি সারির মানচিত্র।


4

জে , 18 বাইট

>:(,&|:|."{,)i.3 3

এটি অনলাইন চেষ্টা করুন!

আউটপুট

1 2 3 4 5 6 7 8 9
4 5 6 7 8 9 1 2 3
7 8 9 1 2 3 4 5 6
2 3 4 5 6 7 8 9 1
5 6 7 8 9 1 2 3 4
8 9 1 2 3 4 5 6 7
3 4 5 6 7 8 9 1 2
6 7 8 9 1 2 3 4 5
9 1 2 3 4 5 6 7 8

কিভাবে এটা কাজ করে

>:(,&|:|."{,)i.3 3
             i.3 3  The 2D array X = [0 1 2;3 4 5;6 7 8]
   ,&|:|."{,        3-verb train:
   ,&|:               Transpose and flatten X to get Y = [0 3 6 1 4 7 2 5 8]
           ,          Flatten X to get Z = [0 1 2 3 4 5 6 7 8]
       |."{           Get 2D array whose rows are Z rotated Y times
>:                  Increment

অভিনব সংস্করণ, 23 বাইট

|.&(>:i.3 3)&.>|:{;~i.3

এটি অনলাইন চেষ্টা করুন!

আউটপুট:

┌─────┬─────┬─────┐
│1 2 3│4 5 6│7 8 9│
│4 5 6│7 8 9│1 2 3│
│7 8 9│1 2 3│4 5 6│
├─────┼─────┼─────┤
│2 3 1│5 6 4│8 9 7│
│5 6 4│8 9 7│2 3 1│
│8 9 7│2 3 1│5 6 4│
├─────┼─────┼─────┤
│3 1 2│6 4 5│9 7 8│
│6 4 5│9 7 8│3 1 2│
│9 7 8│3 1 2│6 4 5│
└─────┴─────┴─────┘

কিভাবে এটা কাজ করে

|.&(>:i.3 3)&.>|:{;~i.3
                    i.3  Array [0 1 2]
                 {;~     Get 2D array of boxed pairs (0 0) to (2 2)
               |:        Transpose
|.&(>:i.3 3)&.>          Change each pair to a Sudoku box:
            &.>            Unbox
    >:i.3 3                2D array X = [1 2 3;4 5 6;7 8 9]
|.&                        Rotate this 2D array over both axes
                             e.g. 1 2|.X gives [6 4 5;9 7 8;3 1 2]
            &.>            Box again so the result looks like the above

4

05 এ বি 1 ই , 14 12 বাইট

8ÝΣ3%}ε9Ls._

-2 একটি বন্দর তৈরি করে বাইট @Mnemonic এর Pyth উত্তর

এটি অনলাইনে চেষ্টা করুন। (ফুটারটি এটি প্রিন্ট-প্রিন্টে যুক্ত করা হয়েছে ual আসল ফলাফলটি 9x9 ম্যাট্রিক্স; দেখতে পাদলেখ সরাতে নির্দ্বিধায় অনুভব করুন))

ব্যাখ্যা:

8Ý              # List in the range [0, 8]
  Σ  }          # Sort the integers `i` by
   3%           #  `i` modulo-3
      ε         # Map each value to:
       9L       #  List in the range [1, 9]
         s._    #  Rotated towards the left the value amount of times

আসল 14 বাইট সমাধান:

9Lε9LN3*N3÷+._

এটি অনলাইনে চেষ্টা করুন। (ফুটারটি এটি প্রিন্ট-প্রিন্টে যুক্ত করা হয়েছে ual আসল ফলাফলটি 9x9 ম্যাট্রিক্স; দেখতে পাদলেখ সরাতে নির্দ্বিধায় অনুভব করুন))

ব্যাখ্যা:

9L                # Create a list of size 9
  ε               # Change each value to:
   9L             #  Create a list in the range [1, 9]
     N3*N3÷+      #  Calculate N*3 + N//3 (where N is the 0-indexed index,
                  #                        and // is integer-division)
            ._    #  Rotate that many times towards the left

উভয় উত্তর সুডোকু ফলাফল:

123456789
456789123
789123456
234567891
567891234
891234567
345678912
678912345
912345678

4

অক্টাভা এবং মতলব, 50 48 29 বাইট

mod((1:9)+['furRaghAt']',9)+1

এটি অনলাইন চেষ্টা করুন!

-2 জনাথন ফ্র্যাচকে ধন্যবাদ

-১ San সানচিইস ব্রডকাস্ট সংযোজন পরামর্শের জন্য ধন্যবাদ, যারা অ-সামঞ্জস্যের বিষয়টিও নির্দেশ করেছেন।

-5 লক্ষ্য করে যে ভেক্টরটি ম্যাটল্যাবে একটি চর স্ট্রিং এবং ট্রান্সপোজেশন সহ লেখা যেতে পারে।

স্বজ্ঞাত ছিল, এখন তাই না। চর স্ট্রিংয়ের সাহায্যে নির্ধারিত মান দ্বারা ছড়িয়ে ছড়িয়ে 1: 9 টি 9 টি সারি ছড়িয়ে দেওয়ার জন্য সম্প্রচারের যোগফল ব্যবহার করে।

সুডোকু বোর্ড উত্পাদিত:

 5 6 7 8 9 1 2 3 4
 2 3 4 5 6 7 8 9 1
 8 9 1 2 3 4 5 6 7
 3 4 5 6 7 8 9 1 2
 9 1 2 3 4 5 6 7 8
 6 7 8 9 1 2 3 4 5
 7 8 9 1 2 3 4 5 6
 4 5 6 7 8 9 1 2 3
 1 2 3 4 5 6 7 8 9

হ্যালো এবং পিপিসিজিতে আপনাকে স্বাগতম; সুন্দর প্রথম পোস্ট।
জোনাথন ফ্রেচ


অবশ্যই ম্যাট্রিক্সে s এর সংজ্ঞা দেওয়া যেতে পারে। আমি অবশ্যই বাইটগুলি ভুলভাবে গণনা করেছি।
পপটিমিস্ট

এটি এখন অকটাভ, আর ম্যাটল্যাবের সাথে উপযুক্ত নয়। আপনি যদি চান তবে ডিফল্ট পিপিসি ফর্ম্যাটিং কপি করার জন্য আপনি জোনাথনের লিঙ্কের শীর্ষে ছোট চেইন আইকনটি ব্যবহার করতে পারেন।
সানচিইস

আপনি যদি চান তবে এটি
সানচিইস

3

হাস্কেল , 41 বাইট

[[x..9]++[1..x-1]|x<-[1,4,7,2,5,8,3,6,9]]

এটি অনলাইন চেষ্টা করুন!


এটি বৈধ নয়। প্রতিটি স্কোয়ারে একই সংখ্যার একাধিক থাকে। আপনি কিছু করতে পারে ভালো (43 বাইটস) পরিবর্তে
জো রাজা

ধন্যবাদ! আমি আপনার পরামর্শটি নিয়েছি
কার্টিস বেচটেল

@ রুশভ মেহতা আমি করেছি। এটি ছিল 43 বাইট তবে আমি অপসারণ করলাম s=যেহেতু এটি প্রয়োজনীয় নয়
কার্টিস বেকটেল

3

জাভা 10, 82 75 বাইট

v->{for(int i=81;i-->0;)System.out.print((i/9*10/3+i)%9+1+(i%9<1?" ":""));}

@TFeld এর পাইথন 2 উত্তরের একটি বন্দর তৈরি করে -7 বাইট ।

এটি অনলাইনে চেষ্টা করুন।

ব্যাখ্যা:

v->{                    // Method with empty unused parameter and no return-type
  for(int i=81;i-->0;)  //  Loop `i` in the range (81, 0]
    System.out.print(   //   Print:
     (i/9               //    (`i` integer-divided by 9,
         *10            //     then multiplied by 10,
         /3             //     then integer-divided by 3,
           +i)          //     and then we add `i`)
             %9         //    Then take modulo-9 on the sum of that above
               +1       //    And finally add 1
    +(i%9<1?            //    Then if `i` modulo-9 is 0:
            " "         //     Append a space delimiter
           :            //    Else:
            ""));}      //     Append nothing more

নিম্নলিখিত সুডোকু আউটপুট দেয় (স্থান নীচের মত নতুন লাইনের পরিবর্তে সীমিত):

876543219
543219876
219876543
765432198
432198765
198765432
654321987
321987654
987654321

2

পাইথন - 81 বাইট

l=list(range(1,10))
for i in range(1,10):print(l);l=l[3+(i%3==0):]+l[:3+(i%3==0)]

অনলাইনে চেষ্টা করুন

আমি ৮১ বাইট পছন্দ করি তবে কিছুটা অপ্টিমাইজ করার পরে :(

পাইথন 2 - 75 68 59 58 বাইট

-7 বাইটস @ ডিএলকাসকে ধন্যবাদ

-9 বাইটস @ স্মারককে ধন্যবাদ

-1 বাইট @ জোকিংকে ধন্যবাদ

l=range(1,10)
for i in l:print l;j=i%3<1;l=l[3+j:]+l[:3+j]

অনলাইনে চেষ্টা করুন


2
৮১ বাইট পারফেক্ট স্কোর! : ডি
ডিজেএমসিহেম

@ ডিজেএমসিএমহেম আমি এটি করে আরও খাটো করার r=range(1,10)কথা ভাবছিলাম কিন্তু আমি সৌন্দর্য নষ্ট করতে পারিনি
ডন হাজার হাজার


@ ডিএলকস ওহ চতুর পুনরায় ব্যবহারl
ডন হাজার হাজার

যদি আপনি পাইথন 2 এতে কিছু মনে করেন না, আপনি প্যারেনগুলি মুদ্রণের বাইরে নিতে পারেন এবং তালিকা প্যাকিংটি সরাতে পারেন।



2

@ শেগি কে বিশাল ধন্যবাদ!

জাভাস্ক্রিপ্ট (নোড.জেএস) , 61 বাইট

t=>[...s='123456789'].map(e=>s.slice(t=e*3.3%9)+s.slice(0,t))

এটি অনলাইন চেষ্টা করুন!


1
দ্রুত গল্ফিং এটিকে 63 বাইটে নামিয়ে দেয় ।
শেগি

2
দুঃখিত, 61 বাইট ; একটি নির্বোধ সুস্পষ্ট গল্ফ মিস!
শেগি



1

সি (ঝনঝন) , 65 বাইট

f(i){for(i=0;i<81;)printf("%d%c",(i/9*10/3+i)%9+1,i++%9>7?10:9);}

ফাংশনটি এখন পুনরায় ব্যবহার করতে সক্ষম

এটি অনলাইন চেষ্টা করুন!


আপনার অঙ্কগুলি পৃথক করতে কোনও NUL বাইট মুদ্রণের পরিবর্তে, আপনি একই বাইট গণনায় একটি ট্যাব অক্ষর ব্যবহার করতে পারেন।
জোনাথন ফ্রেচ

"আপনার জমা দেওয়ার জন্য প্রতিবার একই বোর্ডের আউটপুট দেওয়ার দরকার হয় না But তবে যদি একাধিক আউটপুট সম্ভব হয় তবে আপনাকে প্রমাণ করতে হবে যে প্রতিটি সম্ভাব্য আউটপুট একটি বৈধ বোর্ড" " এটি বলে না যে একাধিক আউটপুট প্রয়োজন। @ এসিলিংক্যাট
২৪

1
@ লগার্ন বিধিবিধানের নিয়মটি হল যে ফাংশন সাবমিশনগুলি পুনরায় ব্যবহারযোগ্য হতে হবে । যদি এটি f(); f()একই বোর্ডে দু'বার আউটপুট করে তবে এটি ঠিক আছে তবে দ্বিতীয় কলটি যদি কাজ করে না তবে তা নয়।
অ্যান্ডারস ক্যাসরগ


By১ বাইটস, f(i){for(i=81;i--;)printf("%d%c",(i/9*10/3+i)%9+1,i%9?9:10);}
@

1

কে (এনএনজি / কে) , 16 বাইট

1+9!(<9#!3)+\:!9

এটি অনলাইন চেষ্টা করুন!

এনজিএন / কে-তে প্রথম উত্তর, নিজের লোকটির কাছ থেকে একটি বড় সহায়তায় করা হয়েছে, @ জিএনএন।

কিভাবে:

1+9!(<9#!3)+\:!9 // Anonymous fn
              !9 // Range [0..8]
    (     )+\:   // Sum (+) that range with each left (\:) argument
        !3       // Range [0..2]
      9#         // Reshaped (#) to 9 elements: (0 1 2 0 1 2 0 1 2)
     <           // Grade up
  9!             // Modulo 9
1+               // plus 1


0

কাঠকয়লা , 14 বাইট

E⁹⭆⁹⊕﹪⁺÷×χι³λ⁹

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। @ স্মৃতিবিদ্যার আউটপুট ব্যবহার করে। ব্যাখ্যা:

E⁹              Map over 9 rows
  ⭆⁹            Map over 9 columns and join
          ι     Current row
         χ      Predefined variable 10
        ×       Multiply
       ÷   ³    Integer divide by 3
            λ   Current column
      ⁺         Add
     ﹪       ⁹  Modulo 9
    ⊕           Increment
                Implicitly print each row on its own line
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.