แสดงโลโก้ 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.