Bangun papan catur


23

Melihat ini dalam tantangan PHP. Tujuannya adalah membuat papan catur dengan 64 kotak (8 * 8) dengan jumlah kode minimum. Cukup sederhana, saya membuat saya dalam PHP dalam 356 byte (tidak mengesankan, saya tahu) dan saya ingin melihat beberapa pendekatan lain. Ini bisa dibuat dalam bahasa pilihan Anda, selama Anda menyimpannya vanili, jadi tidak perlu impor. Hitungan byte terkecil menang.

Outputnya akan terlihat seperti ini:

screencap

Dan kode saya:

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

Atau dapat dibaca:

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

Edit:

Maaf saya tidak terlalu spesifik pada awalnya:

  • Kotak harus memiliki 50px * 50px kecuali untuk gambar vektorial.
  • Format atau ukuran keluaran tidak relevan juga tidak perlu berupa gambar.
  • Untuk tujuan evaluasi, output harus terlihat seperti dalam file gambar atau tangkapan layar
  • Tidak ada perpustakaan yang ditulis setelah tantangan diposting

3
Selamat datang di PPCG, sebagaimana adanya, tantangan ini tidak benar-benar ada hubungannya dengan PHP, jadi saya mengubah tag Anda. Juga, saya yakin implementasi referensi Anda adalah jawaban, bukan pertanyaan Anda. Seperti yang diungkapkan oleh Stewie, Anda harus menentukan ukuran yang diperlukan dari output gambar, serta hal-hal seperti warna spesifik dan apakah gambar lossy diperbolehkan.
FryAmTheEggman

2
Jadi beberapa ASCII-magic tidak diizinkan? :(
Denker

4
Bagaimana dasar adalah dasar? Apa definisi dari "impor"?
Gagang Pintu

6
Tidak harus berupa gambar tetapi setiap kotak setidaknya harus 50px? Bagi saya hal itu sepertinya bertentangan.
Peter Taylor

4
Bahasa pemrograman di sini sangat beragam, termasuk beberapa yang dibuat khusus untuk bermain golf dan memiliki banyak fungsi bawaan. Oleh karena itu, saya merekomendasikan bahwa pembatasan fungsi non-perpustakaan dihapus, dan bahwa pertanyaan ini sebagai gantinya mengikuti default (semua impor dihitung dalam jumlah byte; tidak ada perpustakaan yang ditulis setelah tantangan diposting).
lirtosiast

Jawaban:


13

Oktaf, 20 18 byte

Terima kasih kepada @Bruno untuk mencukur 2 byte.

imshow(invhilb(8))

Hasil:

masukkan deskripsi gambar di sini

Jawaban ini menggunakan teknik yang ditemukan di sini . Ini juga bergantung pada penskalaan otomatis gambar dalam Oktaf tergantung pada ukuran jendela gambar.


1
@AlexA. Saya juga tidak sepenuhnya yakin bahwa kotak harus tepat 50x50 piksel, karena aturan berikutnya mengatakan "Format atau ukuran keluaran tidak relevan ...". Orang-orang telah meminta klarifikasi dalam komentar, tetapi pertanyaannya belum diperbarui.
Gelas kimia

Mengedit pertanyaan. Menguji kode Anda dan berfungsi, jadi saat ini Anda memiliki jumlah byte terendah :)
Bruno

Juga menghapus> 0 dan masih berfungsi sehingga Anda dapat mencukur 2 byte di sana
Bruno

@ Bruno Apa? Itu liar. Jadi tampaknya menjepit nilai-nilai matriks (yang semuanya << 0 atau >> 1) menjadi 0 dan 1. Terima kasih atas tipnya, saya akan memperbarui! : D
gelas kimia

Selamat atas 2k!
NoOneIsHere

26

vim, 47 46 44 43

dicoret 44 masih teratur 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

Output dalam format NetPPM (PBM):

keluaran


2
Saya suka bahwa Anda dapat menyelesaikan tantangan keluaran grafis dengan editor teks. Apakah ada contoh PBM lain dari vim golf?
ankh-morpork

1
@ dohaqatar7 Saya tidak tahu, tapi saya telah melakukan TikZ dengan vim sebelumnya, jadi grafis dalam vim adalah hal yang pasti.
Gagang Pintu

2
Wow, saya tidak pernah berpikir untuk mencoba <C-p>dalam vim tanpa mulai mengetik kata ... itu sangat berguna!
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}

Penjelasan: Gradien linier 100x100px linier dibuat dengan empat berhenti sehingga sebagian besar gradien transparan kecuali untuk dua sudut segitiga 50px. (Lihat cuplikan di bawah). Menambahkan gradien kedua dengan mengisi offset 50x50px di bagian yang hilang dari kotak. Meningkatkan ukuran tubuh kemudian memungkinkan pola yang dihasilkan untuk mengulangi untuk mengisi seluruh papan catur.


Solusi rapi. Ini harus bekerja juga jika Anda menjatuhkan yang terakhir } .
masukkan nama pengguna di sini

Bisakah Anda jelaskan apa yang terjadi di sini?
flawr

@ flawr Saya telah menambahkan cuplikan kedua yang menunjukkan efek parsial, saya harap itu membantu.
Neil

Ini sempurna.
Bukan karena Charles

Apakah Anda benar-benar membutuhkannya html{background:#fff}? Secara default 99% browser mengatur latar belakang menjadi putih, afaik
Downgoat

15

Mathematica, 34 byte

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

Outputnya adalah gambar vektor dan dikelilingi dalam bingkai.

Alih-alih memposisikan 32 persegi panjang dengan benar, kita bisa membuat matriks biner dan membuatkannya ArrayPlotuntuk kita:

masukkan deskripsi gambar di sini


Bagus! Terima kasih telah mempostingnya.
A Simmons

Terlihat bagus. Bisakah Anda jelaskan saya di mana Anda mendefinisikan setiap kotak sebagai 50px? Juga, apakah ada emulator online tempat saya bisa mengujinya?
Bruno

@ Bruno Outputnya berupa grafik vektor, sehingga tidak ada yang namanya ukuran piksel (gambar tidak memiliki ukuran intrinsik - dapat ditingkatkan ke dan ditampilkan pada ukuran berapa pun). Itulah mengapa saya bertanya.
Martin Ender

4
Tunggu, GenerateChessBoardWithColorsAsParameters[ColorBlack, ColorWhite, 8, 8, 50, 50]tidak berhasil? ;)
Conor O'Brien

3
@ CᴏɴᴏʀO'Bʀɪᴇɴ Ya, tapi itu 73 byte.
Martin Ender

10

Mathematica, 81 72 55 byte

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

Input output

Gambar adalah evaluasi versi sebelumnya, tetapi masih terlihat sama.


8

Oktaf, 48 byte

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

Ini berfungsi persis sama dengan jawaban Matlab saya , tetapi tidak ada spiraldalam Oktaf. Sebagai gantinya, kami menggunakan fitur yang tidak dimiliki Matlab: Kami dapat menggunakan penugasan tsudah sebagai ekspresi, dan kemudian menggunakan tlagi dalam ekspresi yang sama.

(Ini adalah versi yang diskala ulang, saya tidak ingin mengacaukan jawaban di sini =)


1
Sudut kiri atas harus putih, bukan hitam.
Gagang Pintu

2
Keluaran harus berupa kotak-kotak, orientasinya tidak ditentukan.
flawr

2
Maaf, flawr, hasilnya harus berupa papan catur. Papan catur selalu "Ratu pada warnanya, putih di kanan" (artinya tangan kanan setiap pemain memiliki kotak sudut putih).
corsiKa

5
Lalu bayangkan satu pemain duduk di sebelah kanan, satu di sebelah kiri. Sekali lagi: ini tidak ditentukan oleh tantangan, itu hanya interpretasi Anda.
flawr

8

Bash Murni (tidak ada utilitas eksternal), 133

Saya melihat komentar @ Doorknob sebagai sedikit tantangan. Agak panjang, tapi begini:

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

Output dalam format .txt Imagemagick . Perhatikan ini murni Bash. Baik Imagemagick maupun utilitas eksternal lainnya tidak dihasilkan untuk menghasilkan output ini. Namun, output mungkin diarahkan ke file .txt dan dilihat dengan displayutilitas ImageMagick :

masukkan deskripsi gambar di sini

Format gambar ini bagus karena bukan hanya teks murni, tetapi sedikit lebih dari daftar semua piksel (x, y dan nilai warna), satu per baris. Ini adalah masalah yang cukup sederhana untuk mendapatkan semua nilai piksel secara hitung dalam satu lingkaran besar.


Jawaban sebelumnya, 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]}"
}

Output dalam format file gambar teks X_PixMap , yang juga dapat dilihat dengan displayutilitas ImageMagick .

Catatan Saya telah mengambil sebanyak mungkin dari format XPM yang saya bisa sehingga displaymasih akan menerimanya. Saya bisa mengambil semua boilerplate dengan pengecualian "tanda kutip ganda di setiap baris. Tidak tahu apa lagi - jika ada - utilitas akan menerima ini.


6

PowerShell + browser pilihan Anda, 149 143 byte

Ketidakmampuan untuk menggunakan impor benar-benar sulit, karena semua panggilan GDI (yaitu, hal-hal yang digunakan PowerShell untuk menggambar) terkubur di belakang impor di .NET ...

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

Edit - disimpan enam byte berkat @NotThatCharles

Ini menggunakan dua for-loop dari 1..8untuk menghasilkan string HTML big-ol ', mirip dengan contoh PHP yang disediakan, dan output ke pipeline. Setiap kali kita menghitung apakah akan menambahkan ;background:#000latar belakang hitam dengan mengambil posisi kita saat ini di papan modulo 2.

Untuk menggunakannya, arahkan output ke file pilihan Anda (misalnya, dengan sesuatu seperti > chessboard.htm) dan kemudian luncurkan di browser pilihan Anda. Untuk tangkapan layar di bawah, saya menggunakan "c.htm" dan Firefox.

firefox


Yang ini tidak disangka-sangka tapi entah bagaimana saya suka :)
Bruno

whitedan blackbisa #fffdan #000... tapi mengapa repot menentukan putih?
Bukan karena Charles

coba (";background:#000","")[($a+$_)%2]saja.
Bukan Charles

@NotthatCharles Durr, memiliki flip putih dan hitam saya gagal, jadi itu hanya mengeluarkan kotak putih. Dikoreksi untuk tambahan 4 byte yang disimpan.
AdmBorkBork

5

PHP + CSS + HTML, 136 byte

Mengambil pendekatan tabel ke tingkat yang lebih tinggi:

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

Ini menghasilkan kode berikut:

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

Ini sangat bergantung pada kebaikan browser dan CSS.


Solusi yang bagus Apakah saya harus menyertakan php setelah <? dan sertakan $ i = 0 sebagai parameter pertama untuk membuatnya berfungsi dengan benar, memberikan hasil akhir sebesar 144 byte.
Bruno

1
@ Bruno Jika Anda merujuk pada peringatan yang diberikannya, peringatan akan diabaikan di sini. Namun, ada satu triliun cara menonaktifkannya. Salah satunya adalah mengganti ++$i<9dengan @++$i<9. Juga, agar berfungsi tanpa <?php, seseorang harus memiliki arahan short_open_tags=On, yang merupakan default pada beberapa lingkungan. Baca lebih lanjut di stackoverflow.com/a/2185331/2729937
Ismael Miguel

5

Jelly, 26 byte

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

Karena Jelly tidak memiliki dukungan untuk gambar bawaan, kami mencetak gambar PPM.

Cobalah online! (papan lebih kecil untuk kecepatan, PPM mentah)

Hasil

tangkapan layar

Bagaimana itu bekerja

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.

Versi tidak bersaing (24 byte)

Juru bahasa Jelly terbaru yang ada sebelum posting ini tidak melakukan vektorisasi xdengan benar. Dengan versi terbaru, 2 byte tambahan dapat disimpan.

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

Satu-satunya perbedaan adalah bahwa x50menghasilkan daftar datar (dengan setiap elemen asli diulang 50 kali), jadi Ftidak perlu lagi.


1
Sepertinya Anda sedang menulis jawaban java dan tertidur sedikit saat mengetik ;...;)
Conor O'Brien

1
@ CᴏɴᴏʀO'Bʀɪᴇɴ Java? Anda harus menggunakan Java 10.0, Golfing Edition, karena itu tidak terlihat seperti Java yang pernah saya lihat ....
BalinKingOfMoria

5

MATL , 11 (27) byte

8:t!+Q2\TYG

Ini menghasilkan gambar berikut. Itu tidak memiliki ukuran intrinsik; itu secara otomatis diskalakan tergantung pada ukuran jendela gambar. Ini sepertinya diizinkan oleh tantangan.

masukkan deskripsi gambar di sini

Penjelasan

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

Jika penskalaan otomatis tidak diizinkan:

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

menghasilkan gambar berikut dengan kotak 50x50-pixel

Penjelasan

masukkan deskripsi gambar di sini

'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

Pyth, 28 26 byte

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

Penjelasan

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

Setara dengan python

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

Coba di sini (hanya nilai warnanya)

Keluaran:

Keluaran


Pekerjaan yang bagus pada jumlah byte tetapi saya membutuhkan output yang valid dengan kotak terlihat :)
Bruno

@Bruno Output ditambahkan! Saya menginstal PIL hanya untuk Anda: O (Saya belum benar-benar mengujinya sebelumnya)
Biru

@muddyfish maaf atas masalah dan terima kasih. Papan harus dimulai dengan dan diakhiri dengan kotak putih tho :)
Bruno

4

Matlab, 47 (24) byte

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

Ini berfungsi persis sama dengan jawaban Oktaf saya , tetapi saya bisa menggunakan spiralyang disimpan satu byte. spiral(n)membuat nxnmatriks dan mengisinya dengan n^2bilangan bulat pertama .

Jika vectorgraphics diperbolehkan, kita bisa melakukannya dalam 24 byte:

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

(Ini adalah versi yang diskala ulang, saya tidak ingin mengacaukan jawaban di sini =)


4

FFmpeg, 78 82 100 byte

Akhirnya sempat membersihkan papan.

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

masukkan deskripsi gambar di sini


Lebih tua :

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

Akan keluar dengan kesalahan, tetapi setelah menghasilkan gambar di bawah ini.

masukkan deskripsi gambar di sini

(Dewan mengumpulkan debu)


3

CJam, 27 byte

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

Cobalah online! (papan lebih kecil untuk kecepatan, PPM mentah)

Hasil

tangkapan layar

Bagaimana itu bekerja

"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 dengan utf-8 - 66b

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

▚ adalah kata pendek langsung untuk entitas & # 9626;

Karakter Unicode 'KIRI UPPER KUADRAN DAN KANAN RENDAH' (U + 259A)

konyol saya, sedang mencari solusi 1 utf-8 char - pasti ... 1b!


2
Sepertinya ukuran huruf salah.
Qwertiy

1
Anda sebaiknya menggunakan sehingga persegi kiri atas berwarna putih seperti pada papan catur standar. Selain itu, gunakan <pre>alih-alih <div>agar Anda dapat menggunakan baris baru <br>.
Neil

Bytecount Anda tampaknya salah, seharusnya 98 byte, karena dihitung selama 3 byte menggunakan pengkodean UTF-8. Di masa mendatang, Anda dapat menggunakan ini untuk memeriksa UTF-8 Byte Count Anda
Taylor Scott

2

PHP, 166 158 155 byte

Bekerja di PHP 7.0.2 (diaktifkan tag pendek) dan 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;}

Anda dapat menggunakan properti bgcolor=0untuk menghasilkan latar belakang hitam. Itu harus mengurangi satu ton byte! Dan alih-alih $v%2==0, gunakan $v&1, yang seharusnya mencukur beberapa byte.
Ismael Miguel

2

PHP> = 5.4, 175 159 149 116 Bytes

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

Catatan

  • Dicukur 16 byte - Terima kasih @insertusernamehere
  • Dicukur 10 byte - Terima kasih @ msh210
  • Dicukur 30 byte - Terima kasih @Ismael Miguel

1
Mungkin ini bisa <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;}}
bermain golf

Meskipun saya tidak menghapus tugas awal (Pekerjaan, kekhasan pribadi tidak akan membiarkan saya melakukannya), Terima kasih untuk ini
Shaun H

1
Bahkan menurut versi HTML 4 yang ketat , Anda dapat melewati tag akhir untuk TR.
msh210

1
Ganti ++$i<65dengan @++$i<65, karena Anda khawatir tentang peringatan itu. Ini berarti Anda dapat mengurangi $m=$i=0menjadi hanya $m=0, menghemat 2 byte. Alih-alih echo 'a'.'b'.'c';, Anda bisa melakukannya echo 'a','b','c';. Ini berarti Anda echodapat echo'<td style="width:50px;height:50px;background:#',($i+$m)%2?'':'000','">';menghemat lebih banyak 2 byte. Atribut HTML juga tidak memerlukan penawaran. Hapus dan sabe 2 byte. Juga, ada bgcoloratribut yang jauh lebih pendek , yang mengurangi lebih banyak byte! Anda dapat menggunakan print()dalam foruntuk menyimpan lebih banyak byte!
Ismael Miguel

1
Untuk menghemat lebih banyak lagi, saya telah menggantinya ($i+$m)%2dengan $i+@$m&1, yang memungkinkan saya untuk menghapusnya $m=0. Di depan, saya dapat menghapus Anda if, dan menggantinya dengan operasi tren. Untuk menyimpan lebih banyak lagi , saya telah menghapus Anda styledan menambahkan properti widthdan height. Untuk mendapatkan lebih banyak ke sisi hacky, saya telah menemukan bahwa Chrome 48.0.2564.103 m menggunakan hitam jika warna latar belakangnya 0, menggunakan properti bgcolor. Itu memungkinkan saya untuk mengurangi lebih banyak! Lebih banyak pengurangan lebih baik!
Ismael Miguel

1

JavaScript, 150

Ini pasti bisa golf. Itu menciptakan 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, saya tidak pernah tahu tentang string template dalam JavaScript. Keren.
Cheezey

1

iKe , 24 byte

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

naik

Inti dari teknik ini adalah untuk menghasilkan daftar koordinat x, divmod mereka dan kemudian mengambil produk silang kesetaraan untuk menghasilkan bitmap yang sesuai. Menggunakan contoh yang lebih kecil untuk tujuan ilustrasi:

  !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)

coba di sini . Secara teknis iKe bekerja pada kanvas logis 160x160 piksel, tetapi dalam mode layar penuh (default saat mengikuti tautan yang disimpan) ini ditingkatkan dengan 3x. Saya pikir ini masih mengikuti semangat pertanyaan, karena program ini dapat mengumpulkan bitmap yang jauh lebih besar dengan jumlah karakter yang sama; itu hanya sampai pada batasan tampilan sewenang-wenang.

Memperbarui:

iKe terutama tidak dirancang untuk golf, tetapi livecoding masih mendapat manfaat dari singkatnya dan standar waras. Sebagai hasil dari bermain-main dengan masalah ini, saya telah memutuskan untuk mengizinkannya menggunakan palet default jika tidak ada yang disediakan. Solusi khusus ini sekarang dapat diekspresikan dengan:

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

Menyimpan (tidak memenuhi syarat) 3 byte.


1

Ruby with Shoes, 97 karakter

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

Output sampel:

Papan catur digambar oleh Ruby dengan Sepatu


Harus dimulai dan diakhiri dengan warna putih. Pekerjaan sebaliknya bagus :)
Bruno

Ups. Terima kasih @Bruno. Tetap.
manatwork

Hebat, terangkat :)
Bruno

1

Lua + LÖVE, 138 113 112 106 karakter

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

Output sampel:

Papan catur ditarik oleh Lua + LÖVE


Grr! Lua 5.3 memiliki //operator divisi integer, tetapi tampaknya masih belum ada LÖVE yang dibuat dengan LuaJIT yang menampilkannya. ☹
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))'

Script Skema Tidak Dikunci-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))

Dalam mode batch, buat gambar kosong, buat 50x50 pilihan persegi panjang, isi, dan lalu gerakkan berulang kali di sekitar gambar, isi kotak. Lalu simpan kec.png dan keluar.

Keluaran:

png papan catur


1

J, 33 31 byte

Saya menggunakan trik dengan biner.

   load'viewmat'
   viewmat 8 8$#:43605

... karena 43605 dalam biner adalah 1010101001010101 (kami menggunakan #:primitif untuk mendapatkannya). $Bentuk primitif array angka biner ini ke dalam matriks yang ditentukan dengan dimensi 8 8. Dan viewmathanya perpustakaan sistem. Jendela sepenuhnya dapat diubah ukurannya.
masukkan deskripsi gambar di sini

Terima kasih kepada @FrownyFrog karena telah mempersingkatnya menjadi:

   load'viewmat'
   viewmat#:8$170 85

viewmat 8$#:170 85lebih pendek 1 byte
FrownyFrog

1
viewmat#:8$170 85
FrownyFrog

1

Excel VBA, 82 Bytes

Fungsi jendela langsung VBE anonim yang tidak mengambil input dan menampilkan kotak-kotak ke kisaran A1:H8objek ActiveSheet

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

Fungsi ini berfungsi dengan terlebih dahulu membuat 4 kolom hitam dalam rentang B1:B8,D1:D8,F1:F8,H1:H8dan kemudian mengimbangi pewarnaan dalam baris 2,4,6 and 8ke kiri oleh satu sel.

Output Sampel

Papan main dam


0

Perl 5 - 80

Menghasilkan file .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()

(baris baru dihitung sama dengan titik koma, jadi baris baru untuk keterbacaan)

Berbeda dengan jawaban saya yang lain , yang ini menggunakan rakitan .NET untuk memanggil panggilan fungsi GDI + . Menariknya, panjangnya sekitar dua kali lipat.

Dua baris pertama memuat System.Windows.FormsdanSystem.Drawing berkumpul. Yang pertama digunakan untuk jendela literal dan kanvas di atasnya, yang kedua digunakan untuk objek menggambar (dalam kode ini, kuas) yang membuat grafik pada kanvas.

Kami kemudian membuat formulir kami $fdengan baris berikutnya, dan mengaturnya widthdan heightmenjadi 450. Perhatikan bahwa ini bukan 50*8, karena angka-angka ini sesuai dengan tepi batas-ke-batas pada jendela formulir, termasuk bilah judul, tombol tutup, dll.

Baris berikutnya membuat kanvas kita $gdengan memanggil konstruktor kosong. Ini default ke kiri atas area non-sistem dari bentuk yang sama dengan 0,0dan meningkat ke kanan dan ke bawah, sempurna untuk kebutuhan kita.

Baris berikutnya adalah panggilan aktual yang menggambar grafik, dengan $f.add_paint({...}). Kami membuat panggilan grafik dengan double-for looping dari 0..7dan membawa variabel pembantu $ymelalui setiap loop luar. Setiap loop batin, kami memberitahu kanvas kami .FillRectangle(...,...)untuk menggambar kotak kami. Parameter pertama membangun yang baru SolidBrushdengan warna berdasarkan di mana kita berada di papan tulis. Pilihan lain di sini bisa berupa palka, gradien, dll. Parameter kedua adalah Rectangleobjek baru mulai dari x $_*50dan $y*50koordinat yang ditentukan dan diperluas untuk 50di setiap arah. Ingat itu 0,0adalah kiri atas.

Baris terakhir hanya menampilkan output dengan .showDialog(). Formulir PowerShell

Perhatikan bahwa karena kita membuat objek formulir , dan PowerShell adalah semua tentang pipeline, menutup formulir pop-up akan meneruskan System.Enum.DialogResultobjek Cancel, karena itulah yang secara teknis dilakukan pengguna. Karena kita tidak menangkap atau melakukan apa pun dengan hasil itu, kata Canceltersebut akan ditampilkan ke STDOUT ketika program berakhir, seperti dibiarkan di dalam pipa.


0

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

Tentu itu panjang, tetapi dua versi pertama yang saya hasilkan untuk tugas ini dua kali lebih lama.

Keluaran:

tangkapan layar

Bagaimana itu bekerja:

Inilah program yang digunakan untuk menghasilkannya:

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

Dengan kata lain, loop n dari 0 hingga 63, menggambar kotak di (n% 8-4) + (n // 8-4) i jika (-1) ^ (n // 8 + n% 8) tidak positif.


Itu bukan golf, kan? P?
Bruno

Saya tidak bisa memastikan itu adalah program terpendek yang melakukan tugas, tidak. Namun, saya cukup yakin bahwa perbedaan antara ini dan solusi terbaik dalam bahasa ini tidak signifikan dibandingkan dengan total panjang program. Saya punya satu ide lagi yang mungkin lebih pendek atau tidak. Saya akan mencobanya dalam waktu dekat.
kuintopia

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])

cadalah garis 50 putih dan 50 piksel hitam, 200*cadalah baris dengan putih di depan, 200*c[::-1]kebalikannya.

Output sebagai PPM, penggunaan:

python golf_chess.py > chess.ppm
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.