Vẽ một bàn cờ ASCII!


42

Đây là một thử thách đơn giản dành cho bạn: Bạn phải tạo ra đại diện ASCII này của một bàn cờ. Màu trắng được thể hiện bằng các ký tự viết hoa và màu đen được thể hiện bằng chữ thường. Gạch rỗng được đại diện bởi a .. Đây là bảng đầy đủ:

rnbqkbnr
pppppppp
........
........
........
........
PPPPPPPP
RNBQKBNR

Vì đây là một câu hỏi , bạn không thể lấy bất kỳ đầu vào nào và bạn phải xuất bảng này bằng bất kỳ phương thức mặc định nào, ví dụ: lưu tệp, in vào STDOUT hoặc trả về từ một hàm. Bạn có thể tùy ý sản xuất một dòng mới. Các lỗ hổng tiêu chuẩn được áp dụng và chương trình ngắn nhất tính bằng byte!

Tuy nhiên, hãy nhớ rằng đây cũng là một cuộc cạnh tranh giữa các bài nộp trong cùng một ngôn ngữ. Mặc dù không chắc rằng các ngôn ngữ như Java có thể đánh bại một ngôn ngữ như perl hoặc ngôn ngữ chơi gôn như pyth hoặc cjam, nhưng câu trả lời Java ngắn nhất vẫn thực sự ấn tượng! Để giúp bạn theo dõi câu trả lời ngắn nhất trong mỗi ngôn ngữ, bạn có thể sử dụng bảng xếp hạng này, bảng này sẽ hiển thị bài gửi ngắn nhất theo ngôn ngữ và tổng thể.

Bảng xếp hạng

Để đảm bảo rằng câu trả lời của bạn hiển thị, vui lòng bắt đầu câu trả lời của bạn bằng một tiêu đề, sử dụng mẫu Markdown sau:

# Language Name, N bytes

nơi Nlà kích thước của trình của bạn. Nếu bạn cải thiện điểm số của mình, bạn có thể giữ điểm số cũ trong tiêu đề, bằng cách đánh bại chúng thông qua. Ví dụ:

# Ruby, <s>104</s> <s>101</s> 96 bytes

Nếu bạn muốn bao gồm nhiều số trong tiêu đề của mình (ví dụ: vì điểm của bạn là tổng của hai tệp hoặc bạn muốn liệt kê riêng các hình phạt cờ của thông dịch viên), hãy đảm bảo rằng điểm thực tế là số cuối cùng trong tiêu đề:

# Perl, 43 + 2 (-p flag) = 45 bytes

Bạn cũng có thể đặt tên ngôn ngữ thành một liên kết mà sau đó sẽ hiển thị trong đoạn trích bảng xếp hạng:

# [><>](http://esolangs.org/wiki/Fish), 121 bytes


1
Chắc chắn một bàn ASCII artcờ sẽ có điểm dừng hoàn toàn cho mọi ô vuông khác?
Shaun Bebbers

Câu trả lời:


16

Thạch , 25 24 byte

“.“.“p“rnbqkbn”ṁ€8µṚ;ŒuY

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

Cảm ơn @Lynn vì đã chơi golf 1 byte!

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

“.“.“p“rnbqkbn”ṁ€8µṚ;ŒuY  Main link. No arguments.

“.“.“p“rnbqkbn”           Yield [".", ".", "p", "rnbqkbnr"].
               ṁ€8        Mold-each 8; reshape each string like the array
                          [1, 2, 3, 4, 5, 6, 7, 8], i.e., cyclically repeat its
                          contents to create strings of length 8.
                          This yields the upper half of the board in reversed
                          order, i.e., the string array
                          A := "........", "........", "pppppppp", "rnbqkbnr"].
                  µ       Begin a new, monadic chain. Argument: A
                   Ṛ      Reverse A.
                     Œu   Convert all characters in A to uppercase.
                    ;     Concatenate the results to both sides.
                       Y  Join the strings, separating by linefeeds.

15

Vim, 26 byte

irnbqkbnr<Esc>Y6p5Vr.VrpYGPgUj

Dựa vào Vim mới, nếu không, 5Vcó thể chọn sai khu vực.

  • irnbqkbnr<Esc>: Viết hàng trên cùng. Vừa đủ dễ.
  • Y6p: Thực hiện phần còn lại của các hàng, ngoại trừ một . Tất nhiên tất cả trừ các hàng trên cùng và dưới cùng chứa các ký tự sai.
  • 5Vr.: Khi bạn chưa sử dụng chế độ trực quan trong phiên, bạn có thể thực hiện những việc như thế này để chọn 5 dòng. Nếu bạn gõ lại cùng một thứ ngay lập tức, nó sẽ cố gắng chọn 25 dòng. Vim thật kỳ lạ như thế.
  • Vrp: Chúng tôi đã ở dòng 2, vì vậy hãy tạo một dòng cầm đồ.
  • YGP: Sao chép dòng cầm đồ đó vào vị trí của nó ở phía dưới. Đây là lý do tại sao tôi sử dụng 6pthay vì 7ptrước đây.
  • gUj: Viết hoa các mảnh màu trắng.

1
Ngôn ngữ golf tốt nhất là có!
đã ngừng quay ngược chiều

10

Brainfuck , 224 byte

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

Mất gần một giờ để có được điều này.


8

Python 2, 63 byte

print"\n".join(["rnbqkbnr","p"*8]+["."*8]*4+["P"*8,"RNBQKBNR"])

Thật không may, cách tiếp cận khá đơn giản lại ngắn hơn nhiều so với những thứ "thông minh" mà tôi đã thử lúc đầu ...

Phần thưởng trả lời, cũng 63 byte:

print"\n".join(["rnbqkbnr"]+[c*8for c in"p....P"]+["RNBQKBNR"])

8

05AB1E , 24 byte

Sử dụng mã hóa CP-1252 .

"rnbqkbnr"'p8×'.8×D)Âu«»

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

Giải trình

"rnbqkbnr"                # push the string "rnbqkbnr"
                          # STACK: "rnbqkbnr"
          'p8×            # push the char "p" repeated 8 times
                          # STACK: "rnbqkbnr", "pppppppp"
              '.8×        # push the char "." repeated 8 times
                          # STACK: "rnbqkbnr", "pppppppp", "........"
                  D       # duplicate
                          # STACK: "rnbqkbnr", "pppppppp", "........", "........"
                   )      # wrap in list
                          # STACK: ["rnbqkbnr", "pppppppp", "........", "........"]
                    Â     # push a reversed copy of the list
                          # STACK: ["rnbqkbnr", "pppppppp", "........", "........"], 
                                   ["........", "........", "pppppppp", "rnbqkbnr"]
                     u«   # convert to upper-case and concatenate
                          # STACK: ['rnbqkbnr', 'pppppppp', '........', '........', 
                                    '........', '........', 'PPPPPPPP', 'RNBQKBNR']
                       »  # join list by newline

1
Tôi nghĩ rằng đây là lần đầu tiên tôi từng chơi golf một câu trả lời mà không cần nhìn và khớp với bạn trên 100% các ký tự được sử dụng. Gotta đồng ý điều này là tốt như nó được haha.
Bạch tuộc ma thuật Urn

7

Trên thực tế , 26 byte

'p8*"rnbqkbnr"│û@û4'.8*n((

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

Giải trình:

'p8*"rnbqkbnr"│û@û4'.8*n((
'p8*                        "p"*8 ["pppppppp"]
    "rnbqkbnr"              that string ["rnbqkbnr", "pppppppp"]
              │             duplicate stack ["rnbqkbnr", "pppppppp", "rnbqkbnr", "pppppppp"]
                û@û         uppercase the dupes ["RNBQKBNR", "PPPPPPPP", "rnbqkbnr", "pppppppp"]
               4   '.8*n    "."*8, 4 times ["RNBQKBNR", "PPPPPPPP", "........", "........", "........", "........", "rnbqkbnr", "pppppppp"]
                        ((  move the uppercase strings to the bottom of the stack, implicitly print

6

Cheddar, 56 byte

a=['rnbqkbnr','p'*8]+['.'*8]*2->(a+a.rev=>@.upper).vfuse

Sử dụng =>tính năng mới .

Giải trình

a=                      // set a to the first half
  ['rnbqkbnr','p'*8] +  // First two rows
  ['.'*8]*2             // Next two dots
->(
   a +
   a.rev=>@.upper       // Reverse and map all items to uppercase
).vfuse                 // Join on newlines

5
Vì vậy, bạn đã trả lời một câu hỏi về 'cờ' trong 'ches'?
DJMcMayhem

4
@DJMcMayhem .................. bạn vừa .....
Hạ xuống

1
mm đây là một số pho mát đẹp. lạm dụng tốt các thông số mặc định
Conor O'Brien

6

Pyke, 28 27 26 byte

"rnbqkbnr"i"P..p"1c8m*Xil3

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

Tôi đã học được một điều mới về ngôn ngữ của tôi ngày hôm nay: 1ccó thể được sử dụng như một cách chia 2 chuỗi thành một danh sách các ký tự.

"rnbqkbnr"i                - i = "rnbqkbnr"
                             stack = ["rnbqkbnr"])
           "P..p"1c        -  chunk("P..p", 1)
                             stack = ["rnbqkbnr", ["P", ".", ".", "p"]]
                   8m*     - map(8*>, ^)
                             stack = ["rnbqkbnr", ["PPPPPPPP", "........", "........", "pppppppp"]]
                      X    - splat(^)
                             stack = ["rnbqkbnr", "pppppppp", "........", "........", "PPPPPPPP"]
                       il3 - i.changecase()
                             stack = ["rnbqkbnr", "pppppppp", "........", "........", "PPPPPPPP", "RNBQKBNR"]
                           - implicit join with newlines

rnbqkbnr
pppppppp
........
........
PPPPPPPP
RNBQKBNR

5

MATL , 26 byte

'rnbqkbnr' 'p..'!l8X"vtPXk

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

Giải trình

'rnbqkbnr'   % Push this string (1×8 char array)
'p..'!       % Push this string transposed (3×1 char array)
l8X"         % Repeat 1×8 times: gives 3×8 char array
v            % Concatenate the two arrays vertically into a 4×8 char array
tP           % Duplicate and flip vertically
Xk           % Convert to uppercase. Implicitly display the two 4×8 arrays

5

Hồng ngọc, 45 44

Lưu 1 byte nhờ tuxcrafting.

puts"rnbqkbnr",?p*8,[?.*8]*4,?P*8,"RNBQKBNR"

Đây là 45

puts s="rnbqkbnr",?p*8,[?.*8]*4,?P*8,s.upcase

Thử bất cứ điều gì thông minh hơn dường như làm cho nó dài hơn.


Xóa khoảng puts
trắng

5

JavaScript (ES6), 69 65 byte

Đã lưu 4 byte nhờ edc65

let f =

_=>`rnbqkbnr
p....PRNBQKBNR`.replace(/p|\./ig,c=>c.repeat(8)+`
`)

console.log(f());


1
Rất thông minh! Có lẽ quá thông minh, có thể tiết kiệm 4 byte với 'rnbqkbnrnp....PRNBQKBNR'.replace(/p|\./ig,c=>c.repeat(8)+'\n')(thay đổi \nthành một dòng mới theo nghĩa đen)
edc65

5

C #, 94 92 byte

Chỉnh sửa: Nhờ sữa để tiết kiệm 1 byte bằng cách thay đổi thứ tự chuỗi để xóa khoảng trắng trả về.

Chỉnh sửa: Đã lưu thêm 1 byte bằng cách thêm tham số giả ( x thay vì () ) cho hàm ẩn danh và gọi nó với bất kỳ đối tượng nào.

x=>{string a="RNBQKBNR\n",b="PPPPPPPP\n",c="........\n";return(a+b).ToLower()+c+c+c+c+b+a;};

Chương trình đầy đủ sử dụng chức năng trên:

using System;

namespace DrawAnASCIIChessBoard
{
    class Program
    {
        static void Main(string[] args)
        {
            Func<object,string>f= x=>{string a="RNBQKBNR\n",b="PPPPPPPP\n",c="........\n";return(a+b).ToLower()+c+c+c+c+b+a;};
            Console.WriteLine(f(1));
        }
    }
}

C # là một ngôn ngữ rất dài ...


Chương trình đầy đủ C #, 131 byte

class P{static void Main(){string a="rnbqkbnr\n",b="pppppppp\n",c="........\n";System.Console.Write(a+b+c+c+c+c+(b+a).ToUpper());}}

Ung dung:

class P
{
    static void Main()
    {
        string a="rnbqkbnr\n",
            b="pppppppp\n",
            c="........\n";
        System.Console.Write(a+b+c+c+c+c+(b+a).ToUpper());
    }
}

2
"C # là một ngôn ngữ rất dài dòng ...". Bạn chưa dùng thử VB.NET rồi ...;)
TyCobb

2
Bạn có thể lưu một byte bằng cách xác định abviết hoa sau đó bạn có thể thoát khỏi khoảng trống sau return:return(a+b).ToLower()+...
sữa

@TyCobb Tôi đã thử VB.NET cách đây khá lâu. Lúc đó tôi không biết về việc đánh gôn bằng mã: P
adrianmp

bạn có thể sử dụng varthay vì string?
NibblyPig

@SLC Tôi đã không lập trình trong C # một thời gian, vì vậy hãy sửa cho tôi nếu tôi sai, nhưng tôi không nghĩ bạn có thể sử dụng varvới nhiều khai báo trên một dòng. Vì vậy, string a="rnbqkbnr\n",b="pppppppp\n",c="........\n";sẽ trở thành var a="rnbqkbnr\n";var b="pppppppp\n";var c="........\n";, làm tăng số lượng byte. EDIT: Nó sẽ cho một " Khai báo biến cục bộ được gõ ngầm có thể bao gồm nhiều khai báo " .
Kevin Cruijssen

4

Python 2, 68 byte

Dù sao thì việc đăng bài mặc dù phiên bản Python 2 ở trên ngắn hơn. Nó sẽ không phải là một lớp lót cho số lượng byte, chỉ cần chơi với nó.

x,y,z="rnbqkbnr\n","p"*8+"\n","."*8+"\n";print x,y,4*z,(y+x).upper()

zchỉ được sử dụng một lần khi bạn có thể thoát khỏi nó và tạo ra các dấu chấm trong câu lệnh in.
Karl Napf

3

Haskell, 53 byte

a="rnbkqbnr" 
unlines$a:map(<$a)"p....P"++["RNBKQBNR"]

ađược sử dụng như dòng đầu tiên và để xác định độ dài của dây làm bằng p, .P(-> <$a). .


3

JavaScript (ES6), 73

.toUpperCase đơn giản là quá dài

_=>`rnbqkbnr
${r=c=>c[0].repeat(8)+`
`,r`p`+(b=r`.`)+b+b+b+r`P`}RNBQKBNR`

O.textContent=(
  
_=>`rnbqkbnr
${r=c=>c[0].repeat(8)+`
`,r`p`+(b=r`.`)+b+b+b+r`P`}RNBQKBNR`

)()
<pre id=O></pre>


Tôi nghĩ rằng (r=c=>c[0].repeat(8)+\ n ,b=r. )=>giúp bạn tiết kiệm một byte.
Neil

@Neil Tôi không thấy tiết kiệm. Tôi đã cố gắng viết lại mã tăng khả năng đọc (một chút), nhưng số byte vẫn giữ nguyên
edc65

Ah, tôi thấy những gì tôi đã làm sai ở đó, bằng cách nào đó tôi đã mất một dòng mới trên đường đi. Xin lỗi vì điều đó.
Neil

3

PowerShell v2 +, 44 byte

'rnbqknbr'
'p'*8
,('.'*8)*4
'P'*8
'RNBQKNBR'

Các chuỗi còn lại trên đường ống được in ngầm Write-Outputkhi thực hiện chương trình. Chúng tôi kết hợp với hành vi dòng mới mặc định cho một mảng để tạo ra bốn dòng thời gian với toán tử dấu phẩy.

PS C:\Tools\Scripts\golfing> .\draw-ascii-chess-board.ps1
rnbqknbr
pppppppp
........
........
........
........
PPPPPPPP
RNBQKNBR

Đâu là những dòng mới trong dòng điểm? ", ('.' * 8) * 4" đó là ',' tôi cho rằng ...
RosLuP

@RosLuP Toán tử dấu phẩy ,, tạo một mảng (trong trường hợp này là một chuỗi các chuỗi). Mặc định Write-Outputkhi hoàn thành chương trình chèn một dòng mới giữa các phần tử còn lại trên đường ống, bao gồm các phần tử mảng riêng lẻ. Vì vậy, chúng tôi đang lạm dụng hành vi đầu ra mặc định để không cần phải viết các dòng mới rõ ràng trong mã.
admBorkBork

3

V , 27 , 26 byte

i¸P
RNBQKBNRäkgujddppÒ.4Ä

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

Điều này có chứa một số ký tự không thể in được, vì vậy đây là phiên bản có thể đọc được:

i¸P
RNBQKBNR<esc>äkgujddppÒ.4Ä

nơi <esc>đại diện 0x1B. Giải trình:

i                               " Enter insert mode
 ¸P                             " Enter 8 'P' characters
                                " and a newline
RNBQKBNR<esc>                   " Enter the first row and escape to normal mode.
             äk                 " Duplicate this line and the line above
               guj              " Convert this line, and the line below to lowercase
                  dd            " Delete this line
                    pp          " And paste it twice below us
                      Ò.        " Replace this whole line with '.' chars
                        4Ä      " And create four copies of this line

3

Emotinomicon, 89 byte

Đáng buồn là Emotinomicon không có gì giống như một chức năng ngăn xếp trùng lặp. Sẽ hữu ích. Nhưng ít nhất là ngắn hơn Java. :)

😭RNBKQBNR
PPPPPPPP
........
........
........
........
pppppppp
rnbkqbnr😲⏪⏬⏩

Giải trình:

😭(...)😲⏪⏬⏩
😭(...)😲            String literal
         ⏪  ⏩      Loop
           ⏬        Pop one char and output

Hmm ... đó sẽ là một chức năng hữu ích, bây giờ sẽ không ...
Conor O'Brien

Ngay cả chương trình cũng buồn. = Đáng buồn
A _

3

Brain-Flak , 366 350 + 3 = 353 byte

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

(((((((((((()()())){}(((({}))){}{}(([((({})){}){}](([({}())](((((({}()){}){}){}()){})<>))<>)<>)<>)))<<>({}<>)<>({}<>)<>({}<>)([]()())>[()]))))))))(()()()()){({}[()]<((((((((((((()()()()()){})()){}()){}))))))))>)}{}(((()()()()()){})<((((((((([][]()()()()))))))))<>)<>>)(((((()()()))){})(({}{})(([{}({})](([{}()](<>({}()())<>)<>)<>)<>)<>))){<>({}<>)}{}

Điều này được cộng 3 vì nó yêu cầu -A cờ chạy đúng.

Giải trình

First we push the last 5 letters to the active stack.
We also push copies of last 3 numbers to the inactive stack.
This is done with fairly simple methods I won't go into for the sake of brevity.

 (((()()())){}(((({}))){}{}(([((({})){}){}](([({}())](((((({}()){}){}){}()){})<>)<><>)<>)<>)<>)))

We Move Everything from the offstack to the onstack.
The first 3 letters are the same as the last 3 letters in the first line

{<>({}<>)}{}

We push 10 for a new line

((()()()()()){})

Using the value of Q we create a P and push it 8 times

((((((((<...>[()]))))))))

We loop 4 times each time pushing 8 dots and a newline

(()()()())
{({}[()]<
    ((((((((((((()()()()()){})()){}()){}))))))))
>)}{}

We push the last two lines in a very similar way to the first two.

(((()()()()()){})<((((((((([][]()()()()))))))))<>)<>>)(((()()()){})(({}()()())(([{}(()()())](([{}()](<>({}()())<>)<>)<>)<>)<>))){<>({}<>)}{}

Bạn có thể đẩy hai dòng đầu tiên ((((((((((((((((((((()()()()()){}){}){}()){})[()()()()])[([][][]){}])[][][])[]()())[[][][]])[][])()()()())<([]()())>[()()]))))))))mà tôi nghĩ sẽ giúp bạn tiết kiệm 16 byte. Điều này hoàn toàn không sử dụng ngăn xếp thay thế, vì vậy nó có thể còn ngắn hơn nữa.
DJMcMayhem

3

Python 3.5, 56 byte

for r in['rnbqkbn',*'p....P','RNBQKBN']:print((r*8)[:8])

Điều này sử dụng một ý tưởng của zawata để mã hóa từng dòng như (r*8)[:8], với một chuỗi được lặp lại 8 lần và được cắt theo chiều dài 8. Các con cờ và các hàng trống chỉ là 'p'*8, '.'*8'P'*8, không cắt tỉa. Hàng đầu tiên sử dụng 'rnbqkbn', với('rnbqkbn'*8)[:8] bao gồm một rook khác ở bên phải khi nhân và cắt. Hàng cuối cùng là giống nhau nhưng viết hoa.

Chúng tôi thể hiện danh sách các phần hàng một cách gọn gàng ['rnbqkbn','p','.','.','.','.','P','RNBQKBN']bằng cách sử dụng giải nén tổng quát của Python 3.5 . Chúng tôi viết ra các mục đầu tiên và cuối cùng, và các ký tự đơn còn lại được giải nén từ một chuỗi.

Trong Python 2, chúng ta có thể giải quyết splitthay vì 60 byte:

for i in'rnbqkbn p . . . . P RNBQKBN'.split():print(i*8)[:8]

3

Python 3, 82 80 75 byte

Không phải là câu trả lời ngắn nhất trong python nhưng đây là lần đầu tiên của tôi và tôi nghĩ nó khá tốt cho lần đầu tiên

print('\n'.join((i*8)[:8]for i in'rnbqkbn p . . . . P RNBQKBN'.split()))

1
Chào mừng đến với trang web! Bạn có thể tắt hai byte nếu bạn loại bỏ một số khoảng trắng thừa. Ví dụ:[:8]for i in['rnbqkbn'....
DJMcMayhem

1
Ý tưởng tuyệt vời với việc thống nhất tất cả các dòng và tái sử dụng các tân binh. Bạn có thể viết danh sách ngắn hơn như 'rnbqkbn p . . . . P RNBQKBN'.split().
xnor

@DJMcMayhem không biết những thứ đó không cần thiết. cảm ơn!
zawata

@xnor đó là một ý tưởng tuyệt vời! tôi phải thêm thủ thuật đó vào "kho vũ khí" của mình haha
zawata

2

Mẻ, 105 byte

@set e=@echo ........
@echo rnbqkbnr
@echo pppppppp
%e%
%e%
%e%
%e%
@echo PPPPPPPP
@echo RNBQKBNR

Batch rất nghiêm túc ...


2

R, 75 byte

Chỉnh sửa: Đã sửa một lỗi ngớ ngẩn và chỉ cần viết ra phần chữ hoa của bảng.

cat("rnbqkbnr\npppppppp\n",rep("........\n",4),"PPPPPPPP\nRNBQKBNR",sep="")

1
Các mảnh màu đen xuất hiện sai khi đứng này: các con tốt nên ở phía trước của các mảnh khác.
JDL

@JDL Tất nhiên là đúng rồi, cảm ơn. Sai lầm ngớ ngẩn khi làm thay đổi thứ hai cuối cùng.
Billywob


2

Powershell, 82 73 byte

$x=("rnbqkbnr",$("p"*8),$("."*8),$("."*8));$x+$x[3..0].ToUpper()-join"`n"


@Veskah - Nó hoạt động thế nào? Tôi chưa từng thấy *perđiều này trước đây và google không cung cấp cho tôi bất kỳ gợi ý nào. Có một lời giải thích?
Chris J

Kiểm tra ở đây để viết đầy đủ nhưng |% có thể gọi các thuộc tính / phương thức (với các ký tự đại diện trong tên) trên những gì nó được đưa ra
Veskah

2

J, 55 52 byte

'.rnbkqpPQKBNR'{~(+-@|.)8 8$1 2 3 4 5 3 2 1,8 48#6 0

Các bước kiểm tra và trung gian

   '.rnbkqpPQKBNR'{~(+-@|.)8 8$1 2 3 4 5 3 2 1,8 48#6 0
rnbkqbnr
pppppppp
........
........
........
........
PPPPPPPP
RNBKQBNR
   8 48#6 0
6 6 6 6 6 6 6 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
   1 2 3 4 5 3 2 1,8 48#6 0
1 2 3 4 5 3 2 1 6 6 6 6 6 6 6 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
   8 8$1 2 3 4 5 3 2 1,8 48#6 0
1 2 3 4 5 3 2 1
6 6 6 6 6 6 6 6
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
   (+-@|.)8 8$1 2 3 4 5 3 2 1,8 48#6 0
 1  2  3  4  5  3  2  1
 6  6  6  6  6  6  6  6
 0  0  0  0  0  0  0  0
 0  0  0  0  0  0  0  0
 0  0  0  0  0  0  0  0
 0  0  0  0  0  0  0  0
_6 _6 _6 _6 _6 _6 _6 _6
_1 _2 _3 _4 _5 _3 _2 _1
   '.rnbkqpPQKBNR'{~(+-@|.)8 8$1 2 3 4 5 3 2 1,8 48#6 0
rnbkqbnr
pppppppp
........
........
........
........
PPPPPPPP
RNBKQBNR

2

Python 3, 64 byte

Dựa trên câu trả lời DLosc cho Python 2 như tôi không thể cải thiện.

print(*["rnbqkbnr","p"*8]+["."*8]*4+["P"*8,"RNBQKBNR"],sep="\n")

Ít hơn 1 byte so với sử dụng "\ n" .join

print("\n".join(["rnbqkbnr","p"*8]+["."*8]*4+["P"*8,"RNBQKBNR"]))

2

q, 51 byte

"\n"sv flip{x,"p...P","c"$("i"$x)-32}each"rnbqkbnr"

Bạn có thể cạo một vài byte với phần trên và mỗi bên phải. Ngoài ra các bản in sau đây cho thiết bị xuất chuẩn hơn là trả về một chuỗi có dòng mới : -1 flip"p...P"{y,x,upper y}/:"rnbqkbnr";. 40 byte. Giải pháp tốt đẹp mặc dù!
streetster

2

GNU sed, 54 byte

s:^:rnbqkbnr:p;h
s:.:p:gp;G
h;s:[^\n]:.:gp;G
s:.:\U&:g

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

Giải trình:

Các mảnh màu đen được in trước, lưu hai bảng xếp hạng liên kết theo thứ tự ngược lại trong không gian giữ. Các mảnh màu trắng được in bằng cách chuyển đổi không gian giữ thành chữ in hoa.

s:^:rnbqkbnr:p;h   # change pattern and hold spaces to 'rnbqkbnr' and print string
s:.:p:gp           # replace each pattern space letter with a 'p', then print
G;h                # append hold space, then copy pattern space to hold space
s:[^\n]:.:gp       # replace each pattern space letter with a '.', then print
G;s:.:\U&:g        # append hold space and convert pattern space to uppercase
                   # (automatic printing of pattern space at the end)

2

Java 7, 103 99 89 byte

String f(){return"rnbqkbnr\npppppppp\nxxxxPPPPPPPP\nRNBQKBNR".replace("x","........\n");}

10 byte được lưu so với đầu ra được mã hóa cứng nhờ cách tiếp cận của @SLC trong câu trả lời C # của anh ấy .

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

Đầu ra:

rnbqkbnr
pppppppp
........
........
........
........
PPPPPPPP
RNBQKBNR

Điều này thì sao String f(){return"rnbqkbnr\npppppppp\n........\n........\n........\n........\nPPPPPPPP\nRNBQKBNR";}. Đây là 100 byte .
Numberjack

@Numberjack Thật nhàm chán .. nhưng bạn nói đúng, nó ngắn hơn. Btw, nó là 99 byte, không phải 100.
Kevin Cruijssen

2

C #, 85 84 83 74 byte

Chỉnh sửa: Vô tình có quá nhiều hàng trống!

Chỉnh sửa: Đã giải phóng một ký tự phụ và sửa lỗi thứ tự (vô tình bị đảo ngược tất cả) rất nhiều nhờ @KevinCruijssen

Chỉnh sửa: Hoàn nguyên về 83 cos Tôi đã có tôm trên dòng sai

Chỉnh sửa: Cảm ơn @adrianmp, người đã giúp tôi thu nhỏ nó hơn nữa bằng cách bỏ qua trả lại

Sử dụng định dạng tương tự như @adrianmp trả lời ở trên:

x=>"rnbqkbnr\npppppppp\nxxxxRNBQKBNR\nPPPPPPPP".Replace("x","........\n");

Chương trình đầy đủ sử dụng chức năng trên:

using System;

namespace DrawAnASCIIChessBoard
{
    class Program
    {
        static void Main(string[] args)
        {
            Func<object, string> f = 
                x=>"rnbqkbnr\npppppppp\nxxxxRNBQKBNR\nPPPPPPPP".Replace("x","........\n");
                    Console.WriteLine(f(1));
        }
    }
}

Xin chào, chào mừng đến với PPCG! Hmm, thứ tự các mảnh của bạn dường như không chính xác với OP. Btw, bạn có thể lưu 1 byte bằng cách xóa khoảng trắng giữa return ", để nó trở thành : x=>{return"rnbqkbnr\npppppppp\nxxxxPPPPPPPP\nRNBQKBNR".Replace("x","........\n");};. Câu trả lời hay, nên +1 từ tôi. Và tận hưởng kỳ nghỉ của bạn ở đây. :)
Kevin Cruijssen

Và cảm ơn câu trả lời của bạn. Tôi đã chuyển cách tiếp cận tương tự với câu trả lời Java 7 của tôi (tất nhiên là ghi có cho bạn) , giảm số byte xuống 10. :)
Kevin Cruijssen

Tôi đã cải thiện nó hơn nữa
NibblyPig

Gah tôi chỉ nhận ra rằng điều đó không đúng
NibblyPig

1
Cách tiếp cận tốt đẹp! Bạn thực sự có thể giảm xuống còn 74 byte:x=>"rnbqkbnr\npppppppp\nxxxxRNBQKBNR\nPPPPPPPP".Replace("x","........\n");
adrianmp
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.