Xây dựng một bàn cờ


20

Đối với thử thách này, bạn sẽ in tọa độ và màu sắc của từng quân cờ khi bắt đầu trò chơi cờ đam.

Nhập x và y (được phân tách bằng dấu phẩy) cho mỗi ô vuông (được lập chỉ mục 0-7) trên bảng kiểm tra, theo sau là "r" hoặc "b" (cho màu đỏ hoặc đen) trong đó phần trên của bảng (gần hơn với y = 0 ) là màu đỏ và dưới cùng là màu đen. dòng mới giữa các phần được yêu cầu và không có không gian là cần thiết.

Đây là vì vậy câu trả lời được tính theo byte với ít byte hơn.

Trailing newlines được cho phép nhưng không cần thiết và thứ tự phải chính xác như dưới đây.

Kết quả mong muốn:

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
Có một lý do cụ thể bạn bỏ qua x=3x=4?
HyperNeutrino

1
@HyperNeutrino vì một bàn cờ chỉ có 3 hàng trên cùng và dưới cùng được lấp đầy (khi bắt đầu trò chơi)
Justin

3
Vì vậy, về cơ bản, vị trí bắt đầu của Cờ đam, còn gọi là Bản nháp tiếng Anh. Đúng không?
Arnauld

2
Chào mừng bạn đến với PPCG.SE! Một tính năng của trang web này mà một số người trong chúng ta muốn sử dụng là hộp cát . Bạn không cần phải sử dụng nó, nhưng đây là một kênh hữu ích để nhận phản hồi về bất kỳ ý tưởng thử thách mới nào bạn có, mà không phải trải qua toàn bộ khổ sở downvote / closevote.
Chấn thương kỹ thuật số

1
Các tọa độ có thể được phân tách bằng một dấu phân cách khác với một dòng mới không? Tức 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

Câu trả lời:


8

05AB1E , 26 byte

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

Hãy thử trực tuyến!

Giải trình

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

Tôi cảm thấy như [0,1,2,5,6,7]có thể bị đẩy vào ít byte hơn ... nhưng tất cả những gì tôi có thể nghĩ là 7Ý34SKvì vậy tôi đoán là không.
Bạch tuộc ma thuật Urn

7

JavaScript (ES6), 66 byte

Bao gồm một dòng mới.

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

Bản giới thiệu



7

C (gcc) , 83 81 79 78 byte

  • Lưu hai byte nhờ Tahg ; chơi golf x/4+2*(x/12)để x/4+x/12*2.
  • Lưu hai byte nhờ Kevin Cruijssen ; chơi golf x%8*2%8để x*2%8.
  • Lưu một byte nhờ trần .
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);}

Hãy thử trực tuyến!


2
Bạn có thể thực hiện x / 4 + x / 12 * 2 và thoát khỏi ()
Tahg

x%8*2%8có thểx*2%8
Kevin Cruijssen

@ceilingcat Cảm ơn bạn.
Jonathan Frech


4

Java 8, 102 96 95 93 91 byte

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

Cổng từ @JonathanFrech 's câu trả lời C , sau đó tôi golfed 5 byte bản thân mình.

Hãy thử nó ở đây.

Giải trình:

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

Thạch , 35 byte

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

Hãy thử trực tuyến!

Chương trình đầy đủ không có đối số

Giải trình

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

Java 8, 97 byte

o->{int i=0,g;for(;i<8;i+=i==2?3:1)for(g=i%2;g<8;g+=2)System.out.println(i+","+g+(i<5?"r":"b"));}

3

JavaScript (ES6), 64 byte

Điều này dường như đủ khác với @ Arnauld để đảm bảo đăng bài:

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

Giải trình:

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

Đoạn trích:



3

APL (Dyalog) , 45 44 byte *

-1 cảm ơn ngn.

Hàm Niladic giả định lập chỉ mục dựa trên 0 ( ⎕IO←0) được mặc định trên nhiều hệ thống. In sang STDOUT.

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

Hãy thử trực tuyến!

(... ),¨¨'rb' append "r" để mỗi người trong nhóm đầu tiên của các mặt hàng và "b" cho mỗi thứ hai:

⍳8 từ 0 đến 8

2| phần còn lại khi giảm một nửa

∘.+⍨ bảng cộng với chính nó dọc theo cả hai trục

 chỉ số của giá trị thực

⍕¨ định dạng từng (chuyển đổi thành chuỗi với mẫu d dtrong đó mỗi chuỗi dlà một chữ số)

 kèm theo (để chúng tôi có thể sử dụng lại cho mỗi trận đấu)

8 ¯8↑¨ lấy chín đầu và chín cuối

bây giờ chúng ta có hai danh sách các d dchuỗi

,/ giảm catenation (kết hợp hai danh sách)

 tiết lộ (vì giảm thứ hạng từ 1 xuống 0)

' '⎕R',' PCRE R không gian nơi có dấu phẩy

 trộn (tất cả các danh sách thành một ma trận)


* Trong Dyalog Classic, tính như ⎕U2378.


~2|∘.+⍨⍳8có thể∘.=⍨2|⍳8
ngn

bạn không nên xuất hàng x = 3 và x = 4
ngn

@ngn2⍴⊂'Thanks'
Adám

2

Bong bóng , 59 byte

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

Hãy thử trực tuyến!


Đây là hexdump, phải không?
Stan Strum

@StanStrum Có, đây là hexdump của nguồn thực tế. Bằng cách sử dụng hexdump, không có dấu vết không thể bị mất. Nguồn thực tế không thêm bất cứ điều gì vào câu trả lời IMO.
trứng

Được rồi, tôi chỉ đang tự hỏi. Cảm ơn
Stan Strum

2

Bình thường , 37 36 35 byte

isaacg sẽ không tự hào

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

Giải trình:

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"

Điều này sử dụng một mô hình đơn giản tôi cắt giảm một chút. Như sau:

Nếu Xtọa độ là số chẵn, sử dụng các số chẵn 0, 2, 4, 6. Khác, 1, 3, 5, 7cho Y.

Nếu Xtọa độ nhỏ hơn 5, màu ( rhoặc b) là r. Khác, nó là b.

Hãy thử trực tuyến!

chỉnh sửa : qua đêm có +40 đại diện cho 3 câu trả lời khác nhau w00t



1

Javascript (89 byte):

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

Có thể đọc được

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

Hãy thử trực tuyến!


4
Xin lưu ý rằng không nên trả lời thử thách của riêng bạn ngay sau khi đăng nó.
Arnauld

Được. Tôi có nên gỡ nó xuống và có thể đăng sau?
Justin

Ok sẽ làm. Cảm ơn vì đã ngẩng cao đầu
Justin

Điều này nghe có vẻ ngu ngốc nhưng làm cách nào để xóa một bài đăng trên thiết bị di động?
Justin

@Justin Bạn không thể xóa bài viết trên thiết bị di động. Đó là một phiền toái cho nhiều người.
Thuật sĩ lúa mì

1

Thạch , 27 byte

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

Một chương trình đầy đủ in ra đầu ra cần thiết.

Hãy thử trực tuyến!

Làm sao

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 byte

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

Hãy thử trực tuyến!

Vòng lặp trên 0,1,2,5,6,7và mỗi lần lặp đặt $ithành số hiện tại. Sau đó vòng lặp qua 0,2,4,6. Mỗi vòng lặp bên trong, chúng tôi xây dựng một chuỗi bắt đầu $i,sau đó được nối với số hiện tại của vòng lặp bên trong của chúng cộng với dù $ilà chẵn hay lẻ (điều này khiến chúng tôi 0,2,4,6hết lần này đến 1,3,5,7lần khác), sau đó được nối với red hoặc bthiếu dựa trên việc có phải $ilà trình -ggiả mạo hay không -hoặc- eđủ điều kiện 5. Các chuỗi đó đều được để lại trên đường ống dẫn và ẩn Write-Outputkhi hoàn thành chương trình cung cấp cho chúng tôi các dòng mới miễn phí.


1

J , 48 44 40 37 31 byte

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

Hãy thử trực tuyến!

Làm thế nào nó hoạt động

           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

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.