วาดธงประจำชาติของไอซ์แลนด์


107

ในปีนี้ยูฟ่ายูโร 2016 ที่มีมากกว่าและนอกเหนือจากคู่ของพาดหัวข่าวเชิงลบได้มีความประหลาดใจที่ดีมากเช่นกัน - ทีมฟุตบอลชาติไอซ์แลนด์ มาวาดธงประจำชาติกันเถอะ

อินพุต

เห็นได้ชัดว่าความท้าทายนี้ไม่มีข้อมูล

เอาท์พุต

  • วาดธงของไอซ์แลนด์ในรูปแบบของภาพที่ใช้บังคับในอย่างน้อย 100 x 72 พิกเซลหรือ25 x 18 ตัวอักษร
  • บันทึกผลลัพธ์ไปยังไฟล์หรือนำเสนอทันที - รูปแบบตัวอย่างคือ: รูปภาพเช่น png, jpg เป็นต้นกราฟิกแบบเวกเตอร์วาดบนผืนผ้าใบ HTML หรือแม้แต่ใช้อักขระที่ไม่ใช่ช่องว่างสำหรับการสร้างภาพ
  • ใช้สีเหล่านี้ : สีฟ้า : #0048e0, สีขาว : #ffffffและสีแดง#d72828 :
  • ถ้าภาษาของคุณไม่สนับสนุนค่าสีที่เฉพาะเจาะจงให้ใช้ค่ามาตรฐานสำหรับสีแดง , สีฟ้าและสีขาวจากรหัสสี ANSI
  • วาดธงด้วยสัดส่วนที่ถูกต้องดังแสดงในรูปด้านล่าง:

สำเร็จรูป

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

ลีดเดอร์บอร์ด

ถ้าคุณไม่สามารถหาคำตอบได้จัดรูปแบบภาษาและไบต์นับของคุณตามที่อธิบายไว้ในลีดเดอร์ของ " ข้อมูลมาตรา "


ความท้าทายนี้เป็นแรงบันดาลใจวาดธงประจำชาติของฝรั่งเศส


20
สิ่งที่ท้าทายยิ่งกว่านั้นคือธงประจำชาติของฉันซึ่งทำได้ดีกว่าที่คาดไว้ในยูโรในปีนี้ - เวลส์ :-)
Gareth

24
@ กาเร็ ธ ฉันรอคอยที่จะสเปคกันน้ำของมังกร ;)
Martin Ender

4
ดูเหมือนว่าสีน้ำเงินในภาพด้านบนจะมืดกว่าของจริง#0048e0
Luis Mendo

10
@MartinEnder การสลักบนแท็บเล็ตเป็นหินหรือไม่ มันกันน้ำได้
immibis

5
@MartinEnder Mathematica จะมีหนึ่งรายการ
gcampbell

คำตอบ:


259

Python 3, 190 172 171 169 167 160 159 147 143 ไบต์

การใช้ PIL เวอร์ชัน 1.1.7 ซึ่งมีวิธีออฟเซ็ตที่เลิกใช้แล้ว แต่ไม่ได้ลบออก

from PIL.ImageDraw import*
i=Image.new('RGB',(25,18),'#d72828')
Draw(i).rectangle((1,1,23,16),'#0048e0',~0)
i.offset(9).resize((100,72)).show()

สร้างภาพขนาด 25 * 18 พิกเซลที่เต็มไปด้วยสีแดงจากนั้นจะวาดสี่เหลี่ยมขนาด 23 * 16 พิกเซลที่เต็มไปด้วยสีน้ำเงินและมีโครงร่างสีขาวหนึ่งพิกเซล จากนั้นจะชดเชยภาพด้วย (9,9) ที่ล้อมรอบขอบภาพแล้วปรับขนาดเป็น 100 * 72 จากนั้นแสดงภาพในหน้าต่าง

ตั้งค่าสถานะก่อนหักล้าง:

ป้อนคำอธิบายรูปภาพที่นี่ (ปรับขนาดเป็น 100 * 72)

เอาท์พุท:

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

ภาพเคลื่อนไหว:

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

แก้ไข 1: Golfed 18 ไบต์โดยการลบการครอบตัดโดยเริ่มสร้างภาพขนาด 25 * 18

Edit2: แข็งแรงเล่นกอล์ฟ 1 ไบต์โดยใช้แทน#fffwhite

แก้ไข 3: Golfed 2 ไบต์โดยการนำเข้าเป็นนามแฝง

แก้ไข 4: Golfed 2 ไบต์โดยลบอาร์กิวเมนต์ที่สองของวิธีการชดเชย

แก้ไข 5: เล่นกอล์ฟขนาด 7 ไบต์โดยแสดงภาพแทนการบันทึก (ต้องการติดตั้ง imagemagick บน Unix)

แก้ไข 6: ตีกอล์ฟ 1 ไบต์โดยเขียนการนำเข้าใหม่

แก้ไข 7: Golfed 12 ไบต์โดยเขียนการนำเข้าอีกครั้ง (ขอบคุณโดย @Dennis)

แก้ไข 8: เพิ่มภาพเคลื่อนไหว

แก้ไข 9: อัปเดตแอนิเมชันเนื่องจากไม่มีเฟรมล่าสุด

แก้ไข 10: Golfed 4 ไบต์ขอบคุณ Albert Renshaw!


42
คำตอบที่ดีจริงๆ
แทรกชื่อที่นี่

17
นี่คืออัจฉริยะ! (ไวกิ้ง) ออกไปหาคุณ
โยอานน์

25
ว้าวมันหายากที่ฉันจะลงคะแนนในคำถามประเภท code-golf ใน SO แต่มันก็ยิ่งยากที่ฉันจะเข้าร่วมชุมชนใหม่ทั้งหมดเพื่อทำเช่นนั้น แฮ็คออฟเซ็ตนี้ชวนให้นึกถึงสิ่งที่เราเคยทำก่อนที่คุณจะวิปเปอร์สแน็ปเปอร์ได้หน่วยความจำของคุณมาทำงานด้วย งานที่ยอดเยี่ยม

5
อัจฉริยะจริงๆ! 💡
InuYaksa

3
ถ้าคุณทำfrom PIL.ImageDraw import*, Iกลายเป็นImageและD.Drawจะกลายเป็นDrawประหยัด 11 ไบต์
Dennis

117

รหัสเครื่องจริงโหมด x86 สำหรับ DOS COM, 69 65 63 62 ไบต์

ผลิตธงไอซ์แลนด์

รหัสมีวัตถุประสงค์เพื่อดำเนินการเป็น DOS COM ที่ปฏิบัติการได้

ขอขอบคุณเป็นพิเศษ

  • ปานกลางบันทึกสี่ไบต์
  • medenบันทึกสองไบต์และลบกะพริบ

รหัสเครื่อง (เป็นไบต์ฐานสิบหก)

68 00 A0 07 B8 13 00 CD      10 BE 23 01 AD 91 AD 91 
AC E3 FE 60 30 ED F3 AA      61 81 C7 40 01 FE CD 75 
F2 EB E9 FA B4 00 00 09      28 B4 46 00 0F FA 28 80 
57 0F 14 B4 0C 50 00 FA      14 0C 00 64 00 00

แหล่งประกอบ

แหล่งที่มาสำหรับ NASM

ORG 100h

push 0a000h
pop es

mov ax, 13h
int 10h

mov si, data


_draw:
 lodsw
 xchg ax, cx

 lodsw
 xchg ax, di

 lodsb

_cycle:
 jcxz _cycle

 ;al = color
 ;cl = col
 ;ch = row

rect:
 pusha
 xor ch, ch
 rep stosb
 popa
 add di, 320
 dec ch
 jnz SHORT rect

jmp SHORT _draw


data: 

        db 250d
        db 180d
        dw 0000h
        db 09h


        db 40d
        db 180d
        dw 0070d
        db 0fh


        db 250d
        db 40d
        dw 22400d
        db 0fh

        db 20d
        db 180d
        dw 80d
        db 0ch


        db 250
        db 20
        dw 25600d 
        db 0ch


        dw 0000h

13
นี่เป็นคำตอบแรกสุดยอดจริงๆ! ยินดีต้อนรับ!
AdmBorkBork

5
คุณสามารถบันทึก 2 ไบต์โดยแทนที่ 'mov' ด้วย 'xchg' ที่ 10h & 13h และอีก 2 ไบต์โดยแทนที่ 'ทดสอบ cx, cx / jz' ด้วย 'jcxz' ที่ 16h
meden

3
คิดเพิ่มเติม เนื่องจากโปรแกรมทำงานในวง จำกัด _loop: jcxz _loopคุณสามารถหลีกเลี่ยงริบหรี่เพียงแค่ทำให้วงสั้น: นอกจากนี้คุณยังสามารถตัด 2 ไบต์จากจุดสิ้นสุดของกลุ่มข้อมูลถ้าคุณเปลี่ยนลำดับการโหลดของcxและdi
meden

ขอบคุณอีกครั้ง @meden การกะพริบนั้นไม่จำเป็นเลย :) ฉันลบmov bx, 320และย้าย320ไปadd di, 320(ก่อนหน้านี้add di, bx)
Margaret Bloom

ยิ่งใหญ่ ตอนนี้คุณมีความได้เปรียบเหนือทุกคำตอบของรหัสเครื่องในการท้าทายนี้ เพียงเพื่อความถูกต้อง: มันจะดีกว่าที่จะย้ายjcxz _cycleทันทีหลังจากxchg ax,cxนั้นมันจะไม่โหลดไบต์ผ่านจุดสิ้นสุดของข้อมูล ;dx = rowและมีความคิดเห็นบางส่วนที่ทำให้เข้าใจผิดในแหล่งที่มา: dxไม่ได้ใช้ที่ใดก็ได้ในรหัส
meden

55

C, 194 191 183 Bytes

#define C "\x1b["
#define A "@@@@@@"
y;f(){for(;y++<14;)printf(y>5&&y<10?y>6&&y<9?C"31m"A A A A"@\n":C"0m"A"@@"C"31m@@"C"0m"A A"@@@\n":C"34m"A"@"C"0m@"C"31m@@"C"0m@"C"34m"A A"@@\n");}

-3 เพิ่มหนึ่ง@ใน#define A
-8 เพิ่ม[บน#define C

การใช้

main(){f();}

เอาท์พุต

ภาพ

ที่ถูกต้องขึ้นอยู่กับความคิดเห็นนี้จาก OP

เอาท์พุทขนาดคู่ 204 ไบต์

#define C "\x1b["
#define B "████"
#define A B B B
y;f(){for(;y++<28;)printf(y>10&&y<19?y>12&&y<17?C"31m"A A A A"██\n":C"0m"A B C"31m"B C"0m"A A B"██\n":C"34m"A"██"C"0m██"C"31m"B C"0m██"C"34m"A A B"\n");}

ภาพที่ 2


22
upvote อันดับที่ 5 เรียกเครือข่ายตัวแทน +810 กว้าง ... (ใช่มันเป็นเว็บไซต์แรกที่ฉันไปถึงตัวแทน 200: D)
Giacomo Garabello

1
ผลลัพธ์ไม่จำเป็นต้องเป็น "หน่วยอย่างน้อย 100 x 72 ซึ่งหน่วยเป็นพิกเซลหรืออักขระ" หรือไม่? สิ่งนี้ไม่เป็นไปตามข้อกำหนดนี้ แต่ฉันคิดว่า OP ทำผิดพลาดเมื่อกำหนดคำนิยามนั้น
Kritzefitz

4
@ Kritzefitz เอาล่ะตัวละครใช้พิกเซลมาก ๆ ดังนั้นมันอาจจะเป็นพิกเซลแทนที่จะเป็นตัวละคร พบหลุม
Erik the Outgolfer

@GiacomoGarabello เว็บไซต์แรกในรูปที่คุณมี +150 คืออะไร? ฉันจำไอคอนไม่ได้

@LegoStormtroopr มันจ่ายต่อหนึ่งคลิก !! ดูที่โครงการ GitHub
Giacomo Garabello

31

Excel VBA, 254 228 153 ไบต์

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

แก้ไข 1: แทนที่ RGB ด้วยค่าที่ส่งคืนสำหรับสี -26 ไบต์

แก้ไข 2: พยายามเพิ่มคำแนะนำให้ได้มากที่สุด -75 ไบต์ ฉันไม่สามารถใช้&48e0เป็นสีและฉันไม่แน่ใจว่าทำไม ขอบคุณทุกคน

Sub e()
c "A1:CV72", rgbBlue
c "AC1:AR72", -1
c "A29:CV44", -1
c "AG1:AN72", 255
c "A33:CV40", 255
End Sub

Sub c(d, f)
Range(d).Interior.Color = f
End Sub

ภาพ: ธงไอซ์แลนด์


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

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

1
นอกจากนี้โค้ดที่แปลงเป็นพิกเซลดูเหมือนว่าคุณต้องใช้รหัสยากทั้งบางส่วนของความละเอียดหรือ PPI (ฉันไม่เข้าใจสูตรจริง ๆ ) ดังนั้นดูเหมือนว่ามันจะไม่ทำงานในอุปกรณ์ทั้งหมด
tjb1

2
และเพียงเพื่อความสมบูรณ์ (จะทำอย่างไรกับการตั้งค่าตารางเซลล์มากกว่าการแก้ปัญหาของตัวเอง) 0.2cmถ้าคุณสลับไปยังมุมมองเค้าโครงหน้าคุณสามารถตั้งค่าความสูงและความกว้างของเซลล์ให้เป็นค่าที่เฉพาะเจาะจงเช่น สิ่งนี้จะได้รับการดูแลรักษาเมื่อคุณเปลี่ยนกลับมาและไม่จำเป็นต้องลองใช้อัตราส่วน Excel ที่แปลกประหลาด :-) อย่างไรก็ตามถ้าคุณต้องการเทคนิค Excel ที่เจ๋งกว่านี้ลองดูวิดีโอ "You suck at Excel" ของ Joel Spolsky

3
ฉันคิดว่าช่องว่างพิเศษสามารถลบได้แม้ว่ามันจะถูกเพิ่มโดยอัตโนมัติในภายหลัง
Erik the Outgolfer

29

MATL , 57 56 52 49 48 ไบต์

7:g2IvtPvt!9Mh2$X>2YG[0E28]8*255/7B[43DD]51/v2ZG

สิ่งนี้จะสร้างรูปต่อไปนี้ (ทดสอบกับคอมไพเลอร์ที่ทำงานบน Matlab และ Octave)

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

แก้ไข: คุณสามารถทดลองที่MATL Online ได้! (คุณอาจต้องโหลดหน้าซ้ำหากไม่ได้ผลในตอนแรก)

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

7:g         % Range from 1 to 7 converted to logical: push array [1 1 1 1 1 1 1]
2           % Push 2
I           % Push 3
v           % Concatenate vertically into a 9×1 array
tPv         % Duplicate, flip vertically, concatenate. Gives a 18×1 array
t!          % Duplicate, transpose: 1×18 array
9M          % Push [1 1 1 1 1 1 1] again
h           % Concatenate horizontally: gives 1×25 array
2$X>        % Maximum of the two arrays, with broadcast. Gives a 18×25 array
            % with 1 for blue, 2 for white, 3 for red
2YG         % Show image with default colormap
[0E28]8*    % Push array [0 72 224] (blue)
255/        % Divide each entry by 255. Colors are normalized between 0 and 1
7B          % 7 converted into binary: push array [1 1 1] (white, normalized)
[43DD]51/   % Push array [215/255 40/255 40/255] (red, normalized)
v           % Concatenate vertically. Gives a 3×3 array
2ZG         % Use as colormap

26

CSS, 285 284 264 ไบต์

*,:before,:after{background:#fff;width:100;height:72}body{background:#0048e0;margin:0}:before,:after{content:"";position:fixed}:after{background:#d72828}html:before{top:28;height:16}body:before{left:28;width:16}html:after{top:32;height:8}body:after{left:32;width:8

บันทึกแล้ว 1 ไบต์ขอบคุณ @insertusernamehere

ที่บันทึกไว้ 20 ไบต์ขอบคุณที่ @ user2428118 โดยการลบทั้งหมดpxs โปรดทราบว่าการดำเนินการนี้ต้องใช้หน้าเพื่อแสดงผลในโหมด quirks ดังนั้นจึงไม่สามารถใช้งานได้ใน Stack Snippets

ฉันสามารถคัดลอกวิธี Python ของการตัดภาพรอบ ๆ ที่ offset แต่มันจะไม่น่าสนใจ

Ungolfed:

*, *::before, *::after {
  background: #fff;
  width: 100px;
  height: 72px;
}

body {
  background: #0048e0;
  margin: 0;
}

*::before, *::after {
  content: "";
  position: fixed;
}

*::after { background: #d72828 }

html::before { top: 28px; height: 16px }
body::before { left: 28px; width: 16px }
html::after { top: 32px; height: 8px }
body::after { left: 32px; width: 8px }

ใช้องค์ประกอบหลอก (องค์ประกอบที่ไม่ได้เขียนใน HTML) ::beforeและ::afterเพื่อสร้างบรรทัดบนธง เหตุผลที่ใช้งานได้โดยไม่มี HTML คือใน HTML5 <html>และ<body>องค์ประกอบเป็นตัวเลือกดังนั้นเบราว์เซอร์จะสร้างขึ้นโดยอัตโนมัติหากไม่มีอยู่

สนุกมาก:


2
คุณยังสามารถบันทึก1 ไบต์โดยการแทนที่ด้วยwhite #fff
แทรกชื่อที่นี่

@insertusername ที่นี่ขอบคุณ
gcampbell

1
หากคุณใช้ CSS ในโหมดนิสัยใจคอ (หน้าโดยไม่ต้องพิมพ์) คุณสามารถนำมันลงไปที่ 264 ไบต์โดยไม่ต้องใส่pxทุกที่
user2428118

@ user2428118 มีประโยชน์มากขึ้นเมื่อพิจารณาว่าไม่มี HTML ดังนั้นไม่<!doctype html>!
wizzwizz4

@ user2428118 ด้วยเหตุผลบางอย่างมันใช้ไม่ได้กับฉันในมือถือ Safari ฉันจะดูเมื่อฉันอยู่หน้าคอมพิวเตอร์
gcampbell

26

Bash + Imagemagick 7, 94 90 86 85 ไบต์

magick -size 84x56 xc:#0048e0 ${s=-splice 8x8}+28+28 -background \#d72828 $s+32+32 x:

บันทึกแล้ว 8 ไบต์ขอบคุณ @ manatwork และ 1 ไบต์ขอบคุณ @ GlennRanders-Pehrson


5
หากคุณระบุx:แทนชื่อไฟล์เอาต์พุตconvertจะแสดงผลลัพธ์ในหน้าต่างซึ่งเป็นที่ยอมรับเช่นกัน \#d72828และมีความพอเพียงหนีคมไม่จำเป็นต้องพูด:
จัดการ

2
เรามักจะติดป้ายคำตอบเช่นทุบตี + ImageMagick บน bashด้านคุณสามารถบันทึกอีก 4 convert -size 84x56 xc:#0048e0 ${s=-splice 8x8}+28+28 -background \#d72828 $s+32+32 x:ตัวอักษร:
จัดการ

แค่คำถามโง่ ๆ คุณสามารถทำ${s=-splice 8x8}+56อะไรได้บ้าง
Erik the Outgolfer

@ EʀɪᴋᴛʜᴇGᴏʟғᴇʀ +56จะถือว่าเป็นไม่ได้+56+0 +28+28
bodqhrohro

2
คุณสามารถบันทึกไบต์อื่นโดยใช้ ImageMagick เวอร์ชันล่าสุด จากนั้นคำสั่งสามารถเป็น "magick" แทน "แปลง"
เกล็นแรนเดอร์ส - เพอร์สัน

20

ZX Spectrum BASIC, 210 141 92 ไบต์

1 LET n=-VAL "8.5": FOR y=n TO -n: FOR x=n TO VAL "16": LET p=VAL "271"(PI-(ABS x<SQR PI OR ABS y>SQR PI)-NOT INT ABS x*INT ABS y): PRINT PAPER p; BRIGHT p>PI;" ";: NEXT x: PRINT : NEXT y

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

SAVEขนาดที่กำหนดเป็นขนาดของโปรแกรมขั้นพื้นฐานในเทปผ่านทาง เครดิตการเล่นกอล์ฟมากมายสำหรับสมาชิกของกลุ่มZX Spectrum บน Facebookโดยเฉพาะ @impomatic และ Johan Koelman


ดูสิ่งเหล่านั้นPAPERและBRIGHTนำความทรงจำที่ดีมากมาย :-)
Luis Mendo

มีข้อมูลใดบ้างเกี่ยวกับหน่วยความจำของโปรแกรม ZX Spectrum BASIC ที่ต้องใช้? ฉันคิดว่ามันเป็นภาษา "โทเค็น" เช่นที่ฉันคาดไว้FORและNOTอื่น ๆ ใช้เวลาเพียง 1 หรือ 2 ไบต์ต่อครั้ง
Luis Mendo

1
@ LuisMendo ใช่มันเป็นโทเค็น - FORคือหนึ่งไบต์ที่แม่นยำ อย่างไรก็ตามตัวเลขจะถูก "ป้องกันโทเค็น" ซึ่งจะถูกเก็บไว้ทั้งในรูปแบบข้อความและไบนารีและใช้เวลา 5 ไบต์มากกว่าที่คุณคาดหวังดังนั้นNOT PIแทนที่จะเป็นศูนย์และไม่ชอบ
Philip Kendall

132 ไบต์โดยการลบ AT และปรับการทดสอบขอบเขตtwitter.com/john_metcalf/status/752760203007791105
impomatic

1
122 ไบต์พร้อมการปรับแต่งเพิ่มเติมบางอย่างtwitter.com/john_metcalf/status/752783690179211264
impomatic

15

ชุดประกอบ ZX Spectrum Z80 ขนาด 65 ไบต์

    ld hl,22528
    ld b,7
    ld de,120*256+8 ; white, blue
    ld a,16         ; red

; create the first row

blueleft:
    ld (hl),e
    inc hl
    djnz blueleft

    ld (hl),d
    inc hl
    ld (hl),a
    inc hl
    ld (hl),a
    inc hl
    ld (hl),d
    inc hl

    ld b,14
blueright:
    ld (hl),e
    inc hl
    djnz blueright

; copy the first row to the next 17 rows

    ld l,b
    ld de,22528+32
    ld bc,17*32
    ldir

; add the horizontal stripe

    ld hl,22528+7*32
    dec d
    ld e,b
    ld c,2
midrep:
    ld b,25
midstripe:
    cp (hl)
    jr z,red
    ld (hl),120
red:
    ld (de),a
    inc hl
    inc de
    djnz midstripe

    ld hl,22528+10*32
    ld e,9*32
    dec c
    jr nz,midrep
    ret

ธงไอซ์แลนด์


14

Minecraft 1.10.2, 734 ตัวละคร

อาจเป็นตัวอักษร 734 ตัว แต่มันเป็นสิ่งเดียวที่ทำจากขนสัตว์จริง!

summon FallingSand ~ ~1 ~ {Block:log,Time:1,Passengers:[{id:FallingSand,Block:redstone_block,Time:1,Passengers:[{id:FallingSand,Block:activator_rail,Time:1,Passengers:[{id:MinecartCommandBlock,Command:"fill 0 ~ 0 100 ~ 72 wool 11"},{id:MinecartCommandBlock,Command:"fill 28 ~ 0 44 ~ 72 wool"},{id:MinecartCommandBlock,Command:"fill 0 ~ 28 100 ~ 44 wool"},{id:MinecartCommandBlock,Command:"fill 32 ~ 0 40 ~ 72 wool 14"},{id:MinecartCommandBlock,Command:"fill 0 ~ 32 100 ~ 40 wool 14"},{id:MinecartCommandBlock,Command:setblock ~ ~ ~1 command_block 0 replace {Command:fill ~ ~-3 ~-1 ~ ~ ~ air}},{id:MinecartCommandBlock,Command:setblock ~ ~-1 ~1 redstone_block},{id:MinecartCommandBlock,Command:kill @e[type=MinecartCommandBlock]}]}]}]}

ไปที่ -5x -5z ไปที่บล็อกคำสั่ง Impulse ตั้งค่าเป็น "Always Active" แล้วกด Done

ตั้งค่าสถานะตั้งแต่ 0, 0 ถึง 100, 72; และเป็น 3 บล็อกเหนือบล็อกคำสั่งตามที่วางไว้ มันมีเงาขนาดใหญ่พอสมควรและสัตว์ประหลาดจะวางไข่ใต้มัน อย่างไรก็ตามนี่เป็นสิ่งที่ถูกต้องสำหรับประเทศไอซ์แลนด์หรือไม่

คำเตือนที่เป็นธรรม - จะ / ฆ่าทุกคนMinecartCommandBlockในโลกเพื่อผลประโยชน์ของการประหยัดตัวละครสี่ตัว อย่าเรียกใช้สิ่งนี้ในโลกที่คุณยึดมั่นมากเกินไป

ธง

ใช้combiner คำสั่งของ MrGarrettoและปรับแต่งเอาต์พุตเล็กน้อย (808 -> 734)


1
"ไม่ว่าจะถูกต้องหรือไม่สำหรับประเทศไอซ์แลนด์ ... "
Jordan

2
คุณไม่สามารถใช้ kill @e โดยไม่มีอาร์กิวเมนต์ตัวเลือกเป้าหมายหรือไม่ มันจะฆ่าผู้เล่น แต่เดี๋ยวก่อนธงจะยังอยู่ที่นั่น
Kuilin Li

11

โลโก้, 216 188 ไบต์

การใช้การดำเนินงานของ Calormen.com สำหรับคุณที่พิถีพิถันการใช้งานจะลดรอยหยักซึ่งขนขอบเล็กน้อย แต่ฉันเสีย 3 ไบต์เพื่อซ่อนเต่าดังนั้นมันน่าจะชดเชยได้

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

สร้างภาพหน้าจอของธง

TO X :C :S
setpc :C
setpensize :S
home
pd
setx 100
setx 36
bk 36
fd 72
pu
END
setpc "#48e0
fill
X 7 16
X "#d72828 8
fd 4
pe
pd
setx -4
bk 80
setx 104
fd 80
setx 0
ht

ฉันไม่รู้ว่ามีโลโก้เวอร์ชันที่พูดภาษาอังกฤษ!
Vincent

1
อย่างแน่นอน ฉันคิดว่าฉันเห็นครั้งแรกเมื่อ 30 กว่าปีที่แล้วบน Apple IIe ฉันยังมีในคอมพิวเตอร์สี TRS-80 ของฉัน เป็นครั้งแรกที่ฉันได้ลิ้มรสการใช้มุมในเรขาคณิตหลายปีก่อนที่ฉันจะเรียนรู้อย่างเป็นทางการในโรงเรียน
GuitarPicker

ทำไมเส้นขอบสีขาวล้อมรอบ
โซโลมอน Ucko

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

10

Java 8, 449 447 ไบต์:

import java.awt.*;import javax.swing.*;class A extends JPanel{public void paintComponent(Graphics G){super.paintComponent(G);G.setColor(new Color(0,72,224));G.fillRect(0,0,175,126);G.setColor(Color.WHITE);G.fillRect(49,0,28,126);G.fillRect(0,49,175,28);G.setColor(new Color(215,40,40));G.fillRect(56,0,14,126);G.fillRect(0,56,175,14);}public static void main(String[]a){JFrame J=new JFrame();J.add(new A());J.setSize(175,147);J.setVisible(true);}}

คำตอบที่ช้ามากและคำตอบที่ยาวที่สุดที่นี่ ใช้java.awt.Graphicsคลาสในการสร้างและเปิดหน้าต่างที่มีธงอยู่ในนั้นซึ่งถูกสร้างขึ้นโดยทั้งหมด 5 รูปสี่เหลี่ยมประกอบด้วย 1 สำหรับบล็อกสีฟ้า, 2 สำหรับแถบสีขาวและ 2 สำหรับแถบสีแดง ใช้ 7 พิกเซล: อัตราส่วน 1 หน่วย กล่าวอีกนัยหนึ่งสำหรับแต่ละหน่วยจะใช้ 7 พิกเซล นี่คือรูปภาพของผลลัพธ์บน Macintosh พร้อม OS X 10.11:

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

ตอนนี้เพื่อหาวิธีในการเล่นกอล์ฟนี้อีกเล็กน้อย ...


ลองเอาชนะแทนpaint paintComponentพิจารณาใช้คลาสที่ไม่ระบุชื่อสำหรับ JPanel พิจารณาเพียงแค่ใช้ BufferedImage และส่งออกไปยังไฟล์
Justin

@ จัสตินจริงๆแล้วฉันใช้Blueเป็นสี่เหลี่ยมขนาดใหญ่ 1 อันสำหรับพื้นหลังแล้ว ฉันเพิ่งสับสนระหว่างสิ่งนี้กับอีกเวอร์ชั่นที่ฉันสร้างใน Python ขอบคุณสำหรับเคล็ดลับอื่น ๆ ! :)
R. Kap

บางคำแนะนำเพิ่มเติม: อย่าใช้เพียงแทนที่JPanel JFrameถ้าคุณทำเช่นนี้และเพียงแค่แทนที่paintคุณไม่จำเป็นต้องสวิงเพียง AWT จึงเปลี่ยนJFrameไปFrameและลบการนำเข้า super.paintอย่าเรียก จัดเรียงวิธีหลัก ย้ายsetSizeเข้าสู่paintวิธีการของเราFrameลบตัวแปรJและผนวก.setVisible(true)เข้ากับส่วนท้ายของคลาสที่ไม่ระบุชื่อ สุดท้ายเปลี่ยน.setVisible(true)เป็นshow()ใช่เป็นวิธีที่เลิกใช้แล้ว แต่สั้นกว่า ใช้interfaceเพื่อลบออกpublicจากวิธีการหลัก
Justin

ผลสุดท้ายที่ 338 chars (ต้องเปลี่ยนความสูงเช่นกันเนื่องจากมันเป็นเฟรม):import java.awt.*;interface A{static void main(String[]a){new Frame(){public void paint(Graphics G){setSize(175,119);G.setColor(new Color(0,72,224));G.fillRect(0,0,175,126);G.setColor(Color.WHITE);G.fillRect(49,0,28,126);G.fillRect(0,49,175,28);G.setColor(new Color(215,40,40));G.fillRect(56,0,14,126);G.fillRect(0,56,175,14);}}.show();}}
Justin

1
ดียิ่งขึ้น: อย่าทาสีสี่เหลี่ยมมุมฉากเพียงแค่เรียกsetBackground(color)(ขนาดก็ยังผิด) ตอนนี้ที่ 317:import java.awt.*;interface A{static void main(String[]a){new Frame(){public void paint(Graphics G){setSize(175,126);setBackground(new Color(0,72,224));G.setColor(Color.WHITE);G.fillRect(49,0,28,126);G.fillRect(0,49,175,28);G.setColor(new Color(215,40,40));G.fillRect(56,0,14,126);G.fillRect(0,56,175,14);}}.show();}}
Justin

10

R, 197 195 187 bytes

w="white";r="#d72828";png(w=100,h=72);par(mar=rep(0,4),bg="#0048e0",xaxs="i",yaxs="i");frame();rect(c(0,7,0,8)/25,c(7,0,8,0)/18,c(1,.44,1,.4),c(11/18,1,5/9,1),c=c(w,w,r,r),b=NA);dev.off()

เยื้องกับบรรทัดใหม่และคำอธิบาย:

w="white"
r="#d72828"
png(w=100,h=72) #Creates in working directory a png called Rplot001.png 
                #with a width and a height of 120 and 72 pixels respectively.
par(mar=rep(0,4), #No margin around the plot
    bg="#0048e0", #Blue background
    xaxs="i",yaxs="i") #Axes fits range exactly
frame() #Creates an empty plot which range is xlim=c(0,1) & ylim=c(0,1)
rect(c(0,7,0,8)/25, #Because rect is vectorized
     c(7,0,8,0)/18,
     c(1,.44,1,.4), #i. e. c(25,11,25,10)/25
     c(11/18,1,5/9,1), #i. e. c(11,18,10,18)/18
     c=c(w,w,r,r), # c= is the same as col=, thanks to argument name completion
     b=NA)#No borders
dev.off()

ธงเกาะ

แก้ไข : ปรากฎframe()ตรงกันข้ามplot()หรือplot.new()ไม่ตามค่าเริ่มต้นให้เพิ่มเส้นขอบลงในพล็อตความหมายbty="n"ไม่จำเป็นที่นี่


9

Atari 8-bit executable, 123 ไบต์

รายการ "เพื่อความสนุก" อีกรายการหนึ่งโปรแกรมนี้ตั้งใจให้รันบนคอมพิวเตอร์ 8 บิตหรือโปรแกรมจำลอง ตัวอย่างเช่นหากต้องการโหลดโปรแกรมบน Atari800 ให้เรียกใช้:

atari800 iceland.xex

รหัสเครื่อง (เป็นไบต์ฐานสิบหก)

ff ff 00 06 74 06 a9 1b 8d 30 02 a9 06 8d 31 02
a9 44 8d c4 02 a9 0f 8d c5 02 a9 84 8d c6 02 d0
fe 70 70 70 48 57 06 48 57 06 48 57 06 48 57 06
48 57 06 48 57 06 48 57 06 48 61 06 48 6b 06 48
6b 06 48 61 06 48 57 06 48 57 06 48 57 06 48 57
06 48 57 06 48 57 06 48 57 06 41 1b 06 ff fe 5b
ff ff ff c0 00 00 00 aa aa 5a aa aa aa 80 00 00
00 55 55 55 55 55 55 40 00 00 00

รหัสแหล่งประกอบ (สามารถรวบรวมกับMADS ):

        org $0600
        lda <dlist
        sta $0230
        lda >dlist
        sta $0231
        lda #$44
        sta $02c4
        lda #$0f
        sta $02c5
        lda #$84
        sta $02c6
loop    bne loop
dlist   dta $70, $70, $70
        dta $48, a(line1), $48, a(line1), $48, a(line1), $48, a(line1), $48, a(line1), $48, a(line1), $48, a(line1)
        dta $48, a(line2)
        dta $48, a(line3), $48, a(line3)
        dta $48, a(line2)
        dta $48, a(line1), $48, a(line1), $48, a(line1), $48, a(line1), $48, a(line1), $48, a(line1), $48, a(line1)
        dta $41, a(dlist)
line1   dta $ff, $fe, $5b, $ff, $ff, $ff, $c0, $00, $00, $00
line2   dta $aa, $aa, $5a, $aa, $aa, $aa, $80, $00, $00, $00
line3   dta $55, $55, $55, $55, $55, $55, $40, $00, $00, $00

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

โปรแกรมใช้รายการแสดงผลแบบกำหนดเองที่ใช้โหมด ANTIC 8 (40 พิกเซลต่อบรรทัด, 2 bpp) เส้นที่ซ้ำกันจะถูกโหลดจากตำแหน่งหน่วยความจำเดียวกัน หลังจากตั้งค่าจอแสดงผลแล้วโปรแกรมจะเข้าสู่วงวนไม่สิ้นสุด

ภาพหน้าจอ:

iceland.xex ทำงานบน Atari800


9

FFmpeg, 339 184 ไบต์

ffplay -f lavfi color=d72828:100x36[r];color=white:64x32[w];color=0048e0:56x28[b];[w][b]overlay=4,split[x][y];[r][x]overlay=-32[d];[d][y]overlay=40,split[t][m];[m]vflip[n];[t][n]vstack

จะพยายามตีกอล์ฟลงไปอีก ..

ภาพธงชาติไอซ์แลนด์ 100x72


9

Python, 119 118 114 112 ไบต์

ไม่มีอะไรพิเศษตรงไปตรงมา:

b,w,r="\0H\xe0"*28,"\xff"*12,"\xd7(("*8
A,B=28*(b+w+r+w+2*b),4*(8*w+r+15*w)
print"P6 100 72 255 "+A+B+100*r+B+A

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

python golf_iceland.py > iceland.ppm
  • แก้ไข 1: ผลักไบต์ระหว่างprintและเครื่องหมายคำพูด
  • แก้ไข 2: สั้นกว่าเล็กน้อยเป็นไบนารี PPM
  • แก้ไข 3: รูปที่\0สามารถใช้แทน\x00

หากมีคนรู้วิธีใช้อักขระ ASCII ที่ไม่สามารถพิมพ์ได้โดยตรงโปรดแจ้งให้ทราบ

แปลงเป็น PNG


2
ขอแสดงความยินดี! คุณเอาชนะฉันได้มาก: D
Gábor Fekete

2
@GáborFeketeเอาชนะคุณเป็นไบต์ใช่ แต่คำตอบของคุณนั้นฉลาดกว่าด้วยการชดเชยนั้น
Karl Napf

ทำไมจึงไม่มีผลลัพธ์ของ escapes แทน escapes เอง
โซโลมอน Ucko

@SolomonUcko ฉันลองb,w,r="\0Hà"*28,"ÿ"*12,"×(("*8และใช้ Python 3 แต่มันไม่ทำงาน
Karl Napf

@KarlNapf มันล้มเหลวอย่างไร มันวาดไม่ถูกต้องหรือให้ข้อความผิดพลาด? มันอาจเป็นปัญหาการเข้ารหัส
โซโลมอน Ucko

8

JavaScript, 267 ไบต์

document.write("<div style='width:250px;height:180px;background:"+[[b="bottom",44.4,d="d72828",55.6],[r="right",32,d,40],[b,38.9,e="fff",61.1],[r,28,e,44]].map(([d,a,c,o])=>`linear-gradient(to ${d+(t=",transparent ")+a}%,#${c} ${a}%,#${c} ${o}%${t+o}%)`)+",#003897'")


1
แน่ใจว่าอัตราส่วน 7 - 14 ของความกว้างสีฟ้าซ้ายและขวาถูกต้องหรือไม่
จัดการ

1
@ การจัดการอุ๊ปส์ด้วยเหตุผลบางอย่างฉันคิดว่า 100/25 = 5 ดังนั้นทุกอย่างจึงจบลง 25% กว้างเกินไป
Neil

8

Java, 335 ไบต์

ฟังก์ชั่นคือ

void w()throws Exception{int w=100,h=72;BufferedImage i=new BufferedImage(w,h,1);Graphics g=i.getGraphics();g.setColor(new Color(18656));g.fillRect(0,0,w,h);g.setColor(WHITE);g.fillRect(0,28,w,16);g.fillRect(28,0,16,h);g.setColor(new Color(14100520));g.fillRect(0,32,w,8);g.fillRect(32,0,8,h);ImageIO.write(i,"png",new File("f.png"));}

และมันเขียนภาพที่ต้องการf.pngด้วยขนาด 100x72

(โปรดทราบว่านี่ไม่ใช่คู่แข่งโดยตรงไปยังAnswer by R. Kapเนื่องจากเป็นการเขียนไฟล์และไม่แสดงภาพบนหน้าจอ)

นี่คือเวอร์ชั่นที่ไม่ได้แต่งแต้มที่สามารถรวบรวมและเรียกใช้:

import static java.awt.Color.WHITE;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;

import javax.imageio.ImageIO;

public class Iceland
{
    public static void main(String[] args) throws Exception
    {
        Iceland i = new Iceland();
        i.w();
    }

    void w() throws Exception
    {
        int B=0x0048e0,R=0xd72828,w=100,h=72;
        BufferedImage i=new BufferedImage(w,h,1);
        Graphics g=i.getGraphics();
        g.setColor(new Color(B));
        g.fillRect(0,0,w,h);
        g.setColor(WHITE);
        g.fillRect(0,28,w,16);
        g.fillRect(28,0,16,h);
        g.setColor(new Color(R));
        g.fillRect(0,32,w,8);
        g.fillRect(32,0,8,h);
        ImageIO.write(i,"png",new File("f.png"));
    }
}

หมายเหตุด้านข้างเกี่ยวกับคำถามที่เกี่ยวข้อง: บางทีเราควรสร้างความท้าทายในการทาสีธง

  • อินโดนีเซีย
  • โปแลนด์
  • ฟินแลนด์
  • ฝรั่งเศส
  • เนเธอร์แลนด์
  • ประเทศไทย
  • นอร์เวย์

ในเวลาเดียวกัน:

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


7

SVG + Javascript, 190 165 164 ไบต์

ไม่มีผู้เชี่ยวชาญทำซ้ำเส้นทางเดียวที่จะเปลี่ยนสีและความกว้างของเส้นดูเหมือนจาวาสคริปต์ ftw!

document.write(`<svg><rect width=100 height=72 fill="#0048e0"/>${a='<path d="M0 36L100 36M36 0L36 72"style="stroke-width:'}16;stroke:#fff"/>${a}8;stroke:#d72828">`)

อ่านเพิ่มเติมได้:

document.write(`<svg><rect width=100 height=72 fill="#0048e0"/>
${a='<path d="M0 36L100 36M36 0L36 72"style="stroke-width:'}16;stroke:#fff"/>
${a}8;stroke:#d72828">`)

คุณสามารถใช้path d="m0,0h100v72H0"แทนสี่เหลี่ยมเพื่อบันทึกสองไบต์ ในทำนองเดียวกันใช้M0 36H100M36 0V72สำหรับข้อมูลของเส้นทางอื่นซึ่งจะบันทึกอีกห้าไบต์ และคุณสามารถวางstyleแอตทริบิวต์ในความโปรดปรานของประกาศทั้งสองstroke-widthและstrokeเป็นคุณลักษณะที่จะบันทึกอีกห้าไบต์
Joey

7

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

size(100,72);noStroke();background(#0048e0);fill(255);rect(28,0,16,72);rect(0,28,100,16);fill(#d72828);rect(0,32,100,8);rect(32,0,8,72);

Ungolfed

//open the window
size(100,72);
//turn off borders that surround shapes by default
noStroke();
//draw blue as the background
background(#0048e0);
//set color to white
fill(255);
//draw 2 white bars
rect(28,0,16,72);
rect(0,28,100,16);
//set color to red
fill(#d72828);
//draw 2 red bars
rect(0,32,100,8);
rect(32,0,8,72);

เอาท์พุท:

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


1
คุณสามารถโกนไบต์ที่สองมากขึ้นโดยใช้fillและrectแทนและsize background134 ไบต์:noStroke();fill(#0048e0);rect(0,0,100,72);fill(255);rect(0,28,100,16);rect(28,0,16,72);fill(#d72828);rect(0,32,100,8);rect(32,0,8,72);
GuitarPicker

เพิ่มไปยังสิ่งที่ GuitarPicker กล่าวว่าfill(-1)เป็นหนึ่งไบต์ที่สั้นกว่าfill(255)
วัวต้มตุ๋น

7

Mathematica 174 157 ไบต์

ไม่มีบิวอิน:

157 ไบต์

r=Rectangle;c=RGBColor;Graphics@{c[{0,72,224}/255],r[{0,0},{25,18}],White,r[{7,0},{11,18}],r[{0,7},{25,11}],c[{43,8,8}/51],r[{8,0},{10,18}],r[{0,8},{25,10}]}

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

หรืออีกวิธีหนึ่ง

232 ไบต์

x=Join[Unitize/@Range@7,{0},{2,2},{0},Unitize/@Range@14]&/@Range@7;y=Join[ConstantArray[0,8],{2,2},ConstantArray[0,15]];z=ConstantArray[2,25];ArrayPlot[Join[x,{y},{z,z},{y},x]/.{2->RGBColor[{43,8,8}/51],1->RGBColor[{0,72,224}/255]}]

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


1
ไม่เป็นไร เดียวกันสามารถนำไปใช้กับรุ่นที่สองของคุณอีกต่อไป u=Unitize;c=ConstantArrayฯลฯ ^ _ ^
Dan Oak

1
เดี๋ยวก่อนมีบางสิ่งที่ Mathematica ไม่มีในตัว? ฉันประหลาดใจ.
Morgan Thrapp

@ MorganThrapp ฉันแน่ใจว่าเคยมีคำตอบ Mathematica อื่นโดยใช้ builtin
gcampbell

3
มีCountryData["Iceland", "Flag"]
dwa

7

JavaScript (ES6), 231 240

โค้ดภายในตัวอย่างด้านล่าง เรียกใช้เพื่อทดสอบ

d=(w,h,c)=>`<div style=float:left;width:${w}em;height:${h}em;background:#${['0048e0','fff','d72828'][~~c]}>`;document.write(d(25)+(a=[252,61,94,61,476]).concat(b=[261,70,485],810,b,a).map(v=>d(v>>5,v/4&7,v&3)).join(e='</div>')+e+e)


7

ชุดประกอบ ZX Spectrum Z80 ขนาด 51 ไบต์

https://github.com/ralphbecket/Z80/blob/master/IcelandFlag/IcelandFlag.asm

                zeusemulate "48K", "ULA+"
ZeusEmulate_PC  equ Main
ZeusEmulate_SP  equ $FF40

                org $8000

MinWhite        equ 7
MinRed          equ MinWhite + 1
TopRed          equ MinRed + 2
TopWhite        equ TopRed + 1
Height          equ TopWhite + MinWhite - 2
Width           equ TopWhite + 2 * MinWhite - 1

White           equ %01111000
Red             equ %01010000
Blue            equ %01001000

Main            ld hl, $5800 + ((Height - 1) * 32) + (Width - 1)
                ld c, Height

YLoop           ld b, Width

XLoop           ld (hl), Red
                ld de, MinRed * $100 + TopRed
                call Test
                jr c, Next

                ld (hl), White
                ld de, MinWhite * $100 + TopWhite
                call Test
                jr c, Next

                ld (hl), Blue

Next            dec hl
                djnz XLoop
                ld de, -(32 - Width)
                add hl, de
                dec c
                jr nz, YLoop
                ret

Test            equ *
TestX           ld a, b
                cp d
                jr c, TestY
                cp e
                ret c
TestY           ld a, c
                cp d
                ccf
                ret nc
                cp e
                ret

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


7

J, 86 84 83 ไบต์

   load'viewmat'
   (255,0 72 224,:215,2#40)viewmat _9 _9|.2(b=.[,~[,.~[,[,.])0 b 14 21$1

วิธีการนี้เหมือนกับ @ Gábor Fekete กับ Python

อาร์กิวเมนต์ที่เหลือcolorsสำหรับviewmatคืออาร์เรย์ของค่า RGB ในกรณีของเรา:

255 255 255
  0  72 224
215  40  40

colorsและการโต้แย้งสิทธิเป็นเมทริกซ์ของดัชนี
(_9 _9 |. matrix)แนะนำให้เลื่อนmatrix9 รายการในแต่ละมิติ
การก่อสร้างที่น่ากลัว(border ([,~[,.~[,[,.]) matrix)wraps ที่มีจำนวนmatrix และทำเมทริกซ์ของ 14 × 21border
(14 21 $ 1)

เอาต์พุตจะแสดงในหน้าต่างที่ปรับขนาดได้แยกต่างหากซึ่งมีขนาดใหญ่พอสมควรตามค่าเริ่มต้น ป้อนคำอธิบายรูปภาพที่นี่

ขอบคุณ

ไมล์ - บันทึกไว้ 2 ไบต์ด้วยการจัดเรียงสีใหม่ใช้คุณลักษณะของ,ตัวเลขที่ซ้ำกัน (255) สำหรับข้อตกลงรูปร่าง


1
ดูเหมือนว่าความสูงของธงคือ 26 หน่วยแทนที่จะเป็น 25
Gábor Fekete

@GáborFeketeอืมคุณหมายถึงความสูงคือ 19 แทนที่จะเป็น 18 ใช่ไหม ไม่ได้พูดถึงนั้นเพิ่งสังเกตความคิดเห็นของคุณ
Dan Oak

โอ้ถูกต้องฉันเขียนส่วนสูง แต่ใช้ค่าความกว้าง ...
Gábor Fekete

ใช่แล้วแน่นอน ฉันทำผิดพลาดในค่า รูปร่างของเมทริกซ์เริ่มต้นควรเป็น14 21( 18 25 - 4 4) กำลังแก้ไข ... ขอบคุณ!
Dan Oak

1
คุณสามารถบันทึกการเรียงลำดับค่า rgb ได้ 2 ไบต์(255,0 72 224,:215 40 40)viewmat _9 _9|.2(b=.[,~[,.~[,[,.])0 b 14 21$1
ไมล์

6

TI-BASIC (ไม่แข่งขัน), 323 ไบต์

รหัสถูกเขียนขึ้นสำหรับ TI-84, 83 และชุดตัวเลือก ฉันหวังว่าคงไม่ใช่ปัญหาที่ขนาดแตกต่างกันไปตามอุปกรณ์และรหัสไม่ได้สี

ติดตั้ง:

:18→Xmax:¯18→Xmin
:10→Ymin:¯10→Ymin
:AxesOff

การวาดภาพ:

:Line(¯15,9,¯8,9)
:Line(¯8,9,¯8,2)
:Line(¯8,2,¯15,2)
:Line(¯15,2,¯15,9)

:Line(¯15,¯9,¯8,¯9)
:Line(¯8,¯9,¯8,¯2)
:Line(¯8,¯2,¯15,¯2)
:Line(¯15,¯2,¯15,¯9)

:Line(¯4,9,10,9)
:Line(¯4,2,10,2)
:Line(¯4,9,¯4,2)
:Line(10,9,19,2)

:Line(¯4,¯9,10,¯9)
:Line(¯4,¯2,10,¯2)
:Line(¯4,¯9,¯4,¯2)
:Line(10,¯9,19,¯2)

:Line(¯15,1,¯7,1)
:Line(¯15,¯1,¯7,¯1)
:Line(¯5,1,20,1)
:Line(¯5,¯1,¯20,¯1)
:Line(¯7,¯1,¯7,¯9)
:Line(¯5,¯1,¯5,¯9)
:Line(¯7,1,¯7,9)
:Line(¯5,1,¯5,9)

แข็งแรงเล่นกอล์ฟ:

:18→Xmax:¯18→Xmin:10→Ymin:¯10→Ymin:AxesOff:Line(¯15,9,¯8,9:Line(¯8,9,¯8,2:Line(¯8,2,¯15,2:Line(¯15,2,¯15,9:Line(¯15,¯9,¯8,¯9:Line(¯8,¯9,¯8,¯2:Line(¯8,¯2,¯15,¯2:Line(¯15,¯2,¯15,¯9:Line(¯4,9,10,9:Line(¯4,2,10,2:Line(¯4,9,¯4,2:Line(10,9,19,2:Line(¯4,¯9,10,¯9:Line(¯4,¯2,10,¯2:Line(¯4,¯9,¯4,¯2:Line(10,¯9,19,¯2:Line(¯15,1,¯7,1:Line(¯15,¯1,¯7,¯1:Line(¯5,1,20,1:Line(¯5,¯1,¯20,¯1:Line(¯7,¯1,¯7,¯9:Line(¯5,¯1,¯5,¯9:Line(¯7,1,¯7,9:Line(¯5,1,¯5,9

ใช่การขาด)ความตั้งใจ

ขนาด:

Line(และคำสั่งทั้งหมดเช่นนั้นใช้เวลา 1 ไบต์แต่ละหมายเลขจะใช้ไบต์ นั่นคือ 323 ไบต์

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


1
@ Random832 ผิดปกติพอใช่! ตรวจสอบขนาดโทเค็นที่นี่: tibasicdev.wikidot.com/lineฉันไม่แน่ใจว่าไบต์นั้นเป็นอะไรกันแน่ อย่างไรก็ตามฉันรู้ว่าในเครื่องคิดเลขมันจะถือว่าเป็นถ่าน
charredgrass

1
@ Random832 ไบต์สำหรับLine(คือ 0x9C คุณสามารถดูตารางโทเค็นหนึ่งไบต์ได้ที่นี่: tibasicdev.wikidot.com/one-byte-tokens
f ''

1
คุณไม่สามารถกราฟโดยใช้ภูมิภาค (โดยใช้<และ>) แทนที่จะเป็นเส้นเพื่อให้ได้เฉดสีเทา
mbomb007

7
ทำไมสิ่งนี้จึงไม่ใช่การแข่งขัน
Mego

1
โปรดทราบว่าขณะนี้มีสี TI-84 ดังนั้นคุณอาจเรียกใช้บนนั้นด้วยการปรับเปลี่ยนเล็กน้อยเท่านั้น
Moshe Katz

6

C # 384 346 317 292 291 289 ไบต์

ทางออกที่ง่ายด้วย Windows Forms และ GDI

Func<int,int,Point>p=(x,y)=>new Point(x*10,y*10);var b=new Bitmap(250,180);var g=Graphics.FromImage(b);g.Clear(Color.Blue);g.DrawLines(new Pen(Color.White,40),new[]{p(0,9),p(50,9),p(9,-20),p(9,18)});g.DrawLines(new Pen(Color.Red,20),new[]{p(0,9),p(50,9),p(9,-20),p(9,18)});b.Save("b.png");

การใช้

เริ่มต้นโปรเจ็กต์คอนโซลใหม่และวางโค้ดด้านบนในเมธอดหลักเพิ่ม System.Drawing-Namespace

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

รหัสสร้างภาพใหม่และวาดบางบรรทัด มันบันทึกภาพลงดิสก์ จุดสิ้นสุดของเส้นบางเส้นอยู่นอกพื้นที่ที่มองเห็นได้

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


ยินดีต้อนรับสู่ PPCG! สุดยอด codegolf ครั้งแรก แต่ดูเหมือนว่าคุณจะปรับปรุงมันได้ ก่อนอื่นฉันคิดว่าคุณสามารถลบช่องว่างบางส่วนได้ที่นี่และที่นั่น ( b = new=> b=new, using ()=> using()อย่าใช้ช่องว่างหลังจาก;s ถ้าคุณต้องการคุณสามารถอ่านเคล็ดลับการเล่นกอล์ฟใน C #เพื่อหาคำแนะนำได้
Katenkyo

ขอขอบคุณช่องว่างจะถูกลบออกและฉันจะลบคำสั่งการใช้ด้วย ฉันยังใช้ตัวแปรที่ไม่ระบุตัวตนตอนนี้
soema

แน่นอนว่าคุณต้องการProcess.Start(f);? cmd startตามที่ผมเข้าใจว่ามีความคล้ายคลึงกับ เนื่องจากคุณสามารถเลือกที่จะบันทึกหรือแสดงภาพและคุณได้บันทึกไปแล้วขั้นตอนนั้นดูเหมือนจะไม่มีจุดหมาย ในกรณีนี้บางทีคุณสามารถหลีกเลี่ยงการประกาศตัวแปรด้วย
จัดการ

ใช่ เพียงบันทึกตอนนี้และไม่เปิดอีกแล้ว ...
soema

คุณควรนับจำนวนไบต์สำหรับเนมสเปซusingและการประกาศเมธอดหรือโปรแกรมสำเร็จรูป นี่เป็นส่วนหนึ่งของสิ่งที่ต้องการ (งานให้คุณเลือกฟังก์ชั่นหรือโปรแกรม แต่ไม่ใช่ตัวเลือกของงบเพียงอย่างเดียว)
Joey

6

Python IDLE, 191 172 156 ไบต์

IDLE เป็น IDE มาตรฐานของ Python ยกเว้นว่าจะมีธีมที่กำหนดเองSTDOUTคือสีน้ำเงินSTDERRเป็นสีแดงและพื้นหลังเป็นสีขาว ดังนั้นรหัสต่อไปนี้:

from sys import*
x=[1]*7;y=[0]*7;z=[0,2,2,0]
f=[x+z+x*2]*4+[y+z+y*2,[2]*25]
for s in f+f[::-1]:[[stderr,stdout][-x].write(' █'[x>0]*2)for x in s];print()

สร้างเอาต์พุตนี้:

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

ตัวละครที่พิมพ์ออกมาเป็นแบบไม่สแควร์นี่จะปิดเล็กน้อย แต่ถ้าเราใช้ 1 หน่วยเป็น 2 ตัวอักษรและ 1 ตัวอักษรสูงสัดส่วนก็แน่นอน

สิ่งนี้สามารถเล่นกอล์ฟได้โดยลดขนาดความกว้างลงครึ่งหนึ่งและใช้อักขระ ASCII สำหรับบล็อกเช่น'#'แต่มันไม่มีผลเหมือนกันทุกประการ


คำอธิบาย

ขณะนี้โค้ดดูเหมือนจะค่อนข้างเลอะเทอะและสามารถตีกอล์ฟได้อย่างแน่นอน แต่แนวคิดพื้นฐานคือ:

  • สร้างเมทริกซ์โดยที่0หมายถึงช่องว่าง1แทนบล็อกสีน้ำเงินและ2แสดงถึงบล็อกสีแดง
    • ครึ่งแรกถูกสร้างขึ้น (ส่วนใหญ่ผ่านการแบ่งส่วนรายการ / การคูณ) และเพิ่มไปด้านหลังของตัวเองเพื่อสร้างการตั้งค่าสถานะเต็ม
  • วนผ่านเมทริกซ์พิมพ์แต่ละค่าเป็นช่องว่างหรือบล็อกไปตามSTDERR/ STDOUTพิมพ์ขึ้นบรรทัดใหม่หลังจากแต่ละแถว

6

Python Turtle, 176 ไบต์

การใช้ Python Turtle อื่น แต่คราวนี้มาจากการปั๊มแทนการวาด :

from turtle import*
shape("square")
c=color
c("navy")
z=shapesize
z(18,25)
s=stamp
s()
c("white")
z(4,25)
s()
bk(70)
seth(90)
s()
c("#d72828")
z(2,18)
s()
home()
z(2,25)
done()

การใช้การประทับและไม่สามารถปรับขนาดได้อย่างง่ายดายจะบันทึกรหัสประมาณ 60 ไบต์

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

ส่วนที่สนุกคือคุณสามารถแทนที่"square"ตัวเลือกรูปหลายเหลี่ยมด้วย"turtle"ตัวเลือกรูปหลายเหลี่ยมในการshape()โทรและรับโลโก้ ecogroovy:

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


5

Perl, 134 ไบต์

หมายเหตุ: \x1bจริง ๆ แล้วคืออักขระ ASCII escape และนับเป็น 1 ไบต์

($b,$w,$r)=map"\x1b[48;5;${_}m",18,15,1;print@l=("$b "x7,"$w $r  $w $b",$"x14,$/)x7,@m=("$w "x8,"$r  ","$w "x15,$/),("$r "x25,$/)x2,@m,@l

การใช้

บันทึกเป็นiceland-flag.plและเรียกใช้ผ่าน:

perl iceland-flag.pl

ธง Squished

ใช้ ANSI escape sequences และสมมติว่า Linux terminal แสดงแฟล็ก ดูแปลกเล็กน้อยโดยใช้การวัดที่ให้ไว้

Perl, 141 ไบต์

รุ่นนี้มีลักษณะใกล้เคียงกับมิติของแท้มากขึ้น ...

($b,$w,$r)=map"\x1b[48;5;${_}m",18,15,1;print@l=("$b "x14,"$w  $r    $w  $b",$"x28,$/)x7,@m=("$w "x16,"$r "x4,"$w "x30,$/),("$r "x50,$/)x2,@m,@l

ธง squished น้อยลง


1
ความแปลกประหลาดมาจากความจริงที่ว่าตัวละครมีความสูงกว่าความกว้าง
Erik the Outgolfer

@ EʀɪᴋᴛʜᴇGᴏʟғᴇʀแน่นอนฉันสงสัยว่ามีแบบอักษรที่มีความกว้างคงที่หรือไม่ แต่ฉันไม่คิดว่าพวกเขาจะดูดีเป็นพิเศษ! ผมอาจจะปรับปรุงที่รุ่นที่สองที่จะมองได้ใกล้ชิด (มันไม่ควรใช้ไบต์ใด ๆ มากขึ้นกว่าที่เป็นอยู่ในปัจจุบัน แต่เวลา ... )
Dom เฮสติ้งส์

บน TTY คุณไม่สามารถสงสัยสิ่งนั้นแบบอักษรนั้นคือ THE FONT! คุณไม่สามารถเปลี่ยนได้เพียงเพราะคุณไม่ชอบ
Erik the Outgolfer

5

SpecaBAS - 150 ไบต์

1 a=15,b=250,c=180: FOR i=1 TO 5: READ k,x,y,w,h: RECTANGLE INK k;x,y,w,h FILL: NEXT i
2 DATA 1,0,0,b,c,a,71,0,40,c,a,0,71,b,40,2,81,0,20,c,2,0,81,b,20

อ่านสีหมึก, x, y, ความกว้างและความสูงและวาดสี่เหลี่ยมที่มีพิกัด / ขนาดเหล่านั้น

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


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