สุขสันต์วันเกิดฟินแลนด์!


37

บทนำ

ในปี 2560 ฟินแลนด์ฉลองครบรอบ 100 ปีแห่งอิสรภาพ เพื่อทำเครื่องหมายโอกาสเป็นหน้าที่ของคุณในการสร้างธงชาติฟินแลนด์เพื่อความบันเทิงของทุกคน

ท้าทาย

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

ธงประจำชาติ Finland

ข้อกำหนดธง

  • อัตราส่วนของธงเป็น18:11กับความเป็นอยู่ข้าม3หน่วยหนาให้ชุดอัตราส่วนแนวนอนและชุดอัตราส่วนแนวตั้งของ5:3:104:3:4
  • รูปภาพต้องมี180 x 110ขนาดอย่างน้อยพิกเซลหรือในกรณีที่90 x 55ตัวอักษรASCII เป็นตัวอักษร
  • ไม่มีสี RGB อย่างเป็นทางการสำหรับสีฟ้า (0, 53, 128)แต่ใช้ประมาณใกล้เคียงที่สุดของ หากระบบของคุณไม่สนับสนุนค่า RGB blueใช้
  • สำหรับสีขาวใช้ RGB หรือ(255, 255, 255)white

ไม่เร็วนัก

เนื่องจากการวาดธงชาติฟินแลนด์จะง่ายกว่าการท้าทายในไอซ์แลนด์เมื่อปีที่แล้วเราจะต้องเพิ่มความยากขึ้นเล็กน้อย ระบุว่าวันประกาศอิสรภาพของฟินแลนด์คือวันที่ 6 ธันวาคมตัวเลขทศนิยม100จะต้องปรากฏที่ใดที่หนึ่งบนธงเมื่อวันที่ในฟินแลนด์ ( UTC + 02: 00 ) เป็น2017-12-06หรือหลังจากนั้น (รหัสของคุณไม่ควรถือว่าเครื่องที่ทำงานอยู่นั้นถูกตั้งค่าเป็น เขตเวลาเฉพาะ) ก่อนวันที่ตัวเลขจะต้องไม่อยู่ที่นั่น หมายเลขจะต้องพิมพ์ด้วยสีดำ (RGB (0, 0, 0)หรือblack) แต่พารามิเตอร์ตำแหน่งและแบบอักษรนั้นขึ้นอยู่กับคุณ

ตัวอย่างของการเรนเดอร์ดังกล่าว (อีกครั้ง, ละเว้นขอบเขต):

ธงชาติฟินแลนด์กับ 100 บน

สำหรับวัตถุประสงค์ในการทดสอบจะเป็นการดีที่จะรวมโซลูชันเพิ่มเติมของคุณสองเวอร์ชันซึ่งหนึ่งในนั้นมีวันที่ที่แน่นอนในอดีตและอีกหนึ่งอนาคต

กฎระเบียบ

ช่องโหว่มาตรฐานเป็นสิ่งต้องห้ามเช่นเดียวกับภาพ / ห้องสมุดธงในตัว นอกจากนี้รหัสของคุณจะต้องไม่นำเข้าใด ๆ

ฟินน์ไม่ชอบพูดคุยเล็ก ๆ และนี่คือดังนั้นอย่าเสียอักขระ!


เราควรใช้พื้นที่และ# ในกรณีของ ASCII artหรือไม่? แล้วใส่ตัวละคร100ที่ไหนสักแห่ง?
Adám

1
เราสามารถใช้วันที่ในฟินแลนด์เป็นข้อมูลสำหรับระบบที่ไม่มีนาฬิกาแขวนภายในหรือไม่ใช้เขตเวลาได้หรือไม่? ฉันโพสต์คำตอบเป็นครั้งคราวใน GFA-Basic (Atari ST, ไม่มีเขตเวลา) หรือชุดประกอบ CP-1610 (Intellivision, ไม่มีวันที่ / เวลาเลย) และเรามีคำตอบในแพลตฟอร์มเก่าแก่อื่น ๆ เป็นระยะ ๆ ค่อนข้างดีในการวาดสิ่งต่าง ๆ เช่นนั้น แต่ดูเหมือนจะถูกตัดสิทธิ์ที่นี่เนื่องจากปัญหาวันที่
Arnauld

1
@Annauld: เอ้ยฉันไม่เคยคิดว่าใครจะใช้ระบบดังกล่าว ฉันขอบคุณสถานการณ์ของคุณ แต่นั่นจะทำให้คนอื่นเสียเปรียบหรือไม่? ฉันคิดว่าการอนุญาตให้อินพุตจะทำให้คุณมีการเปรียบเทียบจำนวนเต็มง่าย ๆ รายการที่ไม่ใช่การแข่งขันที่ไม่มีด้านเวลาจะเป็นไปตามคำถามหรือไม่
Antti29

1
@ Antti29 สุจริตฉันไม่สามารถนึกถึงทางออกที่ดีและมันก็สายเกินไปที่จะอัพเดทกฎ ถ้าไม่มีใครมาพร้อมกับข้อเสนอแนะที่น่าพอใจจริงๆฉันคิดว่าระบบเหล่านี้ไม่สามารถแข่งขันได้ที่นี่ (ฉันเห็นความท้าทายในกล่องทรายและไม่ได้คิดเรื่องนั้นฉันไม่ดี)
Arnauld

คำตอบ:


24

C (Windows), 361 ไบต์

#import<time.h>
#import<windows.h>
C(x){SetConsoleTextAttribute(GetStdHandle(-11),x);}F(I,N,l,a,n,d)time_t n;struct tm*d;{system("mode 90,65");time(&n);d=gmtime(&n);n=d->tm_year<<24|d->tm_mon<<16|d->tm_mday<<8|d->tm_hour;for(a=l=I=15;I++<70;a=l=I<35|I>49?15:9)for(N=n>1963656468&I<17?C(240),printf("100"):0;N++<90;a=N-25?a:9,a=N-40||l==9?a:15)C(a),putchar(70);}

คลี่:

#import <time.h>
#import <windows.h>

C(x)
{
    SetConsoleTextAttribute(GetStdHandle(-11),x);
}

F(I,N,l,a,n,d) time_t n;struct tm*d;
{
    system("mode 90,65");

    time(&n);
    d = gmtime(&n);
    n = d->tm_year<<24 | d->tm_mon<<16 | d->tm_mday<<8 | d->tm_hour;

    for(a=l=I=15; I++<70; a=l=I<35|I>49?15:9)
        for(N=n>1963656468&I<17?C(240),printf("100"):0; N++<90; a=N-25?a:9,a=N-40||l==9?a:15)
            C(a), putchar(70);
}

เอาท์พุท:

ส่งออกเมื่อUTC time >= 2017-12-05-22-00:

เพิ่มรหัสต่อไปนี้ในรหัสหลังจากd=gmtime(&n);ลอง:

d->tm_year = 117;
d->tm_mon = 11;
d->tm_mday = 5;
d->tm_hour = 21;

13
ชื่อตัวแปรน่ารัก!
อดัม

16

PHP + SVG (HTML5), 147 137 123 ไบต์

รหัส SVG โดยNeil

https://codegolf.stackexchange.com/a/149850/66061

<svg><path d=180v110 fill=#fff></path><path d=M0,40h50V0h30v40h100v30H80v40H50V70H0 fill=#005580></path><?=time()<1512511200?:'<text x=9 y=15>100';

อัปเดต: ขอบคุณShaggy ที่ช่วยฉันประหยัด 10 ไบต์

<svg><path d=180v110 fill=#fff /><path d=M0,40h50V0h30v40h100v30H80v40H50V70H0 fill=#005580 /><?=time()<1512511200?:'<text x=9 y=15>100';

อัปเดต 2: แนวคิดอัจฉริยะโดยIsmael Miguelขอบคุณสำหรับการบันทึก 14 ไบต์

<svg><path d=180v110 /><path d=M0,40h50V0h30v40h100v30H80v40H50V70H0 fill=#005580 /><?=time()<1512511200?:'<text y=19>100';

ปกติ

ปกติ

หลังจากวันที่ 6 ธันวาคม +2 ชั่วโมง

หลังจากวันที่ 6 ธันวาคม - +2 ชั่วโมง


ดังนั้นtime()ให้ UTC?
Adám

เมื่อ1512525600ไหร่
Adám

1512525600คือ2017-12-06T02:00:00+00:00 in ISO 8601@ Adámและใช่ time () เป็นเขตเวลาที่เป็นอิสระ
th3pirat3

12

Röda , 252 250 ไบต์

{s={|w,h|[` width="$w" height="$h" `]}r=`><rect`f=`" fill="#003580"/`
[`<svg`,s(18,11),r,s(18,11),`fill="#fff"/`,r,s(18,3),`y="4$f`,r,s(3,11),`x="5$f>`]
[`<text y="9" font-size="2">100</text>`]if{}|[[exec("date","+%s")]&"">="1512511200
"]
[`</svg>`]}

ลองออนไลน์!


25
ความกล้า! คุณได้แก้ไขปัญหาการท้าทายภาษาฟินแลนด์ด้วยภาษาสวีเดน
Antti29

1
@Athth มันตั้งชื่อตามคำสวีเดนไม่มีคำดังกล่าวในฟินแลนด์ คอมไพล์มีฟินแลนด์เพราะฉันพูดภาษาฟินแลนด์
fergusq

1
@Arthur: ฉันกลัวว่าคุณจะต้องเจาะลึกความคิดของฟินแลนด์เพื่อชื่นชมความคิดเห็นของฉันอย่างเต็มที่ :)
Antti29

1
@fergusq ถ้าเป็นจากคนที่ตั้งชื่อภาษาจริงๆแล้วฉันเดาว่าไม่มีอำนาจใดสูงกว่า อย่างไรก็ตามถึงแม้จะรู้ว่า "röda" ไม่ใช่คำภาษาฟินแลนด์ แต่ฉันก็ยืนยันว่าความคิดเห็นก่อนหน้านี้ของฉันมีเหตุผล ชื่อภาษาไม่จำเป็นต้องเป็นคำที่แท้จริง นอกจากนี้ในขณะที่ฉันอาจไม่ได้อยู่ในนั้นฉันก็ตระหนักดีถึงความเป็นปรปักษ์ที่ฟินน์มีต่อชาวสวีเดนกับประวัติการประกอบอาชีพและชาวสวีเดนเป็นผู้ได้รับคำสั่งจากโรงเรียนให้เป็นหนึ่งในการเตือนความจำหลายครั้ง
Arthur

1
@ PaŭloEbermann: น่าเสียดาย
Antti29

11

C #, 407 400 277 ไบต์

วิธีแปลก ๆ ที่ForegroundColor =0ได้รับอนุญาต

บันทึก 1 ไบต์ขอบคุณ TuukkaX

บันทึกแล้ว 67 ไบต์ขอบคุณ Adam

()=>{for(int x=0,y;x<90;x++)for(y=0;y<55;y++){BackgroundColor=(ConsoleColor)15;if(x>24&x<41|(y>19&&y<36))BackgroundColor=(ConsoleColor)9;SetCursorPosition(x,y);Write(' ');}if(new DateTime(2017,12,5,22,0,0)<DateTime.UtcNow){SetCursorPosition(1,1);ForegroundColor=0;Write(100);}}

ungolfed สำหรับการทดสอบ:

using System;
using static System.Console;
class P
{
    static void Main()
    {
        Action func = () =>
        {
            for (int x = 0,y; x < 90; x++) for (y=0; y < 55; y++)
                {
                    BackgroundColor = (ConsoleColor)15;
                    if (x > 24 & x < 41 | (y > 19 && y < 36))
                        BackgroundColor = (ConsoleColor)9;
                    SetCursorPosition(x, y);
                    Write(' ');
                }

            if (new DateTime(2017, 12, 5, 22, 0, 0) < DateTime.UtcNow)
            {
                SetCursorPosition(1, 1); ForegroundColor =0; Write(100);
            }
        };
        func();
        ReadLine();
    }
}

สำหรับการทดสอบ 100:

using System;
using static System.Console;
class P
{
    static void Main()
    {
        Action func = () =>
        {
            for (int x = 0,y; x < 90; x++) for (y=0; y < 55; y++)
                {
                    BackgroundColor = (ConsoleColor)15;
                    if (x > 24 & x < 41 | (y > 19 && y < 36))
                        BackgroundColor = (ConsoleColor)9;
                    SetCursorPosition(x, y);
                    Write(' ');
                }

            if (new DateTime(2017, 12, 2, 22, 0, 0) < DateTime.UtcNow)
            {
                SetCursorPosition(1, 1); ForegroundColor =0; Write(100);
            }
        };
        func();
        ReadLine();
    }
}

3
ForegroundColor = 0ที่ได้รับอนุญาตเพราะที่แท้จริง0คือแปลงสภาพเป็นประเภท enum ใด ๆ ตามที่เขียนไว้ในสเปค C #
Joey

9

Mathematica, 129 ไบต์

If[AbsoluteTime@Date[]<3721507200,s="",s=100];Graphics@{s~Text~{9,9},RGBColor[0,.2,.5],{0,4}~(R=Rectangle)~{18,7},{5,0}~R~{8,11}}


ก่อน .. หลัง ..
ป้อนคำอธิบายรูปภาพที่นี่

ป้อนคำอธิบายรูปภาพที่นี่
คุณสามารถทดสอบได้ที่Wolfram Sandbox
(วางรหัสแล้วกด Shift-Enter)


เมื่อ3721507200ไหร่
Adám

@ Adám AbsolutimeTime ให้จำนวนวินาทีทั้งหมดตั้งแต่เริ่มต้นวันที่ 1 มกราคม 1900
J42161217

@Jenny_mathy วันที่ 1 มกราคม 1900 ของเขตเวลาใด
Daffy

@ Daffy of utc +02: 00
J42161217

9

Python 2 , 247 246 230 210 189 ไบต์

import time
print'P3',180,110,255
w,b='255 '*3,'0 52 128 ';B=['0 '*3,w][time.gmtime()<(2017,12,5,22)]
a=w*40+b*30+w*100
x=w*10+a;y,z=w+B+w+B*3+w+B*3+a,(w+B)*5+a
print y+z+y+x*37+b*5400+x*40

ลองออนไลน์!

พิมพ์ภาพ. pppm:

ธงปกติ

ฟินแลนด์

ตั้งค่าสถานะด้วย 100

Finland100


สามารถdatetime.utcnow()+timedelta(hours=2)<datetime(2017,12,06)ถูกแทนที่ด้วยdatetime.utcnow()>=datetime(2017,12,05,22,0,0)หรืออะไรที่คล้ายกัน?
Adám

ใช้time.gmtimeแทนการเปรียบเทียบ tuple (ดูคำตอบของฉัน)!
Antti Haapala

[time.time ()> 1512514800]
dieter

7

Python 3, 143 141 135 ไบต์

ใช้ ANSI escape สำหรับสีใช้ห้าช่องว่างหรือ "100" เป็นสตริงสีเพื่อให้ฉันไม่จำเป็นต้องพิมพ์ "100" ลงบนธง ความยาว 5 90/5 == 90//5เพราะความกว้างเพราะ สตริงถูกนำมาใช้จะได้รับการกำหนดไว้ในแถวที่ 1 แล้วเราย้ำ 55 รอบ (สูง) ในทุกซ้ำvถูกตั้งค่าเป็นสตริงที่มีสี [สีฟ้า BrightWhite] row<20 or r>34และดัชนีที่เลือกเป็นแบบบูล เราคูณผลลัพธ์นั้นด้วย 5 อีกครั้ง (ขนาดความกว้าง: 25:15:50 ดังนั้นความกว้างทั้งหมดคือ 90) จากนั้นเราพิมพ์ออกมาv + Blue + Blue + Blue + v + v + Blackว่าvเป็นสีน้ำเงินหรือสว่างขาว เพื่อความชัดเจนในการพิมพ์: ความกว้างของvคือ 25 ตัวอักษรความกว้างของสีฟ้า ( e%44*3) คือ 15 และความกว้างของv*2คือ 5025+15+5090 คือความกว้างและตามขนาดที่ต้องการในภารกิจ! สรุปค่อนข้างยุ่ง แต่ฉันคิดว่ามันดีกว่าไม่มีอะไร

import time;e="\033[30;%dm "+[" "*4,"100 "][time.time()>1512511200]
for r in range(55):v=e%[107,44][19<r<35]*5;print(v+e%44*3+v*2+e%40)

2
ยินดีต้อนรับสู่เว็บไซต์!
caird coinheringaahing

2
ยินดีต้อนรับสู่ PPCG! ฉันได้เพิ่มการตั้งค่าสถานะภาษาลงในคำตอบของคุณแล้วและฉันขอแนะนำให้คุณเพิ่มคำอธิบายพื้นฐานว่าโปรแกรมของคุณทำงานอย่างไร - แต่อย่างอื่นคำตอบแรกที่ดี :)
เทย์เลอร์สกอตต์

2
@TaylorScott จะทำ! และขอขอบคุณฉันได้ซุ่มซ่อนที่นี่เช่นปีหรือสองปี แต่ไม่เคยส่งอะไรมาก่อน ไม่สามารถต้านทานได้เนื่องจากฟินแลนด์มีอายุครบ 100 ปี!
FatalError

7

กำลังประมวลผล / Java 191 188 ไบต์

-3 ไบต์ขอขอบคุณ KevinCruijssen

import java.util.*;void setup(){size(180,110);background(-1);fill(0);if(new Date().getTime()>=15125256e6D)text("100",0,9);noStroke();scale(10);fill(#003580);rect(5,0,3,11);rect(0,4,18,3);}

ก่อนหลัง


>15125255999999Lสามารถ>=15125256e6
Kevin Cruijssen

@KevinCruijssen อาจจะสามารถย่อได้ แต่ 15125256e6 คือ 15125255815168 ซึ่งช้าเกินไป 37 ชั่วโมง
PrincePolka

15125256e6D ใช้ได้ขอบคุณ
PrincePolka

อืม15125256e6คือ15125256000000เมื่อฉันทดสอบใน Java 8 แต่ฉันไม่รู้จัก Processing.org ดังนั้นอาจแตกต่างกันเล็กน้อยหรือใช้รุ่นที่แตกต่างกันเล็กน้อย นี่คือ TIO ที่มีการทดสอบขั้นพื้นฐานบางอย่าง15125256e6เพื่อตรวจสอบว่าใช้งานได้ใน Java 8แต่ฉันดีใจที่Dมันสามารถแก้ไขได้ ดีใจที่ฉันสามารถช่วย :)
Kevin Cruijssen

7

Excel VBA, 120 118 117 ไบต์

ฟังก์ชั่นหน้าต่าง VBE แบบไม่ระบุชื่อทันทีที่ไม่รับอินพุตและเอาท์พุตธงชาติฟินแลนด์และหากฟินแลนด์มีอายุมากกว่า 100 ปี 100บนธงนั้น สิ่งนี้ทำได้ด้วยความเคารพต่อเขตเวลาอีสเตอร์ของสหรัฐอเมริกาเนื่องจากไม่มีวิธีสำหรับ Excel หรือ Excel VBA ในการกำหนดเขตเวลาโดยไม่ต้องใช้ Add-in หรือการเข้าถึงอินเทอร์เน็ต

Cells.RowHeight=48:Cells.Interior.Color=-1:[F1:H11,A5:R7].Interior.Color=8402176:If Now>=#12/5/17 19:0#Then[B2]=100

เอาท์พุต

ถ้าฟินแลนด์อายุน้อยกว่า 100 ปี

หนุ่มฟินแลนด์

หากฟินแลนด์มีอายุมากกว่า 100 ปี

ภาษาฟินแลนด์เก่า

-2 ไบต์สำหรับการเปลี่ยน If #12/5/17 19:00#<=Now Then[B2]=100เป็นIf Now>=#12/5/17 19:0#Then[B2]=100

-1 ไบต์สำหรับการใช้งานCellsมากกว่า[A1:R11]


2
ใครคิดว่า ol 'VBA สามารถทำสิ่งนี้ได้ ยอดเยี่ยม
Floris

3
@ Floris ฉันได้ตระหนักว่าเมื่อพูดถึงศิลปะพิกเซล Excel VBA สามารถทำสิ่งที่น่าอัศจรรย์ได้ : D
Taylor Scott

ฉันนึกถึงการเขียนบางอย่างในสารตั้งต้นถึง VBA (ภาษามาโครบ้าที่เขียนในเซลล์ของแผ่นงาน Excel หนึ่งบรรทัดต่อเซลล์) ที่ทำสิ่งที่คล้ายกัน (สร้างกราฟความเข้ม 2D ของฟังก์ชั่นที่ฉันกำลังศึกษา) นั่นต้องเป็นปี 1991 ขอบคุณสำหรับความทรงจำ
Floris

1
@Floris ดีว่าเป็นความอัปยศ - แต่ที่ดีที่จะรู้ว่าคนอื่นรู้ว่าสิ่งที่พวกเขา :)
เทย์เลอร์สกอตต์

1
และลองคิดดู - มีบางอย่างก่อน 4.0 ... ฉันจำได้ว่าถูกรำคาญเมื่อทุกอย่างพัง ตามที่ฉันได้รับหลายต่อหลายครั้งตั้งแต่ จ้าวแห่งความเข้ากันไม่ได้ย้อนหลัง
Floris

5

MATLAB, 133 130 123 ไบต์

3 10 ไบต์sabedขอบคุณสำหรับ@flawr!

r=1:180;r(51:80)=0;imshow(r(11:120)'*r,[0 .2 .5;1 1 1])
if datenum(datetime('now','T','UTC+2'))>=737035 text(9,9,'100'),end

สิ่งนี้ใช้[0, 51, 128]สำหรับสีฟ้า ขนาดของภาพคือ 180 × 110 พิกเซล

วิ่งตัวอย่าง:

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

เรียกใช้ตัวอย่างที่มีข้อความ (เปลี่ยน737035ไป0ในรหัสเพื่อให้ข้อความที่แสดงในวันใดวันหนึ่ง):

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


4

JavaScript (ES5) + SVG (HTML5), 189 179 ไบต์

document.write('<svg><path d=M0,0h180v110H0z fill=#fff /><path d=M0,40h50V0h30v40h100v30H80v40H50V70H0Z fill=#005580 />'+(Date.now()<15125112e5?'':'<text x=0 y=30 fill=#000>100'))
<body color=grey bgcolor=silver>

(HTML เพื่อแสดงว่าเป็นไปตามข้อกำหนดของสี) แก้ไข: บันทึก 10 ไบต์ด้วย @Shaggy ขาออก:

<body color=grey bgcolor=silver>

<svg><path d=M0,0h180v110H0z fill=#fff /><path d=M0,40h50V0h30v40h100v30H80v40H50V70H0Z fill=#005580 />

<body color=grey bgcolor=silver>

<svg><path d=M0,0h180v110H0z fill=#fff /><path d=M0,40h50V0h30v40h100v30H80v40H50V70H0Z fill=#005580 /><text x=0 y=30 fill=#000>100


สิ่งนี้จัดการกับเขตเวลาชดเชยอย่างไรเมื่อทำงานที่อื่นใน UTC + 2
อดัม

@ อาดัมDate.now()อยู่ใน UTC 2017/12/06 00:00:00 UTC+2และผมเปรียบเทียบกับมูลค่าของเวลา
Neil

จะใช้รหัส SVG ของคุณในข้อมูลโค้ด php ของฉันได้ไหม
th3pirat3

2
@ Adámฉันได้บอกคุณแล้ว?
Neil

1
แทนที่<path></path>ด้วย<path/>เพื่อบันทึกไม่กี่ไบต์
Shaggy

4

Python 3 พร้อมหมอน, 213 212 211 ตัวอักษร (Unix) และ217 216 ตัวอักษร (พกพา)

นี่คือรุ่น Unix ฉันรู้หลังจากโพสต์ว่าเวลาที่ส่งคืนโดยtime()ไม่จำเป็นต้องมีเวลาในวันที่ 1 มกราคม 1970 ดังนั้นจึงไม่จำเป็นต้องพกพา

b=8402688;from PIL import Image,ImageDraw as d
j=Image.new('RGB',(180,110),~1);r=d.Draw(j);R=r.rectangle
R([50,0,79,109],b);R([0,40,180,69],b);import time
r.text((9,9),'100'*(time.time()>=0x5a273300),0)
j.show()

นี่คือรหัสพกพาขนาด 4 ไบต์ใช้สำหรับgmtimeการเปรียบเทียบ tuple ดังนั้นจึงควรทำงานบน Windows ได้อย่างน่าเชื่อถือ

import time
from PIL import Image,ImageDraw as d
b=8402688
j=Image.new('RGB',(180,110),~1)
r=d.Draw(j)
R=r.rectangle
R([50,0,79,109],b)
R([0,40,180,69],b)
r.text((9,9),'100'*(time.gmtime()>(2017,12,5,22)),0)
j.show()

ภาพจะปรากฏขึ้นในหน้าต่าง ยากมากที่จะทำให้มันใช้อักขระน้อยลง แม้แต่การtime.timeคืนค่า a floatดังนั้น>0x5a273299จะไม่ถูกต้องนักหรือ>0x5a273300อาจถูกปิดโดยไมโครวินาที

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

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


4

Tcl / Tk , 135 ไบต์

จะต้องทำงานในเชลล์แบบโต้ตอบ

gri [can .c -bg #FFF]
lmap C {"52 2 82 112" "2 42 182 72"} {.c cr r $C -f #003580 -w 0}
if [clock se]>1512518520 {.c cr t 19 9 -te 100}

ก่อน 2017/12/06 02:00 GMT

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

หลัง 2017/12/06 02:00 GMT

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


4

Java 342 368 361 321 317 (299 + 18) ไบต์

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

import java.awt.*;()->new Frame(){{setBackground(Color.WHITE);setUndecorated(0<1);setSize(180,110);setVisible(0<1);}public void paint(Graphics g){g.setColor(new Color(0,53,128));g.fillRect(50,0,30,110);g.fillRect(0,40,180,30);g.setColor(Color.BLACK);if(System.currentTimeMillis()>15125112e5)g.drawString("100",9,9);}}

Ungolfed

import java.awt.*;
() -> new Frame() {
    {
        setBackground(Color.WHITE);                     //Color Objects ARE just RGB values
        setUndecorated(0 < 1);                          //Get's ride of title bar
        setSize(180, 110);             
        setVisible(0 < 1);
    }
    public void paint(Graphics g) {
        g.setColor(new Color(0, 53, 128));              //The special blue color
        g.fillRect(50, 0, 30, 110);
        g.fillRect(0, 40, 180, 30);
        g.setColor(Color.BLACK);
        if (System.currentTimeMillis() > 15125112e5)    //Time Condition
            g.drawString("100", 9, 9);
    }

ผลลัพธ์

ฟินแลนด์

เครดิต

บันทึก 40 ไบต์โดยOlivier Grégoireสำหรับการใช้แลมบ์ดา
4 ไบต์บันทึกโดยKevin Cruijssenสำหรับการฟอร์แมตแบบยาว
2 ไบต์บันทึกโดยผู้ใช้902383สำหรับการจัดรูปแบบฐานสิบหก


1
@jfhcs: แต่น่าเสียดายที่นั่นเป็นกฎ และ ... นั่นคือจาวา
Antti29

1
ฉันเข้าใจแล้ว ฉันจะอัปเดตคำตอบของฉัน ฉันต้องตีความกฎผิด ๆ
jfh

1
คุณสามารถแทนที่trues ด้วย1>0, argsด้วยa, และสามารถลบช่องว่างรอบ ๆ=ที่P j = new...เพื่อบันทึกสองสามไบต์
Justin Mariner

1
342 ไบต์ (324 ไบต์ + 18 ไบต์สำหรับimport java.awt.*;) โดยรวมเงื่อนไขไว้ด้วย
Olivier Grégoire

1
คำตอบปัจจุบันของคุณมีข้อบกพร่องหลายอย่างที่ทำให้มันไม่ถูกต้อง: 1. ไม่มีimportเลย 2. ชื่อตัวแปรไม่ได้สั้นลง: สามารถลดลงได้args a3. ยังมีช่องว่างเพิ่มเติมที่มีอยู่ในรายการ 4. ไม่มีการพิมพ์ที่มีเงื่อนไขของ "100"
Olivier Grégoire

3

เป็นกลุ่ม, 147

ฉันชอบความท้าทายนี้มาก☺ ©กำลังหลบหนี

sy on
set ft=c
hi Normal ctermfg=4 ctermbg=7
hi Number ctermfg=0 ctermbg=7
norm 90i ©26|15r█Y40pMVr█Y14Pk
if localtime()>1512511199
norm R100 

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


3

ทุบตีและ imagemagick, 135

((`date +%s`>1512511199))&&x=100
convert -size 150x80 xc: -background \#003580 -splice 30x30+50+40 -draw "fill black text 9,9 '$x'" x:

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


1
((`date +%s`>=1512511200))&&x=100ดีกว่าใช้การประเมินผลทางคณิตศาสตร์: โปรดทราบว่าฉันย้ายเครื่องหมายคำพูดเดี่ยวใน-drawพารามิเตอร์ซึ่งไม่จำเป็นต้องมีการหลบหนี
จัดการ

2

Tampio ที่จำเป็น , 239 ไบต์ (ไม่ใช่การแข่งขัน)

Kun iso sivu avautuu,se näyttää tekstin"<svg><path d=180v110 /><path d=M0,40h50V0h30v40h100v30H80v40H50V70H0 fill=#005580 />"ja,jos nykyinen aika millisekunteina on suurempi kuin 1512511200000,niin se näyttää tekstin"<text y=19>100".

Kun ISO Sivu avautuu , SE näyttää tekstin "<svg><path d=180v110 /><path d=M0,40h50V0h30v40h100v30H80v40H50V70H0 fill=#005580 />"ja , Jos nykyinen Aika millisekunteina บน suurempi kuin 1512511200000 , niin SE näyttää tekstin"<text y=19>100"

เวอร์ชั่นออนไลน์

แปล:

เมื่อหน้าใหญ่เปิดขึ้นมันจะแสดงข้อความ "<svg><path d=180v110 /><path d=M0,40h50V0h30v40h100v30H80v40H50V70H0 fill=#005580 />"และถ้าเวลาปัจจุบันในหน่วยมิลลิวินาทีมีค่ามากกว่าก็จะแสดงข้อความ1512511200000"<text y=19>100"

SVG ถูกนำมาจาก คำตอบนี้โดย th3pirat3 (และ Neil, ปรากฎ)

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

หากต้องการเรียกใช้โปรแกรมนี้ให้ไปที่เวอร์ชันออนไลน์ด้านบนที่มีโปรแกรม JS ที่คอมไพล์แล้วหรือดาวน์โหลดคอมไพเลอร์จากหน้า Githubหน้าpython3 tampio.py -p program.itp >program.htmlเพื่อรวบรวมโปรแกรมที่ทำงาน

แทมปิโอไม่ใช่ภาษากอล์ฟโดยวัดใด ๆ แต่เนื่องจากรหัส svg ที่ดีกว่าจึงเอาชนะRödaได้ ... ฉันแปลกใจเล็กน้อย


มันเป็นมากกว่านี้!
Antti29

2

ทุบตี, 198

p()(printf "%-$1b$3" "\e[$2m")
r()(for i in `seq $1`;{ $2;})
a()(p 31 107
p 20 44
p 56 30\;107 "${1:-   }"
p 0 0 '
')
b()(p 95 44
p 0 0 '
')
r 20 a
r 15 b
r 19 a
((`date +%s`>1512511199))&&a 100||a

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


1

HTML + CSS + Javascript, 339 ไบต์

<style>#f{width:180px;height:110px;position:relative}.b{background-color:#003580;position:absolute}.v{left:27.78%;width:16.67%;height:100%}.h{top:36.36%;height:27.27%;width:100%}</style><div id="f"><div class="b v"></div><div class="b h"></div></div><script>if(Date.now()>1512525600000)document.getElementById('f').innerHTML+=100;</script>

ต่อไปนี้เป็นโซลูชันเดียวกันที่ตัดลงเหลือ 260 ไบต์ซึ่งถือว่าพอร์ตการดูของคุณมีอัตราส่วน 18:11 ที่เหมาะสม

<style>.b{background-color:#003580;position:absolute}.v{left:27.78%;width:16.67%;height:100%}.h{top:36.36%;height:27.27%;width:100%}</style><div class="b v"></div><div class="b h"></div><script>if(Date.now()>1512525600000)document.body.innerHTML+=100;</script>

คุณสามารถเคาะปิดการประทับเวลา 0 ในวิธีใดวิธีหนึ่งเพื่อดู "100" ปรากฏขึ้น


1

HTML + Javascript, 329 ไบต์

ฉันขโมยส่วนการตรวจสอบวันที่ลงคอจาก @jstnthms โดยทั่วไปฉันเพิ่งเขียนตาราง html น้ำมันดิบที่มีอัตราส่วนแถว / col ที่thถูกต้องเป็นส่วนสีน้ำเงิน ทดสอบบน IE และ Chrome เช่นกันที่mee.fi- site

<body onload="h=[4,3,4];w=[5,3,10];m=50;s='<style>*{border-spacing:0;padding:0;}th{background:#003580;}</style><table>';for(y in h){s+='<tr height='+(m*h[y])+'>';for(x in w){c=(y==1||x==1)?'h':'d';s+='<t'+c+' width='+(m*w[x])+'>'+(x+y<1&&Date.now()>15125112e5?'100':'')+'</t'+c+'>';}s+='</tr>';}s+='</table>';document.write(s);">

สามารถเล่นกอล์ฟต่อไปได้โดยใช้จาวาสคริปต์บริสุทธิ์ (วางบนคอนโซล) ... ?
diynevala

1

Perl 5, 139 ไบต์

($w,$b,$r)=map"\e[${_}m","47;30",44,0;$_=$w.$"x25 .$b.$"x15 .$w.$"x50 .$r.$/;$_=$_ x12 .s/7/4/gr x9 .$_ x12;time<1512511200||s/   /100/;say

ที่จะเปิดตัว

perl -E '($w,$b,$r)=map"\e[${_}m","47;30",44,0;$_=$w.$"x25 .$b.$"x15 .$w.$"x50 .$r.$/;$_=$_ x12 .s/7/4/gr x9 .$_ x12;time<1512511200||s/   /100/;say'

การจับกุม

อัตราส่วนถูกเปลี่ยนเนื่องจากความสูง / ความกว้างของอัตราส่วนอักขระ = 1.66 (5/3) มิฉะนั้นด้วยอัตราส่วนเดิม:

($w,$b,$r)=map"\e[${_}m","47;30",44,0;$_=$w.$"x25 .$b.$"x15 .$w.$"x50 .$r.$/;$_=$_ x20 .s/7/4/gr x15 .$_ x20;time<1512511200||s/   /100/;say

อัตราส่วนเดิม


1

แร็กเก็ต 6.10 พร้อม 2htdp / ภาพ, 202 ไบต์

(let*([w 180][h 110][p(λ(w h x y o)(place-image(rectangle w h'solid(color 0 53 128))x y o))][b(p w 30 90 55(p 30 h 60 55(empty-scene w h)))])(if(>(current-seconds)1512536400)(overlay(text"100"9'b)b)b))

Ungolfed:

(let* (
       [flag-width 180]
       [flag-height 110]
       [place-rect (λ (width height x-pos y-pos other-pos)
                     (place-image
                      (rectangle width height 'solid (color 0 53 128))
                      x-pos y-pos other-pos))]
       [flag (place-rect
              flag-width 30 90 55
              (place-rect
               30 flag-height 60 55
               (empty-scene flag-width flag-height)))]
       )
  (if (> (current-seconds) 1512536400)  ; If Finland is 100 years old
      (overlay (text "100" 9 'b) flag)  ; add "100" to the flag
      flag))                            ; otherwise just the flag

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


คุณเป็นคนแรกที่วาง100ส่วนสีน้ำเงิน - เกือบพลาด
Antti29

1

พื้นฐานขนาดเล็ก 300 ไบต์

สคริปต์ที่ไม่รับอินพุตและเอาต์พุตไปยังTextWindowวัตถุ

GraphicsWindow.BrushColor=0
If Clock.Year*10000+Clock.Month*100+Clock.Day>=20171206Then
GraphicsWindow.DrawText(0,0,"100")
EndIf
GraphicsWindow.Height=275
GraphicsWindow.Width=450
GraphicsWindow.BrushColor="#003580
GraphicsWindow.FillRectangle(0,100,450,75)
GraphicsWindow.FillRectangle(125,0,75,275)

ลองที่ SmallBasic.com! ต้องใช้ IE / Silverlight

เอาท์พุต

แสดงให้เห็นหลังจากวันเอกราชครบรอบ 100 ของฟินแลนด์ เอาท์พุต


0

รหัสที่ทำไว้ก่อนหน้านี้มีการ golfed ลงไปต่อไปนี้:

HTML, CSS และ JavaScript, 1,599 ไบต์

var d1=new Date(1917,11,6);
var d2=new Date();
var difference = d2.getFullYear()-d1.getFullYear();
if(difference===100 && d2.getDate()===d1.getDate() && d2.getMonth()===d1.getMonth()) {
	document.getElementById("bottom-right").innerHTML=d2.getFullYear()-d1.getFullYear();
}
#flag{
background-color: #FFF;
width: 540px;
height: 330px;
border: 6px solid gray;
margin: 10% auto;
}
.surround{
background-color: #003580;
width: 90px;
height: 120px;
margin: 0px 300px 0px 150px;
}
.middle{
background-color: rgb(0, 53, 128);
width: 540px;
height: 90px;
}
<head>
<title>Happy Birthday, Finland</title>
<link rel="stylesheet" type="text/css" href="decor.css">
</head>
<body>
<div id="flag"><div class="surround"></div><div class="middle"></div><div class="surround"></div></div>
<script type="text/javascript" src="date.js"></script>
</body>


ในการป้องกันของฉันฉันจะบอกว่านี่เป็นครั้งแรกของฉัน จะพยายามทำให้รหัสสั้นลงในอนาคต
Raunaq Koppikar

ดังที่สตีเฟ่นได้กล่าวไปแล้วนี่คือรหัสกอล์ฟและดังนั้นโปรแกรมของคุณควรตั้งเป้าให้สั้นที่สุด โปรดทราบว่าหากคุณไม่เล่นกอล์ฟของคุณ (เช่นปล่อยให้เป็นไปตาม) มันอาจถูกลบเนื่องจากในขณะนี้ไม่ใช่รายการแข่งขันที่ร้ายแรง ในที่สุดยินดีต้อนรับสู่เว็บไซต์!
caird coinheringaahing

แน่ใจ จะได้รับมันโดยเร็วกอล์ฟ
Raunaq Koppikar

แก้ไขตามที่แนะนำ
Raunaq Koppikar

คุณยังสามารถลบการเยื้องออกทั้งหมดและลบบรรทัดใหม่ใน CSS และ HTML นอกจากนี้คุณสามารถลบช่องว่างระหว่างสัญลักษณ์ใน JS (เช่น===และ100)
NoOneIsHere

0

HTML + JavaScript, 247 ไบต์

<table cellspacing=0 cellpadding=0><tr height=40><td width=50><td width=30 bgcolor=003580><td width=100><tr height=30><td colspan=3 bgcolor=003580><tr height=40><td><td bgcolor=003580><td><script>Date.now()>15125112e5&&document.write(100)</script>


0

JavaScript ES6, 532 ไบต์

ตัดสินใจที่จะลองใช้ภาพ Base64 เพื่อดูว่าฉันจะได้มันสั้นแค่ไหน ไม่ใช่ผู้ชนะ แต่ก็น่าสนใจ

document.write(`${Date.now()>1512525600000?'<i style=position:fixed>100</i>':''}<img src=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAALQAAABuAQMAAAC0pqs4AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABlBMVEX///8ANYAaS5LoAAAAAWJLR0QB/wIt3gAAAAd0SU1FB+EMBRcAAPqLykEAAAAxSURBVEjHY2AAA/v///8zYAGj4qPio+KDWfw/VvBhVHxUfEiKD7b8NSo+Kj4qTrQ4AHKtsHq12fKCAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE3LTEyLTA1VDIzOjAwOjAwKzAxOjAwkDJOKAAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxNy0xMi0wNVQyMzowMDowMCswMTowMOFv9pQAAAAASUVORK5CYI>`)


ไม่จำเป็นต้องใส่วงเล็บในการแก้ไข ( ${(…)}${…}); ไม่จำเป็นต้องใช้เครื่องหมายคำพูดคู่รอบค่าแอตทริบิวต์ HTML เหล่านั้น แม้ว่าจะไม่ถูกต้องในกรณีส่วนใหญ่คุณสามารถตัดการแพ็ดดิงของ base64 ที่เข้ารหัสด้วยเครื่องหมายเท่ากับ (Firefox ไม่มีปัญหาในการถอดรหัส)
จัดการ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.