Xây dựng bàn cờ


23

Nhìn thấy điều này trong một thách thức PHP. Mục tiêu là tạo ra một bàn cờ với 64 ô vuông (8 * 8) với số lượng mã tối thiểu. Đơn giản thôi, tôi đã tạo ra PHP bằng 35 byte (không ấn tượng, tôi biết) và tôi muốn thấy một số lời xin lỗi khác. Điều này có thể được thực hiện bằng ngôn ngữ bạn chọn, miễn là bạn giữ nó là vani, do đó không nhập khẩu. Số byte nhỏ nhất sẽ thắng.

Đầu ra sẽ trông như thế này:

screencap

Và mã của tôi:

<table><?php
$c='black';function p($c,$n){echo'<td style="width:50px;height:50px;background:'.$c.'"></td>';if($n==1){echo"<tr>";}}for($i=1;$i<=64;$i++){if($i%8==0&&$c=="black"){$c="white";$n=1;}elseif($i%8==0&&$c=="white"){$c="black";$n=1;}elseif(isset($n)&&$n==1){$n=0;}elseif($c=="black"){$n=0;$c="white";}elseif($c=="white"){$n=0;$c="black";}p($c,$n);}

Hoặc có thể đọc được:

<table><tr>
<?php
$color = 'black';
function printcolor($color, $nl) {

    echo '<td style="width:50px; height:50px; background:' . $color . '"></td>';
    if ($nl == true) {
        echo "</tr><tr>";
    }
}
for ($i=1; $i<=64;$i++) {
    if ($i % 8 == 0 && $color == "black") {
        $color = "white";
        $nl = true;
    } elseif ($i % 8 == 0 && $color == "white") {
        $color = "black";
        $nl = true;
    } elseif (isset($nl) && $nl == true) {      
        $nl = false;
    } elseif ($color == "black") {
        $nl = false;
        $color = "white";           
        } 
    elseif ($color == "white")  {
        $nl = false;
        $color = "black";
    }       
    printcolor($color, $nl);
}

Chỉnh sửa:

Xin lỗi tôi đã không cụ thể lúc đầu:

  • Hình vuông nên có 50px * 50px ngoại trừ hình ảnh véc tơ.
  • Định dạng hoặc kích thước đầu ra không liên quan và cũng không cần phải là một hình ảnh.
  • Đối với mục đích đánh giá, đầu ra phải được hiển thị, chẳng hạn như trong tệp hình ảnh hoặc ảnh chụp màn hình
  • Không có thư viện nào được viết sau khi thử thách được đăng

3
Chào mừng bạn đến với PPCG, vì hiện tại, thách thức này thực sự không liên quan gì đến PHP, vì vậy tôi đã thay đổi các thẻ của bạn. Ngoài ra, tôi tin rằng việc thực hiện tham chiếu của bạn thuộc về một câu trả lời, không phải trong câu hỏi của bạn. Khi Stewie đưa lên, bạn nên chỉ định kích thước yêu cầu của đầu ra hình ảnh, cũng như những thứ như chi tiết cụ thể về màu sắc và liệu hình ảnh bị mất có được phép hay không.
FryAmTheEggman

2
Vì vậy, một số ma thuật ASCII không được phép? :(
Denker

4
Làm thế nào cơ bản là cơ bản? Định nghĩa của một "nhập khẩu" là gì?
Doorknob

6
Nó không cần phải là một hình ảnh nhưng mỗi hình vuông phải có ít nhất 50px? Điều đó dường như tự mâu thuẫn với tôi.
Peter Taylor

4
Ngôn ngữ lập trình ở đây rất đa dạng, bao gồm một số ngôn ngữ được tạo riêng cho việc chơi gôn và có nhiều chức năng dựng sẵn. Do đó, tôi khuyên bạn nên loại bỏ các hạn chế đối với các chức năng không phải thư viện và thay vào đó, câu hỏi này phải tuân theo mặc định (tất cả các lần nhập được tính theo số byte; không có thư viện nào được viết sau khi thử thách được đăng).
lirtosiast

Câu trả lời:


13

Octave, 20 18 byte

Cảm ơn @Bruno đã cạo sạch 2 byte.

imshow(invhilb(8))

Kết quả:

nhập mô tả hình ảnh ở đây

Câu trả lời này sử dụng một kỹ thuật được tìm thấy ở đây . Nó cũng dựa vào tỷ lệ tự động của hình ảnh trong Octave tùy thuộc vào kích thước của cửa sổ hình.


1
@AlexA. Tôi cũng không hoàn toàn tin rằng các ô vuông phải chính xác là 50x50 pixel, vì quy tắc tiếp theo nói "Định dạng hoặc kích thước đầu ra không liên quan ...". Mọi người đã yêu cầu làm rõ trong các ý kiến, nhưng câu hỏi chưa được cập nhật.
cốc

Chỉnh sửa câu hỏi. Đã kiểm tra mã của bạn và nó đang hoạt động, vì vậy hiện tại bạn có số byte thấp nhất :)
Bruno

Đồng thời xóa> 0 và nó vẫn hoạt động để bạn có thể cạo 2 byte ở đó
Bruno

@Bruno Gì? Đó là hoang dã. Vì vậy, rõ ràng việc kẹp các giá trị của ma trận (tất cả là << 0 hoặc >> 1) thành 0 và 1. Cảm ơn vì tiền boa, tôi sẽ cập nhật! : D
cốc

Chúc mừng 2k!
NoOneIsHere

26

vim, 47 46 44 43

gạch bỏ 44 vẫn là 44 ...

iP1 400 <C-p><cr><esc>50i1<esc>YpVr0yk3PyG49PyG:m$<cr>p2GyG3P
i          enter insert mode
P1         signal to NetPPM that we're using black&white (PBM) format
400        width
<C-p>      fancy trick that inserts the other 400 for height
<cr><esc>  exit insert mode on the next line
50i1<esc>  insert 50 '1's (black)
YpVr0      insert 50 '0's (white) by duplicating the line and replacing all chars
yk         copy both lines (yank-up)
3P         paste three times; this leaves us on line two
yG         copy from line 2 to end of file (this is a full row of pixels now)
49P        we need 50 rows of pixels to make a complete "row"; paste 49 times
yG         copy the entire row of the checkerboard
:m$<cr>    move line 2 (the line we're currently on) to the end of the file
           this gives us the "alternating rows" effect
p          we're now on the last line: paste the entire row we copied earlier
2G         hop back to line 2 (beginning of image data)
yG3P       copy the entire image data, paste 3 times

Đầu ra ở định dạng NetPPM (PBM):

đầu ra


2
Tôi thích rằng bạn có thể hoàn thành một thử thách đầu ra đồ họa với trình soạn thảo văn bản. Có ví dụ nào khác về PBM từ vim golf không?
ankh-morpork 4/2/2016

1
@ dohaqatar7 Tôi không biết, nhưng tôi đã từng làm TikZ với vim trước đây, vì vậy đồ họa trong vim là một điều chắc chắn.
Doorknob

2
Wow, tôi chưa bao giờ nghĩ sẽ thử <C-p>trong vim mà không bắt đầu gõ một từ ... điều đó thực sự tiện dụng!
Desty

16

CSS, 244 byte

html{background:#fff}body{width:400px;height:400px;background:linear-gradient(45deg,#000 25%,transparent 25%,transparent 75%,#000 75%)0 0/100px 100px,linear-gradient(45deg,#000 25%,transparent 25%,transparent 75%,#000 75%)50px 50px/100px 100px}

Giải thích: Một gradient tuyến tính đường chéo 100x100px được tạo ra với bốn điểm dừng để hầu hết các gradient đều trong suốt ngoại trừ hai góc tam giác 50px. (Xem đoạn trích dưới đây). Thêm một gradient thứ hai với độ lệch 50x50px lấp đầy trong các nửa còn thiếu của hình vuông. Tăng kích thước của cơ thể sau đó cho phép mô hình kết quả lặp lại để lấp đầy toàn bộ bàn cờ.


Giải pháp gọn gàng. Nó sẽ hoạt động tốt nếu bạn thả cuối cùng } .
insertusernamehere 4/2/2016

Bạn có thể giải thích những gì đang xảy ra ở đây?
flawr

@flawr Tôi đã thêm một đoạn mã thứ hai cho thấy hiệu ứng một phần, tôi hy vọng điều đó có ích.
Neil

Đây là hoàn hảo.
Không phải Charles

Bạn có thực sự cần html{background:#fff}? Theo mặc định, 99% trình duyệt đặt nền thành màu trắng, afaik
Downgoat

15

Toán học, 34 byte

ArrayPlot@Array[Mod[+##,2]&,{8,8}]

Đầu ra là một hình ảnh vector và được bao quanh trong một khung.

Thay vì định vị chính xác 32 hình chữ nhật, chúng tôi chỉ có thể tạo ma trận nhị phân và thực hiện ArrayPlotcông việc cho chúng tôi:

nhập mô tả hình ảnh ở đây


Tốt đẹp! Cảm ơn đã đăng nó.
Một Simmons

Trông được. Bạn có thể vui lòng giải thích cho tôi nơi bạn xác định mỗi hình vuông là 50px? Ngoài ra, có một trình giả lập trực tuyến nơi tôi có thể kiểm tra nó không?
Bruno

@Bruno Đầu ra là một đồ họa vector, vì vậy không có thứ gọi là kích thước pixel (hình ảnh không có kích thước nội tại - nó có thể được thu nhỏ và hiển thị ở mọi kích thước). Đó là lý do tại sao tôi hỏi.
Martin Ender

4
Chờ đợi, GenerateChessBoardWithColorsAsParameters[ColorBlack, ColorWhite, 8, 8, 50, 50] không làm việc à? ;)
Conor O'Brien

3
@ CᴏɴᴏʀO'Bʀɪᴇɴ Nó có, nhưng đó là 73 byte.
Martin Ender

10

Toán học, 81 72 55 byte

Graphics[Rectangle/@Select[Range@8~Tuples~2,2∣Tr@#&]]

Đầu ra đầu vào

Hình ảnh là đánh giá của phiên bản trước, nhưng vẫn trông giống nhau.


8

Octave, 48 byte

​​​​​​​​​​​​​​​imwrite(kron(mod((t=0:7)+t',2),ones(50)),'.png')

Điều này hoạt động chính xác như câu trả lời Matlab của tôi , nhưng không có spiraltrong Octave. Thay vào đó, chúng tôi sử dụng một tính năng mà Matlab không có: Chúng tôi có thể sử dụng phép gán tđã là một biểu thức và sau đó sử dụng tlại trong cùng một biểu thức.

(Đây là phiên bản thay đổi kích thước, tôi không muốn làm lộn xộn các câu trả lời ở đây =)


1
Góc trên bên trái nên có màu trắng, không phải màu đen.
Doorknob

2
Đầu ra phải là một bàn cờ, hướng không được chỉ định.
flawr

2
Xin lỗi, flawr, đầu ra nên là một bàn cờ. Bàn cờ luôn là "Nữ hoàng trên màu của cô ấy, màu trắng bên phải" (nghĩa là bàn tay phải của mỗi người chơi có một hình vuông góc màu trắng).
corsiKa

5
Sau đó tưởng tượng một người chơi ngồi bên phải, một người bên trái. Một lần nữa: điều này không được chỉ định bởi thử thách, đó chỉ là cách giải thích của bạn.
flawr

8

Pure Bash (không có tiện ích bên ngoài), 133

Tôi thấy nhận xét của @ Doorknob là một chút thách thức. Nó hơi dài, nhưng ở đây đi:

echo \# ImageMagick pixel enumeration:400,400,1,rgb
for((;x=p%400,y=p/400,c=1-(x/50^y/50)&1,p++<160000;));{
echo "$x,$y:($c,$c,$c)"
}

Đầu ra ở định dạng .txt của Imagemagick . Lưu ý đây là Bash thuần túy. Cả Imagemagick và bất kỳ tiện ích bên ngoài nào khác đều được sinh ra để tạo đầu ra này. Tuy nhiên, đầu ra có thể được chuyển hướng đến tệp .txt và được xem với displaytiện ích ImageMagick :

nhập mô tả hình ảnh ở đây

Định dạng hình ảnh này là tốt bởi vì nó không chỉ là văn bản thuần túy, nó ít hơn một danh sách tất cả các pixel (x, y và giá trị màu), một trên mỗi dòng. Đây là một vấn đề khá đơn giản để lấy được tất cả các giá trị pixel một cách hợp lý trong một vòng lặp lớn.


Câu trả lời trước, 167

echo "\"400 400 2 1\"
\"  c white\"
\"b c black\""
printf -vf %50s
a="$f${f// /b}"
o=("\"$a$a$a$a\"" "\"${f// /b}$a$a$a$f\"")
for i in {0..399};{
echo "${o[i/50%2]}"
}

Đầu ra ở định dạng tệp hình ảnh văn bản X_PixMap , cũng có thể được xem bằng ImageMagickdisplay tiện ích .

Lưu ý rằng tôi đã sử dụng nhiều định dạng XPM nhất có thể để displayvẫn chấp nhận nó. Tôi đã có thể đưa ra tất cả các soạn sẵn với ngoại lệ của "dấu ngoặc kép xung quanh mỗi dòng. Không có ý tưởng gì khác - nếu có - tiện ích sẽ chấp nhận điều này.


6

Trình duyệt PowerShell + bạn chọn, 149 143 byte

Không thể sử dụng nhập khẩu thực sự khó khăn, vì tất cả các lệnh gọi GDI (nghĩa là nội dung mà PowerShell sử dụng để vẽ) bị chôn vùi đằng sau nhập khẩu trong .NET ...

"<table><tr>"+((1..8|%{$a=$_;-join(1..8|%{'<td style="width:50px;height:50px'+("",";background:#000")[($a+$_)%2]+'"></td>'})})-join'</tr><tr>')

Chỉnh sửa - đã lưu sáu byte nhờ @NotThatCharles

Điều này sử dụng hai vòng lặp for 1..8để tạo chuỗi HTML lớn, tương tự như ví dụ PHP được cung cấp và xuất nó lên đường ống dẫn. Mỗi lần chúng tôi tính toán có nên nối thêm ;background:#000nền đen hay không bằng cách lấy vị trí hiện tại của chúng tôi trên bảng modulo 2.

Để sử dụng, hãy chuyển hướng đầu ra vào tệp bạn chọn (ví dụ: với nội dung tương tự > chessboard.htm) và sau đó khởi chạy tệp đó trong trình duyệt bạn chọn. Đối với ảnh chụp màn hình bên dưới, tôi đã sử dụng "c.htm" và Firefox.

lửa


Cái này không bị ảnh hưởng nhưng tôi khá thích nó bằng cách nào đó :)
Bruno

whiteblackcó thể #fff#000... nhưng tại sao lại chỉ định màu trắng?
Không phải Charles

(";background:#000","")[($a+$_)%2]thay vào đó hãy thử
Không phải Charles

@NotthatCharles Durr, đã lật đôi màu trắng và đen của tôi, vì vậy nó chỉ xuất ra các ô vuông màu trắng. Đã sửa cho thêm 4 byte được lưu.
admBorkBork

5

PHP + CSS + HTML, 136 byte

Đưa bảng aproach lên một cấp độ cao hơn:

<table><?for(;++$i<9;)echo'<tr>',str_repeat(["<td b><td>","<td><td b>"][$i&1],4);?><style>td{width:50px;height:50px}[b]{background:#000}

Nó tạo mã sau đây:

<table><tr><td><td b><td><td b><td><td b><td><td b><tr><td b><td><td b><td><td b><td><td b><td><tr><td><td b><td><td b><td><td b><td><td b><tr><td b><td><td b><td><td b><td><td b><td><tr><td><td b><td><td b><td><td b><td><td b><tr><td b><td><td b><td><td b><td><td b><td><tr><td><td b><td><td b><td><td b><td><td b><tr><td b><td><td b><td><td b><td><td b><td><style>td{width:50px;height:50px}[b]{background:#000}

Nó phụ thuộc rất nhiều vào lòng tốt và CSS của trình duyệt.


Giải pháp tốt. Tho tôi phải bao gồm php sau <? và bao gồm $ i = 0 là tham số đầu tiên để tham số hoạt động chính xác, cho kết quả cuối cùng là 144 byte.
Bruno

1
@Bruno Nếu bạn đề cập đến cảnh báo mà nó đưa ra, các cảnh báo sẽ không được chú ý ở đây. Tuy nhiên, có hàng nghìn tỷ cách vô hiệu hóa chúng. Một trong số đó là thay thế ++$i<9bằng @++$i<9. Ngoài ra, để nó hoạt động mà không có <?php, người ta phải có lệnh short_open_tags=On, mặc định trên một số môi trường. Đọc thêm về stackoverflow.com/a/2185331/2729937
Ismael Miguel

5

Thạch, 26 byte

400R%2ẋ€50FU;$ẋ4;;;1j⁶;”PU

Vì Jelly không hỗ trợ hình ảnh tích hợp, chúng tôi in hình ảnh PPM.

Hãy thử trực tuyến!(bảng nhỏ hơn cho tốc độ, PPM thô)

Các kết quả

ảnh chụp màn hình

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

400R%2ẋ€50FU;$ẋ4;;;1j⁶;”PU  Main link. No arguments.

400                         Set the left argument to 400.
   R                        Yield [1, ..., 400].
    %2                      Compute the parity of each integer.
      ẋ€50                  Replace each parity by an array of 50 copies of itself.
          F                 Flatten the resulting, nested list.
                            This creates the first rank of the board.
             $              Combine the two atoms to the left:
           U                  Reverse the array of parities.
            ;                 Concatenate the reversed array with the original.
                            This creates the first two ranks of the board.
              ẋ4            Repeat the resulting list four times.
                            This creates all eight ranks of the board.
                ;           Append 400, the link's left argument.
                 ;          Append 400, the link's left argument.
                  ;1        Append 1.
                    j⁶      Join, separating by spaces.
                      ;”P   Append the character 'P'.
                         U  Reverse the resulting list.

Phiên bản không cạnh tranh (24 byte)

Trình thông dịch Jelly mới nhất có trước bài đăng này đã không vector hóa xđúng cách. Với phiên bản mới nhất, có thể lưu thêm 2 byte.

400R%2x50U;$ẋ4;;;1j⁶;”PU

Sự khác biệt duy nhất là x50mang lại một danh sách phẳng (với mỗi phần tử gốc được lặp lại 50 lần), do đó Fkhông còn cần thiết nữa.


1
Có vẻ như bạn đang viết một câu trả lời java và ngủ thiếp đi một chút trong khi gõ một ;...;)
Conor O'Brien

1
@ CᴏɴᴏʀO'Bʀɪᴇɴ Java? Bạn phải có trên Java 10.0, Phiên bản chơi gôn, vì nó không giống bất kỳ Java nào tôi từng thấy ....
BalinKingOfMoria

5

MATL , 11 (27) byte

8:t!+Q2\TYG

Điều này tạo ra hình sau đây. Nó không có kích thước nội tại; nó tự động thu nhỏ tùy thuộc vào kích thước của cửa sổ hình. Điều này dường như được cho phép bởi các thách thức.

nhập mô tả hình ảnh ở đây

Giải trình

8:      % row vector [1,2,...8]
t!      % duplicate and transpose into column vector
+       % 8x8 matrix with all pairwise additions
Q       % add 1
2\      % modulo 2. Gives 8x8 matrix of zeros and ones
TYG     % draw image

Nếu tự động không được phép:

'imshow'8:t!+Q2\50t3$Y"0#X$

tạo ra hình dưới đây với hình vuông 50x50 pixel

Giải trình

nhập mô tả hình ảnh ở đây

'imshow'   % name of Matlab function
8:t!+Q2\   % same as above. Produces 8x8 matrix of zeros and ones
50t3$Y"    % repeat each element 50 times in each dimension
0#X$       % call imshow function with above matrix as input

5

Bình thường, 28 26 byte

J*4+*50]255*50]0.wm_mxkdJJ

Giải trình

J                          - Autoassign J = V
           *50]0           - 50*[0]
    *50]255                - 50*[255]
   +                       - ^^+^
 *4                        - 4*^
                .w         - write_greyscale(V)
                  m      J - [V for d in J]
                   _       - reversed(V) 
                    m   J  - [V for k in J]
                     xkd   - k^d

Tương đương Python

J = 4*(50*[255]+50*[0])
write_greyscale([[k^d for k in J][::-1] for d in J])

Hãy thử ở đây (chỉ các giá trị màu)

Đầu ra:

Đầu ra


Công việc tuyệt vời về số byte nhưng tôi cần một đầu ra hợp lệ với các ô vuông có thể nhìn thấy :)
Bruno

@Bruno Đầu ra được thêm! Tôi đã cài đặt PIL chỉ cho bạn: O (Tôi chưa thực sự thử nghiệm nó trước đây)
Blue

@muddyfish xin lỗi vì sự cố và cảm ơn. Hội đồng quản trị phải bắt đầu bằng và kết thúc bằng một ô vuông màu trắng :)
Bruno

4

Matlab, 47 (24) byte

imwrite(kron(mod(spiral(8),2),ones(50)),'.png')

Điều này hoạt động chính xác như câu trả lời Octave của tôi , nhưng tôi đã có thể sử dụng spiralmà đã lưu một byte. spiral(n)tạo một nxnma trận và lấp đầy nó theo hình xoắn ốcn^2 số nguyên .

Nếu phép vẽ đồ thị được cho phép, chúng ta có thể làm điều đó trong 24 byte:

imshow(mod(spiral(8),2))

(Đây là phiên bản thay đổi kích thước, tôi không muốn làm lộn xộn các câu trả lời ở đây =)


4

FFmpeg, 78 82 100 byte

Cuối cùng có xung quanh để làm sạch bảng.

ffplay -f lavfi color=s=400x400,geq='255*mod(trunc(X/50)+trunc(Y/50)+1,2):128'

nhập mô tả hình ảnh ở đây


Lớn hơn :

ffmpeg -f lavfi -i "color=tan@0:256x256,format=ya8" -vf "scale=400:-1:alphablend=checkerboard" .jpg

Sẽ thoát với lỗi, nhưng sau khi sản xuất hình ảnh dưới đây.

nhập mô tả hình ảnh ở đây

(bảng đã thu thập một số bụi)


3

CJam, 27 byte

"P1"400__,2f%50e*_W%+4*~]S*

Hãy thử trực tuyến!(bảng nhỏ hơn cho tốc độ, PPM thô)

Các kết quả

ảnh chụp màn hình

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

"P1"                        e# Push that string.
    400__                   e# Push three copies of 400.
         ,                  e# Turn the last one into [0 ... 399].
          2f%               e# Compute the parity of each integer.
             50e*           e# Repeat each parity 50 times.
                            e# This creates the first rank of the board.
                 _W%        e# Create a reversed copy of the resulting array.
                    +       e# Concatenate the original with the reversed array.
                            e# This creates the first two ranks of the board.
                     4*     e# Repeat the resulting array four times.
                            e# This creates all eight ranks of the board.
                       ~    e# Dump all of its items (the pixels) on the stack.
                        ]   e# Wrap the entire stack in an array.
                         S* e# Join that array, separating them by spaces.

3

HTML với utf-8 - 66b

<div style="font:100 50px/48px serif">▚▚▚▚<br>▚▚▚▚<br>▚▚▚▚<br>▚▚▚▚

Là utf trực tiếp ngắn cho thực thể & # 9626;

Ký tự Unicode 'TĂNG TRƯỞNG QUADRANT VÀ QUYỀN HẠN' (U + 259A)

ngớ ngẩn với tôi, đã tìm kiếm một giải pháp char 1 utf-8 - có thể là ... 1b!


2
Có vẻ như phông chữ là sai.
Qwertiy

1
Bạn nên sử dụng thay thế để hình vuông trên cùng bên trái có màu trắng như trên bàn cờ tiêu chuẩn. Ngoài ra, sử dụng <pre>thay vì <div>để bạn có thể sử dụng dòng mới thay vì <br>.
Neil

Số byte của bạn có vẻ sai, nó phải là 98 byte, vì tính 3 byte bằng mã hóa UTF-8. Trong tương lai, bạn có thể sử dụng điều này để kiểm tra Số lượng byte UTF-8 của bạn
Taylor Scott

2

PHP 166 158 155 byte

Hoạt động trong PHP 7.0.2 (bật thẻ ngắn) và Chrome 48.0.2564.97 m

<table><tr><? while(++$i<=8){while(++$j<=8){echo"<td style=background-color:".($i%2==0?($j%2==1?0:""):($j%2==0?0:"")).";padding:9></td>";}echo"<tr>";$j=0;}

Bạn có thể sử dụng tài sản bgcolor=0để tạo nền đen. Điều đó sẽ loại bỏ một tấn byte! Và thay vì $v%2==0, sử dụng $v&1, nên cạo một vài byte.
Ismael Miguel

2

PHP> = 5,4, 175 159 149 116 byte

<table><tr><? for(;@++$i<65;)echo'<td width=50 height=50 ',$i+@$m&1?:'bgcolor=0','>',$i%8<1?'<tr '.($m=@!$m).'>':'';

<table><tr><td width=50 height=50 1><td width=50 height=50 bgcolor=0><td width=50 height=50 1><td width=50 height=50 bgcolor=0><td width=50 height=50 1><td width=50 height=50 bgcolor=0><td width=50 height=50 1><td width=50 height=50 bgcolor=0><tr 1><td width=50 height=50 bgcolor=0><td width=50 height=50 1><td width=50 height=50 bgcolor=0><td width=50 height=50 1><td width=50 height=50 bgcolor=0><td width=50 height=50 1><td width=50 height=50 bgcolor=0><td width=50 height=50 1><tr ><td width=50 height=50 1><td width=50 height=50 bgcolor=0><td width=50 height=50 1><td width=50 height=50 bgcolor=0><td width=50 height=50 1><td width=50 height=50 bgcolor=0><td width=50 height=50 1><td width=50 height=50 bgcolor=0><tr 1><td width=50 height=50 bgcolor=0><td width=50 height=50 1><td width=50 height=50 bgcolor=0><td width=50 height=50 1><td width=50 height=50 bgcolor=0><td width=50 height=50 1><td width=50 height=50 bgcolor=0><td width=50 height=50 1><tr ><td width=50 height=50 1><td width=50 height=50 bgcolor=0><td width=50 height=50 1><td width=50 height=50 bgcolor=0><td width=50 height=50 1><td width=50 height=50 bgcolor=0><td width=50 height=50 1><td width=50 height=50 bgcolor=0><tr 1><td width=50 height=50 bgcolor=0><td width=50 height=50 1><td width=50 height=50 bgcolor=0><td width=50 height=50 1><td width=50 height=50 bgcolor=0><td width=50 height=50 1><td width=50 height=50 bgcolor=0><td width=50 height=50 1><tr ><td width=50 height=50 1><td width=50 height=50 bgcolor=0><td width=50 height=50 1><td width=50 height=50 bgcolor=0><td width=50 height=50 1><td width=50 height=50 bgcolor=0><td width=50 height=50 1><td width=50 height=50 bgcolor=0><tr 1><td width=50 height=50 bgcolor=0><td width=50 height=50 1><td width=50 height=50 bgcolor=0><td width=50 height=50 1><td width=50 height=50 bgcolor=0><td width=50 height=50 1><td width=50 height=50 bgcolor=0><td width=50 height=50 1><tr >

Ghi chú

  • Đã cạo 16 byte - Cảm ơn @insertusernamehere
  • Đã cạo 10 byte - Cảm ơn @ msh210
  • Đã cạo 30 byte - Cảm ơn @Ismael Miguel

1
Có lẽ điều này có thể được chơi gôn nhiều hơn, nhưng ở đây bạn đi ( 152 byte ):<table><tr><?php for(;++$i<65;){echo'<td style="width:50px;height:50px;background:#'.(($i+$m)%2?'000':'').'"></td>';if($i%8<1){echo"</tr><tr>";$m=!$m;}}
insertusernamehere 4/2/2016

Mặc dù tôi đã không xóa các bài tập ban đầu (Công việc, nhưng việc giải quyết cá nhân sẽ không cho phép tôi làm điều đó), Cảm ơn vì điều này
Shaun H

1
Theo ngay cả phiên bản nghiêm ngặt của HTML 4, bạn có thể bỏ qua thẻ kết thúc cho TR.
msh210

1
Thay thế ++$i<65bằng @++$i<65, vì bạn lo lắng về các cảnh báo. Điều này có nghĩa là bạn có thể giảm $m=$i=0xuống chỉ còn $m=0, tiết kiệm cho bạn 2 byte. Thay vì echo 'a'.'b'.'c';, bạn có thể làm echo 'a','b','c';. Điều này có nghĩa là bạn echocó thể echo'<td style="width:50px;height:50px;background:#',($i+$m)%2?'':'000','">';tiết kiệm cho bạn thêm 2 byte. Ngoài ra, các thuộc tính HTML không yêu cầu dấu ngoặc kép. Loại bỏ chúng và sabe 2 byte. Ngoài ra, có một bgcolorthuộc tính ngắn hơn nhiều , làm giảm nhiều byte hơn! Bạn có thể sử dụng một print()trong forđể lưu nhiều byte hơn nữa!
Ismael Miguel

1
Để tiết kiệm hơn nữa, tôi đã thay thế ($i+$m)%2bằng $i+@$m&1, cho phép tôi loại bỏ điều đó $m=0. Trước mắt, tôi đã có thể loại bỏ của bạn ifvà thay thế nó bằng một hoạt động ba lần. Để tiết kiệm hơn nữa , tôi đã xóa của bạn stylevà thêm các thuộc tính widthheight. Để hiểu rõ hơn về khía cạnh hacky, tôi đã hình dung rằng Chrome 48.0.2564.103 m sử dụng màu đen nếu màu nền là 0, sử dụng thuộc tính bgcolor. Điều đó cho phép tôi giảm nhiều hơn nữa! Giảm nhiều hơn là tốt hơn!
Ismael Miguel

1

JavaScript, 150

Điều này chắc chắn có thể được đánh golf. Nó tạo ra HTML.

for(i=0;i<8;)console.log(`<b style=margin-${['lef','righ'][i++%2]}t:50;width:50;height:50;display:inline-block;background:#000></b>`.repeat(4)+'<br>')

1
Huh, tôi chưa bao giờ biết về chuỗi mẫu trong JavaScript. Mát mẻ.
Cheezey

1

iKe , 24 byte

,(;cga;t=\:t:2!-20!!160)

bảng

Cốt lõi của kỹ thuật là tạo ra một danh sách các tọa độ x, divmod chúng và sau đó lấy một sản phẩm chéo bằng nhau để tạo ra một bitmap thích hợp. Sử dụng các ví dụ nhỏ hơn cho mục đích minh họa:

  !8
0 1 2 3 4 5 6 7

  -2!!8
0 0 1 1 2 2 3 3

  2!-2!!8
0 0 1 1 0 0 1 1

  t=\:t:2!-2!!8
(1 1 0 0 1 1 0 0
 1 1 0 0 1 1 0 0
 0 0 1 1 0 0 1 1
 0 0 1 1 0 0 1 1
 1 1 0 0 1 1 0 0
 1 1 0 0 1 1 0 0
 0 0 1 1 0 0 1 1
 0 0 1 1 0 0 1 1)

thử nó ở đây . Về mặt kỹ thuật, iKe hoạt động trên khung hình logic 160x160 pixel, nhưng ở chế độ toàn màn hình (mặc định khi theo liên kết đã lưu), giá trị này được tăng lên gấp 3 lần. Tôi nghĩ rằng điều này vẫn tuân theo tinh thần của câu hỏi, vì chương trình có thể lắp ráp một bitmap lớn hơn nhiều với cùng số lượng ký tự; nó chỉ đi đến một giới hạn hiển thị tùy ý.

Cập nhật:

iKe không được thiết kế chủ yếu cho golf, nhưng mã hóa sinh hoạt vẫn được hưởng lợi từ mặc định ngắn gọn và lành mạnh. Do khắc phục sự cố này, tôi đã quyết định cho phép nó sử dụng bảng màu mặc định nếu không có bảng màu nào được cung cấp. Giải pháp cụ thể này hiện có thể được thể hiện bằng:

,(;;t=\:t:2!-20!!160)

Tiết kiệm (không đủ điều kiện) 3 byte.


1

Ruby với Giày, 97 ký tự

Shoes.app(width:400){64.times{|i|stack(width:50,height:50){background [white,black][(i/8+i)%2]}}}

Đầu ra mẫu:

Bàn cờ được vẽ bởi Ruby with Shoes


Nên bắt đầu và kết thúc với màu trắng. Nếu không thì công việc tốt :)
Bruno

Rất tiếc. Cảm ơn @Bruno. Đã sửa.
manatwork

Tuyệt vời, được nâng cấp :)
Bruno

1

Lua + LÖVE, 138 113 112 106 ký tự

function love.draw()for i=0,31 do
love.graphics.rectangle("fill",i%8*50,(i-i%8)/8*100+i%2*50,50,50)end
end

Đầu ra mẫu:

Bàn cờ được vẽ bởi Lua + LÖVE


Grr! Lua 5.3 có //toán tử chia số nguyên, nhưng rõ ràng vẫn không có LÖVE nào được xây dựng với LuaJIT có tính năng này. ☹
manatwork

1

GIMP, 539 byte

gimp -i -b '(let* ((i (car (gimp-image-new 400 400 1))) (d (car (gimp-layer-new i 400 400 2 "b" 100 0)))) (gimp-image-insert-layer i d 0 -1) (define (t x y) (gimp-selection-translate i x y)) (define (x) (t 100 0)) (define (X) (t -100 0)) (define (y) (t 50 50)) (define (Y) (t -50 50)) (define (f) (gimp-edit-fill d 1)) (define (r) (f) (x) (f) (x) (f) (x) (f) (y)) (define (R) (f) (X) (f) (X) (f) (X) (f) (Y)) (gimp-image-select-rectangle i 2 0 0 50 50) (r) (R) (r) (R) (r) (R) (r) (R) (gimp-file-save 1 i d "c.png" "c.png") (gimp-quit 0))'

Kịch bản Ungolfed-fu:

(let* ((i (car (gimp-image-new 400 400 GRAY)))
       (d (car (gimp-layer-new i 400 400 GRAY-IMAGE "b" 100 NORMAL-MODE))))

  (gimp-image-insert-layer i d 0 -1)
  (define (t x y) (gimp-selection-translate i x y))
  (define (x) (t 100 0))
  (define (X) (t -100 0))
  (define (y) (t 50 50))
  (define (Y) (t -50 50))
  (define (f) (gimp-edit-fill d BACKGROUND-FILL))
  (define (r) (f) (x) (f) (x) (f) (x) (f) (y))
  (define (R) (f) (X) (f) (X) (f) (X) (f) (Y))

  (gimp-image-select-rectangle i CHANNEL-OP-REPLACE 0 0 50 50)
  (r) (R) (r) (R) (r) (R) (r) (R)
  (gimp-file-save RUN-NONINTERACTIVE i d "c.png" "c.png")
  (gimp-quit 0))

Trong chế độ hàng loạt, tạo một hình ảnh trống, tạo một lựa chọn hình chữ nhật 50x50, điền nó và sau đó liên tục di chuyển nó xung quanh hình ảnh, điền vào các ô vuông. Sau đó lưu vào c.pngvà thoát.

Đầu ra:

bàn cờ png


1

J, 33 31 byte

Tôi đã sử dụng một mẹo với nhị phân.

   load'viewmat'
   viewmat 8 8$#:43605

... bởi vì 43605 trong nhị phân là 1010101001010101 (chúng tôi sử dụng #:nguyên thủy để có được nó). Nguyên thủy định $hình mảng các chữ số nhị phân này thành một ma trận được chỉ định với các kích thước 8 8. Và viewmatchỉ là một thư viện hệ thống.
nhập mô tả hình ảnh ở đây
Cửa sổ hoàn toàn thay đổi kích thước.

Cảm ơn @FrownyFrog đã rút ngắn nó thành:

   load'viewmat'
   viewmat#:8$170 85

viewmat 8$#:170 85ngắn hơn 1 byte
FrownyFrog

1
viewmat#:8$170 85
FrownyFrog

1

VBA Excel, 82 byte

Hàm cửa sổ tức thời VBE ẩn danh không có đầu vào và đầu ra một bàn cờ đến phạm vi A1:H8trên đối tượng ActiveSheet

Cells.RowHeight=48:[B1:B8,D1:D8,F1:F8,H1:H8].Interior.Color=0:[A2,A4,A6,A8].Delete

Hàm này hoạt động bằng cách trước tiên tạo 4 cột đen trong phạm vi B1:B8,D1:D8,F1:F8,H1:H8và sau đó bù màu vào các hàng2,4,6 and 8 ở bên trái bởi một ô.

Đầu ra mẫu

CheckerBoard


0

Perl 5 - 80

Tạo tệp .PBM:

print 'P1'.' 400'x2 .$".(((0 x50 .1 x50)x4 .$")x50 .((1 x50 .0 x50)x4 .$")x50)x4

0

PowerShell + GDI, 346 byte

Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing
$f=New-Object Windows.Forms.Form
$f.width=$f.height=450
$g=$f.CreateGraphics()
$f.add_paint({0..7|%{$y=$_;0..7|%{$g.FillRectangle((New-Object Drawing.SolidBrush ("white","black")[($_+$y)%2]),(new-object Drawing.Rectangle ($_*50),($y*50),50,50))}}})
$f.showDialog()

(dòng mới được tính giống như dấu chấm phẩy, vì vậy dòng mới cho khả năng đọc)

Trái ngược với câu trả lời khác của tôi , câu hỏi này sử dụng các cụm .NET để gọi GDI + chức năng . Thật thú vị, nó dài gấp đôi.

Hai dòng đầu tiên tải System.Windows.FormsSystem.Drawinglắp ráp. Cái đầu tiên được sử dụng cho cửa sổ bằng chữ và canvas trên đó, cái thứ hai được sử dụng cho đối tượng vẽ (trong mã này, một cọ vẽ) tạo ra đồ họa trên khung vẽ.

Sau đó chúng tôi tạo mẫu của chúng tôi $fvới các dòng tiếp theo, và thiết lập của nó widthheighttrở thành 450. Lưu ý rằng điều này là không 50*8, vì những con số này tương ứng với cạnh biên giới của cửa sổ biểu mẫu, bao gồm thanh tiêu đề, nút đóng, v.v.

Dòng tiếp theo tạo canvas của chúng tôi $gbằng cách gọi hàm tạo rỗng. Điều này mặc định ở phía trên bên trái của khu vực phi hệ thống của biểu mẫu bằng0,0 và tăng dần về bên phải và hướng xuống, hoàn hảo cho nhu cầu của chúng tôi.

Dòng tiếp theo là cuộc gọi thực tế vẽ đồ họa, với $f.add_paint({...}). Chúng tôi xây dựng các cuộc gọi đồ họa bằng cách lặp đôi cho 0..7và mang một biến trợ giúp $ythông qua mỗi vòng lặp bên ngoài. Mỗi vòng lặp bên trong, chúng tôi nói với khung .FillRectangle(...,...)vẽ của chúng tôi để vẽ hình vuông của chúng tôi. Tham số đầu tiên xây dựng một cái mới SolidBrushvới màu sắc dựa trên vị trí chúng ta đang ở trên bảng. Các tùy chọn khác ở đây có thể là một hatch, một gradient, v.v. Tham số thứ hai là một Rectangleđối tượng mới bắt đầu từ x được chỉ định$_*50$y*50tọa độ đã và mở rộng cho 50mỗi hướng. Hãy nhớ rằng đó 0,0là trên cùng bên trái.

Dòng cuối cùng chỉ hiển thị đầu ra với .showDialog() . PowerShell Forms

Lưu ý rằng vì chúng tôi đang tạo một đối tượng biểu mẫu và PowerShell là tất cả về đường ống dẫn, việc đóng biểu mẫu bật lên sẽ chuyển qua một System.Enum.DialogResultđối tượng Cancel, vì đó là kỹ thuật mà người dùng đã làm. Vì chúng tôi không nắm bắt hoặc làm bất cứ điều gì với kết quả đó, từ Cancelnày sẽ được hiển thị thành STDOUT khi chương trình kết thúc, vì nó được để lại trên đường ống dẫn.


0

LỰA CHỌN. , 8844 8278 byte

(9,9,50)EXP.SELECT.EXP.RIGHT.SELECT.LEFT.EXP.RIGHT.SELECT.LEFT.EXP.RIGHT.SELECT.LEFT.EXP.RIGHT.SELECT.LEFT.EXP.RIGHT.SELECT.LEFT.EXP.RIGHT.SELECT.LEFT.EXP.RIGHT.SELECT.LEFT.LOG.RIGHT.SELECT.LEFT.LOG.RIGHT.SELECT.EXP.LEFT.SELECT.RIGHT.EXP.LEFT.SELECT.RIGHT.LOG.RIGHT.SELECT.EXP.LEFT.SELECT.RIGHT.LOG.RIGHT.SELECT.EXP.LEFT.LEFT.SELECT.RIGHT.RIGHT.LOG.RIGHT.SELECT.LEFT.LEFT.LEFT.EXP.SELECT.EXP.RIGHT.SELECT.LOG.LEFT.SELECT.EXP.RIGHT.SELECT.RIGHT.EXP.SELECT.EXP.SELECT.EXP.LEFT.SELECT.RIGHT.LOG.LEFT.LEFT.SELECT.RIGHT.RIGHT.LOG.LEFT.LEFT.SELECT.RIGHT.RIGHT.RIGHT.EXP.SELECT.EXP.RIGHT.SELECT.LEFT.LOG.RIGHT.SELECT.LEFT.LOG.RIGHT.SELECT.RIGHT.EXP.SELECT.LEFT.LOG.RIGHT.SELECT.EXP.LEFT.SELECT.LOG.RIGHT.SELECT.RIGHT.EXP.SELECT.EXP.LEFT.SELECT.RIGHT.LOG.LEFT.SELECT.LOG.RIGHT.SELECT.EXP.LEFT.SELECT.RIGHT.RIGHT.EXP.SELECT.LEFT.LOG.RIGHT.SELECT.EXP.LEFT.SELECT.LOG.RIGHT.SELECT.LEFT.EXP.LEFT.SELECT.RIGHT.RIGHT.EXP.LEFT.SELECT.RIGHT.RIGHT.EXP.LEFT.LEFT.LEFT.LEFT.SELECT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.EXP.LEFT.LEFT.SELECT.RIGHT.RIGHT.EXP.LEFT.SELECT.RIGHT.LOG.RIGHT.SELECT.LEFT.LOG.RIGHT.SELECT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.EXP.RIGHT.RIGHT.SELECT.LEFT.LEFT.EXP.RIGHT.SELECT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.EXP.LEFT.SELECT.RIGHT.EXP.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.SELECT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.LOG.RIGHT.SELECT.LEFT.RIGHT.RIGHT.EXP.SELECT.LEFT.LOG.RIGHT.SELECT.EXP.LEFT.SELECT.LOG.RIGHT.SELECT.EXP.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.SELECT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.LOG.RIGHT.SELECT.LEFT.EXP.LEFT.SELECT.RIGHT.RIGHT.RIGHT.EXP.SELECT.EXP.LEFT.SELECT.RIGHT.LOG.LEFT.SELECT.LOG.RIGHT.SELECT.EXP.LEFT.SELECT.RIGHT.RIGHT.EXP.SELECT.LEFT.LOG.RIGHT.SELECT.EXP.LEFT.SELECT.LOG.RIGHT.SELECT.LEFT.EXP.LEFT.SELECT.RIGHT.EXP.LEFT.LEFT.SELECT.RIGHT.RIGHT.RIGHT.RIGHT.EXP.LEFT.LEFT.SELECT.RIGHT.RIGHT.EXP.LEFT.SELECT.RIGHT.LOG.RIGHT.SELECT.LEFT.RIGHT.EXP.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.SELECT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.LOG.RIGHT.SELECT.LEFT.LOOP.RIGHT.RIGHT.EXP.SELECT.EXP.LEFT.SELECT.RIGHT.LOG.LEFT.SELECT.LOG.RIGHT.SELECT.EXP.LEFT.SELECT.RIGHT.EXP.LEFT.LEFT.SELECT.RIGHT.RIGHT.LOG.RIGHT.SELECT.LEFT.CONJ.RIGHT.EXP.LEFT.SELECT.RIGHT.EXP.LEFT.LEFT.LEFT.SELECT.RIGHT.RIGHT.RIGHT.LOG.RIGHT.SELECT.LEFT.EXP.LEFT.LEFT.SELECT.RIGHT.RIGHT.LOG.RIGHT.SELECT.EXP.SELECT.EXP.RIGHT.SELECT.LEFT.EXP.RIGHT.SELECT.LEFT.EXP.RIGHT.SELECT.LEFT.EXP.RIGHT.SELECT.LEFT.EXP.RIGHT.SELECT.LEFT.EXP.RIGHT.SELECT.LEFT.EXP.RIGHT.SELECT.LEFT.LOG.RIGHT.SELECT.LEFT.LOG.RIGHT.SELECT.EXP.LEFT.LEFT.SELECT.RIGHT.RIGHT.LOG.RIGHT.SELECT.EXP.LEFT.LEFT.SELECT.RIGHT.RIGHT.LOG.RIGHT.SELECT.EXP.LEFT.SELECT.RIGHT.LOG.RIGHT.SELECT.LEFT.LEFT.EXP.SELECT.RIGHT.LOG.LEFT.SELECT.EXP.RIGHT.SELECT.RIGHT.EXP.SELECT.EXP.RIGHT.SELECT.LEFT.LOG.RIGHT.SELECT.LEFT.LOG.RIGHT.SELECT.EXP.LEFT.SELECT.RIGHT.EXP.LEFT.LEFT.SELECT.RIGHT.RIGHT.LOG.RIGHT.SELECT.RIGHT.EXP.SELECT.LEFT.LOG.RIGHT.SELECT.EXP.LEFT.SELECT.LOG.RIGHT.SELECT.LEFT.EXP.LEFT.SELECT.RIGHT.RIGHT.EXP.LEFT.SELECT.RIGHT.LOG.RIGHT.SELECT.LEFT.EXP.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.SELECT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.LOG.LEFT.SELECT.RIGHT.RIGHT.RIGHT.EXP.SELECT.LEFT.LOG.RIGHT.SELECT.EXP.LEFT.SELECT.LOG.RIGHT.SELECT.EXP.LEFT.SELECT.RIGHT.EXP.LEFT.LEFT.SELECT.RIGHT.RIGHT.LOG.RIGHT.SELECT.LEFT.LOOP.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.EXP.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.SELECT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.LOG.RIGHT.SELECT.RIGHT.LOG.SELECT.LOG.RIGHT.SELECT.LEFT.LEFT.END.RIGHT.RIGHT.LOG.SELECT.LOG.RIGHT.SELECT.LEFT.EXP.LEFT.SELECT.RIGHT.LOOP.RIGHT.EXP.LEFT.LEFT.LEFT.SELECT.RIGHT.RIGHT.RIGHT.LOG.RIGHT.SELECT.EXP.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.SELECT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.LOG.RIGHT.SELECT.EXP.LEFT.SELECT.RIGHT.RIGHT.EXP.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.SELECT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.EXP.LEFT.LEFT.SELECT.RIGHT.RIGHT.EXP.LEFT.SELECT.RIGHT.LOG.RIGHT.SELECT.LEFT.LOG.RIGHT.SELECT.LEFT.RIGHT.RIGHT.RIGHT.END.RIGHT.EXP.LEFT.LEFT.LEFT.LEFT.SELECT.RIGHT.RIGHT.RIGHT.RIGHT.LOG.RIGHT.SELECT.EXP.LEFT.SELECT.RIGHT.EXP.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.SELECT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.LOG.RIGHT.SELECT.EXP.LEFT.SELECT.RIGHT.RIGHT.EXP.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.SELECT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.EXP.LEFT.LEFT.SELECT.RIGHT.RIGHT.EXP.LEFT.SELECT.RIGHT.LOG.RIGHT.SELECT.LEFT.LOG.RIGHT.SELECT.EXP.LEFT.SELECT.RIGHT.EXP.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.SELECT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.LOG.RIGHT.SELECT.EXP.LEFT.SELECT.RIGHT.RIGHT.EXP.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.SELECT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.EXP.LEFT.LEFT.SELECT.RIGHT.RIGHT.EXP.LEFT.SELECT.RIGHT.LOG.RIGHT.SELECT.LEFT.LOG.RIGHT.SELECT.RIGHT.EXP.SELECT.LEFT.LOG.RIGHT.SELECT.EXP.LEFT.SELECT.LOG.RIGHT.SELECT.LEFT.EXP.LEFT.SELECT.RIGHT.LOOP.RIGHT.EXP.SELECT.EXP.RIGHT.SELECT.LEFT.EXP.RIGHT.SELECT.LEFT.EXP.RIGHT.SELECT.LEFT.LOG.RIGHT.SELECT.LEFT.LOG.RIGHT.SELECT.RIGHT.EXP.SELECT.EXP.LEFT.SELECT.RIGHT.LOG.LEFT.SELECT.LOG.RIGHT.SELECT.EXP.LEFT.SELECT.RIGHT.RIGHT.EXP.SELECT.LEFT.LOG.RIGHT.SELECT.EXP.LEFT.SELECT.LOG.RIGHT.SELECT.LEFT.EXP.LEFT.SELECT.RIGHT.RIGHT.EXP.LEFT.SELECT.RIGHT.EXP.LEFT.LEFT.LEFT.SELECT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.EXP.SELECT.LEFT.LOG.RIGHT.SELECT.EXP.LEFT.SELECT.LOG.RIGHT.SELECT.EXP.SELECT.EXP.RIGHT.SELECT.LEFT.EXP.RIGHT.SELECT.LEFT.EXP.RIGHT.SELECT.LEFT.EXP.LEFT.LEFT.SELECT.RIGHT.RIGHT.LOG.RIGHT.SELECT.LEFT.EXP.LEFT.SELECT.RIGHT.LOG.RIGHT.SELECT.EXP.LEFT.LEFT.LEFT.LEFT.SELECT.RIGHT.RIGHT.RIGHT.RIGHT.EXP.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.SELECT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.LOG.RIGHT.SELECT.EXP.LEFT.SELECT.RIGHT.RIGHT.EXP.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.SELECT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.EXP.LEFT.LEFT.SELECT.RIGHT.RIGHT.EXP.LEFT.SELECT.RIGHT.LOG.RIGHT.SELECT.LEFT.LOG.RIGHT.SELECT.EXP.LEFT.SELECT.RIGHT.RIGHT.EXP.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.SELECT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.EXP.LEFT.LEFT.SELECT.RIGHT.RIGHT.EXP.LEFT.SELECT.RIGHT.LOG.RIGHT.SELECT.LEFT.LOG.RIGHT.SELECT.LEFT.PRINT.RIGHT.RIGHT.LOG.SELECT.LOG.RIGHT.SELECT.LEFT.LEFT.END.RIGHT.RIGHT.LOG.SELECT.LOG.RIGHT.SELECT.LEFT.EXP.LEFT.SELECT.RIGHT.LOOP.RIGHT.EXP.LEFT.LEFT.LEFT.SELECT.RIGHT.RIGHT.RIGHT.LOG.RIGHT.SELECT.LEFT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.END.RIGHT.RIGHT.EXP.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.SELECT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.LOG.RIGHT.SELECT.EXP.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.SELECT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.LOG.RIGHT.SELECT.EXP.LEFT.LEFT.SELECT.RIGHT.RIGHT.EXP.LEFT.SELECT.RIGHT.LOG.RIGHT.SELECT.LEFT.END.

Chắc chắn nó dài, nhưng hai phiên bản đầu tiên tôi tạo cho nhiệm vụ này dài gấp đôi.

Đầu ra:

screenshot

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

Đây là chương trình được sử dụng để tạo ra nó:

init(9,9,50)
makenum(8)
square()
dec()
loop("main",computei=True)
go(1)
makenum(8)
go(1)
copyfrom(-2)
intdiv(-1)
add(-5)           # n%8 blah blah blah blah n//8 k^(n//8) k^(n%8) (n//8+n%8)
go(1)
makeneg1()
exptarget(-1)
go(1)
ifnonpositive("drawtest")
go(1)
makenum(-4,-4)    # n%8 blah blah blah blah n//8 k^(n//8) k^(n%8) n//8+n%8 (-1)^(n//8+n%8) 4 1/2 I k^(-4I) -1 (-4-4I)
go(1)
multiply(-4,-11)   # n%8 blah blah blah blah n//8 k^(n//8) k^(n%8) n//8+n%8 (-1)^(n//8+n%8) 4 1/2 I k^(-4I) -1 -4-4I (nI//8)
add(-16)          # n%8 blah blah blah blah n//8 k^(n//8) k^(n%8) n//8+n%8 (-1)^(n//8+n%8) 4 1/2 I k^(-4I) -1 -4-4I nI//8 k^(nI//8) k^(n%8) (n%8+nI//8)
add(-4)           # n%8 blah blah blah blah n//8 (-1)^(n%8) 4 1/2 I k^(-4I) -1 -4-4I nI//8 k^(nI//8) k^(n%8) n%8+nI//8 k^(n%8+nI//8) k^(-4-4I) ((n%8-4)+I(n//8-4))
output()
endif("drawtest")
go(1)
endloop("main")
writetofile("chessboard4")

Nói cách khác, vòng lặp n từ 0 đến 63, vẽ hình vuông tại (n% 8-4) + (n // 8-4) i if (-1) ^ (n // 8 + n% 8) không tích cực.


Đó không phải là golf thực sự là nó: p?
Bruno

Tôi không thể chắc chắn đó là chương trình ngắn nhất thực hiện nhiệm vụ, không. Tuy nhiên, tôi khá chắc chắn rằng sự khác biệt giữa giải pháp này và giải pháp tốt nhất có thể có trong ngôn ngữ này là không đáng kể so với tổng thời lượng của chương trình. Tôi có một ý tưởng nữa trong đầu có thể ngắn hơn hoặc không. Thỉnh thoảng tôi sẽ dùng thử.
quintopia 5/2/2016

0

JavaScript (ES6), 147

for(i=0;++i<72;)document.write(`<div style="${i%9?'':(++i,'clear:both;')}float:left;width:50px;height:50px;background:#${i&1?'fff':'000'}"></div>`)


0

Python, 57 byte

c=50*"1"+50*"0"
print"P1 400 400 "+4*(200*c+200*c[::-1])

clà một dòng gồm 50 pixel trắng và 50 pixel đen, 200*clà một hàng có màu trắng ở phía trước, 200*c[::-1]ngược lại.

Đầu ra dưới dạng PPM, cách sử dụng:

python golf_chess.py > chess.ppm
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.