দাবার বোর্ডের প্যাটার্ন


18

ইনপুট: স্টিডিন থেকে বা কমান্ড-লাইন আর্গুমেন্ট হিসাবে একটি ধনাত্মক সংখ্যা, তারপরে 80 এর চেয়ে কম ছোট।

আউটপুট: একটি বর্গাকার দাবাবোর্ড প্যাটার্ন, ইনপুট সংখ্যার আকার। অন্ধকার ক্ষেত্রগুলি 'এক্স' অক্ষর দ্বারা চিহ্নিত করা হয়, একটি স্পেস দ্বারা সাদা ক্ষেত্র। উপরের-বাম ক্ষেত্রটি 'এক্স' হওয়া উচিত।

একটি সম্পূর্ণ প্রোগ্রাম প্রয়োজন।


উদাহরণ:

ইনপুট : 1

আউটপুট :

X

ইনপুট : 8

আউটপুট :

X X X X 
 X X X X
X X X X 
 X X X X
X X X X 
 X X X X
X X X X 
 X X X X

1
আমি এর জন্য 'হালকা-ওজন' এর মতো একটি ট্যাগ খুঁজছিলাম।
স্টেনস্লাগ

1
পুরো এবং সম্পূর্ণ প্রোগ্রাম, আমি মনে করি?
জেবি

@ জেবি: হ্যাঁ আমি কীভাবে তা প্রণয়ন করব? প্রয়োজনীয় আউটপুটটিতে 'স্টডআউট' যুক্ত করবেন?
স্টেনস্ল্যাগ

1
শুধু বলুন আপনি একটি সম্পূর্ণ প্রোগ্রাম চান। ফাংশন আর্গুমেন্টগুলির সাথে বিভ্রান্তি রোধ করতে আপনি কমান্ড-লাইন আর্গুমেন্টগুলিও নির্দিষ্ট করতে চাইতে পারেন ।
জেবি

আপনি যখন ডানদিকের ডানদিকে বলছেন, আপনি কি উপরে-বাম মানে? যদি তা না হয় তবে অনুগ্রহ করে ইনপুট 8 এর উদাহরণস্বরূপ আউটপুটটি সংশোধন করুন
পিটার টেলর

উত্তর:


5

পাইথ, 13 টি অক্ষর

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

VQ<*QX*d2N\XQ

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

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

                       Q = eval(input())
VQ                     for N in range(Q):
  <         Q                                                        [:Q]
   *Q                                    (Q*                        )
     X*d2N\X                                assign_at(" "*2, N, "X")

মূলত, এটি Xউত্পন্ন "X "বা " X"বিকল্পভাবে ব্যবহার করে , তারপরে সেই স্ট্রিংয়ের পুনরাবৃত্তি করে Qএবং এর প্রথম Qঅক্ষর গ্রহণ করে । এটি বার Qবার হয়।

X(অ্যাসাইন করা) ফাংশন কীভাবে কাজ করে? এটি মূল স্ট্রিং লাগে, " "এই ক্ষেত্রে, একটি কাজ অবস্থান, Nএই ক্ষেত্রে, এবং রিপ্লেসমেন্ট চরিত্র, "X"এই ক্ষেত্রে। পাইথের অ্যাসাইনমেন্টগুলি মডুলার হওয়ার কারণে এটি স্থানের স্থানটি N%2একটি দিয়ে প্রতিস্থাপন করে Xএবং ফলস্বরূপ স্ট্রিং প্রদান করে, সুতরাং "X "এটি প্রথম, তৃতীয়, ইত্যাদি লাইনে এবং অন্যটিতে " X"রয়েছে।


... তবে এপিএল তা নয়। ধাক্কা দেওয়ার জন্য ধন্যবাদ
ভাবছেন

"পাইথ জয়ের যোগ্য হওয়ার পক্ষে অনেক বেশি নতুন" আমি এটি বুঝতে পারি না এবং এটিকে প্রতিক্রিয়া জানাই।
স্টেনস্লাগ

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

11

গল্ফস্ক্রিপ্ট - 17 টি অক্ষর

~:N,{"X "N*>N<n}%

বিশ্লেষণ

~ইনকুট ইনপুটটি
:Nভেরিয়েবল এন-এর
,{...}প্রতিটি মানের জন্য একটি ইন স্টোরে রূপান্তর করুন [0 ... N-1]
"X "N*N * 2 টি অক্ষরের একটি স্ট্রিং দিতে
>লুপ সূচক থেকে শুরু করে স্ট্রিং নিতে ... " ... " পুনরাবৃত্তি করুন
N<... শেষ হওয়া এন অক্ষরগুলি পরে
nপ্রতিটি স্ট্রিংয়ের শেষে একটি নিউলাইন রাখে


5

পার্ল, 41 40

for$i(1..$_){say substr" X"x$_,$i%2,$_}

পার্ল ৫.১০ বা তারপরে, চালিয়ে যান perl -nE 'code'( nকোড আকারে গণনা করা)

নমুনা আউটপুট:

$ perl -nE'for$i(1..$_){say substr" X"x 40,$i%2,$_}' <<<5
X X X
 X X
X X X
 X X
X X X
$ perl -nE'for$i(1..$_){say substr" X"x 40,$i%2,$_}' <<<8
X X X X
 X X X X
X X X X
 X X X X
X X X X
 X X X X
X X X X
 X X X X

'X 40' এর 'এক্স' কী করবে?
স্টেনস্ল্যাগ

2
@ স্টেনস্লাগ: xস্ট্রিং পুনরাবৃত্তি অপারেটর। 'a' x 3ফলন 'aaa'
জেবি



3

স্কালা - 141 95 টি অক্ষর

var a=args(0).toInt
for(y<-1 to a;x<-1 to a)print((if((x+y)%2<1)"X"else" ")+("\n"*(x/a)take 1))

ব্যবহার: scala filename Nযেখানে এন আপনার প্রোগ্রামে ইনপুট।


3

এপিএল (16)

ধরে নেওয়া ⎕IO=0(শূন্য-সূচিকৃত অ্যারেগুলি, এটি একটি সেটিংস)

' X'[=/¨2⊤¨⍳2⍴⎕]

ব্যাখ্যা:

  • ⍳2⍴⎕: একটি নম্বর এন পড়ুন, এবং (0,0) থেকে (N-1, N-1) সমন্বিত একটি N 1 N ম্যাট্রিক্স তৈরি করুন।
  • 2⊤¨: ম্যাট্রিক্সে প্রতিটি সংখ্যার নূন্যতম উল্লেখযোগ্য বিট পান। (সুতরাং এখন আমাদের কাছে (0,0), (0,1), (0,0) ... (1,0), (1,1), (1,0) ...)
  • =/¨: প্রতিটি জোড়ার জন্য, দুটি সংখ্যা সমান কিনা তা দেখুন। (এখন আমাদের 1 0 1 0 1 0 ...)
  • ' X'[... ]: প্রতিটি 0 এর জন্য একটি স্থান এবং প্রতিটি 1 এর জন্য একটি এক্স রাখুন।

3

রুবি 45 42

(x=gets.to_i).times{|i|puts ("X "*x)[i,x]}

ডেমো: http://ideone.com/Mw25e


(x=gets.to_i).timesতিনটি অক্ষর সাশ্রয় করে। হঠাৎ কেন এই পুরানো সম্পর্কে আগ্রহী?
স্টেনস্ল্যাগ

@ স্টেনস্লাগ ধন্যবাদ! আমি আপনার টিপ প্রয়োগ করেছি আমি এই প্রশ্নটি কেবল তালিকার শীর্ষে দেখেছি এবং ভেবেছিলাম যে আমি আমার রুবি দক্ষতা ধুয়ে ফেলার জন্য একটি উত্তর পোস্ট করব। স্পষ্টতই আমি তাদের যথেষ্ট পরিমাণে ধুয়ে ফেলিনি। :)
ক্রিশ্চিয়ান লুপাস্কু

2

পাইথন

48 চারস

সম্পাদনা: কিন্ডা ভুল ... শেষে একটি অতিরিক্ত জায়গা আছে ... তবে এটি দৃশ্যমান নয়। আপনি যদি স্থানটি "ও" (বা কোনও ননহাইস্পেস স্পেস) তে পরিবর্তন করেন তবে পরিবর্তিত [i%2:n]করুন [i%2:n+i%2]। সঠিক সংস্করণ জন্য।

n=input()
i=0;
while i<n:print('X '*n)[i%2:n];i+=1

2

সি ++ - 253 অবরুদ্ধ অক্ষর

#include <iostream.h>
int main(int i,char*c[]=0)
{
  char a=i,b=i>>8;i&32512?((i>>16&255)<a)?(cout<<b)?main((i^30720)+65536):0:(cout<<endl)?(((b=(i>>24)+1)<a)?main((i&2130706559)+((b&1)?16785408:16799744)):0):0:main((i>=2?atoi(1[c]):8)|22528);
}

1
আমি সমস্ত ম্যাজিক নম্বর পছন্দ করি।
জোয়ে অ্যাডামস

2

জাভাস্ক্রিপ্ট, 169

function b(w){var i=w,j=w,r='';while(i--){while(j--){if((i+j)%2)r+=' ';else r+='X'}j=w;r+="\n"}return r}do{n=parseInt(prompt('Number'))}while(isNaN(n)||n<1);alert(b(n));

আমি নিশ্চিত আপনি +'1'পরিবর্তে সংখ্যায় রূপান্তর করতে পারেন parseInt('1')। আপনাকে কোনও পূর্ণসংখ্যা দেবে না, তবে আমি মনে করি না এটি পূর্ণসংখ্যা হওয়া এখানে গুরুত্বপূর্ণ, তাই না?
কিছু লোক

2

কে (২rs অক্ষর)

26 খালি কাজের জন্য:

{-1',/x#',x#'("X ";" X");}

বা আরও 7 স্টিডিন থেকে ইনপুট নিতে

{-1',/x#',x#'("X ";" X");}"I"$0:0

2

বাশ: 60 টি অক্ষর

yes X|fmt -w80|paste -d '' <(yes '
 ') -|head -$1|cut -c1-$1

টেবিলের আকারটি কমান্ড-লাইন প্যারামিটার হিসাবে পাস করা হয়, উদাহরণস্বরূপ bash chesstable.sh 8


2

জাভা 10, ল্যাম্বদা ফাংশন, 92 87 84 বাইট

n->{for(int i=0;i<n*n;)System.out.print(((i%n+i/n)%2<1?"X":" ")+(++i%n<1?"\n":""));}

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

ধন্যবাদ ceilingcat 4 বাইট golfing জন্য এবং কেভিন Cruijssen আরো 3 golfing জন্য।

অবরুদ্ধ সংস্করণ:

n -> { // void lambda taking an int as argument
    for(int i = 0; i < n*n; ) // loop over the entire square
            System.out.print(((i%n + i/n) % 2 < 1 ? "X" : " ") // print an 'X' or a space depending on which line&column we're on
               + (++i % n < 1 ? "\n" : "")); // print a newline at the end of a line
}

জাভা 8, সম্পূর্ণ প্রোগ্রাম, 155 139 বাইট

interface M{static void main(String[]a){int i=0,n=new Byte(a[0]);for(;i<n*n;)System.out.print(((i%n+i/n)%2<1?"X":" ")+(++i%n<1?"\n":""));}}

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

অবরুদ্ধ সংস্করণ:

interface M {
    static void main(String[] a) {
        int i = 0, // iterator variable for the loop
            n = new Byte(a[0]); // take the argument and convert it to an int
        for(; i < n*n; ) // loop over the entire square
            System.out.print( ((i%n + i/n) % 2 < 1 ? "X" : " ") // print an 'X' or a space depending on which line&column we're on
                             +(++i % n < 1 ? "\n" : "") ); // print a newline at the end of a line
        }
    }
}

ধন্যবাদ! আমি আরও একটি বাইট ছাঁটাইতে পরিচালিত হয়েছি, এবং আমার সম্পূর্ণ প্রোগ্রামেও আপনার পদ্ধতির প্রয়োগ করেছি। 16 বাইট সেখানে সংরক্ষণ করা।
ওবালেন্স

দুটি s+=করা দু'টি বাইটগুলি এই বন্ধনীগুলির চেয়ে কম সংক্ষিপ্ত:n->{var s="";for(int i=0;i<n*n;s+=++i%n<1?"\n":"")s+=(i%n+i/n)%2<1?"X":" ";return s;}
কেভিন ক্রুইজসেন

অথবা 1 এর আরও বেশি বাইট বন্ধ (মোট 84) সরাসরি মুদ্রণ (প্রথম বন্ধনী ফিরে আবার xD সঙ্গে) দ্বারা: n->{for(int i=0;i<n*n;)System.out.print(((i%n+i/n)%2<1?"X":" ")+(++i%n<1?"\n":""));}এটি অনলাইনে চেষ্টা করুন।
কেভিন ক্রুইজসেন

সুপারিশ "X ".charAt(i%n+i/n&1)পরিবর্তে((i%n+i/n)%2<1?"X":" ")
ceilingcat

2

জাপট, 8 7 বাইট

ÆîSi'XY

এটি অনলাইনে চালান

7 6 বাইট যদি আমরা এরXসাথেপ্রতিস্থাপন করতে পারিx:

ÆîSixY

এটি অনলাইনে চালান


বিকল্প 8 বাইট সমাধান:

Æî"X "éY

এটি অনলাইনে চালান


আহা, আপনি যখন আমি আড্ডায় ছিলেন তখন আপনি সম্পাদনা করেছেন! একই জিনিস পরামর্শ দিতে হবে।
শেগি

2

এপিএল (ডায়ালগ প্রসারিত) , 12 বাইট এসবিসিএস

বেনামে ট্যাসিট প্রিফিক্স ফাংশন। প্রয়োজন ⎕IO←0(শূন্য-ভিত্তিক সূচক)।

'X '⊇⍨2|⍳+⍀⍳

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

d ndices 0… n – 1

+⍀ অনুভূমিকভাবে এবং উল্লম্বভাবে এর সাথে আরও টেবিল:

d ndices 0… n – 1

2| বিভাগ দ্বারা বাকি যখন দুটি দ্বারা বিভক্ত

'X '⊇⍨ স্ট্রিংয়ের সূচকগুলিতে সেই ম্যাট্রিক্সটি ব্যবহার করুন



2

ব্রেইনফাক, 140 বাইট

-[+[+<]>>+]>++++[<++++++++>-]<<<<<<,[->+>+>+<<<]>>[->[->.<[->>.>]<<<]<[<<<]>>>>>[-<+>]>[-<+>]<<[->>+<<]<<[-<+>]<[->+>>+<<<]++++++++++.[-]>>]

2

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

for(j=n=readline()|0;j--;)console.log(' X'.repeat(n).substr(j%2,n))

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

সি, 83 বাইট

i,j;main(n){for(scanf("%d",&n);i++<n;puts(""))for(j=0;j<n;)putchar(i+j++&1?88:32);}

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

বেসিক সি 64, 89 বাইট

1 INPUTN:FORI=1TON;FORJ=1TON:IFI+JAND1THENPRINT" ";:GOTO3
2 PRINT"X";
3 NEXT:PRINT"":NEXT

এখানে চিত্র বর্ণনা লিখুন


আপনি on...go toশর্তসাপেক্ষে কমান্ডটি ব্যবহার করতে পারেন , ON-(I+JAND1)GOTO3:?"X";:যেখানে এটি শূন্য, এটি নীচের বিবৃতিতে পড়ে যাবে, এই ক্ষেত্রে যদি (I + J AND 1) === 0এটি এক্স প্রিন্ট করে। এটি আপনাকে প্রতি লাইনে আরও স্টেটমেন্টে প্যাক করতে এবং বাইটগুলি সংরক্ষণ করতে দেয়।
শন বেবারস


2

স্কালা, 40 এবং 54

একটি ক্রিয়াকলাপের জন্য অক্ষরের সংখ্যা 40, সম্পূর্ণ প্রোগ্রামের জন্য 54।

কেবলমাত্র একটি কার্যকারিতা দেহের সমাধানটি হ'ল:

("X "*n)sliding n take n foreach println

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

 

একটি সম্পূর্ণ প্রোগ্রাম দেওয়ার সমাধানটি হ'ল:

val n=readInt;("X "*n)sliding n take n foreach println

আপনি নিম্নলিখিত কমান্ড লাইন ব্যবহার করে এটি চালাতে পারেন।

scala -e 'val n=readInt;("X "*n)sliding n take n foreach println' <<< 8

যেখানে 8 ইনপুট হয়।


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

পরামর্শের জন্য @ ভেসকাঃ ধন্যবাদ
jseteny

দুর্দান্ত সমাধান এটি একটি ফাংশনে পরিবর্তন করে এবং মানচিত্র ব্যবহার করে আপনি 34 টি অক্ষর পাবেন:("X "*n)sliding n take n map println
pme

@pme এই পরামর্শের জন্য ধন্যবাদ, তবে আমি যদি মানচিত্রের সাথে ফোরচ প্রতিস্থাপন করি তবে কোনও ফলাফল নেই is তবে আপনার পরামর্শ অনুসারে আমি এটিকে কোনও ফাংশনে পরিবর্তন করি।
jseteny

আপনি ঠিক বলেছেন - দুঃখিত মনে হচ্ছে মানচিত্রটি অলস; (
pme

1

পাইথন - 127 টি অক্ষর

from sys import*
r=stdout.write
s=int(raw_input())
[[r((x+y+1)%2 and"x"or" ")for x in range(s)]and r("\n")for y in range(s)]




1

পিএইচপি - ১৩6 টি অক্ষর (সাদা স্থান ছাড়াই)

এক্স এবং ওয়াই ফাংশন ইনপুটের জন্য অনুমতি দেয়।

বিজোড় ইনপুটগুলি এখন সমর্থন করে।

আপনি যদি 0.65 এম লাইন-উচ্চতা আউটপুটটি স্টাইল করেন এবং এটি ▒█ এবং █░ □ ■ এবং ■ change এ পরিবর্তন করেন তবে এটি বাস্তব (স্কোয়ার) দাবাবোর্ডের মতো দেখায়।

কোড:

function gen_cb($x,$y)
{
$c=0;
$y*=2;
for($i=0;$i<$y;$i++){
for($j=0;$j<$x;$j++){
echo $c%2==0 ? "░█" : "█░";
}
echo "<br/>";
$c++;
}
}
gen_cb(7,7);

আউটপুট:

░█░█░█░█░█░█░█
█░█░█░█░█░█░█░
░█░█░█░█░█░█░█
█░█░█░█░█░█░█░
░█░█░█░█░█░█░█
█░█░█░█░█░█░█░
░█░█░█░█░█░█░█

এটি কি পাশের প্রতি বিজোড় সংখ্যার স্কোয়ার সহ বোর্ডগুলির জন্য কাজ করে?
গ্যারেথ

@ গ্যারেথ এখন এটি করে
ইভেন্ট_হরিজন


1

সিজেম, 18 বাইট

আমি সম্ভবত গল্ফস্ক্রিপ্ট উত্তরটি পোর্ট করতে পারতাম, তবে এখানে একটি ভিন্ন পদ্ধতি is (এবং সিজেএম যেভাবেই জয়ের যোগ্য নয়))

l~,_f{f{+2%S'X?}N}

এটি এখানে পরীক্ষা করুন।

ধারণা x এবং স্ট্যাক Y সূচকের সঙ্গে 2D গ্রিড পুনরুক্তি উপর, ব্যবহার করছে কৌতুক । X এবং y দেওয়া, আমরা কেবল কালো এবং সাদা হিসাবে নির্ধারণ করতে পারি এবং অক্ষর এবং একটি স্থান যুক্ত স্ট্রিংয়ের মধ্যে চয়ন করতে এটি ব্যবহার করতে পারি ।f{f{...}}(x+y)%2X


1

জে, 21 অক্ষর

জেও নিখোঁজ ছিল।

   ([:u:32+56*=/~@$&1 0) 5
X X X
 X X 
X X X
 X X 
X X X

পূর্ববর্তী, 22 টি অক্ষর:

row #+ এর Mod2 প্যাটার্ন থেকে চর কোডগুলি column #:

   ([:u:88-56*2&|@+/~@i.) 5

-2 বাইটস:([:{&' X'=/~@$&1 0)
বোলস বুসিয়ের


1

ভিবি.net, 161

Module C
   Sub Main()
     Dim n As Integer
     If Integer.TryParse(Console.ReadLine,n) Then
     For x=1To n
        For y=1To n
          Console.Write("* "((x+y)Mod 2))
        Next
        Console.WriteLine()
      Next
     End If
    End Sub
End Module

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