สร้างกระดานหมากรุก


20

สำหรับความท้าทายนี้คุณจะพิมพ์พิกัดและสีของแต่ละชิ้นในตอนเริ่มเกมหมากฮอส

ป้อน x และ y (คั่นด้วยเครื่องหมายจุลภาค) สำหรับทุกตาราง (ทำดัชนี 0-7) บนกระดานหมากรุกตามด้วย "r" หรือ "b" (สำหรับสีแดงหรือสีดำ) ที่ด้านบนของกระดาน (ใกล้กับ y = 0 ) เป็นสีแดงและด้านล่างเป็นสีดำ ต้องขึ้นบรรทัดใหม่ระหว่างชิ้นส่วนและไม่จำเป็นต้องเว้นวรรค

นี่คือดังนั้นคำตอบจะได้คะแนนเป็นไบต์ด้วยจำนวนไบต์ที่น้อยกว่านั้นจะดีกว่า

ขึ้นบรรทัดใหม่ที่ได้รับอนุญาต แต่ไม่จำเป็นและการสั่งซื้อจะต้องตรงกับด้านล่าง

ผลลัพธ์ที่ต้องการ:

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
@HyperNeutrino เพราะกระดานหมากรุกมีเพียงแถวด้านบนและด้านล่างที่เต็มไป 3 แถว (ตอนเริ่มเกม)
Justin

3
นั่นคือตำแหน่งเริ่มต้นของหมากฮอสหรือที่เรียกว่าร่างภาษาอังกฤษ ถูกต้องหรือไม่
Arnauld

2
ยินดีต้อนรับสู่ PPCG.SE! คุณลักษณะของเว็บไซต์นี้ว่าบางส่วนของเราต้องการที่จะใช้เป็นSandbox คุณไม่จำเป็นต้องใช้มัน แต่มันเป็นช่องทางที่มีประโยชน์ในการรับข้อเสนอแนะเกี่ยวกับแนวคิดท้าทายใหม่ ๆ ที่คุณมีโดยไม่จำเป็นต้องผ่านความทุกข์ยากทั้งเรื่องโหวตต่ำ / ปิด
Digital Trauma

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?
Kevin Cruijssen

คำตอบ:


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ดังนั้นฉันเดาไม่ได้
Magic Octopus Urn



7

C (gcc) , 83 81 79 78 ไบต์

  • บันทึกสองไบต์ต้องขอบคุณTahg ; การเล่นกอล์ฟx/4+2*(x/12)x/4+x/12*2ไป
  • บันทึกสองไบต์ด้วยKevin Cruijssen ; การเล่นกอล์ฟx%8*2%8x*2%8ไป
  • บันทึกขอบคุณไบต์ceilingcat
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 และกำจัด ()
Tahg

x%8*2%8สามารถx*2%8
Kevin Cruijssen

@ceilingcat ขอบคุณ
Jonathan Frech


4

Java 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ของคำตอบ Cหลังจากนั้นฉันเล่น 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

JavaScript (ES6), 64 ไบต์

ดูเหมือนว่าแตกต่างจาก @ Arnauld เพียงพอที่จะรับประกันการโพสต์:

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) ซึ่งเป็นค่าเริ่มต้นในหลาย ๆ ระบบ พิมพ์ไปยัง STDOUT

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

ลองออนไลน์!

(),¨¨'rb' ต่อท้าย "r" ต่อกลุ่มรายการแรกและ "b" ต่อท้ายกลุ่มที่สอง:

⍳8 ศูนย์ถึงแปด

2| ส่วนที่เหลือเมื่อลดลงครึ่งหนึ่ง

∘.+⍨ บวกตารางด้วยตัวเองตามแกนทั้งสอง

 ดัชนีของค่าที่แท้จริง

⍕¨ จัดรูปแบบแต่ละรายการ (แปลงเป็นสตริงด้วยรูปแบบd dที่แต่ละdหลักเป็น)

 ใส่ (เพื่อให้เราสามารถนำมาใช้ซ้ำสำหรับแต่ละ ... )

8 ¯8↑¨ ใช้เก้าคนแรกและเก้าคนสุดท้าย

ตอนนี้เรามีสองรายการของd dสตริง

,/ การลดความเหมาะสม (รวมสองรายการ)

 เปิดเผย (เพราะการลดลดอันดับจาก 1 เป็น 0)

' '⎕R',' PCRE R eplace space พร้อมเครื่องหมายจุลภาค

 มิกซ์ (รายการทั้งหมดเป็นเมทริกซ์เดียว)


* ใน Dyalog คลาสสิกนับเป็น⎕U2378


~2|∘.+⍨⍳8อาจจะเป็น∘.=⍨2|⍳8
NGN

คุณไม่ควรส่งออกแถว x = 3 และ x = 4
ngn

@ngn2⍴⊂'Thanks'
Adám

2

Bubblegum , 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..

ลองออนไลน์!


นี่คือ hexdump ใช่ไหม?
Stan Strum

@StanStrum ใช่นี่คือ hexdump ของแหล่งที่มาที่แท้จริง โดยการใช้ hexdump ไม่มีการสูญเสีย unprintables แหล่งที่มาจริงไม่ได้เพิ่มอะไรลงในคำตอบ IMO
OVS

โอเคฉันแค่สงสัย ขอบคุณ
Stan Strum

2

Pyth , 37 36 35 ไบต์

isaacg คงไม่ภูมิใจ

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"

นี่ใช้รูปแบบที่เรียบง่ายที่ฉันตัดทอนลงเล็กน้อย ดังนี้

ถ้าXcoord เป็นเลขคู่ให้ใช้เลข0, 2, 4, 6คู่ อื่นสำหรับ1, 3, 5, 7Y

หากXCOORD น้อยกว่า 5 สี ( rหรือb) rคือ อื่นมันเป็นbอื่นก็คือ

ลองออนไลน์!

แก้ไข : ค้างคืนได้ +40 ตัวแทนใน 3 คำตอบที่แตกต่างกัน w00t



1

Javascript (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
โปรดทราบว่ามันเป็นกำลังใจที่จะตอบความท้าทายของคุณเองหลังจากโพสต์มัน
Arnauld

ตกลง. ฉันควรจะเอามันลงและอาจโพสต์ในภายหลัง
จัสติน

ตกลงจะทำ ขอบคุณสำหรับหัวขึ้น
Justin

อาจฟังดูงี่เง่า แต่ฉันจะลบโพสต์บนมือถือได้อย่างไร
จัสติน

@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

PowerShell , 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เป็น-greater กว่า หรือequal 5ไป สตริงเหล่านั้นจะถูกทิ้งไว้ที่ไพพ์ไลน์และความWrite-Outputสมบูรณ์ของโปรแกรมทำให้เรามีการขึ้นบรรทัดใหม่ฟรี


1

J , 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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.