एक बिसात बनाएं


20

इस चुनौती के लिए आप चेकर्स के गेम की शुरुआत में प्रत्येक टुकड़े के निर्देशांक और रंग को प्रिंट करेंगे।

एक चौकी पर प्रत्येक वर्ग (अनुक्रमित 4-7) के लिए x और y (अल्पविराम से अलग) दर्ज करें, उसके बाद एक "r" या "b" (लाल या काले रंग के लिए) जहां बोर्ड का शीर्ष (y = 0 के करीब) ) लाल है और नीचे काला है। टुकड़ों के बीच newlines की आवश्यकता है और कोई रिक्त स्थान आवश्यक नहीं हैं।

यह इसलिए उत्तर बाइट्स में कम बाइट के साथ बेहतर स्कोर किए जाते हैं।

अनुगामी newlines की अनुमति है, लेकिन आवश्यक नहीं है और आदेश नीचे के बिल्कुल होना चाहिए।

वांछित उत्पादन:

0,0r
0,2r
0,4r
0,6r
1,1r
1,3r
1,5r
1,7r
2,0r
2,2r
2,4r
2,6r
5,1b
5,3b
5,5b
5,7b
6,0b
6,2b
6,4b
6,6b
7,1b
7,3b
7,5b
7,7b

3
क्या कोई विशेष कारण है जिसे आप छोड़ देते हैं x=3और x=4?
२३:३५ पर HyperNeutrino

1
@ हैपरनेट्रिनो क्योंकि एक बिसात में केवल ऊपर और नीचे की 3 पंक्तियाँ होती हैं (खेल की शुरुआत में)
जस्टिन

3
तो यह मूल रूप से चेकर्स, उर्फ ​​इंग्लिश ड्राफ्ट की शुरुआती स्थिति है। क्या वो सही है?
Arnauld

2
PPCG.SE में आपका स्वागत है! इस साइट की एक विशेषता जिसका हममें से कुछ लोग उपयोग करना चाहते हैं वह है सैंडबॉक्स । आपको इसका उपयोग करने की आवश्यकता नहीं है , लेकिन यह एक उपयोगी चैनल है जिसके माध्यम से आपके पास किसी भी नई चुनौती के विचारों के बारे में प्रतिक्रिया प्राप्त करने के लिए, पूरे डाउनवोट / क्लोजोट दुख के माध्यम से जाने के बिना।
डिजिटल ट्रॉमा

1
क्या निर्देशांक को एक नई-रेखा के अलावा एक सीमांकक द्वारा अलग किया जा सकता है? यानी 0,0r;0,2r;0,4r;0,6r;1,1r;1,3r;1,5r;1,7r;2,0r;2,2r;2,4r;2,6r;5,1b;5,3b;5,5b;5,7b;6,0b;6,2b;6,4b;6,6b;7,1b;7,3b;7,5b;7,7b?
केविन क्रूज़सेन

जवाबों:


8

05AB1E , 26 बाइट्स

2ÝD5+«v4Fy',N·yÉ+„bry3‹èJ,

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

व्याख्या

2Ý                           # push [0,1,2]
  D5+                        # duplicate and add 5: [5,6,7]
     «                       # concatenate
      v                      # for each y in [0,1,2,5,6,7] do:
       4F                    # for each N in [0 ... 3] do:
         y                   # push y
          ',                 # push ","
            N·yÉ+            # push N*2+isOdd(y)
                 „br         # push "br"
                    y3‹è     # index into the string with y<3
                        J,   # join everything to a string and print

मुझे लगता है कि [0,1,2,5,6,7]कम बाइट में धकेल दिया जा सकता है ... लेकिन मैं जो सोच सकता था वह सब मुझे 7Ý34SKनहीं मिला।
मैजिक ऑक्टोपस Urn

7

जावास्क्रिप्ट (ईएस 6), 66 बाइट्स

एक अनुगामी न्यूलाइन शामिल है।

f=(n=24)=>n--?f(n)+[2*(x=n>11)+(y=n>>2),n%4*2+y%2+'rb'[+x]]+`
`:''

डेमो



7

सी (जीसीसी) , 83 81 79 78 बाइट्स

x;main(){for(;x<24;)printf("%d,%d%c\n",x/4+x++/12*2,x*2%8+x/4%2,114-x/12*16);}

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


2
आप x / 4 + x / 12 * 2 कर सकते हैं और
ताग सेप

x%8*2%8हो सकता हैx*2%8
केविन क्रूज़सेन

@ceilingcat धन्यवाद।
जोनाथन फ्रीच


4

जावा 8, 102 96 95 93 91 बाइट्स

v->{for(int i=0;i<24;System.out.printf("%d,%d%c%n",i/4+i/12*2,i*2%8+i/4%2,i++<12?114:98));}

पोर्ट @JonathanFrech के सी उत्तर से , जिसके बाद मैंने खुद को 5 बाइट्स दिए।

इसे यहाँ आज़माएँ।

स्पष्टीकरण:

v->{                    // Method without empty unused parameter and no return-type
  for(int i=0;i<24;     //  Loop from 0 to 24 (exclusive)
    System.out.printf("%d,%d%c%n",
                        //   Print with format:
                        //   (%d=digit; %c=character; %n=new-line)
      i/4+i/12*2,       //    Print first coordinate
      i*2%8+i/4%2,      //    Print second coordinate
      i++<12?114:98)    //    Print either 'r' or 'b'
  );                    //  End of loop
}                       // End of method



3

जेली , 35 बाइट्स

8Ḷḟ3ḟ4µḂr7m2ṭ€µ€Ẏµḣ1<3Ḣị⁾rbṭj”,$µ€Y

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

पूर्ण कार्यक्रम बिना किसी तर्क के

व्याख्या

8Ḷḟ3ḟ4µḂr7m2ṭ€µ€Ẏµḣ1<3Ḣị⁾rbṭj”,$µ€Y  Main link; no arguments
8                                    8
 Ḷ                                   Push 0 .. 8 - 1
  ḟ                                  Remove all instances of
   3                                 3
    ḟ                                Remove all instances of
     4                               4
                €                    For each in [0, 1, 2, 5, 6, 7]
       µḂr7m2ṭ€µ                     Generate all of the piece coordinates across that row
        Ḃ                            row number % 2
         r                           inclusive range up to
          7                          7
           m                         modular; take every   elements
            2                                            2
              €                      For each column coordinate
             ṭ                       Tack the row coordinate (reverse append)
                 Ẏ                   Tighten; flatten once
                                 €   For each piece coordinate (in the right order now)
                 µḣ1<3Ḣị⁾rbṭj”,$µ    Convert to its final output
                  ḣ                  Head; take the first   element(s)
                   1                                      1
                    <                Less Than; compare each element to
                     3               3
                      Ḣ              Head; take the comparison out of the list
                       ị             Index (1-indexed) into
                        ⁾rb          "rb"
                           ṭ         Tack the color character behind
                            j”,$     The coordinates joined by a comma
                            j        Join with separator
                             ”,      ","
                                  Y  Separate by newlines


3

जावास्क्रिप्ट (ईएस 6), 64 बाइट्स

यह @ अरनौलड से वारंट पोस्टिंग के लिए पर्याप्त रूप से अलग है:

f=(n=0,y=n>>3,c=y>2)=>y<6?[y+c*2,n%8+y%2+'rb'[+c]]+`
`+f(n+2):''

स्पष्टीकरण:

f=(n = 0,            //the numbered square on checkerboard
   y = n >> 3,       //current row (n / 8 rounded)
   c = y > 2         //false if red pieces, true if black
  ) => 
  y < 6 ?            //if y less than 6 
    [                //  using an array automatically adds the comma
     y + c * 2,      //  0 - 2 if red pieces, 5 - 7 if black
     n%8 + y%2 +     //  n%8 returns 0, 2, 4, or 6.
                     //  y%2 returns 0 or 1.
                     //  added, they return the appropriate position (0 - 7)
     'rb'[+c]        //  'r' if red, 'b' if black.  Plus sign coerces boolean to number.
    ]+`              //  new line
    `+
    f(n+2) :         //  recurse on n+2
    ''               //else return an empty string

स्निपेट:



3

APL (Dyalog) , 45 44 बाइट्स *

-1 ngn के लिए धन्यवाद।

Niladic फ़ंक्शन जो 0-आधारित अनुक्रमण ( ⎕IO←0) को मानता है जो कई प्रणालियों पर डिफ़ॉल्ट है। प्रिंट करने के लिए प्रिंट।

' 'R','⊃,/(8 ¯8↑¨⊂⍕¨⍸∘.=⍨2|⍳8),¨¨'rb'

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

(... ),¨¨'rb' आइटम के पहले समूह में से प्रत्येक के लिए "आर" और दूसरे में से प्रत्येक के लिए "बी":

⍳8 आठ के माध्यम से शून्य

2| बचे रहने पर विभाजन शेष

∘.+⍨ दोनों कुल्हाड़ियों के साथ खुद के साथ प्लस टेबल

 सच्चे मूल्यों के सूचक

⍕¨ प्रत्येक को प्रारूपित करें ( d dजहां प्रत्येक पैटर्न को स्ट्रिंग्स में कनवर्ट करता हैd अंक है )

 संलग्न करें (इसलिए हम इसे प्रत्येक के लिए पुन: उपयोग कर सकते हैं ...)

8 ¯8↑¨ पहले नौ और आखिरी नौ लें

अब हमारे पास d dस्ट्रिंग्स की दो सूचियाँ हैं

,/ कटाव में कमी (दो सूचियों को मिलाएं)

 खुलासा (क्योंकि कमी ने रैंक को 1 से घटाकर 0 कर दिया)

' '⎕R',' PCRE R कॉमा के साथ रिक्त स्थान ग्रहण करता है

 मिश्रण (सभी सूची एक मैट्रिक्स में)


* द्यलोग क्लासिक में, के रूप में गिनती ⎕U2378


~2|∘.+⍨⍳8हो सकता है∘.=⍨2|⍳8
ngn

आप पंक्तियों x = 3 और x = 4
ngn

@ngn2⍴⊂'Thanks'
आदम

2

बबलगम , 59 बाइट्स

00000000: 15ca b101 0030 0400 c1de 2c0a 2462 1f23  .....0....,.$b.#
00000010: d8bf 886f ae3a 531b 310d b8f0 465c 1d0e  ...o.:S.1...F\..
00000020: 24d4 48ec 5b02 2eec 4bf5 5e0e 2454 cb53  $.H.[...K.^.$T.S
00000030: 8380 0baf a5d4 e140 42f5 07              .......@B..

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


यह हेक्सडंप है, है ना?
स्टेन स्ट्रम

@StanStrum हाँ यह वास्तविक स्रोत का हेक्सडंप है। हेक्सडंप का उपयोग करने से कोई भी अपरिचय नष्ट नहीं होता है। वास्तविक स्रोत उत्तर IMO में कुछ भी नहीं जोड़ता है।
अंडा

ठीक है, मैं सोच रहा था। धन्यवाद
स्टेन स्ट्रम

2

पायथ , 37 36 35 बाइट्स

इसहाक को गर्व नहीं होगा

V+U3}5 7FG4p++N\,+yG?!%N2Z1?<N5\r\b

स्पष्टीकरण:

V+U3}5 7            For in the array [0, 1, 2, 5, 6, 7] as N
 FG4                 For in the array [0, 1, 2, 3] as G
  p                   Print without newline:
   ++N\,+yG?!%N2Z1     N, (2 * G) + 1 if N is even, else 0
  ?<N5\r\b            Output with newline "r" if N < 5 else "b"

यह एक सरल पैटर्न का उपयोग करता है जिसे मैंने थोड़ा सा काट दिया। निम्नलिखित नुसार:

यदि Xसमन्वय सम है, तो सम संख्याओं का उपयोग करें 0, 2, 4, 6। के 1, 3, 5, 7लिए Y,।

यदि Xसमन्वय 5 से कम है, तो रंग ( rया b) है r। और, यह है b

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

संपादित करें : रातोंरात 3 अलग-अलग उत्तरों पर +40 प्रतिनिधि w00t मिला



1

जावास्क्रिप्ट (89 बाइट्स):

for(x=y=0,r="r";x<7|y<8;console.log(x+","+y+r),y+=2){if(y>7)y=++x%2;if(x==3){x+=2;r="b"}}

पठनीय:

for(var x = y = 0, red = true; x < 7 || y < 8; y += 2) {
    if(y > 7) { //new row
        x++;
        y = x % 2;
    }
    if(x == 3) { //new color
        x += 2;
        red = false;
    }
    console.log(x + "," + y + (red ? "r" : "b") );
}

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


4
कृपया ध्यान दें कि इसे पोस्ट करने के बाद अपनी चुनौती का जवाब देने के लिए हतोत्साहित किया जाता है।
अरनुलद

ठीक है। क्या मुझे इसे नीचे ले जाना चाहिए और संभवतः बाद में पोस्ट करना चाहिए?
जस्टिन

ठीक। कर दूँगा। सिर के लिए धन्यवाद
जस्टिन

यह बेवकूफ लग सकता है लेकिन मैं मोबाइल पर पोस्ट कैसे हटाऊं?
जस्टिन

@Justin आप मोबाइल पर पोस्ट नहीं हटा सकते। यह कई लोगों के लिए एक गुस्सा है।
गेहूं जादूगर

1

जेली , 27 बाइट्स

8Ḷµḟ3,4pµSḂ$Ðḟj€”,ż⁾rbx12¤Y

एक पूरा कार्यक्रम जो आवश्यक आउटपुट प्रिंट करता है।

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

किस तरह

8Ḷµḟ3,4p⁸SḂ$Ðḟj€”,ż⁾rbx12¤Y - Link: no arguments
8                           - literal eight
 Ḷ                          - lowered range = [0,1,2,3,4,5,6,7]
  µ                         - new monadic chain
    3,4                     - literal list = [3,4]
   ḟ                        - filter discard = [0,1,2,5,6,7]
        ⁸                   - chain's left argument = [0,1,2,3,4,5,6,7]
       p                    - Cartesian product = [[0,0],[0,1],...,[2,7],[5,0],...,[7,6],[7,7]]
            Ðḟ              - filter discard if:
           $                -   last two links as a monad:
         S                  -     sum
          Ḃ                 -     modulo by 2
                ”,          - literal comma character
              j€            - join €ach pair with a comma = [0,',',0],[0,',',2],...,[2,',',6],[5,',',1],...,[7,',',5],[7,',',7]]
                         ¤  - nilad followed by links as a nilad:
                   ⁾rb      - literal list = ['r','b']
                       12   - literal twelve
                      x     - repeat = ['r','r','r','r','r','r','r','r','r','r','r','r','b','b','b','b','b','b','b','b','b','b','b','b']
                  ż         - zip together = [[[0,',',0],'r'],[[0,',',2],'r'],...,[[2,',',6],'r'],[[5,',',1],'b'],...,[[7,',',5],'b'],[[7,',',7],'b']]
                          Y - join with newlines = [[0,',',0],'r','\n',[0,',',2],'r','\n',...,'\n',[2,',',6],'r','\n',[5,',',1],'b','\n',...,'\n',[7,',',5],'b','\n',[7,',',7],'b']
                            - implicit print (smashes the list of lists and characters
                            -                 together and prints the digits)


1

पॉवरशेल , 63 बाइट्स

0..2+5..7|%{$i=$_;0,2,4,6|%{"$i,$($_+$i%2)"+('r','b')[$i-ge5]}}

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

लूप ओवर 0,1,2,5,6,7और प्रत्येक पुनरावृत्ति $iवर्तमान संख्या पर सेट होती है। फिर लोट जाता है 0,2,4,6। प्रत्येक आंतरिक लूप, हम $i,तब से शुरू होने वाली एक स्ट्रिंग का निर्माण करते हैं, जिसे हमारे आंतरिक लूप की वर्तमान संख्या के साथ जोड़ दिया जाता है, चाहे $iवह सम या विषम हो (जो हमें 0,2,4,6एक बार और 1,3,5,7दूसरी बार मिलता है), फिर rया तो एड के साथ संक्षिप्त किया जाता है या फिर रीटर-की तुलना में bकमी होती है -या- अर्हता । उन तारों को पाइप लाइन पर छोड़ दिया गया है और कार्यक्रम पूरा होने पर निहित हमें मुफ्त में नई सुर्खियां देता है।$i-ge5Write-Output


1

जे , 48 44 40 37 31 बाइट्स

(}:"1":$.|:8$#:162 69),.12#'rb'

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

यह काम किस प्रकार करता है

           8$#:162 69    first 2 columns in binary, take 8 of them
         |:              transpose
       $.                format as a sparse array, kind of looks like the goal
     ":                 "to text"
 }:"1                    delete the last column
       ,.12#'rb'         append 12 rs followed by 12 bs as the last column

1

सी # (.NET कोर) , 96 बाइट्स

()=>{for(int i=0;i<24;)System.Console.Write($"{i/4+i/12*2},{i*2%8+i/4%2}{(i++>11?"b":"r")}\n");}

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

अनिवार्य रूप से सिर्फ @ जोनाथनफ्रेच के उत्तर के # सी के लिए एक बंदरगाह । मैं गणित करने के किसी भी बेहतर तरीके के साथ नहीं आ सका।

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