আমার মাইনসুইপার টাইলটি কী ঘিরে আছে?


31

মাইনসুইপার একটি ধাঁধা গেম যেখানে মাইনগুলি সমস্ত খনিগুলির অবস্থান চিহ্নিতকরণের লক্ষ্য সহ ননডেস্ক্রিপ্ট টাইলসের বোর্ডের চারপাশে লুকানো থাকে। খনিতে ক্লিক করা গেমটি হারাতে পারে, তবে অন্য কোনও টাইলকে ক্লিক করা 0-8 থেকে একটি সংখ্যা প্রকাশ করবে যা এটি বোঝায় যে কতটি খনি সরাসরি এটি ঘিরে রেখেছে।

একটি নম্বর দেওয়া, আপনি অবশ্যই খালি টাইলস এবং এর চারপাশের খনিগুলির একটি এলোমেলো * সম্ভাব্য সংমিশ্রণ প্রদর্শন করতে হবে। এটি একটি 3x3 অ্যারের আকারে হওয়া উচিত। কেন্দ্রের টাইলটি ইনপুট হিসাবে নেওয়া খনিগুলির সংখ্যা হওয়া উচিত।

* সমস্ত সংমিশ্রণের জন্য শূন্য-শূন্য সুযোগ থাকতে হবে।


উদাহরণ

_ = blank square
X = mine

0

___
_0_
___

1

_X_
_1_
___

1

___
_1_
X__

___
_1_
__X

4

_X_
X4X
_X_

4

X_X
_4_
X_X

4

___
X4X
X_X

8

XXX
X8X
XXX

ইনপুট

  • কেন্দ্রের টাইলের আশেপাশে খনিগুলির সংখ্যা (0-8)

আউটপুট

  • আউটপুটের যেকোন যুক্তিসঙ্গত ফর্ম যা 3x3 অ্যারের টাইলগুলি প্রদর্শন করে

অন্যান্য বিধি

  • প্রতিটি সংমিশ্রণে ঘটনার সমান সুযোগ থাকতে হবে না। আপনার প্রোগ্রামটি সম্পাদন করার সময় অবশ্যই প্রতিটি সংমিশ্রণের অ-শূন্য সম্ভাবনা থাকতে হবে।
  • খনি এবং খালি টাইলের জন্য যে কোনও 2 টি অক্ষর বেছে নেওয়া যেতে পারে।
  • এটি কোড গল্ফ, সবচেয়ে কম বাইটস সহ প্রোগ্রাম।

"খনি এবং খালি টাইলের জন্য যে কোনও 2 টি অক্ষর চয়ন করা যেতে পারে" আমরা কী এখনও ব্যবহার করতে পারি, বলতে পারি 1এবং করব 0?
জোনাথন অ্যালান

3
@ জোনাথান অ্যালান আমি হ্যাঁ বলব, 0/1 ইনপুট কেস কিছুটা বিভ্রান্তিকর হতে পারে তবে আমি মনে করি এটি বড় বিষয় নয়।
এওমিকা

একটি ফ্ল্যাট, 9-উপাদানগুলির তালিকা কি 'আউটপুটটির যুক্তিসঙ্গত ফর্ম'?
চ্যাস ব্রাউন

@ চ্যাসব্রাউন না, একটি ফ্ল্যাট তালিকা আসলে সমতুল্য নয়।
এওমিকা

উত্তর:


4

জেলি , 9 বাইট

<Ɱ8Ẋs4js3

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

খালি = 1
আমার =0

নোট করুন 1এবং 0পূর্ণসংখ্যা হয়।

আরেকটি নোট: এটি জোনাথন অ্যালানের 10-বাইট উত্তরের সাথে কিছুটা মিল, তবে এটি কোনওভাবেই এটি দ্বারা প্রভাবিত হয় না, এবং যদি আপনি মনোযোগ দিয়ে মনোযোগ দেন তবে প্রক্রিয়াটি প্রথম নজরে তুলনায় আসলে আরও আলাদা।


উঘ আমি একটি কৌশল মিস করেছি :)
জোনাথন অ্যালান

@ জোনাথান অ্যালান আপনি কি বিশ্বাস করেন এটি আপনার কাছে যথেষ্ট? যাইহোক, প্রত্যয়টি একই রকম ...
এরিক দ্য আউটগল্ফার

1
এটি কিছুটা আলাদা। আমি যদি কোনও পোস্ট পড়ে এবং দ্রুত গল্ফটি খুঁজে পাই তবে আমি মন্তব্য করি; যদি আমি কেবল আমার পোস্ট করা চ্যালেঞ্জটি সমাধান করার চেষ্টা করছি। আমি স্বতন্ত্রভাবে আগে অভিন্ন কোড পোস্ট করেছি।
জোনাথন অ্যালান

@ জোনাথান অ্যালান আমার কাছে তার দিকটি কিছুটা আলাদা outgolf। এ কারণেই আমি জিজ্ঞাসা করেছি, তবে আপনি এখানে পোস্ট করা পছন্দ করেন বলে মনে হয়, তাই ...
এরিক দি আউটগলফার

9

এপিএল (ডায়ালগ ইউনিকোড) , 28 15 বাইট

-13 বাইট ধন্যবাদ এনএনজি!

{3 35⌽⍵,⍵≥8?8}

ব্যাখ্যা:

{...}একটি সরাসরি ফাংশন (ডি-এফএন), এটির সঠিক যুক্তি।

8?8 তালিকা থেকে 8 টি এলোমেলো সংখ্যার সাথে ডিল করুন 1.8:

      8?8                         
7 2 1 8 4 6 5 3

⍵≥ যুক্তি কি তাদের প্রত্যেকের চেয়ে বড় বা সমান ?:

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

⍵, বুলিয়ান তালিকায় যুক্তিটি প্রিপেন্ড করুন:

      5 , 0 1 1 0 1 0 1 1
5 0 1 1 0 1 0 1 1

5⌽ বাম দিকে তালিকার 5 টি অবস্থান ঘোরান, যাতে যুক্তিটি কেন্দ্রে থাকে:

      5  5 0 1 1 0 1 0 1 1
1 0 1 1 5 0 1 1 0

3 3⍴ 3x3 ম্যাট্রিক্সে তালিকাটি পুনরায় আকার দিন:

      3 3  1 0 1 1 5 0 1 1 0
1 0 1
1 5 0
1 1 0

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

জে , 15 বাইট

এছাড়াও অনেক বাইট এনএনজি ধন্যবাদ!

3 3$5|.],]>8?8:

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


1
(8↑1⍴⍨⍵)[8?8]-> ⍵>8?8(ধরে ⎕io←0
নিচ্ছেন

1
3 3⍴1↓,⍵,2 4⍴->3 3⍴5⌽⍵,
এনজিএন

@ ধন্যবাদ! আমি আমার ভার্বোস প্রচেষ্টা দ্বারা লজ্জা বোধ করছি ...
গ্যালেন ইভানভ

1
লজ্জার দরকার নেই :) আপনাকে ধন্যবাদ - এই উত্তরটি আমাকে কিছু জে
জানার

1
জে জবাব উত্তর সুন্দর।
জোনা

8

জাভাস্ক্রিপ্ট (ES6), 67 বাইট

সংক্ষিপ্ত সংস্করণ @tsh দ্বারা প্রস্তাবিত

খালি স্লটগুলি 0, খনিগুলি হয় 1

n=>`___
_${t=9,n}_
___`.replace(/_/g,_=>n-(n-=Math.random()<n/--t))

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


আসল ট্রায়াল-এন্ড ত্রুটি সংস্করণ, 78 by বাইট

খালি স্লটগুলি _, খনিগুলি হয় 7

f=(n,o=`___
_${k=n}_
___`.replace(/_/g,c=>Math.random()<.5?--k|7:c))=>k?f(n):o

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

মন্তব্য

f = (                         // f = recursive function
  n,                          // n = input
  o = `___\n_${k = n}_\n___`  // o = minesweeper field / k = backup of n
    .replace(/_/g, c =>       // for each underscore character c in o:
      Math.random() < .5 ?    //   random action:
        --k | 7               //     either decrement k and yield 7
      :                       //   or:
        c                     //     let the underscore unchanged
    )                         // end of replace()
) =>                          //
  k ?                         // if k is not equal to 0:
    f(n)                      //   try again
  :                           // else:
    o                         //   stop recursion and return o


6

জেলি ,  13  10 বাইট

8Ẉ>RẊs4js3

প্রত্যাশিত তালিকার তালিকাটিতে কেন্দ্রের চারপাশে 0 এবং 1 এর দ্বারা প্রদত্ত পূর্ণসংখ্যা যথাক্রমে খনি এবং ফাঁকা প্রতিনিধিত্ব করে।

এটি অনলাইন চেষ্টা করুন! (ফুটার সুন্দর অ্যারে প্রিন্ট করে)

কিভাবে?

8Ẉ>RẊs4js3 - Link: integer, n                   e.g.  3
8          - eight                                    8
 Ẉ         - length of each (implicit range of eight) [1,1,1,1,1,1,1,1]
   R       - range of n                               [1,2,3]
  >        - greater than? (vectorises)               [0,0,0,1,1,1,1,1]
    Ẋ      - shuffle                                  [1,1,1,0,0,1,1,0]
     s4    - split into chunks of 4                   [[1,1,1,0],[0,1,1,0]]
       j   - join (with n)                            [1,1,1,0,3,0,1,1,0]
        s3 - split into chunks of 3                   [[1,1,1],[0,3,0],[1,1,0]]

1
একটি ছোট নোট হিসাবে, ŒHএর জায়গায়ও কাজ করে s4
মিঃ এক্সকডার

; s4s3 এছাড়াও কাজ করে
ডাইলান

@ অল্লানন আমার গল্ফ করার সময় আমি আসলে একটি টিআইওর সাথে একই সময়ে একটি কোড পোস্ট করেছিলাম (তবে তাড়াতাড়ি এটিকে পিছনে ফেলেছি যাতে আমাকে ব্যাখ্যাটি আবারও লিখতে হয়নি)।
জোনাথন অ্যালান

6

পাইথ, 16 14 বাইট

c3jQc2.S.[d8*N

Isaacg ধন্যবাদ 2 বাইট সংরক্ষণ করা।
নিরাপদ দাগ এবং খনিগুলির জন্য উদ্ধৃতিগুলির জন্য স্পেস ব্যবহার করে।
এখানে চেষ্টা করুন

ব্যাখ্যা

c3jQc2.S.[d8*N
            *NQ     Get (implicit) input number of quotes...
        .[d8        ... and pad to length 8 with spaces.
      .S            Shuffle.
  jQc2              Stick the input in the middle.
c3                  Split into three.

.[d8পরিবর্তে>8+*8d

5

ওরাকল 18 এসকিউএল, 230 বাইট

গল্ফের ভাষা নয় তবে ...

WITH v(v)AS(SELECT*FROM SYS.ODCINUMBERLIST(0,1))SELECT v.v||b.v||c.v||'
'||d.v||n||e.v||'
'||f.v||g.v||h.v
FROM n,v,v b,v c,v d,v e,v f,v g,v h
WHERE v.v+b.v+c.v+d.v+e.v+f.v+g.v+h.v=n
ORDER BY DBMS_RANDOM.VALUE
FETCH NEXT ROW ONLY

ইনপুট মানটি nকলাম সহ একটি টেবিলে রয়েছে n:

CREATE TABLE n(n) AS
SELECT 7 FROM DUAL;

এটি অনলাইনে চেষ্টা করে দেখুন - https://livesql.oracle.com এ লগইন করুন এবং এটিকে একটি ওয়ার্কশিটে আটকে দিন।

আউটপুট:

V.V||B.V||C.V||''||D.V||N||E.V||''||F.V||G.V||H.V
-------------------------------------------------
101 
171 
111

সমস্ত সম্ভাব্য সমন্বয় পেতে (183 বাইট):

WITH v(v)AS(SELECT*FROM SYS.ODCINUMBERLIST(0,1))SELECT v.v||b.v||c.v||'
'||d.v||n||e.v||'
'||f.v||g.v||h.v
FROM n,v,v b,v c,v d,v e,v f,v g,v h
WHERE v.v+b.v+c.v+d.v+e.v+f.v+g.v+h.v=n

আউটপুট:

V.V||B.V||C.V||''||D.V||N||E.V||''||F.V||G.V||H.V
-------------------------------------------------
111 
171 
110

111 
171 
101

111 
171 
011

111 
170 
111

111 
071 
111

110 
171 
111

101 
171 
111

011 
171 
111


3

কিউব্যাসিক 1.1 , 206 186 বাইট

RANDOMIZE TIMER
INPUT N
O=N
Z=8-N
FOR I=0TO 7
IF O*Z THEN
R=RND<.5
O=O+R
Z=Z-1-R
A(I)=-R
ELSEIF O THEN
O=O-1
A(I)=1
ELSE
Z=Z-1
A(I)=0
ENDIF
NEXT I
?A(0)A(1)A(2)
?A(3)N;A(4)
?A(5)A(6)A(7)

-20 ধন্যবাদ ডিএলসকে (সদ্য পোস্ট করা গল্ফিং ট্রিক)।

খালি = 0
খনি =1

নোট করুন 0এবং 1পূর্ণসংখ্যার হয়, তবে আমি যেভাবেই হোক STDOUT ব্যবহার করছি, তাই ...

আউটপুট এর মত প্রদর্শিত হবে:

 A  B  C
 D  x  E
 F  G  H

যেখানে এএইচ 0/1 এবং এক্স ইনপুট।


চমৎকার কৌশল, খনি এবং খালি টাইলের জন্য নম্বর ব্যবহার করে কিউবাসিকের উইঙ্কি নম্বর আউটপুট নিয়ে কাজ করা!
DLosc

3

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

W¬⁼ΣIKA⁸«E³⭆³‽²↑↗↖θ

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। 0একটি খনির 1জন্য , খালি জায়গার জন্য ব্যবহার করে । ব্যাখ্যা:

     KA             Peek the entire canvas
    I               Cast to integer
   Σ                Take the sum
       ⁸            Literal 8
  ⁼                 Equals
 ¬                  Logical Not
W       «           While
          ³ ³       Literal 3
         E          Map over implicit range
           ⭆        Map over implicit range and join
              ²     Literal 2
             ‽      Random element of implicit range
                    Implicitly print on separate lines
               ↑↗↖θ Print the original input in the middle
  • Peekস্ট্রিংগুলির একটি অ্যারে প্রদান করে, যা Sumকেবল সংক্ষেপণ করে, এজন্য আমরা প্রথমে পূর্ণসংখ্যায় কাস্ট করতে হবে। ( Sum(Sum(PeekAll()))এছাড়াও কাজ করে।)
  • SumNoneখালি অ্যারে (প্রথম লুপ) এর জন্য ফেরত দেয় , তাই কেবল নিরাপদ তুলনা Not(Equals(...))
  • নীলারি Randomসর্বদা ফিরে আসে 0, যদিও এর ডকুমেন্টেশন অন্যথায় বলে।

বিকল্প সমাধানটি ছিল 19 বাইট, চারকোল বাগফিক্সের পরে এখন 17 বাইট:

θ←9W⁻ΣIKA⁸UMKMI‽²

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। 0একটি খনির 1জন্য , খালি জায়গার জন্য ব্যবহার করে । ব্যাখ্যা:

θ

মূল ইনপুট মুদ্রণ করুন।

←9

9বাম দিকে মুদ্রণ করুন । এটি কার্সারটিকে মূল ইনপুটটির উপরে ফিরিয়ে নিয়ে যায় এবং লুপের কমপক্ষে একটি পুনরাবৃত্তি বাধ্য করে (অন্যথায় একটি ইনপুট 8কিছুই করবে না)।

W⁻ΣIKA⁸

ক্যানভাস এবং 8 এর সমস্ত অঙ্কের যোগফলের মধ্যে পার্থক্যটি ননজারো:

UMKMI‽²

পার্শ্ববর্তী প্রতিটি অক্ষর এলোমেলোভাবে 0বা এর সাথে প্রতিস্থাপন করুন 1


3

আর , 67 63 62 59 বাইট

matrix(c(sample(rep(1:0,c(n<-scan(),8-n))),n),6,5)[2:4,1:3]

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

ব্যবহার 1এবং 0। একটি n* 1 +(8-n)* 0ভেক্টর তৈরি করুন , এটিকে বদল করুন, সংযোজন করুন n, নীচে দেখানো বড় ম্যাট্রিক্স তৈরি করুন (যেখানে a...iমূল ভেক্টরের উপাদানগুলির জন্য দাঁড়ানো) এবং বড় হাতের অক্ষরে প্রদর্শিত যথাযথ সাব-ম্যাট্রিক্স বের করুন:

     [,1] [,2] [,3] [,4] [,5]
[1,] "a"  "g"  "d"  "a"  "g" 
[2,] "B"  "H"  "E"  "b"  "h" 
[3,] "C"  "I"  "F"  "c"  "i" 
[4,] "D"  "A"  "G"  "d"  "a" 
[5,] "e"  "b"  "h"  "e"  "b" 
[6,] "f"  "c"  "i"  "f"  "c"

একটি বাইট সংক্ষিপ্ত:matrix((c(sample(rep(1:0,c(n<-scan(),8-n))),n))[c(1:4,9:5)],3)
গ্রেগর

1
@ গ্রেগর আপনি ঠিকই একটি অ্যারে ঠিক আছে অ্যারে প্রদর্শন করার জন্য আউটপুটটির একটি যুক্তিসঙ্গত ফর্ম :)
জয়সি

2

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

from random import*
def f(n):a=[1]*n+[0]*(8-n);shuffle(a);a[4:4]=[n];return zip(*[iter(a)]*3)

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

0খালি জন্য; 1একটি খনি জন্য; এবং nনিজের জন্য।


এর ব্যবহার iterস্মার্ট!
জোনাথন অ্যালান

@ জোনাথন অ্যালান: এক্সনর আমাকে দেখিয়েছিল ঠিক অন্য দিনেই।
চ্যাস ব্রাউন

2

সংযুক্তি , 51 বাইট

{[3,3]&Rotate[Sample[{Sum@_=_2}&_\BinBelow@8]'_,4]}

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

ব্যাখ্যা

গ্যালেনের জে / এপিএল উত্তরের অনুরূপ , মৌলিক কৌশলটি হ'ল খনিগুলির সঠিক সংখ্যার সাথে 1s এবং 0 এর একটি অ্যারে তৈরি করা হয়, ইনপুটটিকে শেষে যুক্ত করে সন্নিবেশ করে অ্যারেটি এমনভাবে ঘোরানো হয় যে ইনপুটটি কেন্দ্রে থাকে, তারপরে 3x3 ম্যাট্রিক্সে পুনরায় আকার দেওয়া হচ্ছে।

পর্ব 1: বাইনারি অ্যারে তৈরি করা

এটি করার জন্য অনেকগুলি উপায় রয়েছে, তবে আমি সাধারণত দুটি প্রকারের মধ্যে ঘটেছিলাম: নৃশংস বাহিনী এবং নির্বাচন।

প্রাথমিক ব্রুটি ফোর্স পদ্ধতিটি দেখতে এরকম দেখাচ্ছে:

NestWhile[{Random[8&2]},0,{Sum@_/=_2}&_]

এটি 8 বাইনারি অঙ্কের এলোমেলো অ্যারে তৈরি করে ( Random[8&2]) যখন তাদের পরিমাণগুলি ইনপুটটির সমান হয় না {Sum@_/=_2}&_। এটি কিছুটা ভার্জোজ, কারণ কোডের নিম্নরূপ জোর দেওয়া অংশগুলি "কেবল এটির কাজ করার জন্য" রয়েছে:

NestWhile[{Random[8&2]},0,{Sum@_/=_2}&_]
          ^           ^^^^^        ^^^^

এবং আমি ধারণাটি বাতিল করে দিয়েছি।

নির্বাচন আরও আকর্ষণীয়। মূল ধারণাটি হ'ল BaseBelow[b, n]বিল্টিন ব্যবহার করা , যা bথেকে প্রস্থের সমস্ত বেস- পূর্ণসংখ্যার n(ডিজিট অ্যারে হিসাবে) একটি তালিকা তৈরি 0করে b^n-1। উদাহরণস্বরূপ, BaseBelow[3, 2]প্রস্থ 2 এর সমস্ত ত্রি স্তরের পূর্ণসংখ্যা উত্পন্ন করে:

A> BaseBelow[3, 2]
 0 0
 0 1
 0 2
 1 0
 1 1
 1 2
 2 0
 2 1
 2 2

আমরা বিশেষভাবে ব্যবহার BaseBelow[2, 8] 8 ম প্রস্থের সমস্ত বাইনারি পূর্ণসংখ্যার জন্য These এগুলি সমস্ত দৈর্ঘ্যের সমস্ত সম্ভাব্য মাইনফিল্ড উপস্থাপন করে। এটি প্রথম পদক্ষেপ।

দ্বিতীয় পদক্ষেপটি কেবলমাত্র N1 এস সহ এই জাতীয় সমস্ত অ্যারে নির্বাচন করছে যেখানে Nইনপুটটি রয়েছে। আমার প্রথম ধারণাটি ছিল এই ইংরেজী বিবৃতিটি সরাসরি অ্যাটাচে অনুবাদ করা:

Chunk[SortBy[Sum,BaseBelow[2,8]],Sum]@N@1

তবে, এটি কেবল পূর্বোক্ত পদ্ধতির চেয়ে 1 বাইট দীর্ঘ নয়, এটি অত্যন্ত পুনরাবৃত্ত - এটি এখনও এলোমেলোভাবে তৈরি হয়নি! অবশ্যই, কীভাবে BaseBelowডাকা হয় তাকে পুনর্গঠিত করে আমি সম্ভবত 1 বাইট সংরক্ষণ করতে পারি, তবে এটি ব্যবহার করা সহজ নয়।

সুতরাং আমি সিদ্ধান্ত নিয়েছি একটি পাথর দিয়ে দুটি পাখি মেরে এবং একটি Shuffleভিত্তিক পদ্ধতির ব্যবহার করব । নিম্নলিখিতটি Nএলোমেলো ক্রমে দৈর্ঘ্যের সমস্ত বৈধ মাইনফিল্ড দেয় :

{Sum@_=_2}&N\Shuffle[BaseBelow&8!2]

তারপরে, যা করা দরকার তা হ'ল প্রথমটি নির্বাচন করা। তবে আমি আরও ভাল করতে পারি - অবশ্যই Sampleফিল্টার করা অ্যারে থেকে ভাল হওয়া ভাল ? এই পদ্ধতির এইরকম কিছু হতে পারে:

Sample[{Sum@_=_2}&_\BaseBelow[2,8]]

আমাকে BaseBelow&8!2গল্ফ ফিরিয়ে নিতে হয়েছিল কারণ \এর অগ্রাধিকার খুব বেশি। অন্যথায় সন্তুষ্ট, আমি এর একটি বাইট কাটা এগিয়ে চললাম:

Sample[{Sum@_=_2}&_\2&BaseBelow@8]

(আমি এখানে ডায়াডিক ফাংশনটি সংক্ষেপে কল করার আরও একটি উপায় আবিষ্কার করেছি: x&f@yএটি একটি উচ্চ-অগ্রাধিকারের অভিব্যক্তি যা মূল্যায়ন করে to f[x, y])

যাইহোক, এই সত্ত্বেও, আমি মনে, সব বরাবর উপনাম জন্য 2&BaseBelowঅস্তিত্ব: BinBelow। সুতরাং আমি এটি ব্যবহার করেছি:

Sample[{Sum@_=_2}&_\BinBelow@8]

এটি পছন্দসই খনি ক্ষেত্র তৈরি করে। আমি নিশ্চিত এটি সর্বোত্তম কাছাকাছি।

অংশ 2: অ্যারে গঠন

যেমনটি আগেই বলা হয়েছিল, আমি যে ফর্মিং কৌশলটি ব্যবহার করেছি তা জে / এপিএল উত্তরের অনুরূপ, তাই আমি খুব বেশি বিশদে যাব না। ধরা যাক MINEFIELDশেষ বিভাগ থেকে ফলাফল হয়েছে। ফাংশনটি তখন হয়ে যায়:

{[3,3]&Rotate[MINEFIELD'_,4]}

MINEFIELD'_আসল ইনপুট দিয়ে খনি ক্ষেত্রটিকে সম্মতি জানায় _, আমাদেরকে এরকম কিছু দেয়:

[1, 0, 0, 0, 1, 0, 0, 1, 3]

তারপরে, কেন্দ্রটি রেখে Rotate[MINEFIELD'_,4]এই তালিকাটিকে 4বাম দিকে বারবার ঘোরান :

[1, 0, 0, 1, 3, 1, 0, 0, 0]

শেষ পদক্ষেপটি [3,3]&একটি 3x3 ম্যাট্রিক্সে তালিকাটি পুনরায় আকার দেওয়ার জন্য ব্যবহার করছে:

 1 0 0
 1 3 1
 0 0 0

2

জাভা 10, 165 157 141 বাইট

n->{var r="___\n_"+n+"_\n___";for(int i;n>0;r=r.charAt(i*=Math.random())>58?r.substring(0*n--,i)+(i>9?0:0+r.substring(i+1)):r)i=11;return r;}

খালি টাইলগুলি _(58 টির উপরে একটি ইউনিকোড মানযুক্ত কোনও অক্ষর ভাল) এবং খনিগুলি রয়েছে0

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

ব্যাখ্যা:

n->{                           // Method with integer parameter and String return-type
  var r="___\n_"+n+"_\n___";   //  Result-String, starting at:
                               //   "___
                               //    _n_
                               //    ___"
  for(int i;n>0                //  Loop as long as `n` isn't 0 yet:
      ;                        //    After every iteration:
       r=r.charAt(i*=Math.random())
                               //     Select a random integer in the range [0,11)
         >58?                  //     And if the character at this random index is a '_':
          r.substring(0*n--,i) //      Set `r` to the first part excluding character `i`,
                               //      (and decrease `n` by 1 in the process)
          +(i>9?0:0+           //      appended with a '0',
           r.substring(i+1))   //      appended with the second part
         :                     //     Else:
          r)                   //      Leave `r` unchanged
     i=11;                     //   Set `i` to 11 so a new random integer can be chosen
  return r;}                   //  Return the result


1

পিএইচপি , 135 134 123 117 122 121 বাইট

পরিবর্তে মুদ্রণের জন্য লুপিং করা 1 বাইট সংরক্ষণ করে

কেন্দ্রের নম্বর সন্নিবেশ করানোর জন্য str_split এবং ইমপ্লোড 11 বাইট সংরক্ষণ করে

স্ট্রিংটি আর 6 বাইট সংরক্ষণের জন্য নির্ধারণ করার দরকার নেই
হ্যাঁ আপনি করছেন দরকার নেই। অন্যথায় প্রতি প্রতিধ্বনি পরে স্ট্রিং পরিবর্তন করা ...

প্রতিধ্বনির পরে সাদা স্থান সরিয়ে ফেললে 1 বাইট সাশ্রয় হয়

চতুষ্পদ লাইন ব্রেকের সাথে "\ n" প্রতিস্থাপন করলে 1 বাইট সাশ্রয় হয়

$n=$argv[1];$s=implode($n,str_split(str_shuffle(str_pad(str_repeat(m,$n),8,n)),4));for(;$i<9;)echo$s[$i].(++$i%3?"":"
");

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



1

পাওয়ারশেল , 91 86 বাইট

-5 বাইট ধন্যবাদ ম্যাজি

param($n)$x=,'X'*$n+,'_'*(8-$n)|random -c 8
-join$x[0..2]
$x[3,4]-join$n
-join$x[5..7]

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

থেকে শুরু ________করে XXXXXXXX(বাম থেকে প্রতিস্থাপন করা) একটি উত্পন্ন স্ট্রিং পরিবর্তন করে। এরপরে $nআউটপুট স্ট্রিংটি তৈরি করতে মাঝখানে সন্নিবেশ করে এটি একাধিক বার টুকরো টুকরো করে । এই শেষ অংশটি সম্ভবত ব্যাপকভাবে অনুকূল করা যেতে পারে কারণ প্রতিটি সূচকের সর্বনিম্ন 5 বাইট ব্যয় হয়।


1
সুন্দর। 86 বাইট
mazzy




0

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

$×8j.r2äIý3ô

ব্যবহার 0খনি জন্য, ফাঁকা স্কোয়ার জন্য স্পেস। লাইনগুলির একটি তালিকা আউটপুট দেয়, যা নীচের টিআইওগুলিতে নিউলাইন ডিলিমিটারের সাথে যোগ দিয়ে সুন্দরভাবে মুদ্রিত হয় (» ) এর ।

এটি অনলাইনে চেষ্টা করুন বা একবারে আরও কয়েকটি পরীক্ষার কেস যাচাই করুন

ব্যাখ্যা:

$             # Push 0 and the input-digit
 ×            # Repeat the 0 the input-digit amount of times as string
              #  i.e. 4 → "0000"
  8j          # Prepend spaces to make the size 8
              #  → "    0000"
    .r        # Randomly shuffle the characters in this string
              #  i.e. "    0000" → " 00 0  0"
      2ä      # Split it into two equal halves (of 4 characters)
              #  → [" 00 ","0  0"]
        Iý    # Join it with the input-digit
              #  → " 00 40  0"
          3ô  # And then split it into (three) parts of 3 characters
              #  → [" 00"," 40","  0"]
              # (which is output implicitly as result)

12 বাইট বিকল্প:

8L@.rIš5._3ô

1খনি জন্য ব্যবহার ,0খালি স্কোয়ারের । ডিজিটের একটি ম্যাট্রিক্স আউটপুট দেয়, যা প্রতিটি সারিটিতে যোগদান করে নীচের টিআইওতে প্রিন্ট করা হয়, এবং তারপরে এই সারিগুলিকে নিউলাইন ডিলিমেটার ( ) ।

এটি অনলাইন বা চেষ্টা করে দেখুন একবারে আরও কয়েকটি পরীক্ষার কেস যাচাই করুন

ব্যাখ্যা:

8L            # Push the list [1,2,3,4,5,6,7,8]
  @           # Check for each if the (implicit) input-integer is >= it
              # (1 if truthy; 0 if falsey)
              #  i.e. 4 → [1,1,1,1,0,0,0,0]
   .r         # Randomly shuffle this list
              #  i.e. [1,1,1,1,0,0,0,0] → [0,1,1,0,1,0,0,1]
     Iš       # Prepend the input-digit to the list
              #  → [4,0,1,1,0,1,0,0,1]
       5._    # Rotate the list five times towards the left
              #  → [1,0,0,1,4,0,1,1,0]
          3ô  # And then split it into (three) parts of 3 digits each
              #  → [[1,0,0],[1,4,0],[1,1,0]]
              # (which is output implicitly as result)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.