แสดงโลโก้ Hacker


57

คุณอาจเคยได้ยิน "Hacker Logo" หรือที่เรียกว่า "Hacker Emblem" ดูเหมือนว่านี้:

โลโก้ของแฮ็กเกอร์

นี่คือรูปแบบจากการจำลองทางคณิตศาสตร์ที่เรียกว่า Game of Life เครื่องร่อนเป็นรูปแบบชีวิตที่ง่ายที่สุดที่เคลื่อนไหวและเป็นที่จดจำได้ทันทีในทุกรูปแบบชีวิต

ความท้าทาย

ความท้าทายนั้นง่ายมาก: แสดงโลโก้ของแฮ็กเกอร์ สิ่งนี้ถูกกำหนดเป็น:

  • ตาราง 3x3 ที่มีเส้นขอบพื้นหลังสีขาวและเส้นกริดสีเทา
  • จุดสีดำห้าจุดจัดเรียงในรูปแบบเครื่องร่อน GoL
  • ไม่มีอะไรอีกแล้ว.

กฎระเบียบ

  • จุดสีดำจะต้องเติม40% - 80%ของกล่องกริดแต่ละอัน
  • คุณจะแสดงสัญลักษณ์ที่มีผลกราฟิก แต่ไม่มีศิลปะ ASCII
  • การส่งออกต้องมีอย่างน้อย30x30 พิกเซล
  • ผลลัพธ์จะต้องมีสีเทาดำและขาวเท่านั้น
  • กล่องกริดแต่ละตัวในกริดจะมีขนาดเท่ากัน ตารางจะเป็นตาราง 3x3 ปกติ
  • คุณไม่สามารถดึงโลโก้จากอินเทอร์เน็ตหรือระบบไฟล์ของคุณ
  • โปรแกรมของคุณจะแสดงโลโก้บนหน้าจอ / หน้าต่างว่าง ถ้ามันยุติก็ต้องทำตามปกติ
  • โปรดทราบว่า "จุด" ไม่ได้แปลว่า "แวดวง" "จุด" เป็นรูปทรงเรขาคณิตเดียวที่อยู่ตรงกลางของกล่องตารางที่มีพื้นผิวเดียว ตัวอย่างเช่นในขณะที่วงกลมหรือสี่เหลี่ยมจะมีคุณสมบัติเป็นจุดสองสามเหลี่ยมหรือกระดานหมากรุกจะไม่

ผู้ชนะ

เนื่องจากนี่คือคำตอบที่สั้นที่สุดในแต่ละภาษาจะเป็นผู้ชนะ!

โปรดรวมภาพหน้าจอของผลลัพธ์ของโปรแกรมของคุณในคำตอบของคุณ


21
ฉันไม่รู้ว่านี่เรียกว่าโลโก้ Hacker ฉันเคยใช้มันเป็นสัญลักษณ์ประจำตัวของฉันในบางเว็บไซต์เดาว่าทำให้ฉันเป็นแฮ็กเกอร์
— Mark Thomas

15
@ MarkThomas นั้นหรือ GoL nerd xD
— Stephen

3
@DavidConrad "ล้างหน้าจอ" หมายความว่าถ้าคุณใช้ IDE / อินเตอร์เฟสที่มีกราฟิกในตัวคุณไม่สามารถแสดงข้อความที่มีอยู่บนหน้าจอได้ ใช่คุณสามารถแสดงมันในหน้าต่าง
— MD XF

3
สีเทาหลายเฉด (และสีที่เกี่ยวข้อง) เนื่องจากการลบรอยหยักอนุญาตหรือไม่
— Ian Miller

3
เราจำเป็นต้องแสดงผลลัพธ์หรือเราสามารถส่งคืนหรือบันทึกเป็นไฟล์ได้หรือไม่?
— TheLethalCoder

คำตอบ:


27

Mathematica, 62 ไบต์

Grid[{{,a=██,},{,,a},{a,a,a}},Frame->All,FrameStyle->Gray]

ป้อนคำอธิบายรูปภาพที่นี่

Mathematica, 71 ไบต์

Grid[{{,l=Graphics@Disk[],},{,,l},{l,l,l}},Frame->All,FrameStyle->Gray]


ป้อนคำอธิบายรูปภาพที่นี่


2
ฉันคิดว่าคุณสามารถบันทึกไบต์โดยใช้ฟังก์ชั่นบริสุทธิ์ด้วยGraphics@Disk[]เป็นอาร์กิวเมนต์
— CalculatorFeline

ถ้าคุณหมายถึงกริดนี้ [{{, #,}, {,, #}, {#, #, #}}, Frame-> All, FrameStyle-> Gray] & @ Graphics @ Disk [] มันคือ 72 ไบต์
— J42161217

3
เป็นตัวแปรที่ 69 Rasterize@Grid[{{,●,},{,,●},{●,●,●}},Frame->All,FrameStyle->Gray]ไบต์เกี่ยวกับเรื่องนี้: ●เป็นอักขระ Unicode สองไบต์ เนื่องจากไม่จำเป็นต้องเป็นวงกลมอย่างเข้มงวดบางทีอักขระ ASCII บางตัวอาจทำงานได้ตามข้อกำหนด 40% -80%
— เอียนมิลเลอร์

ที่จริงแล้วฉันทำไปถึง 62 ไบต์ตามข้อกำหนดทั้งหมด
— J42161217

ฉันคิดว่าคุณต้องการRasterizeหรือคล้ายกันเพื่อตอบสนองความต้องการgraphical output but no ASCII artเนื่องจากสัญลักษณ์ยังคงสามารถเลือกได้ในตารางเป็นอักขระ Unicode
— เอียนมิลเลอร์

33

CSS + HTML, 56 + 84 = 140 ไบต์ 52 + 84 = 136 ไบต์

บันทึก 4 ไบต์ด้วยการรวมคำแนะนำจากความคิดเห็น

td{border:1px solid#888;line-height:.4;font-size:3em
<table cellspacing=0><tr><td><td>•<td><tr><td><td><td>•<tr><td>•<td>•<td>•

สิ่งนี้ใช้อักขระ UTF-8 •ซึ่งมีความยาว 2 ไบต์และใช้ประโยชน์จากความงดงามของไวยากรณ์ HTML


3
ไม่เลว; มันค่อนข้างฉลาดที่จะใช้•!
— MD XF

3
เด็ดมาก ฉันคิดว่าคุณสามารถบันทึกไบต์ด้วยline-height:.4;และอีกวิธีหนึ่งโดยละเว้นการปิด}
— ETHproductions

5
ไม่ใช้•นับเป็นศิลปะ ASCII ซึ่งผิดกฎท้าทายหรือไม่
— Hankrecords

2
@StephenS ดูเหมือนจะเป็นความแตกต่างที่ไร้ประโยชน์จริงๆบวกกับฉันไม่เห็นความรู้สึกในการห้ามใช้ศิลปะ ASCII แต่อนุญาตให้ใช้ Unicode art สำหรับผู้ปฏิบัติการที่บอกว่าฉลาดความคิดเห็นของฉันเป็นจริงโดยตรงไปยัง OP ฉันลืมที่จะใส่ใน @
— Hankrecords

4
Code Golf คำตอบเดียวที่ฉันเคยเข้าใจอย่างน้อยฉันก็เชื่อเช่นนั้น
— Uwe Keim

25

GLSL (ตัวแยกส่วน), 278 235 256 ไบต์

precision highp float;void main(){vec2 a=gl_FragCoord.xy/20.-.2;ivec2 b=ivec2(a);a-=vec2(b)+.5;if(b.x>2||b.y>2)discard;gl_FragColor=a.x<-.5||a.y<-.5||a.x>.3||a.y>.3?vec4(.5,.5,.5,1.):length(a+.1)<.4&&(b.x+b.y-3)*b.y==0?vec4(0.,0.,0.,1.):vec4(1.,1.,1.,1.);}

ป้อนคำอธิบายรูปภาพที่นี่

ดูการทำงาน: http://glslsandbox.com/e#40717.2


1
อืม ... เส้นขอบของกราฟิกเหรอ? นอกจากนี้คุณแน่ใจหรือไม่ว่าแวดวงเป็นเพียง 80% ของกล่องกริด?
— MD XF

12
วงกลมที่สัมผัสทั้งสี่ด้านของสี่เหลี่ยมจัตุรัสล้อมรอบเติมสัดส่วนπ / 4 ของสี่เหลี่ยมจัตุรัสหรือประมาณ 78.5%
— Greg Martin

ฉันลดขนาดรหัสของคุณเหลือ 222 ไบต์:precision highp float;void main(){vec2 a=gl_FragCoord.xy/20.-.2;ivec2 b=ivec2(a);a-=vec2(b)+.5;gl_FragColor=vec4(vec3(a.x<-.5||a.y<-.5||a.x>.3||a.y>.3?.5:length(a+.1)<.4&&(b.x+b.y-3)*b.y==0?.0:1.)*float(b.x<3&&b.y<3),1.);}
— Gábor Fekete

21

Python 2 ,  169  140 ไบต์

from turtle import*
up()
shape("square")
color("gray",[1]*3)
i=9
while i:
 i-=1;goto(20-i/3*20,20-i%3*20);stamp()
 if 302&2**i:dot(15,0,0,0)

ขนาดจริง, 61 คูณ 61, พล็อตภายในผืนผ้าใบขนาดใหญ่กว่า 300 ถึง 400:

ขนาดที่แท้จริง

แสดงตารางพิกเซล:

รุ่นกริดพิกเซล

จุดใช้ 177 พิกเซลในช่วง 40% -80% ไม่ว่าจะพิจารณาเติมสีขาว 19 ถึง 19 (144.4-288.8) หรือ 21 โดย 21 รวมถึงเส้นขอบทั้งสอง (176.4-352.8)

หมายเหตุ:done()โปรแกรมสิ้นสุดลงและปิดหน้าต่างผ้าใบเร็วที่สุดเท่าที่วาดภาพได้เสร็จสิ้นเพื่อให้คู่มือปิดหน้าต่างท้ายบรรทัด

turtleเป็นแพ็คเกจ Python พัฒนาขึ้นสำหรับการเขียนโปรแกรมกราฟิกเบื้องต้น ปากกาเริ่มที่x,y=0,0กึ่งกลางของผืนผ้าใบ 300 x 400 พิกเซล (โดยค่าเริ่มต้น) upยกปากกาgotoย้ายปากกาshapeตั้งรูปร่างของปากกาให้เป็นรูปร่างที่มีชื่อ ( "square"เป็นรูปร่างที่กำหนดไว้ล่วงหน้าที่มีความกว้างพิกเซลเริ่มต้นที่ 21 ) colorตั้งค่าสีโดยที่พารามิเตอร์ทั้งสองตั้งค่าการลาก (พร้อมความกว้างเริ่มต้นที่ 1) และเติม; ไบต์จะถูกบันทึกไว้โดยใช้(r,g,b)ตัวเลือก tuple เพื่อแทนที่"white"ด้วยการใช้การคูณรายการ[1,1,1] [1]*3ในที่สุดก็dotดึงจุดที่มีความกว้างที่กำหนดในพิกเซลและสี ค่าความกว้างเริ่มต้นจุดที่มีขนาดเล็กเกินไปที่จะมีคุณสมบัติตามที่เป็นอยู่ดังนั้นผมทำให้มันเป็นความงามและมีคุณสมบัติ9 15สีของจุดอาจเป็น"black"แต่(r,g,b)tuple ที่คลายการบีบอัด0,0,0จะสั้นลงสองไบต์

ปากกาต้องเลื่อนออกจากจุดใด ๆ ในตอนท้ายเนื่องจากมิฉะนั้นปากกาสีเทา / ขาวจะซ่อนจุด

กริดถูกสำรวจโดยใช้ div ( /) และ mod ( %) ของการiเริ่มต้นที่8( iถูกกำหนดค่าเริ่มต้นเป็น9แต่จะลดลงที่จุดเริ่มต้นของwhileลูป) และทำงานลงไปเพื่อ0ชดเชยผลลัพธ์ของ2,1,0การ-1,0,1ใช้(1-...)และปรับขนาดแต่ละขนาด ปัจจัย 20 (ทราบว่า20-i/3*20จริง ๆ แล้วเป็นไบต์น้อยกว่า20*(1-i/3)จะไปเหมือนกัน%) สิ่งนี้จะสร้างคำสั่งซื้อ [ล่างซ้าย, กลางซ้าย, บนซ้าย, กลางล่าง, กลางกลาง, กลางบน, ล่างขวา, กลาง - ขวา, กลาง - ขวา, บน - ขวา] และต้องมีhasDotการประเมิน " [1,0,0,1,0,1,1,1,0], ซึ่งเป็น302เลขฐานสองนั้นอาจเข้าถึงได้โดยการตรวจสอบiTHพลังของสององค์ประกอบของ302302&2**iกับการใช้ค่าที่เหมาะสมและ,


วิธีการที่ดีมากและสั้นกว่าที่คิดturtleไว้มาก
— เสา

14

Applesoft BASIC , 479 476 516 515 483 482 ไบต์

-32 โดยใช้ชื่อตัวแปรที่อ่านไม่ได้: P
-1 เพราะ Apple ตัดสินใจที่จะมีมนต์ขลังและให้ฉันใช้ GOTO โดยปริยาย / ไม่มีอยู่

นี่คือโปรแกรมของฉัน (เอาชนะได้มาก) สำหรับตัวอย่างของเอาต์พุตที่ไม่ได้ใช้แวดวง:

1GR:POKE49234,0:COLOR=15:FORI=0TO39:VLIN0,47ATI:NEXT:COLOR=5:S=21:W=S:H=27:X=INT((40-W)/2):Y=INT((48-H)/2):D=INT(W/3):DX=D:C=Y+H:G=X+W:FORI=0TO3:VLINY,C ATX+I*D:NEXT:D=INT(H/3):FORI=0TO3:HLINX,G ATY+I*D:NEXT:YH=INT(D/2):Z=Y+H-YH:XH=INT(DX/2):COLOR=0:FORI=0TO2:B=Z:A=X+XH+I*DX:GOSUB5:NEXT:B=B-D:GOSUB5:B=B-D:A=A-DX:GOSUB5:K=PEEK(-16384):IFK<128THEN2:K=PEEK(-16368):TEXT:HOME:END 
5VLINB+2,B-3ATA:VLINB+2,B-3ATA-1:VLINB+2,B-3ATA+1:VLINB+2,B-3ATA+2:VLINB,B-1ATA-1:VLINB,B-1ATA+2:RETURN

เอาท์พุท:


1
ฉันไม่แน่ใจว่าสิ่งนี้ถูกต้องหรือไม่เนื่องจากบรรทัดที่ 1 มีความยาวมากกว่า 239 ตัวอักษรเป็นไปไม่ได้ที่จะป้อนด้วยวิธีปกติอย่างน้อยใน // e
— insert_name_here

1
@insert_name_here คุณต้องบันทึกลงในไฟล์บนดิสก์
— MD XF

14

รหัสเครื่อง IA-32, 81 80 ไบต์

hexdump:

60 8b f9 b8 50 35 20 20 ab b8 32 35 36 20 ab ab
ab fe 4f fe 33 c9 66 49 51 8a c1 d4 55 50 8a c5
d4 55 5b b2 80 84 c0 74 1f 84 db 74 1b b2 ff 2c
10 3c 35 77 13 93 2c 10 3c 35 77 0c 8d 0c 58 8a
cd b0 e4 d2 e0 79 01 42 92 aa 59 e2 cb aa 61 c3

มันเป็นfastcallฟังก์ชั่นที่เรียกdoitว่าคืนอิมเมจในรูปแบบ PGM ในบัฟเฟอร์ที่ให้มา การใช้งาน:

char buf[256 * 256 + 256];
doit(buf);

FILE* f = fopen("k.pgm", "wb");
fwrite(buf, 1, sizeof buf, f);
fclose(f);

เอาท์พุท:

โลโก้ของแฮ็กเกอร์

ผมใช้ความละเอียด 256x256 เพราะมันเย็นมันช่วยให้ฉันแยกดัชนีพิกเซลในecxโดยอัตโนมัติในพิกัดyในchและในx clนอกจากนี้รูปแบบไฟล์ PGM ต้องการหมายเลข 255 ในส่วนหัวของรูปภาพ

สี่เหลี่ยมด้านในคือ 54x54 (41% ของเซลล์ตามพื้นที่)

ซอร์สโค้ด (สามารถคอมไพล์โดย Visual Studio):

    pushad;                 // save all registers
    mov edi, ecx;           // edi is now the pointer to output
    mov eax, '  5P';        // PGM file header
    stosd;                  // store it
    mov eax, ' 652';        // the number 256 and a space
    stosd;                  // store the width
    stosd;                  // store the height
    stosd;                  // store maximum brightness
    dec byte ptr [edi-2];   // fix maximum brightness to 255

    xor ecx, ecx;           // initialize the counter of pixels
    dec cx;                 // to 65535
myloop:
    push ecx;

    mov al, cl;             // al = cl = x coordinate in the image
    _emit 0xd4;             // divide by 85
    _emit 85;               // ah = x cell number, al = x coordinate in cell
    push eax;
    mov al, ch;             // al = ch = y coordinate in the image
    _emit 0xd4;             // divide by 85
    _emit 85;               // ah = y cell number, al = y coordinate in cell
    pop ebx;                // bh = x cell number, bl = x coordinate in cell

    mov dl, 0x80;           // gray pixel value
    test al, al             // is cell boundary (y)?
    je output1;
    test bl, bl;            // is cell boundary (x)?
    je output1;

    mov dl, 255;            // white pixel value
    sub al, 16;
    cmp al, 53;
    ja output1;             // if outside the inner square, output white
    xchg eax, ebx;          // exchange the registers to shorten following code
    sub al, 16;
    cmp al, 53;
    ja output1;             // if outside the inner square, output white

    lea ecx, [ebx * 2 + eax]; // cell index = y * 2 + x
    mov cl, ch;
    mov al, 0xe4;           // load the bitmap for the glider pattern
    shl al, cl;             // shift the needed but into SF
    jns output1;            // the bit was 0? - output white
    inc edx;                // the bit was 1? - change to black

output1:
    xchg eax, edx;
    stosb;                  // output the byte

    pop ecx;
    loop myloop;
    stosb;                  // output an additional gray pixel
    popad;
    ret;

รูปแบบเซลล์

0 1 0
0 0 1
1 1 1

สามารถแสดงด้วยบิตแมป "ที่เหมาะสม" ที่ 7 บิต

บิตถูกจัดทำดัชนีโดยนิพจน์y * 2 + xซึ่ง(x,y)เป็นที่ตั้งของเซลล์ นิพจน์นี้ให้ดัชนีเดียวกันกับเซลล์ 2 คู่ เป็นเรื่องบังเอิญที่โชคดีที่ค่าบิตมีเหมือนกัน


1
มันเจ๋ง แต่ฉันทำ42*42/85/85แค่ 24.4%
— Jonathan Allan

@JanathanAllan: ส่วนสีขาวของเซลล์มีเพียง 84x84 แต่ใช่กล่อง 42x42 เป็นเพียงเศษหนึ่งส่วนสี่ของกล่องขนาด 84x84
— Nick Matteo

ฉันขอคำชี้แจง (ถ้ามันไปที่พื้นที่ฉันหวังว่ามันจะไม่ยากเกินไปที่จะอัปเดต)
— Jonathan Allan

การพิจารณาคดีอยู่ใน - มันเป็นพื้นที่ ...
— โจนาธานอัลลัน

ฉันขยายจุดสีดำจาก 42 เป็น 54 มันเป็นขั้นต่ำทำให้พวกเขา 40% โดยพื้นที่และพวกเขาได้เริ่มเป็นที่น่าเกลียดแล้ว ...
— Anatolyg

14

HTML & CSS, 155 ไบต์

ปรากฎว่า HTML กำลังให้อภัยจริงๆเกี่ยวกับข้อผิดพลาดทางไวยากรณ์

บันทึกได้ 1 ไบต์ขอบคุณ @Octopus · บันทึกได้ 1 ไบต์ขอบคุณ @Downgoat · บันทึกได้ 2 ไบต์ขอบคุณ @StephenS

2 ไบต์บันทึกขอบคุณที่ @Ryan · 3 ไบต์บันทึกขอบคุณที่ @styfle · 4 ไบต์ขอบคุณบันทึกไว้ใน @Ferrybig

บันทึก 13 ไบต์ด้วย @SteveBennett

p{height:33px;width:33px;border-radius:50%;background:#000;margin:0
<table cellspacing=0 border=1><td><td><p><td><tr><td><td><td><p><tr><td><p><td><p><td><p


2
โปรดระบุว่าเบราว์เซอร์ใด (และเวอร์ชันใด) ที่ใช้งานได้ - ไม่สามารถใช้งานได้ใน Opera 45
— Paŭlo Ebermann

2
ตัวอย่างไม่ทำงานสำหรับฉันโดยใช้ Chrome 58.0.3029.110 (64 บิต) บน Windows Chrome เวอร์ชันใดใช้งานได้?
— Jonathan Allan

สิ่งนี้จะไม่แสดงวงกลมด้วย Safari 10.1 บน macOS Sierra (10.12.4)
— R. Kap

จุดไม่ได้แสดงด้วย Chromium 55.0.2883.87 (64 บิต)
— Dylan Meeus

ไม่เห็นจุดบน Chrome สำหรับ Android เช่นกัน (58.0.3029.83)
— Spikatrix

11

R ( 130 119 113 ไบต์)

plot(c(2,4,6,4,6),c(2,2,2,6,4),an=F,ax=F,xli=(l=c(1,7)),yli=l,xaxs="i",yaxs="i",pch=16,cex=19);grid(3,lt=1);box()

ป้อนคำอธิบายรูปภาพที่นี่


คุณสามารถใช้เพื่อแทนที่axes=F xaxt="n",yaxt="n"หากคุณเพิ่มค่าพิกัดเป็นสองเท่าคุณจะประหยัด 4 ไบต์สุทธิ (แต่ไม่สามารถใช้1:3,2:3เคล็ดลับได้)
— user2390246

@ user2390246: ขอบคุณสำหรับคำแนะนำ ฉันไม่ค่อยมีเวลาออกไปเล่นกอล์ฟ ฉันแน่ใจว่ามีการปรับปรุงที่เป็นไปได้มากขึ้น ผมต้องเพิ่ม;box()เป็นaxes=Fยังเอากรอบ นอกจากนี้ในฐานะaxesเป็นplotพารามิเตอร์และไม่ได้ผ่านไปparผ่าน...เป็นxaxt/ yaxtมันไม่จำเป็นต้องสะกดออกมาอย่างสมบูรณ์
— mschilli

1
คุณสามารถโกนทิ้งได้ 7 ไบต์โดย (1) แทนที่c(1,7)ด้วยตัวแปร ( l=c(1,7)); (2) แทนที่annด้วยan; (3) แทนที่[xy]liด้วย[xy]li; และ (4) การลบสองอาร์กิวเมนต์ซ้ำซ้อน:grid grid(3,lt=1)ในความเป็นจริงฉันมีเสรีภาพในการแก้ไขใน (อยู่ระหว่างการตรวจสอบ)
— Konrad Rudolph

1
@KonradRudolph ดูเหมือนว่าเกี่ยวข้อง: codegolf.meta.stackexchange.com/questions/1615/…
— แมตต์

@ แมทหืม ดูเหมือนว่าสิ่งนี้สมเหตุสมผลถ้าใช้การเพิ่มประสิทธิภาพที่แตกต่างกันโดยพื้นฐานมากกว่าเพียงแค่การปรับปรุงอย่างตรงไปตรงมา ยุติธรรมพอสมควร
— Konrad Rudolph

9

Python 2.7, 214 311 309 ไบต์

from matplotlib.pyplot import*
f,x=subplots()
j=(0,0),(1,0),(2,0),(1,2),(2,1)
for i in j:x.add_artist(Circle((i),.4,color='k'))     
x.tick_params(labelbottom='off',labelleft='off')
for o in x.spines.values():o.set_edgecolor('gray')
for s in 'xy':exec"x.set_"+s+"ticks((.5,1.5,2.5));"+s+"lim(-.5,2.5);"
grid()

นี่เป็นความพยายามครั้งแรกของฉันที่นี่ที่การตีกอล์ฟดังนั้นฉันแน่ใจว่าสิ่งนี้สามารถปรับปรุงได้ ฉันชอบที่จะไม่สร้างข้อ จำกัด แต่ดูเหมือนว่า matplotlib ไม่สามารถตรวจพบว่าฉันวางแผนวงกลมที่ที่ฉันทำ หากไม่ตั้งค่า xlim () และ ylim () จะแสดงเฉพาะวงกลมสองวงด้านล่างเท่านั้น

เอาท์พุท:

แก้ไข

แก้ไข: แก้ไขสีของเส้นขอบและลบหมายเลขเห็บ ฉันต้องบอกว่า matplotlib เป็นคำที่มีความหนาแน่นสูงและไม่เป็นมิตรกับการเปลี่ยนสีของแกน

ลดขนาดลง 3 ไบต์ด้วย @DJMcMayhem

แก้ไข: Took off สองไบต์โดยการตั้งค่าติ๊กของฉันเป็น tuple ภายในฟังก์ชั่น set_ticks


ขออภัยไม่อนุญาตให้ใช้ตัวเลขบนกราฟ สีเทาของเส้นขอบคืออะไร?
— MD XF

3
ยินดีต้อนรับสู่เว็บไซต์! นี่เป็นคำตอบแรกที่ดี :)
— DJMcMayhem

1
กอล์ฟเล็ก ๆ บางตัวที่ฉันเห็น: 1) คุณสามารถเข้าร่วมสาย 5 และ 6 เพื่อลบหนึ่งช่องว่างและขึ้นบรรทัดใหม่ (-2 ไบต์) 2) หากลำดับของชุด xy_ticks และ xy_lim ไม่สำคัญคุณสามารถทำสิ่งต่างๆfor s in'xy':exec"x.set_"+s+"ticks(a);"+s+"lim(-.5,2.5);"ได้ (ฉันยังไม่ได้ทดสอบดังนั้นฉันจึงไม่เป็นบวก)
— DJMcMayhem

8

Bash + ImageMagick, 233 226 ตัวอักษร

convert xc: +antialias -resize 31 -draw "stroke gray fill none ${r=rectangle} 0,0 10,30$r 20,0 30,30$r 0,0 30,10$r 0,20 30,30stroke #000 fill #000 ${c=circle} 15,5 15,8$c 25,15 25,18$c 5,25 5,28$c 15,25 15,28$c 25,25 25,28" x:

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

ร่อนวาดด้วย Bash และ ImageMagick

Bash + ImageMagick, 215 ตัวอักษร

convert xc: -resize 31 -draw "stroke gray fill none ${r=rectangle} 0,0 10,30$r 20,0 30,30$r 0,0 30,10$r 0,20 30,30stroke #000 fill #000 ${c=circle} 15,5 15,8$c 25,15 25,18$c 5,25 5,28$c 15,25 15,28$c 25,25 25,28" x:

เจ้าของคำถามยังไม่ได้ตอบคำถามขจัดรอยหยักและแนวทางแก้ไขอื่น ๆ ยังมีเฉดสีเทาเพิ่มเติมที่เพิ่มโดยการลดรอยหยักดังนั้นตอนนี้อันสั้นนี้ก็ดูยอมรับได้

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

Glider วาดด้วย Bash และ ImageMagick - พร้อม anti-aliasing


8

ทับทิม, 144 166 164 148 144 ไบต์

require'ruby2d'
set background:'grey'
c=482;g=2,13,24;d=0
g.map{|y|g.map{|x|Square.new(x,y,9);Square.new(x+2,y+2,5,"black")if c[d]>0;d+=1}}
show

เอาท์พุท:

เอาท์พุต

แก้ไข: ตอนนี้มีเส้นกริดสีเทา


3
ฉันเห็นโอกาสในการเล่นกอล์ฟที่นี่ สำหรับการเริ่มd=d+1มีรูปแบบสั้น ( d+=1) และที่นี่จะเทียบเท่ากับ==1 >0พิจารณาสิ่งที่เกิดขึ้นเมื่อคุณตั้งค่า c เป็น Fixnum แทนที่จะเป็นอาร์เรย์ :-)
— RJHunter

1
@RJHunter ฉันพลาดผลไม้แขวนต่ำมาบ้าง! และฉันคิดเกี่ยวกับสิ่งต่าง ๆ เช่นการสร้างบิตฟิลด์ด้วย c แต่ไม่สามารถหาวิธีที่สั้นกว่าในการนำไปใช้
— Mark Thomas

2
บางทีอาจเป็นเรื่องที่น่าแปลกใจที่ Ruby มีการสนับสนุนบิตฟิลด์อยู่ในตัว! คุณสามารถเข้าถึงจำนวนเต็ม[]ราวกับว่ามันเป็นอาร์เรย์ของบิต (อ่านอย่างเดียว แต่ก็ไม่เป็นไรที่นี่)
— RJHunter

@RJHunter ขอบคุณ! สิ่งที่ฉันต้องทำคือเปลี่ยน c เป็นหมายเลขที่เหมาะสม ลดลงไปนิดหน่อย
— Mark Thomas

คุณสามารถเปลี่ยนg=[2,13,24]ไปg=2,13,24และแทนที่ด้วยeach map
— Jordan

8

PNG, 105 100 ไบต์

ภาพ PNG    (เช่นไฟล์ภาพนี้)

เมื่อพิจารณาว่าอนุญาตให้ใช้ภาษา HTML และภาษาอื่น ๆ ที่ไม่ใช่การเขียนโปรแกรมฉันอยากรู้ว่าฉันสามารถดูรูปภาพที่แสดงบนเบราว์เซอร์ธรรมดาได้มากเพียงใดเพื่อใช้เป็นการเปรียบเทียบพื้นฐาน ผลที่ได้จะถูกบีบอัดด้วยเครื่องมือเปิดแหล่งที่มาoptipng ( -o7 -zm1-9 -strip all) และpngwolf ฉันทดลองกับzopflipngด้วยแต่ผลลัพธ์ก็ใหญ่กว่า เครื่องมือบีบอัดแบบโอเพ่นซอร์สอื่น ๆ อาจจะสามารถตัดทิ้งได้อีกสองไบต์

ข้อมูลภาพใน base64:

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB8AAAA
fCAAAAAA6xUnlAAAAK0lEQVR42mM4gB8wHPgPAwf+M0DAf4TYqDwp
4Ydp0qg8ofBDqMXKGpXHDwDDq0qBspApTgAAAABJRU5ErkJggg==

แก้ไขฉันทำให้จุดต่างๆสัมผัสกับเซลล์ด้านบนและด้านล่างเพื่อทำให้เกิดความซ้ำซ้อนมากขึ้นในรูปแบบพิกเซลและปรับปรุงอัตราส่วนการบีบอัด แต่ไม่ต้องกังวลจุดยังคงเต็ม (7 * 9) / (9 * 9) ≈ 78% ของเซลล์


PNG ที่ไม่ได้มาตรฐาน 88 ไบต์

@anatolygชี้ให้เห็นว่ามีความเป็นไปได้ในการเล่นกอล์ฟโดยการลบ IEND อัน (12 ไบต์) เทคนิคพื่อนถูกต้องตามมาตรฐาน อย่างไรก็ตามก้อน PNG แต่ละอันมีขนาดและข้อมูลการตรวจสอบของตัวเอง ดังนั้นจึงไม่จำเป็นอย่างยิ่งที่จะต้องมีเครื่องหมายสิ้นสุด และแน่นอนเบราว์เซอร์ทั้งหมดที่ฉันทดสอบสามารถแสดงภาพได้โดยไม่มีปัญหา

น่าเสียดาย (หรือโชคดี) ภาพที่ไม่ได้มาตรฐานนี้ถูกปฏิเสธโดย imgur ดังนั้นฉันจึงไม่สามารถอัปโหลดได้ นี่คือการเข้ารหัส base64:

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB8AAAA
fCAAAAAA6xUnlAAAAK0lEQVR42mM4gB8wHPgPAwf+M0DAf4TYqDwp
4Ydp0qg8ofBDqMXKGpXHDwDDq0qBspApTg==


ฉันไม่แน่ใจว่าสิ่งนี้ถูกต้องหรือไม่ PNGไม่ใช่ภาษาโปรแกรม
— DJMcMayhem

4
ขอบคุณ MD XF @DJMcMayhem ไม่มี HTML แต่เมื่อพิจารณาภาพที่มีขนาดเล็กฉันก็ส่งมันเป็นรายการนอกกรอบที่น่าสนใจ
— Meyer


4
นอกจากนี้ยินดีต้อนรับสู่ PPCG, @Meyer! :)
— Martin Ender

1
คุณสามารถลบไม่กี่ไบต์ในตอนท้ายของไฟล์และยังคงมีภาพ อาจขึ้นอยู่กับผู้ชมแม้ว่า; ฉันคิดว่าผู้ชมส่วนใหญ่ไม่จำเป็นต้องใช้เช่นจุดจบของการแสดง
— Anatolyg

7

คู่ , 127 124 ไบต์

นำออก 3 ไบต์ด้วย Luis gridเพียงพอแล้ว (แทนgrid on)

spy([0,1,0;0,0,1;1,1,1],'.k',300),set(gca,'XTick',.5:4,'XTickLabel','','YTick',.5:4,'YTickLabel',''),axis(.5+[0,3,0,3]),grid

เอาท์พุท (หลังจากบันทึก):

โปรดทราบว่าผลลัพธ์จะแสดงเส้นกริดสีเทาในหน้าต่างพล็อต พวกเขาเปลี่ยนเป็นสีดำเมื่อบันทึก (ด้วยเหตุผลบางอย่าง)

ป้อนคำอธิบายรูปภาพที่นี่

นั่นมันยาวและยุ่ง! ต้องผ่านการดัดแปลงมากมายเพื่อให้สิ่งนี้เป็นไปตามข้อกำหนด

คำอธิบายและหวังว่าการเล่นกอล์ฟจะเกิดขึ้น ...


ที่ไม่ได้ดู squary มาก แต่เนื่องจาก OP ทำคำตอบกับผลลัพธ์ที่คล้ายกันฉันเดาว่ามันดี ..
— L3viathan

2
ฉันคิดว่าอัตราส่วนความสูง / ความกว้างขึ้นอยู่กับแพลตฟอร์ม เพิ่ม'square'เพื่อให้เป็นรูปสี่เหลี่ยมจัตุรัสในทุกแพลตฟอร์ม spy([0,1,0;0,0,1;1,1,1],'.k',80),set(gca,'XTick',.5:4,'XTickLabel','','YTick',.5:4,'YTickLabel',''),axis(.5+[0,3,0,3],'square'),grid on.
— Stewie Griffin

7

กำลังประมวลผล212 212ไบต์

background(-1);noFill();stroke(99);rect(0,0,99,99);rect(0,33,99,33);rect(33,0,33,99);fill(0);int f=25;ellipse(15,83,f,f);ellipse(50,83,f,f);ellipse(83,83,f,f);ellipse(83,50,f,f);ellipse(50,15,f,f);

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

Voila!

ป้อนคำอธิบายรูปภาพที่นี่

คุณสามารถเพิ่ม

strokeWidth(2); 

หรือมากกว่านั้นเพื่อดูสีของจังหวะที่ดีขึ้น

(นั่นคือรหัสกอล์ฟครั้งแรกของฉันฉันหวังว่าฉันจะทำทุกอย่างถูกต้อง)

แก้ไข: ขอบคุณ Kritixi Lithos! ลบ newlines เปลี่ยนเป็น int f = 25 และใช้ -1 ในพื้นหลัง (ลอย)


1
สุดยอดกอล์ฟแห่งแรกและยินดีต้อนรับสู่ PPCG!
— MD XF

1
คุณสามารถบันทึกไบต์บางส่วนโดยการเอาการขึ้นบรรทัดใหม่ที่เปลี่ยนfloat f=25;ไปint f=25;และโดยใช้background(-1)แทนbackground(255);
— Kritixi Lithos

6

Tikz, 193 175 170 ไบต์

\documentclass[tikz]{standalone}\begin{document}\tikz{\def\a{)rectangle(}\def~{)circle(1)(}\draw(4,6\a2,0)(0,\a6,6)(0,2\a6,4);\fill(1,1~3,1~5,1~5,3~3,5~,)}\end{document}

นี่คือผลลัพธ์:

เอาท์พุต


3
@MDXF มันตัดอย่างใกล้ชิด แต่เนื่องจากวงกลมเหล่านี้เป็นวงกลมที่สมบูรณ์แบบและสี่เหลี่ยมจัตุรัสที่พวกมันประกอบขึ้นπ / 4 ของตารางซึ่งมีประมาณ 79% ของตาราง
— ข้าวสาลีตัวช่วยสร้าง

ประณามดูความท้าทายและมีความคิดเดียวกัน;)
— racer290


4

กำลังประมวลผล 134 ไบต์

แรงบันดาลใจจาก @Zep นี่คือการประมวลผลหนึ่งซับของฉัน (และกอล์ฟรหัสแรกของฉัน):

stroke(127);for(int i=0;i<9;i++){int x=i%3*30;int y=i/3*30;fill(255);rect(x+5,y+5,30,30);if(i==1||i>4){fill(0);ellipse(x+20,y+20,23,23);}};

ขอบคุณ @Kritixi Lithos สำหรับเคล็ดลับอันยอดเยี่ยมของเขาในการโกนหนวดสักสองสามไบต์!

เครื่องร่อนในการประมวลผล


กรุณารวมถึงภาษาและคะแนนบรรทัด
— ธีระโรจน์

ยินดีต้อนรับสู่ PPCG และคำตอบแรกที่ดี! ตามที่ Theraot ระบุไว้การส่งทั้งหมดจะต้องมีส่วนหัวที่มีภาษาและจำนวนเงิน นอกจากนี้คุณยังสามารถตีกอล์ฟได้บางไบต์ด้วยการประกาศตัวแปรทั้งหมดใน for-loop เช่นfor(int i=0,x,y;...เพื่อให้คุณสามารถดรอปลงintในเนื้อหาของลูป นอกจากนี้fill(255);สามารถเป็นเพียงfill(-1);
— Kritixi Lithos

ฉันไม่ได้ทดสอบนี้ แต่ฉันคิดว่าคุณสามารถวาง+20ขณะที่การตั้งค่าของxและyเพื่อให้คุณสามารถเปลี่ยนrectไปrect(x+5,y+5,30,30);และellipseไปellipse(x+20,y+20,23,23);และบันทึกไบต์ที่สอง
— Kritixi Lithos

4

LaTeX + Tikz ขนาด 155 ไบต์

\documentclass[tikz]{standalone}\begin{document}\tikz{\draw(0,0)grid(3,3);\foreach\x/\y in{0/0,1/0,2/0,2/1,1/2}\fill(\x+.5,\y+.5)circle(.5);}\end{document}

ผลลัพธ์


1
นั่นคือ1/0การแบ่ง?
— wizzwizz4

ขออภัย แต่ไม่ใช่มันเป็นตัวคั่นอย่างง่ายในคู่xและyพิกัด
— TonioElGringo

คุณควรจะสามารถที่จะบันทึกไม่กี่ไบต์โดยปรับทุกอย่างขึ้นโดย 2 เพื่อให้คุณ.5's 1กลายเป็นเพียง
— คริส

@Chris กริดบิวด์อินจะสร้างเซลล์ความยาวหน่วยโดยค่าเริ่มต้นและใช้เวลาประมาณ 8 ไบต์ (เพิ่มเติม[step=2]) ในการสร้างกริดที่ใหญ่ขึ้น การลดความซับซ้อนของพิกัดสำหรับการวาดวงกลมจะไม่สามารถบันทึกได้เพียงพอ (คุณจะได้รับ 157 bytes ถ้าคุณทำได้)
— TonioElGringo

@TonioElGringo Ah จริง สอนให้ฉันแสดงความคิดเห็นโดยไม่ทดสอบก่อน;)
— Chris

4

SmileBASIC ขนาด 125 ไบต์

GCLS-1GCOLOR #GRAY
GBOX.,8,30,38GBOX 10,8,20,38GBOX.,18,30,28G.,1G 1,2G-1,3G.,3G 1,3DEF G X,Y
GPUTCHR X*10+12,Y*10,58081,.END

58081 (U + E2E1 ซึ่งอยู่ในบล็อก "พื้นที่ใช้งานส่วนตัว") คือรหัสตัวอักษรสำหรับสัญลักษณ์วงกลม การวางลงในสตริงจะใช้งานได้เช่นกัน แต่เนื่องจากมีการเข้ารหัสเป็น 3 ไบต์ใน UTF-8 จึงมีความยาวเท่ากัน (และแสดงไม่ถูกต้องที่นี่)

markdown แย่มาก


1
มันสดชื่นเสมอที่จะเห็นคำตอบพื้นฐาน !
— Taylor Scott

3

C #, 333 ไบต์

using System.Drawing;_=>{var b=new Bitmap(31,31);var g=Graphics.FromImage(b);g.FillRectangle(Brushes.White,0,0,31,31);for(int x=0,y;x<3;++x)for(y=0;y<3;++y){g.DrawRectangle(Pens.Gray,x*10,y*10,10,10);if(x==1&y<1|x>1&y==1|y>1)g.FillEllipse(Brushes.Black,x*10+1,y*10+1,8,8);}b.Save("t.png");System.Diagnostics.Process.Start("t.png");};

เวอร์ชันเต็ม / ฟอร์แมต:

using System.Drawing;
Action<int> a = _ =>
{
    var b = new Bitmap(31, 31);
    var g = Graphics.FromImage(b);

    g.FillRectangle(Brushes.White, 0, 0, 31, 31);

    for (int x = 0, y; x < 3; ++x)
        for (y = 0; y < 3; ++y)
        {
            g.DrawRectangle(Pens.Gray, x * 10, y * 10, 10, 10);
            if (x == 1 & y < 1 | x > 1 & y == 1 | y > 1)
                g.FillEllipse(Brushes.Black, x * 10 + 1, y * 10 + 1, 8, 8);
        }

    b.Save("t.png");
    System.Diagnostics.Process.Start("t.png");
};

ความคิดง่าย ๆ เราสร้างวัตถุกราฟิกจากภาพและใช้สิ่งนั้นเพื่อทำให้ภาพเป็นสีขาว จากนั้นวนรอบรูปภาพสี่เหลี่ยมจัตุรัสแต่ละรูปเพื่อวาดสี่เหลี่ยมผืนผ้าที่มีขอบเขต หากเป็นหนึ่งในสถานที่สำหรับจุดที่เราวาดด้วย สุดท้ายเราบันทึกภาพไปยังไฟล์และให้ windows เป็นผู้ตัดสินใจว่าจะเปิดมันอย่างไรในกรณีของฉันมันเปิดขึ้นด้วย Windows Photo Viewer

การใช้ a Processเพื่อแสดงรูปภาพและการบันทึกเป็นไฟล์นั้นสั้นกว่าการสร้างฟอร์ม windows หรือแอพ WPF มากเนื่องจากคลาสที่แตกต่างกันทั้งหมดและปุยเสริมที่จำเป็นในการสร้าง

เอาท์พุท:

เอาท์พุต


ฉันไม่คิดว่าคุณจะต้องใช้ Process.Start ตัวอย่างเช่น Titus ตอบเพียงแค่เอาท์พุทอิมเมจไม่เปิด
— Jeremy Thompson

@ JeremyThompson ระบุกฎที่คุณต้องแสดงภาพ
— TheLethalCoder

3

PHP, 221 + 2 ไบต์

<?imagefill($i=imagecreatetruecolor(31,31),0,0,~0);function q($i,$x,$y,$f){imagerectangle($i,$x*=10,$y*=10,$x+10,$y+10,5e6);$f?:imagefilledellipse($i,$x+5,$y+5,8,8,0);}for($p=16;$p--;)q($i,$p&3,$p>>2,53>>$p&1);imagepng($i);

บันทึกเป็นไฟล์; โทรในเบราว์เซอร์ ควรพูดพล่อยๆแสดงผลเบราว์เซอร์
ใส่ก่อนheader("Content-Type:image-png");imagepng($i);

เอาท์พุตจุดไม่ได้กลมมากนัก นั่นเป็นเพราะสัดส่วนที่น้อย

ชำรุด

function q($i,$x,$y,$f){        # function to draw quadrant:
    imagerectangle($i,$x*=10,$y*=10,$x+10,$y+10,5e6);   # draw lines in 0x4c4b40
    $f?:imagefilledellipse($i,$x+5,$y+5,8,8,0);         # if bit not set, draw dot
}

imagefill($i=
    imagecreatetruecolor(31,31) # create image
    ,0,0,~0);                   # fill with 0xffffff (white)
for($p=16;$p--;)q($i,           # loop through positions, call function
    $p&3,                           # $x=lower two bits
    $p>>2,                          # $y=upper two bits
    53>>$p&1                        # $f=one bit from %0000 0000 0011 0101
);                                      # (reversed inverted bit mask for dots)
imagepng($i);                   # output image

ฉันคิดว่า0x4c4b40มีคุณสมบัติเป็นสีเทาโดยประมาณ ถ้าไม่เพิ่มสี่ไบต์


3

R 313 236 ไบต์

l=c(1,7)
bmp('r',400,400)
plot(x=c(4,6,2,4,6),c(6,4,2,2,2),cex=14,pch=19,xlim=l,ylim=l,xlab='',ylab='',xaxs='i',yaxs='i',axes=F)
a=function(s,...){axis(s,labels=F,tck=1, col="gray",lwd=9,...)}
a(1,xaxp=c(l,3))
a(2,yaxp=c(l,3))
dev.off()

รหัสที่แก้ไขใหม่ส่วนใหญ่อิงจากความคิดเห็นจาก @ user2390246 บันทึก 77 ไบต์ ขอบคุณมากสำหรับความช่วยเหลือ

นอกจากนี้ต้องการเพิ่มการโทรออกไปยังโซลูชัน R ที่สั้นกว่าโดย @mschilli มันแสดงให้เห็นถึงวิธีการแก้ปัญหาของค่าเริ่มต้นกราฟิก R

เอาท์พุต

ไปที่ชื่อไฟล์ "r" การข้ามและส่วนขยายช่วยฉันสี่ไบต์ แต่ฉันต้องแก้ไขนามสกุลไฟล์กลับไปที่ "bmp" เพื่อนำไปอัพโหลด ดังนั้นบางทีฉันไม่ควรได้รับเครดิตสำหรับสี่ไบต์เหล่านั้น

โลโก้ Hacker

ความเห็น

ฉันคิดกับตัวเองว่า "กราฟิกนั้นไม่มีอะไรนอกจากกราฟง่าย ๆ ที่มีจุดห้าจุดควรเป็นเรื่องง่ายที่จะนำไปใช้ในภาษาที่มีความสามารถด้านกราฟิกข้อมูลที่มีประสิทธิภาพลองทำในอาร์" แต่จากนั้นฉันก็ต้องจ่ายตามลำดับ 80% ของจำนวนไบต์เพียงแค่หลีกเลี่ยงค่าปริยายของ R

เป็นเครื่องมือที่ผิดสำหรับงาน ....

ฉันไม่สามารถหาวิธีการรับประกันรายละเอียดขนาดและอัตราส่วนกว้างยาวของกราฟิกได้น้อยกว่าการเรียกตัวสร้าง bmp จากนั้น dev.off () ชุดค่าผสมนี้มีขนาด 25 ไบต์ หากเซสชั่น R ของคุณตั้งค่าไว้ถูกต้องคุณอาจได้รับกราฟิกที่ดูถูกต้องมากขึ้นหรือน้อยลงโดยไม่ต้องใช้ไบต์เหล่านั้น แต่มันไม่น่าเชื่อถือหรือสอดคล้องกัน


1
คำแนะนำสองสามข้อ: อย่ากำหนดกรอบข้อมูลของคุณbเลยเพียงใส่เวกเตอร์สองตัวที่ไม่มีชื่อลงในplotฟังก์ชันโดยตรง ใช้c(l,3)สำหรับการและxaxp yaxpคุณสามารถใช้Fเป็นเท็จโดยไม่จำเป็นต้องกำหนด และกำหนดฟังก์ชันใหม่a(x,...)ที่เรียกใช้axis(x)แต่มีค่าเริ่มต้นสำหรับเลเบล tck และอื่น ๆ เพื่อให้คุณไม่จำเป็นต้องระบุทั้งหมดสองครั้ง
— 2390246

นอกจากนี้คุณยังสามารถใช้มากกว่าaxes=F xaxt='n',yaxt='n'และคุณลืมที่จะใช้.5เมื่อกำหนดlแม้ว่าคุณจะใช้เคล็ดลับนั้นในภายหลัง
— 2390246

1
ที่จริงแล้วถ้าคุณเพิ่มค่าพิกัดทั้งหมดสองเท่าเพื่อกำจัดค่าที่น่ารำคาญ.5ทั้งหมด?
— user2390246

1
หากคุณจะถอด.bmpนามสกุลไฟล์ออกไปคุณก็อาจตั้งชื่อไฟล์rได้เช่นกัน
— MD XF

@ user2390246 - ขอบคุณมากสำหรับคำแนะนำ บันทึกสะสมตามลำดับเป็น 70 ไบต์ นี่เป็นความพยายามครั้งแรกของฉันในการเล่นกอล์ฟใน R และคุณเห็นข้อผิดพลาดของ tyro มากมายที่ฉันน่าจะได้เห็น ครั้งต่อไปฉันจะรู้ดีกว่า
— CCB60

3

TI-BASIC, 218 140 137 ไบต์

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

prgmHACKER (138 ไบต์, 86 โทเค็น):

{0,1,2,1,2}→L1
{0,0,0,2,1}→L2
.3→R
For(I,0,5
L₁(I)+.5→A
L₂(I)+.5→B
For(N,0,R,dX
√(R²-N²
Line(A+N,B-Ans,A+N,B+Ans,BLACK
Line(A-N,B-Ans,A-N,B+Ans,BLACK
End
End

เพื่อการแสดงผลที่เหมาะสมโปรแกรมนี้ต้องการ Xmin = Ymin = 0, Xmax = Ymax = 3, Xscl = Yscl = 1 dX จำเป็นต้องตั้งค่าอย่างเหมาะสมเช่นกัน แต่เครื่องคิดเลขทำเพื่อคุณเมื่อคุณตั้งค่าตัวแปรหน้าต่างอื่น ๆ ฉันไม่เห็นว่าตัวแปรเหล่านี้ใช้พื้นที่เท่าใดใน RAM

นอกจากนี้การตั้งค่ารูปแบบควรเป็น {RectGC, CoordOff, GridLine, GridColor: MEDGRAY, แกน: ปิด, ExprOff, BorderColor: 1, พื้นหลัง: ปิด} แต่สิ่งเหล่านี้เป็นค่าที่สลับกันและไม่ใช้พื้นที่เพิ่มเติมใด ๆ


การกอล์ฟลงรายการคุณสามารถแสดงเหล่านี้{0,1,2,1,2}และ{0,0,0,2,1}จากนั้นเพิ่ม0.5แต่ละรายการ
— wizzwizz4

พยายาม แต่ไม่ได้เปลี่ยนปริมาณของ RAM ที่ใช้โดยรายการ อย่างไรก็ตามคุณให้ความคิดกับฉันในการกำจัดรายการใน RAM และกำหนดมันเมื่อโปรแกรมทำงานซึ่งช่วยประหยัด 78 ไบต์ใน RAM
— latias1290

สั่งคนกอล์ฟ! เปลี่ยนL1และL2ไปที่L₁และL₂เนื่องจากคุณใช้งานแล้ว ฉันคิดว่าคุณสามารถลบ}และL₁(I)+.5→A=> .5+L₁(Iและ=>L₂(I)+.5→B .5+L₂(I→B
— Zacharý

3

R, 119 114 111 ไบต์

(ไปที่@JayCeเพื่อช่วยฉัน 3 ไบต์)

ไม่สั้นกว่าโซลูชัน R อื่น ๆแต่มีวิธีที่แตกต่างอย่างสิ้นเชิง:

layout(matrix(c(1,9,2:8),3,,T))
par(mar=0*1:4)
for(i in 1:9){frame();if(i>4)points(.5,.5,,19,cex=29);box(fg=8)}

ใช้เลย์เอาต์ที่มี 4 พล็อตแรกเป็นเซลล์ว่างและอีก 5 อันมีจุดใน

เครื่องร่อน


ฉันจะทำให้สั้นกว่าโซลูชันอื่นโดยใช้อาร์กิวเมนต์ตำแหน่ง: ที่นี่
— JayCe

@ JayCe แน่นอนขอบคุณ!
— plannapus

3

Excel VBA ขนาด 180 ไบต์

VBE ที่ไม่ระบุชื่อฟังก์ชั่นหน้าต่างทันทีที่ไม่รับอินพุตและเอาต์พุตไปยังวัตถุแผ่นงานเริ่มต้น ( Sheet1)

Cells.RowHeight=48:Cells.Interior.Color=-1:[B2:D4].Borders.Color=7434613:For Each s In[{21,32,13,23,33}]:Sheet1.Shapes.AddShape(9,48*(s\10)+4,Mid(s,2)*48+4,40,40).ShapeStyle=8:Next

แสดงความคิดเห็นรุ่น

Cells.RowHeight=48                      ''  Make the Cells square
Cells.Interior.Color=-1                 ''  Remove the default grid
[B2:D4].Borders.Color=7434613           ''  Create the 3x3 gray grid at range `B2:D4`
For Each s In [{21,32,13,23,33}]        ''  Assign and iterate over a list of where
                                        ''  to place the dots; This list is a range that 
                                        ''  is coerced into a numeric array

    Sheet1.Shapes.AddShape(         _   ''  Add a shape to the Sheet1 object
                9,                  _   ''  An Oval (msoShapeOval)
                48*(s\10)+4,        _   ''  At the calculated value from the left
                Mid(s,2)*48+4,      _   ''  At the calculated value from the top
                40,                 _   ''  that is 40 units wide
                40                  _   ''  and is 40 units tall
                ).ShapeStyle=8          ''  and is black filled with a black outline

Next                                    ''  repeat to end of list

เอาท์พุต

โลโก้ Hacker

-6 ไบต์สำหรับการใช้[{21,32,13,23,33}]เกินSplit("21 32 13 23 33")

-2 ไบต์สำหรับการใช้Mid(s,2)เกินRight(s,1)

-3 ไบต์สำหรับการใช้(s\10)เกินLeft(s,1)


2

อ็อกเทฟ107 94 103 ไบต์

scatter([1:3,3,2],[1,1,1:3],1e5,zeros(5,3),'.');axis off;a=[1,7]/2;for i=.5:3.5;line(a,i);line(i,a);end

หรือ

plot([1:3,3,2],[1,1,1:3],'k.','markersize',250);axis off;a=[1,7]/2;for i=.5:3.5;line(a,i);line(i,a);end

ทั้งสองโซลูชั่นมีขนาด 103 ไบต์


2
ฉันเชื่อว่าจุดต้องเป็นสีดำ
— TheLethalCoder

matlab ที่น่าสนใจน่าสนใจแปลว่าเซนต์คิตส์และเนวิสเมื่อเทียบกับการออกอากาศ ดังนั้นแทนที่จะline([x1,x2],y)ต้องทำline([x1,x2],[y,y])
— Tasos Papastylianou

2

Apple Swift (iOS - CoreGraphics / QuartzCore) - 832 Bytes

ฉันวาดรูปทั้งหมดโดยใช้ควอตซ์สำหรับอุปกรณ์ Apple iOS โชคไม่ดีที่นี่ไม่ใช่ภาษาที่มีขนาดโดยเฉพาะอย่างยิ่งดังนั้นผลลัพธ์จึงค่อนข้างใหญ่ แต่นี่ก็เล็กมากเท่าที่ฉันจะได้รับ

UIGraphicsBeginImageContext(CGSize(width:60,height:60));let c=UIGraphicsGetCurrentContext()!;UIColor.lightGray.setStroke();c.addRect(CGRect(x:0,y:0,width:60,height:60));c.move(to: CGPoint(x:20,y:0));c.addLine(to: CGPoint(x:20,y:60));c.move(to: CGPoint(x:40,y:0));c.addLine(to: CGPoint(x:40,y:60));c.move(to: CGPoint(x:0,y:20));c.addLine(to: CGPoint(x:60,y:20));c.move(to: CGPoint(x:0,y:40));c.addLine(to: CGPoint(x:60, y:40));c.strokePath();UIColor.black.setFill();c.addEllipse(in:CGRect(x:22,y:2,width:16,height:16));c.addEllipse(in:CGRect(x:42,y:22,width:16,height:16));c.addEllipse(in:CGRect(x:2,y:42,width:16,height:16));c.addEllipse(in:CGRect(x:22,y:42,width:16,height:16));c.addEllipse(in:CGRect(x:42,y:42,width:16,height:16));c.fillPath();let i=UIGraphicsGetImageFromCurrentImageContext();sub.addSubview(UIImageView(image:i))

รุ่นที่อ่านได้มากขึ้นสำหรับทุกคนที่สนใจ:

    UIGraphicsBeginImageContext(CGSize(width: 60, height: 60))
    let c = UIGraphicsGetCurrentContext()!

    UIColor.lightGray.setStroke()
    c.addRect(CGRect(x: 0, y: 0, width: 60, height: 60))
    c.move(to: CGPoint(x: 20, y: 0))
    c.addLine(to: CGPoint(x: 20, y: 60))
    c.move(to: CGPoint(x: 40, y: 0))
    c.addLine(to: CGPoint(x: 40, y: 60))
    c.move(to: CGPoint(x: 0, y: 20))
    c.addLine(to: CGPoint(x: 60, y: 20))
    c.move(to: CGPoint(x: 0, y: 40))
    c.addLine(to: CGPoint(x: 60, y: 40))
    c.strokePath()

    UIColor.black.setFill()
    c.addEllipse(in: CGRect(x: 22, y: 2, width: 16, height: 16))
    c.addEllipse(in: CGRect(x: 42, y: 22, width: 16, height: 16))
    c.addEllipse(in: CGRect(x: 2, y: 42, width: 16, height: 16))
    c.addEllipse(in: CGRect(x: 22, y: 42, width: 16, height: 16))
    c.addEllipse(in: CGRect(x: 42, y: 42, width: 16, height: 16))
    c.fillPath()

    let i = UIGraphicsGetImageFromCurrentImageContext()
    sub.addSubview(UIImageView(image: i))

นี่คือผลลัพธ์ที่ผลิตใน iOS Simulator: เอาท์พุต


2

ทับทิมกับรองเท้า 118 ตัวอักษร

Shoes.app{9.times{|i|
stroke gray
fill white
rect x=i%3*w=10,y=i/3*w,w,w
stroke fill black
oval x+2,y+2,7if 482[i]>0}}

บิตตรวจสอบที่ยืมมาจากRJHunter 's ความคิดเห็นในวันที่มาร์คโทมัส ' s วิธีการแก้ปัญหาทับทิม

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

ร่อนวาดด้วยทับทิมกับรองเท้า


2

SVG + HTML, 146 138 135 133 ไบต์

<svg>
<path fill=none stroke=#ccc d=m.5.5h30v30h-30zh10v30h10v-30zv10h30v10h-30 />
<path d=m11,1h9v9m1,1h9v9m-29,1h9v9m1-9h9v9m1-9h9v9>

ขอบคุณที่ตัวแยกวิเคราะห์ HTML แบบผ่อนปรนการxmlns="http://www.w3.org/2000/svg"ประกาศสามารถละเว้นได้รวมถึงการเสนอราคาแอตทริบิวต์และแท็กปิด รุ่นนี้แก้ไขปัญหาบางประการของโซลูชัน HTML อื่น ๆ :

  • รับประกัน "จุด" เพื่อเติมเต็มอย่างน้อย 40% ของเซลล์ (§1)
  • มันไม่ได้ใช้กราฟิกภายนอกเช่นตัวอักษรร่ายมนตร์ (§2, §6)
  • ตารางเป็นรูปสี่เหลี่ยมจัตุรัสที่สมบูรณ์แบบ (§5)

แก้ไขโกน 8 ไบต์โดยการใช้ประโยชน์จากความจริงที่ว่า subpaths ไม่จำเป็นต้องถูกปิดเพื่อที่จะเต็มไป

แก้ไขตามไวยากรณ์ svgไม่จำเป็นต้องแยกตัวเลขที่ไม่ใช่ตัวเลขด้วยเครื่องหมายจุลภาค ( .5,.5) ฉันยังละทิ้งการเติมที่ชัดเจนเพื่อที่ฉันจะสามารถเปลี่ยนทิศทางการวาดของหนึ่งบรรทัดจากเชิงลบเป็นบวกและประหยัดเส้นประ และท้ายที่สุดฉันปรับการนับเพื่อไม่รวมบรรทัดใหม่ต่อท้ายขออภัยสำหรับความผิดพลาดหน้าใหม่นี้

แก้ไขการเรียนรู้จากคำตอบอื่นบน codegolf ผมได้เปลี่ยนครั้งสุดท้ายกับ9 /> 9>วิธีนี้ใช้ได้ดีในเบราว์เซอร์ที่ผ่านการทดสอบทั้งหมด


2

Python 3 + PyGame, 238 ไบต์

from pygame import*
d=display
s=d.set_mode([55]*2)
s.fill([255]*3)
f=lambda*a:draw.line(s,[128]*3,*a)
for x in[0,18,36,54]:
 f((x,0),(x,55));f((0,x),(55,x))
for x,y in zip([3,5,1,3,5],[1,3,5,5,5]):draw.circle(s,[0]*3,(x*9,y*9),7)
d.flip()

ค่าคงที่ตามอำเภอใจดูเหมือนจะมาจากฉันพยายามที่จะทำให้ภาพมีขนาดใหญ่ที่สุดเท่าที่จะทำได้โดยไม่ต้องเสียสละไบต์

ด้วยอักขระที่ไม่พิมพ์ 229 ไบต์

from pygame import*
d=display
s=d.set_mode([55]*2)
s.fill([255]*3)
f=lambda*a:draw.line(s,[128]*3,*a)
for x in b'\0␒$6':
 f((x,0),(x,55));f((0,x),(55,x))
for x,y in zip(b'␃␅␁␃␅',b'␁␃␅␅␅'):draw.circle(s,[0]*3,(x*9,y*9),7)
d.flip()

ฉันแทนที่รายการด้วยตัวอักษรไบต์ซึ่งบันทึกอักขระจำนวนมาก แต่อักขระที่ไม่ใช่การพิมพ์ไม่สามารถแสดงได้อย่างถูกต้องที่นี่ ฉันแทนที่อักขระที่ไม่พิมพ์ด้วยกราฟิกเทียบเท่า U + 2400-U + 2421 สำหรับการแสดงผล

ภาพหน้าจอ

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