शतरंज की बिसात


18

इनपुट: एक सकारात्मक संख्या, छोटी तब 80, स्टड से या कमांड-लाइन तर्क के रूप में।

आउटपुट: एक स्क्वायर शतरंजबोर्ड पैटर्न, इनपुट नंबर का आकार। अंधेरे क्षेत्रों को 'X' अक्षर द्वारा दर्शाया जाता है, एक स्थान द्वारा सफेद फ़ील्ड। शीर्ष-बाएँ फ़ील्ड 'X' होना चाहिए।

एक पूरा कार्यक्रम आवश्यक है।


उदाहरण:

इनपुट : १

आउटपुट :

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
मुझे इसके लिए light लाइट-वेट ’जैसे टैग की तलाश थी।
स्टेन्सलैग

1
पूरा और पूरा कार्यक्रम, मुझे लगता है?
जेबी

@ जेबी: हाँ। मैं इसे कैसे तैयार करूं? आवश्यक आउटपुट में 'stdout' में जोड़ें?
स्टेन्सलैग

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"अन्य पर है।


... लेकिन एपीएल नहीं है। बम्पिंग के लिए धन्यवाद। आश्चर्य है कि ओपी फिर से स्वीकार करेगा ...
22

"अजगर जीत के लिए पात्र होने के लिए बहुत नया है" मुझे यह समझ में नहीं आता है और इसे स्वीकार करता है।
स्टेन्सलैग

1
@steenslag समझाने के लिए, एक मानक खामी है कि प्रश्न की तुलना में नई भाषाएं अयोग्य हैं। यह विशेष रूप से एक विशिष्ट चुनौती पर अच्छा करने के लिए डिज़ाइन की गई भाषाओं को रोकने के लिए है। आप अपनी चुनौती के साथ जो करना चाहते हैं, उसे करने के लिए स्वतंत्र हैं।
isaacg

11

गोल्फस्क्रिप्ट - 17 वर्ण

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

विश्लेषण

~
:Nचर में एक इंट स्टोर में इनपुट को परिवर्तित करें
,{...}[0 ... N-1] के प्रत्येक मान के लिए
"X "N*"X" दोहराएं N * 2 वर्णों की एक स्ट्रिंग देने के
>लिए लूप इंडेक्स से शुरू होने वाले सबस्ट्रिंग को लें ...
N<... एन अक्षर समाप्त करने के बाद बाद
nमें प्रत्येक स्ट्रिंग के अंत में एक नई पंक्ति लगाई जाती है


5

पर्ल, ४१ ४०

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

पर्ल 5.10 या बाद में, 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' में 'x' क्या करता है?
स्टीनलेग

2
@steenslag: xस्ट्रिंग पुनरावृत्ति ऑपरेटर है। 'a' x 3पैदावार 'aaa'
JB



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जहां n प्रोग्राम के लिए आपका इनपुट है।


3

एपीएल (16)

मान लेना ⎕IO=0(अर्थात शून्य-अनुक्रमित सरणियाँ, यह एक सेटिंग है)

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

स्पष्टीकरण:

  • ⍳2⍴⎕: एक नंबर एन पढ़ें, और एक एन × एन मैट्रिक्स युक्त (0,0) से (एन -1, एन -1) बनाएं।
  • 2⊤¨: मैट्रिक्स में प्रत्येक संख्या का कम से कम महत्वपूर्ण बिट प्राप्त करें। (तो अब हमारे पास (0,0), (0,1), (0,0) ... (1,0), (1,1), (1,0,0 ...)
  • =/¨: प्रत्येक जोड़ी के लिए, देखें कि दोनों संख्याएँ समान हैं या नहीं। (अब हमारे पास 1 0 1 0 0 1 ...)
  • ' X'[... ]: प्रत्येक 1 के लिए प्रत्येक 0 और X के लिए एक स्थान रखें।

3

रूबी 45 42

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

डेमो: http://ideone.com/Mw25e


(x=gets.to_i).timesतीन वर्ण बचाता है। इस पुराने में अचानक नए सिरे से दिलचस्पी क्यों?

@steenslag धन्यवाद! मैंने आपकी टिप लगा दी है। मैंने बस इस सवाल को सूची में सबसे ऊपर देखा और सोचा कि मैं अपने रूबी कौशल को धूल चटाने का उत्तर दूंगा। जाहिरा तौर पर मैं उन्हें पर्याप्त बंद धूल नहीं किया है। :)
क्रिश्चियन लुपस्क्यू

2

अजगर

48 शुल्क

संपादित करें: किन्दा गलत ... अंत में एक अतिरिक्त स्थान है ... लेकिन यह दृश्यमान नहीं है। यदि आप अंतरिक्ष को "O" (या किसी भी नॉनवाइटस्पेस चार्ट) में बदलते हैं तो संशोधित [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

k (26 वर्ण)

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":""));}

इसे ऑनलाइन आज़माएं यहाँ

धन्यवाद सीलिंग के लिए4 बाइट्स लिए और 3 अधिक गोल्फिंग के लिए केविन क्रूज़सेन के लिए।

Ungolfed संस्करण:

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":""));}}

इसे ऑनलाइन आज़माएं यहाँ

Ungolfed संस्करण:

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

@ceilingcat धन्यवाद! मैं एक और बाइट से दाढ़ी बनाने में कामयाब रहा, और साथ ही अपने पूरे कार्यक्रम में अपना दृष्टिकोण लागू किया। वहां 16 बाइट बच गईं।
ओबैलेंस

दो s+=बाइट करना उन कोष्ठकों की तुलना में 2 बाइट्स है: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

एपीएल (Dyalog विस्तारित) , 12 बाइट्स SBCS

बेनामी tacit उपसर्ग समारोह। आवश्यक ⎕IO←0(शून्य आधारित अनुक्रमण)।

'X '⊇⍨2|⍳+⍀⍳

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

ɩ ndices 0 ... n-1

+⍀ प्लस टेबल उस क्षैतिज और लंबवत के साथ:

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

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

बेसिक C64, 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यह X को प्रिंट करेगा। यह आपको प्रति पंक्ति में अधिक विवरणों में पैक करने और बाइट्स को बचाने की अनुमति देता है।
शॉन बेयबर्स


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
PP & CG में आपका स्वागत है और पहला उत्तर अच्छा है। ट्राय इट ऑनलाइन नाम की एक अच्छी साइट है जो आपको आसान बाइट काउंट्स और रनों को साझा करने की अनुमति देती है। इसका एक उदाहरण देखने के लिए अन्य स्काला उत्तर की जाँच करें । यह आपके लिए आवश्यक नहीं है, बस आपके लिए अच्छा है।
Veskah

सुझाव के लिए @Veskah धन्यवाद।

अच्छा समाधान इसे एक फ़ंक्शन में बदल रहा है और मानचित्र का उपयोग करके आप 34 वर्ण प्राप्त करते हैं:("X "*n)sliding n take n map println
pme

@pme सुझाव के लिए धन्यवाद, लेकिन अगर मैं मानचित्र के साथ foreach को प्रतिस्थापित करता हूं तो कोई आउटपुट नहीं है। हालाँकि मैंने इसे एक फ़ंक्शन में बदल दिया जैसा आपने सुझाव दिया था।
जेटीनेई

आप सही हैं - क्षमा करें लगता है कि नक्शा आलसी है; (
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

क्यू, ३३

{$[1=x mod 2;x;x-1]cut(x*x)#"X "}

{(x;x-1-x mod 2)#"X "}22 के लिए ... आह नहीं, तुम्हारा जैसा ही बग है - इनपुट 4 के लिए विषम पंक्तियों पर 4 एक्स नहीं है
स्ट्रीटस्टर


1

PHP - 136 वर्ण (बिना व्हाट्सएप)

X और y फ़ंक्शन इनपुट के लिए अनुमति देता है।

इसके अलावा अब अजीब आदानों का समर्थन करता है।

यदि आप आउटपुट को 0.65 एम लाइन-ऊंचाई पर स्टाइल करते हैं और इस █░ और □ को and ■ और ■ out में बदलते हैं तो यह एक वास्तविक (स्क्वायर) की तरह दिखने वाली शतरंज की बिसात है।

कोड:

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

आउटपुट:

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

क्या यह प्रति वर्ग की विषम संख्या वाले बोर्डों के लिए काम करता है?
गारेथ

@ गैरेथ अब यह करता है
Event_Horizon


1

सीजेएम, 18 बाइट्स

मैं शायद सिर्फ गोल्फस्क्रिप्ट उत्तर को पोर्ट कर सकता था, लेकिन यहां एक अलग दृष्टिकोण है। (और सीजेएम वैसे भी जीतने के योग्य नहीं है।)

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

इसका परीक्षण यहां करें।

विचार एक्स और स्टैक पर y सूचकांक के साथ 2 डी ग्रिड पर पुनरावृति करने के लिए, का उपयोग कर रहा है चाल । X और y को देखते हुए, हम बस के रूप में काले और सफेद निर्धारित कर सकते हैं और उपयोग कर सकते हैं कि चरित्र और एक स्ट्रिंग युक्त एक अंतरिक्ष के बीच लेने के लिए ।f{f{...}}(x+y)%2X



1

VB.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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.