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


23

เห็นสิ่งนี้ในความท้าทาย PHP มีวัตถุประสงค์เพื่อสร้างกระดานหมากรุกที่มี 64 ช่องสี่เหลี่ยม (8 * 8) ด้วยรหัสขั้นต่ำ ง่ายพอฉันสร้างของฉันใน PHP ที่ 356 ไบท์ (ไม่น่าประทับใจฉันรู้) และฉันอยากจะเห็นเรื่องอื่น ๆ สิ่งนี้สามารถทำในภาษาที่คุณเลือกตราบใดที่คุณเก็บมันวานิลลาดังนั้นจึงไม่มีการนำเข้า จำนวนไบต์ที่เล็กที่สุดชนะ

ผลลัพธ์ควรมีลักษณะดังนี้:

ภาพบนหน้าจอ

และรหัสของฉัน:

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

หรืออ่านได้:

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

แก้ไข:

ขออภัยฉันไม่เจาะจงมากในตอนแรก:

  • ช่องสี่เหลี่ยมควรมี 50px * 50px ยกเว้นภาพเวกเตอร์
  • รูปแบบหรือขนาดของเอาต์พุตไม่เกี่ยวข้องและไม่จำเป็นต้องเป็นรูปภาพ
  • เพื่อวัตถุประสงค์ในการประเมินผลจะต้องมองเห็นผลลัพธ์เช่นในไฟล์รูปภาพหรือภาพหน้าจอ
  • ไม่มีห้องสมุดใดถูกเขียนขึ้นหลังจากมีการโพสต์ความท้าทาย

3
ยินดีต้อนรับสู่ PPCG เนื่องจากความท้าทายนี้ไม่มีอะไรเกี่ยวข้องกับ PHP ดังนั้นฉันจึงเปลี่ยนแท็กของคุณ นอกจากนี้เราเชื่อว่าการดำเนินการอ้างอิงของคุณเป็นคำตอบไม่ใช่ในคำถามของคุณ เมื่อ Stewie นำขึ้นมาคุณควรระบุขนาดที่ต้องการของเอาท์พุทภาพรวมถึงสิ่งต่าง ๆ เช่นสีเฉพาะและอนุญาตให้มีภาพที่สูญหายได้หรือไม่
FryAmTheEggman

2
ดังนั้น ASCII-magic บางอย่างจึงไม่ได้รับอนุญาต? :(
Denker

4
พื้นฐานเป็นอย่างไร คำจำกัดความของ "การนำเข้า" คืออะไร
Doorknob

6
ไม่จำเป็นต้องเป็นรูปภาพ แต่แต่ละตารางต้องมีอย่างน้อย 50px หรือไม่ นั่นดูเหมือนจะขัดแย้งกับตัวฉัน
Peter Taylor

4
ภาษาการเขียนโปรแกรมที่นี่มีความหลากหลายมากรวมถึงบางส่วนที่ทำขึ้นเป็นพิเศษสำหรับการเล่นกอล์ฟ ดังนั้นฉันขอแนะนำให้ลบข้อ จำกัด ของฟังก์ชันที่ไม่ใช่ห้องสมุดออกและคำถามนี้ทำตามค่าเริ่มต้น (การนำเข้าทั้งหมดจะนับเป็นจำนวนไบต์ไม่มีไลบรารีที่เขียนหลังจากการโพสต์ความท้าทาย)
lirtosiast

คำตอบ:


13

อ็อกเทฟ20 18 ไบต์

ขอบคุณ@Bruno ที่โกนหนวดได้ 2 ไบต์

imshow(invhilb(8))

ผล:

enter image description here

คำตอบนี้ใช้เทคนิคที่พบที่นี่ นอกจากนี้ยังขึ้นอยู่กับการปรับขนาดภาพอัตโนมัติในระดับแปดเสียงขึ้นอยู่กับขนาดของหน้าต่างรูป


1
@AlexA ฉันยังไม่มั่นใจเลยว่าสี่เหลี่ยมจัตุรัสจะต้องมีขนาด 50x50 พิกเซลเท่าที่กฎต่อไปบอกว่า "รูปแบบเอาต์พุตหรือขนาดไม่เกี่ยวข้อง ... " ผู้คนขอความกระจ่างในความคิดเห็น แต่คำถามยังไม่ได้รับการปรับปรุง
บีกเกอร์

แก้ไขคำถาม ทดสอบโค้ดของคุณแล้วและมันใช้งานได้ดังนั้นในปัจจุบันคุณมีจำนวนไบต์ต่ำสุด :)
Bruno

ลบ> 0 และยังใช้งานได้เพื่อให้คุณสามารถโกนได้ 2 ไบต์ที่นั่น
Bruno

@Bruno อะไรนะ? นั่นคือป่า เห็นได้ชัดว่ามันคือการยึดค่าของเมทริกซ์ (ซึ่งเป็น << 0 หรือ >> 1) เป็น 0 และ 1 ขอบคุณสำหรับเคล็ดลับฉันจะอัปเดต! : D
บีกเกอร์

ขอแสดงความยินดีกับ 2k!
NoOneIsHere ที่

26

เป็นกลุ่ม, 47 46 44 43

ที่ถูกแยกออก 44 ยังคงเป็นปกติ 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

เอาต์พุตในรูปแบบ NetPPM (PBM):

output


2
ฉันชอบที่คุณสามารถทำสิ่งที่ท้าทายออกกราฟิกด้วยโปรแกรมแก้ไขข้อความ มีตัวอย่างอื่นของ PBM จากกลุ่มกอล์ฟหรือไม่?
ankh-morpork

1
@ dohaqatar7 ฉันทำไม่ได้ แต่ฉันเคยทำ TikZ พร้อมกับ vim มาก่อนดังนั้นกราฟิกใน vim นั้นเป็นสิ่งที่แน่นอน
Doorknob

2
ว้าวฉันไม่เคยคิดที่จะลอง<C-p>เป็นกลุ่มโดยไม่ต้องเริ่มพิมพ์คำ ... มันมีประโยชน์จริงๆ!
Desty

16

CSS, 244 ไบต์

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}

คำอธิบาย: การไล่ระดับสีเชิงเส้นในแนวทแยงขนาด 100x100px ถูกสร้างขึ้นด้วยการหยุดสี่จุดเพื่อให้การไล่ระดับสีส่วนใหญ่นั้นโปร่งใสยกเว้นสำหรับมุมสามเหลี่ยม 50px สองมุม (ดูตัวอย่างด้านล่าง) เพิ่มการไล่ระดับสีที่สองด้วยการชดเชยออฟเซต 50x50px ในครึ่งที่ขาดหายไปของสี่เหลี่ยม การเพิ่มขนาดของร่างกายจากนั้นอนุญาตให้รูปแบบผลลัพธ์ซ้ำไปเติมกระดานหมากรุกทั้งหมด


วิธีแก้ปัญหาเรียบร้อย } มันควรจะทำงานเช่นกันถ้าคุณวางสุดท้าย
insertusernamehere

คุณช่วยอธิบายสิ่งที่เกิดขึ้นที่นี่ได้ไหม?
ข้อบกพร่อง

@flawr ฉันได้เพิ่มตัวอย่างที่สองแสดงผลบางส่วนฉันหวังว่าจะช่วย
Neil

นี่คือที่สมบูรณ์แบบ
ไม่ใช่ชาร์ลส์ที่

คุณต้องการจริงๆhtml{background:#fff}เหรอ? ตามค่าเริ่มต้น 99% ของเบราว์เซอร์จะตั้งค่าพื้นหลังเป็นสีขาว afaik
Downgoat

15

Mathematica, 34 ไบต์

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

ผลลัพธ์เป็นภาพเวกเตอร์และล้อมรอบด้วยกรอบ

แทนที่จะวางตำแหน่งอย่างถูกต้อง 32 สี่เหลี่ยมเราสามารถสร้างเมทริกซ์ไบนารีและArrayPlotทำงานให้เราได้:

enter image description here


ดี! ขอบคุณสำหรับการโพสต์
ซิมมอนส์

ดูดี. คุณช่วยอธิบายฉันหน่อยได้ไหมว่าคุณกำหนดแต่ละตารางเป็น 50px ที่ไหน นอกจากนี้ยังมีโปรแกรมจำลองออนไลน์ที่ฉันสามารถทดสอบได้หรือไม่
บรูโน่

@Bruno เอาท์พุทเป็นกราฟิกแบบเวกเตอร์ดังนั้นจึงไม่มีสิ่งเช่นขนาดพิกเซล (ภาพไม่มีขนาดที่แท้จริง - สามารถปรับขนาดและแสดงผลได้ทุกขนาด) นั่นเป็นเหตุผลที่ฉันถาม
Martin Ender

4
รอGenerateChessBoardWithColorsAsParameters[ColorBlack, ColorWhite, 8, 8, 50, 50]ไม่ทำงานเหรอ ;)
Conor O'Brien

3
@ CᴏɴᴏʀO'Bʀɪᴇɴทำได้ แต่มีขนาด 73 ไบต์
Martin Ender

10

Mathematica, 81 72 55 ไบต์

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

Input/Output

ภาพเป็นการประเมินของรุ่นก่อนหน้า แต่ก็ยังคงเหมือนเดิม


8

อ็อกเทฟ 48 ไบต์

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

มันใช้งานได้ดีเหมือนกับคำตอบ Matlabของฉันแต่ไม่มีspiralใน Octave แต่เราใช้คุณสมบัติที่ Matlab ไม่มี: เราสามารถใช้การกำหนดtเป็นนิพจน์แล้วและใช้tในภายหลังในนิพจน์เดียวกันอีกครั้ง

(นี่เป็นรุ่นที่ได้รับการช่วยเหลือฉันไม่ต้องการถ่วงคำตอบที่นี่ =)


1
มุมซ้ายบนควรเป็นสีขาวไม่ใช่สีดำ
Doorknob

2
ผลลัพธ์ควรเป็นกระดานหมากรุกไม่ได้ระบุการวางแนว
ข้อบกพร่อง

2
ขออภัยข้อบกพร่องผลลัพธ์ควรเป็นกระดานหมากรุก กระดานหมากรุกมักจะเป็น "ราชินีบนสีของเธอสีขาวด้านขวา" (หมายถึงมือขวาของผู้เล่นแต่ละคนจะมีสี่เหลี่ยมมุมสีขาว)
corsiKa

5
จากนั้นลองนึกภาพผู้เล่นคนหนึ่งนั่งทางขวาหนึ่งคนทางซ้าย อีกครั้ง: สิ่งนี้ไม่ได้ระบุโดยการท้าทายนั่นเป็นเพียงการตีความของคุณ
ข้อบกพร่อง

8

Pure Bash (ไม่มียูทิลิตี้ภายนอก), 133

ฉันเห็นความคิดเห็นของ @ Doorknobว่าเป็นเรื่องที่ท้าทาย มันค่อนข้างยาว แต่นี่จะไป:

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

การส่งออกอยู่ในรูปแบบของ .txt ImageMagick โปรดทราบว่านี่เป็น Bash บริสุทธิ์ Imagemagick และยูทิลิตี้ภายนอกอื่น ๆ จะไม่ถูกสร้างเพื่อสร้างผลลัพธ์นี้ อย่างไรก็ตามผลลัพธ์อาจถูกเปลี่ยนเส้นทางไปยังไฟล์. txt และดูด้วยdisplayยูทิลิตี้ImageMagick :

enter image description here

รูปแบบของภาพนี้ดีมากเพราะไม่เพียง แต่เป็นข้อความล้วน แต่เป็นมากกว่ารายชื่อพิกเซลทั้งหมด (x, y และค่าสี) หนึ่งรายการต่อบรรทัด มันค่อนข้างง่ายที่จะได้รับค่าพิกเซลทั้งหมดทางคณิตศาสตร์ในลูปใหญ่


คำตอบก่อนหน้า 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]}"
}

เอาต์พุตอยู่ในรูปแบบไฟล์ภาพข้อความ X_PixMapซึ่งอาจดูได้ด้วย ImageMagickdisplayยูทิลิตี้

หมายเหตุฉันใช้รูปแบบ XPM มากเท่าที่displayจะทำได้ ฉันสามารถนำแผ่นหม้อน้ำออกทั้งหมดยกเว้นการ"เสนอราคาสองครั้งรอบแต่ละบรรทัด ไม่ทราบว่าจะมีสิ่งใด - ถ้ามี - สาธารณูปโภคจะยอมรับสิ่งนี้


6

PowerShell + เบราว์เซอร์ที่คุณเลือก149 143 ไบต์

การไม่สามารถใช้การนำเข้านั้นเป็นเรื่องที่ยากมากเนื่องจากการเรียก GDI ทั้งหมด (เช่นสิ่งที่ PowerShell ใช้ในการวาด) ถูกฝังอยู่หลังการนำเข้าใน. NET ...

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

แก้ไข - บันทึกหกไบต์ด้วย@NotThatCharles

สิ่งนี้ใช้ for-loops สองตัว1..8เพื่อสร้างสตริง HTML ขนาดใหญ่คล้ายกับตัวอย่าง PHP ที่มีให้และส่งออกไปยังไปป์ไลน์ แต่ละครั้งที่เราผ่านการคำนวณว่าจะผนวก;background:#000พื้นหลังสีดำโดยรับตำแหน่งปัจจุบันของเราในบอร์ดโมดูโล 2

หากต้องการใช้ให้เปลี่ยนเส้นทางผลลัพธ์ไปยังไฟล์ที่คุณเลือก (เช่นมีบางอย่างที่เหมือนกัน> chessboard.htm) จากนั้นเปิดใช้งานในเบราว์เซอร์ที่คุณเลือก สำหรับภาพหน้าจอด้านล่างฉันใช้ "c.htm" และ Firefox

firefox


หนึ่งในนี้ถูก unespected แต่ผมค่อนข้างชอบมันอย่างใด :)
บรูโน่

whiteและblackสามารถ#fffและ#000... แต่ทำไมต้องระบุสีขาว
ไม่ใช่ชาร์ลส์ที่

ลอง(";background:#000","")[($a+$_)%2]แทน
ไม่ใช่ Charles

@NotthatCharles Durr มีแผ่นพับสีขาวและสีดำของฉันดังนั้นมันจึงแสดงเฉพาะสี่เหลี่ยมสีขาวเท่านั้น ถูกต้องสำหรับการบันทึกเพิ่มเติม 4 ไบต์
AdmBorkBork

5

PHP + CSS + HTML, 136 ไบต์

การเพิ่มตารางให้อยู่ในระดับที่สูงขึ้น:

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

มันสร้างรหัสต่อไปนี้:

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

มันอาศัยความใจดีและ CSS ของเบราว์เซอร์เป็นอย่างมาก


ทางออกที่ดี ที่ฉันต้องรวม php หลังจาก <? และรวม $ i = 0 เป็นพารามิเตอร์แรกเพื่อให้มันทำงานอย่างถูกต้องโดยให้ผลลัพธ์สุดท้าย 144 ไบต์
บรูโน่

1
@Bruno หากคุณอ้างถึงคำเตือนที่ให้ไว้คำเตือนจะถูกเพิกเฉยที่นี่ อย่างไรก็ตามมีวิธีการปิดใช้งานล้านล้านวิธี หนึ่งในนั้นคือการแทนที่ด้วย++$i<9 @++$i<9นอกจากนี้เพื่อให้ทำงานได้โดยไม่<?phpต้องมีคำสั่งshort_open_tags=Onซึ่งเป็นค่าเริ่มต้นในบางสภาพแวดล้อม อ่านเพิ่มเติมได้ที่stackoverflow.com/a/2185331/2729937
Ismael Miguel

5

เยลลี่ 26 ไบต์

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

เนื่องจาก Jelly ไม่รองรับภาพในตัวเราจึงพิมพ์ภาพ PPM

ลองออนไลน์! (บอร์ดขนาดเล็กสำหรับความเร็ว PPM ดิบ)

ผล

screenshot

มันทำงานอย่างไร

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.

รุ่นที่ไม่ใช่การแข่งขัน (24 ไบต์)

ล่าม Jelly ใหม่ล่าสุดที่ลงวันที่ก่อนหน้าโพสต์นี้ไม่ได้ทำให้เป็นเวกเตอร์xอย่างถูกต้อง ด้วยเวอร์ชันล่าสุดคุณสามารถบันทึกเพิ่มเติม 2 ไบต์

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

ความแตกต่างเพียงอย่างเดียวคือให้x50ผลเป็นรายการแบบเรียบ (ด้วยองค์ประกอบเดิมทุกครั้งที่ทำซ้ำ 50 ครั้ง) ดังนั้นจึงFไม่จำเป็นอีกต่อไป


1
ดูเหมือนว่าคุณกำลังเขียนคำตอบแบบจาวาและหลับไปเล็กน้อยขณะที่พิมพ์;... ;)
Conor O'Brien

1
@ CᴏɴᴏʀO'Bʀɪᴇɴ Java ใช่ไหม คุณต้องอยู่บน Java 10.0, Golfing Edition, สาเหตุที่ดูไม่เหมือน Java ที่ฉันเคยเห็นมาก่อน ....
BalinKingOfMoria

5

MATL , 11 (27) ไบต์

8:t!+Q2\TYG

สิ่งนี้ก่อให้เกิดรูปต่อไปนี้ มันไม่มีขนาดที่แท้จริง มันจะถูกปรับขนาดโดยอัตโนมัติขึ้นอยู่กับขนาดของหน้าต่างรูป ดูเหมือนว่าจะได้รับอนุญาตจากความท้าทาย

enter image description here

คำอธิบาย

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

หากไม่อนุญาตให้ใช้การปรับอัตโนมัติ

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

สร้างรูปต่อไปนี้ด้วยสี่เหลี่ยมจตุรัส 50x50 พิกเซล

คำอธิบาย

enter image description here

'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 ไบต์

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

คำอธิบาย

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

หลามเทียบเท่า

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

ลองที่นี่ (เพียงค่าสี)

เอาท์พุท:

Output


ทำได้ดีมากกับจำนวนไบต์ แต่ฉันต้องการผลลัพธ์ที่ถูกต้องด้วยสี่เหลี่ยมจัตุรัสที่มองเห็นได้ :)
Bruno

เพิ่ม @Bruno เอาท์พุท! ฉันติดตั้ง PIL เพื่อคุณเท่านั้น: O (ฉันไม่ได้ทดสอบมาก่อน)
Blue

@muddyfish ขอโทษด้วยสำหรับปัญหาและขอบคุณ กระดานจะต้องเริ่มต้นด้วยและจบลงด้วยสี่เหลี่ยมสีขาวท่อ :)
บรูโน่

4

Matlab, 47 (24) ไบต์

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

มันใช้งานได้ดีเหมือนกับคำตอบระดับแปดเสียงของฉันแต่ฉันสามารถใช้spiralซึ่งบันทึกหนึ่งไบต์ spiral(n)ทำให้nxnเมทริกซ์และเติมเต็มด้วยn^2จำนวนเต็มแรก

หากอนุญาตให้ใช้เวกเตอร์กราฟิคเราสามารถทำได้ใน 24 ไบต์:

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

(นี่เป็นรุ่นที่ได้รับการช่วยเหลือฉันไม่ต้องการถ่วงคำตอบที่นี่ =)


4

FFmpeg, 78 82 100ไบต์

ในที่สุดก็มีการทำความสะอาดกระดาน

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

enter image description here


เก่ากว่า :

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

จะออกโดยมีข้อผิดพลาด แต่หลังจากสร้างภาพด้านล่าง

enter image description here

(บอร์ดเก็บฝุ่นบางส่วน)


3

CJam, 27 ไบต์

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

ลองออนไลน์!(บอร์ดขนาดเล็กสำหรับความเร็ว PPM ดิบ)

ผล

screenshot

มันทำงานอย่างไร

"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 พร้อม utf-8 - 66b

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

ut เป็นคำย่อสั้น ๆ สำหรับเอนทิตี& # 9626;

อักขระ Unicode 'ซ้ายขึ้นบนและขวาล่างอย่างรวดเร็ว' (U + 259A)

โง่ฉันกำลังมองหาวิธีแก้ปัญหาถ่าน 1 utf-8 - คงจะเป็น ... 1b!


2
ดูเหมือนว่าแบบอักษรผิด
Qwertiy

1
คุณควรใช้แทนเพื่อให้ตารางด้านซ้ายบนเป็นสีขาวเหมือนกระดานหมากรุกมาตรฐาน นอกจากนี้ยังใช้<pre>แทนเพื่อให้คุณสามารถใช้การขึ้นบรรทัดใหม่แทน<div> <br>
Neil

จำนวนไบต์ของคุณดูเหมือนจะผิดมันควรเป็น 98 ไบต์ซึ่งนับเป็น 3 ไบต์โดยใช้การเข้ารหัส UTF-8 ในอนาคตคุณสามารถใช้สิ่งนี้เพื่อตรวจสอบจำนวนไบต์ UTF-8 ของคุณ
Taylor Scott

2

PHP, 166 158 155 ไบต์

ทำงานใน PHP 7.0.2 (เปิดใช้งานแท็กสั้น) และ 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;}

คุณสามารถใช้คุณสมบัตินี้bgcolor=0เพื่อสร้างพื้นหลังสีดำ นั่นน่าจะเป็นการกำจัดไบต์เป็นจำนวนมาก! และแทนที่จะ$v%2==0ใช้$v&1ให้ควรโกนสักสองสามไบต์
Ismael Miguel

2

PHP> = 5.4, 175 159 149 116 ไบต์

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

หมายเหตุ

  • Shaved 16 ไบต์ - ขอบคุณ @insertusername ที่นี่
  • ลดขนาด 10 ไบต์ - ขอบคุณ @ msh210
  • Shaved 30 bytes - ขอบคุณ @Ismael Miguel

1
อาจเป็นสิ่งที่สามารถเล่นกอล์ฟได้มากขึ้น แต่ที่นี่คุณจะไป ( 152 bytes ):<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;}}
แทรกชื่อที่นี่

ในขณะที่ฉันไม่ได้ลบการบ้านเริ่มต้น (ใช้งานได้ แต่การเล่นโวหารส่วนบุคคลจะไม่ให้ฉันทำ) ขอขอบคุณสำหรับสิ่งนี้
Shaun H

1
ตามที่จะได้รุ่นที่เข้มงวดของ HTML 4 คุณสามารถข้ามTRแท็กสิ้นสุดสำหรับ
msh210

1
แทนที่++$i<65ด้วย@++$i<65เนื่องจากคุณกังวลเกี่ยวกับคำเตือน ซึ่งหมายความว่าคุณสามารถลด$m=$i=0เหลือเพียง$m=0ช่วยให้คุณ 2 ไบต์ แทนการที่คุณสามารถทำได้echo 'a'.'b'.'c'; echo 'a','b','c';ซึ่งหมายความว่าคุณechoสามารถecho'<td style="width:50px;height:50px;background:#',($i+$m)%2?'':'000','">';ประหยัดได้มากขึ้น 2 ไบต์ นอกจากนี้แอตทริบิวต์ HTML ไม่จำเป็นต้องมีเครื่องหมายคำพูด ลบออกและ sabe 2 ไบต์ นอกจากนี้ยังมีbgcolorแอตทริบิวต์ที่สั้นกว่ามากซึ่งจะช่วยลดจำนวนไบต์ได้มากขึ้น! คุณสามารถใช้ a print()ในforเพื่อบันทึกไบต์ได้มากขึ้น!
Ismael Miguel

1
เพื่อประหยัดมากขึ้นฉันได้แทนที่($i+$m)%2ด้วย$i+@$m&1ซึ่งอนุญาตให้ฉันลบสิ่ง$m=0นั้น ไปข้างหน้าฉันสามารถลบของคุณออกifและแทนที่ด้วยการใช้งาน trenary เพื่อเป็นการประหยัดมากยิ่งขึ้นผมได้ลบของคุณstyleและเพิ่มคุณสมบัติและwidth heightที่จะได้รับมากยิ่งขึ้นในด้าน hacky ผมเคยคิดว่า Chrome 48.0.2564.103 เมตรใช้สีดำถ้าสีพื้นหลังเป็นโดยใช้สถานที่ให้บริการ0 bgcolorนั่นทำให้ฉันลดมากขึ้นเรื่อย ๆ ! การลดมากขึ้นดีกว่า!
Ismael Miguel

1

JavaScript, 150

นี้สามารถเล่นกอล์ฟได้อย่างแน่นอน มันสร้าง 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
ไม่ฉันไม่เคยรู้เกี่ยวกับสตริงเทมเพลตใน JavaScript เย็น.
Cheezey

1

iKe , 24 ไบต์

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

board

แกนหลักของเทคนิคคือการสร้างรายการของพิกัด x, divmod พวกเขาและจากนั้นใช้ความเท่าเทียมกันข้ามผลิตภัณฑ์เพื่อสร้างบิตแมปที่เหมาะสม การใช้ตัวอย่างขนาดเล็กลงเพื่อวัตถุประสงค์ในการอธิบาย:

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

ลองที่นี่ลองได้ที่นี่ในทางเทคนิคแล้ว iKe นั้นทำงานบนพื้นที่ภาพ 160x160 พิกเซลแบบโลจิคัล แต่ในโหมดเต็มหน้าจอ ฉันคิดว่าสิ่งนี้ยังคงเป็นไปตามจิตวิญญาณของคำถามเนื่องจากโปรแกรมสามารถรวบรวมบิตแมปที่มีขนาดใหญ่กว่าด้วยจำนวนตัวอักษรเดียวกัน มันเพิ่งลงมาถึงข้อ จำกัด การแสดงผลโดยพลการ

ปรับปรุง:

iKe ไม่ได้ออกแบบมาสำหรับกอล์ฟเป็นหลัก แต่การเข้ารหัสแบบสดยังคงได้รับประโยชน์จากค่าเริ่มต้นที่สั้นและมีสติ เนื่องจากการแก้ไขปัญหานี้ฉันจึงตัดสินใจอนุญาตให้ใช้จานสีเริ่มต้นหากไม่มีการระบุไว้ วิธีแก้ปัญหาเฉพาะตอนนี้สามารถแสดงได้ด้วย:

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

กำลังบันทึก (ไม่มีสิทธิ์) 3 ไบต์


1

Ruby with Shoes, 97 ตัวอักษร

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

ตัวอย่างผลลัพธ์:

Chessboard drawn by Ruby with Shoes


ควรเริ่มต้นและจบด้วยสีขาว เป็นอย่างอื่นได้ดี :)
บรูโน่

อุ่ย ขอบคุณ @Bruno คงที่
จัดการ

เยี่ยมมากโหวตขึ้น :)
บรูโน่

1

Lua + LÖVE, 138 113 112 106 ตัวละคร

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

ตัวอย่างผลลัพธ์:

Chessboard drawn by Lua + LÖVE


Grr! Lua 5.3 มี//ตัวดำเนินการหารจำนวนเต็ม แต่เห็นได้ชัดว่ายังไม่มีLÖVEที่สร้างขึ้นด้วย LuaJIT ที่มีคุณสมบัตินี้ ☹
จัดการ

1

GIMP, 539 ไบต์

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

Ungolfed Scheme script-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))

ในโหมดแบตช์ให้สร้างภาพเปล่าสร้างการเลือกรูปสี่เหลี่ยมผืนผ้าขนาด 50x50 เติมจากนั้นเลื่อนไปรอบ ๆ ภาพซ้ำ ๆ เติมลงในช่องสี่เหลี่ยม จากนั้นบันทึกc.pngและออก

เอาท์พุท:

chessboard png


1

J, 33 31 ไบต์

ฉันใช้กลอุบายด้วยไบนารี

   load'viewmat'
   viewmat 8 8$#:43605

... เพราะ 43605 ในไบนารีคือ 1010101001010101 (เราใช้#:แบบดั้งเดิมเพื่อรับ) ดั้งเดิมรูปร่างอาร์เรย์ของตัวเลขไบนารีในเมทริกซ์ที่ระบุไว้กับมิติ$ 8 8และviewmatเป็นเพียงไลบรารีระบบ
enter image description here
หน้าต่างสามารถปรับขนาดได้อย่างสมบูรณ์

ขอบคุณ @FrownyFrog สำหรับการย่อให้สั้นลงไปที่:

   load'viewmat'
   viewmat#:8$170 85

viewmat 8$#:170 85สั้นลง 1 ไบต์
FrownyFrog

1
viewmat#:8$170 85
FrownyFrog

1

Excel VBA, 82 ไบต์

ฟังก์ชันหน้าต่าง VBE แบบไม่ระบุชื่อทันทีที่ไม่มีการป้อนข้อมูลและส่งออกกระดานหมากรุกไปยังช่วงA1:H8บนวัตถุ ActiveSheet

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

ฟังก์ชั่นนี้ทำงานโดยการสร้างคอลัมน์สีดำ 4 คอลัมน์ในช่วงแรกB1:B8,D1:D8,F1:F8,H1:H8จากนั้นจึงชดเชยการระบายสีในแถว2,4,6 and 8ไปทางซ้ายทีละเซลล์

ตัวอย่างผลลัพธ์

CheckerBoard



0

PowerShell + GDI, 346 ไบต์

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

(การขึ้นบรรทัดใหม่นับเป็นอัฒภาคดังนั้นการขึ้นบรรทัดใหม่เพื่อให้สามารถอ่านได้)

ตรงข้ามกับคำตอบอื่น ๆ ของฉันอันนี้ใช้แอสเซมบลี. NET โทรGDI +ใช้ฟังก์ชันที่น่าสนใจมันมีความยาวประมาณสองเท่า

สองบรรทัดแรกทำการโหลดSystem.Windows.FormsและSystem.Drawingแอสเซมบลี อันแรกนั้นใช้สำหรับหน้าต่างตัวอักษรและผืนผ้าใบในนั้นตัวที่สองใช้สำหรับวัตถุรูปวาด (ในรหัสนี้คือแปรง) ที่สร้างกราฟิกบนผืนผ้าใบ

จากนั้นเราจะสร้างแบบฟอร์มของเรา$fกับบรรทัดถัดไปและการตั้งค่าของมันwidthและจะเป็นheight 450โปรดทราบว่านี่ไม่ใช่50*8เนื่องจากตัวเลขเหล่านี้ตรงกับขอบถึงขอบของหน้าต่างแบบฟอร์มรวมถึงแถบชื่อปุ่มปิด ฯลฯ

บรรทัดถัดไปสร้างผืนผ้าใบของเรา$gโดยการเรียกตัวสร้างที่ว่างเปล่า ค่าเริ่มต้นนี้ไปที่ด้านซ้ายบนของพื้นที่ที่ไม่ใช่ระบบของแบบฟอร์มจะเท่ากับ0,0และเพิ่มขึ้นเป็นด้านขวาและลงเหมาะสำหรับความต้องการของเรา

$f.add_paint({...})บรรทัดต่อไปคือการเรียกร้องที่เกิดขึ้นจริงที่ดึงกราฟิกด้วย เราสร้างการเรียกกราฟิกด้วย double-for looping 0..7และถือตัวแปรตัวช่วย$yผ่านแต่ละลูปด้านนอก แต่ละวงด้านในเราบอกผืนผ้าใบของเรา.FillRectangle(...,...)ให้วาดสี่เหลี่ยมของเรา พารามิเตอร์แรกสร้างใหม่SolidBrushด้วยสีตามที่เราอยู่บนกระดาน ตัวเลือกอื่น ๆ ในที่นี้อาจเป็นแบบ hatch, gradient, เป็นต้นพารามิเตอร์ที่สองคือRectangleวัตถุใหม่เริ่มต้นที่ x $_*50และ$y*50พิกัดที่ระบุและขยาย50ในแต่ละทิศทาง จำไว้ว่า0,0เป็นมุมบนซ้าย

.showDialog()บรรทัดสุดท้ายเพียงแค่แสดงเอาท์พุทที่มี PowerShell Forms

โปรดทราบว่าเนื่องจากเรากำลังสร้างวัตถุแบบฟอร์มและ PowerShell เป็นเรื่องเกี่ยวกับขั้นตอนการปิดแบบฟอร์มป๊อปอัพจะส่งผ่านไปตามSystem.Enum.DialogResultวัตถุCancelเนื่องจากเป็นเทคนิคที่ผู้ใช้ทำ เนื่องจากเราไม่ได้จับภาพหรือทำสิ่งใดก็ตามด้วยผลลัพธ์นั้นคำCancelนั้นจะถูกแสดงเป็น STDOUT เมื่อโปรแกรมสิ้นสุดลงเนื่องจากมันถูกทิ้งไว้บนไพพ์ไลน์


0

เลือก. , 8844 8278 ไบต์

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

แน่นอนว่ามันยาว แต่สองเวอร์ชันแรกที่ฉันสร้างขึ้นสำหรับงานนี้มีความยาวสองเท่า

เอาท์พุท:

screenshot

มันทำงานอย่างไร:

นี่คือโปรแกรมที่ใช้สร้าง:

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 จาก 0 ถึง 63 วาดสี่เหลี่ยมที่ (n% 8-4) + (n // 8-4) i ถ้า (-1) ^ (n // 8 + n% 8) ไม่ใช่ บวก.


นั่นไม่ใช่กอล์ฟจริงๆหรือ: p?
บรูโน่

ฉันไม่แน่ใจว่าเป็นโปรแกรมที่สั้นที่สุดที่ทำงานได้หรือไม่ อย่างไรก็ตามฉันค่อนข้างแน่ใจว่าความแตกต่างระหว่างสิ่งนี้และทางออกที่ดีที่สุดในภาษานี้ไม่มีนัยสำคัญเมื่อเทียบกับความยาวทั้งหมดของโปรแกรม ฉันมีความคิดอีกหนึ่งข้อที่อาจจะใช่หรือไม่ก็ได้ ฉันจะลองเร็ว ๆ นี้
quintopia


0

Python ขนาด 57 ไบต์

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

c คือเส้นสีขาว 50 เส้นและพิกเซลดำ 50 เส้น 200*cเป็นแถวที่มีสีขาวด้านหน้า200*c[::-1]ย้อนกลับ

เอาต์พุตเป็น PPM, การใช้งาน:

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