Chúc mừng sinh nhật, Phần Lan!


37

Giới thiệu

Như đã biết, năm 2017, Phần Lan kỷ niệm 100 năm độc lập. Để đánh dấu dịp này, công việc của bạn là sản xuất một lá cờ Phần Lan cho mọi người thưởng thức.

Thử thách

Tạo một chương trình hoặc một chức năng tạo ra cờ Phần Lan (viền màu xám chỉ dành cho mục đích trình bày):

Quốc kỳ Phần Lan

Thông số kỹ thuật cờ

  • Tỷ lệ của cờ là 18:11, với chữ thập 3dày đơn vị, tạo ra một bộ tỷ lệ ngang 5:3:10và một bộ tỷ lệ dọc 4:3:4.
  • Hình ảnh phải có 180 x 110kích thước tối thiểu pixel hoặc trong trường hợp nghệ thuật ASCII, các 90 x 55ký tự.
  • Không có màu RGB chính thức cho màu xanh lam, nhưng sử dụng xấp xỉ gần nhất của (0, 53, 128). Nếu hệ thống của bạn không hỗ trợ các giá trị RGB, hãy sử dụng blue.
  • Đối với màu trắng, sử dụng RGB (255, 255, 255)hoặc white.

Không quá nhanh

Vì vẽ quốc kỳ Phần Lan sẽ đơn giản hơn thử thách Iceland năm ngoái , chúng tôi sẽ phải tăng cường độ khó một chút. Cho rằng Ngày Độc lập của Phần Lan là vào ngày 6 tháng 12, số thập phân 100phải xuất hiện ở đâu đó trên cờ khi ngày ở Phần Lan ( UTC + 02: 00 ) 2017-12-06trở lên (mã của bạn không nên cho rằng máy đang chạy được đặt thành một múi giờ cụ thể). Trước ngày, số không được ở đó. Số phải được in bằng màu đen (RGB (0, 0, 0)hoặc black) nhưng thông số vị trí và phông chữ của nó tùy thuộc vào bạn.

Một ví dụ về kết xuất như vậy (một lần nữa, bỏ qua đường viền):

Cờ Phần Lan với 100 trên đó

Đối với mục đích thử nghiệm, sẽ rất tốt nếu bao gồm hai phiên bản bổ sung của giải pháp của bạn, một phiên bản có ngày cố định trong quá khứ và một phiên bản trong tương lai.

Quy tắc

Các lỗ hổng tiêu chuẩn bị cấm, cũng như các thư viện / hình ảnh cờ tích hợp. Ngoài ra, mã của bạn không được lấy bất kỳ đầu vào.

Vây không thích nói chuyện nhỏ, và đây là , vì vậy đừng lãng phí nhân vật!


Chúng ta có nên sử dụng không gian và # trong trường hợp nghệ thuật ASCII không? Và sau đó chèn các ký tự 100ở đâu đó?
Adám

1
Chúng ta có thể lấy ngày ở Phần Lan làm đầu vào cho các hệ thống thiếu đồng hồ treo tường bên trong hoặc không thực hiện múi giờ? Thỉnh thoảng tôi vẫn đăng câu trả lời trong GFA-Basic (Atari ST, không có múi giờ) hoặc lắp ráp CP-1610 (Intellivision, hoàn toàn không có ngày / giờ) và đôi khi chúng tôi có câu trả lời trên một số nền tảng trường học cũ khác khá giỏi trong việc vẽ những thứ như thế nhưng dường như bị loại ở đây vì vấn đề ngày tháng.
Arnauld

1
@Arnauld: Trời ạ, tôi chưa bao giờ nghĩ ai sẽ sử dụng những hệ thống như vậy. Tôi đánh giá cao tình trạng khó khăn của bạn nhưng điều đó sẽ khiến người khác gặp bất lợi? Tôi nghĩ rằng cho phép đầu vào sẽ để lại cho bạn chỉ với một so sánh số nguyên đơn giản. Một mục không cạnh tranh mà không có khía cạnh thời gian sẽ ra khỏi câu hỏi?
Antti29

1
@ Antti29 Thành thật mà nói, tôi không thể nghĩ ra bất kỳ giải pháp tốt nào và đã quá muộn để thực hiện bất kỳ cập nhật lớn nào cho các quy tắc. Trừ khi ai đó đi kèm với một đề nghị thực sự thỏa mãn, tôi nghĩ các hệ thống này đơn giản là không thể cạnh tranh ở đây. (Tôi đã thấy thử thách trong hộp cát và không nghĩ về điều đó. Xấu của tôi.)
Arnauld

9
cờ Phần Lan khác được phép?
Justin Lardinois

Câu trả lời:


24

C (Windows), 361 byte

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

Chưa được kiểm soát:

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

Đầu ra:

Đầu ra khi UTC time >= 2017-12-05-22-00:

Thêm mã sau d=gmtime(&n);vào mã sau để thử:

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

13
Tên biến dễ thương!
Adám

16

PHP + SVG (HTML5), 147 137 123 byte

Mã SVG của 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';

Cập nhật: Cảm ơn Shaggy đã giúp tôi tiết kiệm 10 byte.

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

Cập nhật 2: Ý tưởng thông minh của Ismael Miguel , cảm ơn vì đã tiết kiệm 14 byte

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

Bình thường

bình thường

Sau ngày 6 tháng 12 +2 giờ

sau ngày 6 tháng 12 - +2 giờ


Vậy time()cho UTC?
Adám

Khi 1512525600nào?
Adám

15125256002017-12-06T02:00:00+00:00 in ISO 8601@ Adám và có, time () là múi giờ độc lập.
th3pirat3

12

Röda , 252 250 byte

{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>`]}

Hãy thử trực tuyến!


25
Sự táo bạo! Bạn đã giải quyết một thách thức Phần Lan với một ngôn ngữ có tên Thụy Điển.
Antti29

1
@Arthur Nó được đặt tên theo từ Thụy Điển, không có từ đó trong tiếng Phần Lan. Git chứa tiếng Phần Lan vì tôi nói tiếng Phần Lan.
fergusq

1
@Arthur: Tôi e rằng bạn sẽ cần đi sâu vào suy nghĩ của Phần Lan để đánh giá đầy đủ nhận xét của tôi :)
Antti29

1
@fergusq Chà, nếu đó là từ người đàn ông thực sự đặt tên cho ngôn ngữ, thì tôi đoán là không có thẩm quyền cao hơn. Tuy nhiên, ngay cả với kiến ​​thức rằng "röda" không phải là một từ tiếng Phần Lan, tôi vẫn cho rằng nhận xét trước đây của tôi là hợp lý. Tên ngôn ngữ không phải là từ thực tế. Ngoài ra, trong khi tôi có thể không ở bên trong nó, tôi nhận thức rõ về sự đối nghịch mà người Phần Lan chống lại người Thụy Điển, với lịch sử nghề nghiệp, và Thụy Điển là bắt buộc trong các trường học như một trong những lời nhắc nhở liên tục.
Arthur

1
@ PaŭloEbermann: Thật không may.
Antti29

11

C #, 407 400 277 byte

Lạ như thế nào ForegroundColor =0được cho phép

Đã lưu 1 byte nhờ TuukkaX

Đã lưu 67 byte nhờ 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);}}

chưa được thử nghiệm:

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

để thử nghiệm 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được cho phép bởi vì nghĩa đen 0có thể chuyển đổi thành bất kỳ loại enum nào, như được viết trong đặc tả C # .
Joey

9

Toán học, 129 byte

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


trước .. sau ..
nhập mô tả hình ảnh ở đây

nhập mô tả hình ảnh ở đây
bạn luôn có thể kiểm tra nó trên Wolfram Sandbox
(dán mã và nhấn Shift-Enter)


Khi 3721507200nào?
Adám

@ Adám AbsolutimeTime đưa ra tổng số giây kể từ đầu ngày 1 tháng 1 năm 1900
J42161217

@Jenny_mathy ngày 1 tháng 1 năm 1900 của múi giờ nào?
Daffy

@Daffy của utc +02: 00
J42161217

9

Python 2 , 247 246 230 210 189 byte

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

Hãy thử trực tuyến!

In hình ảnh .ppm:

Cờ bình thường

Phần Lan

Cờ với 100

Phần Lan100


Có thể datetime.utcnow()+timedelta(hours=2)<datetime(2017,12,06)được thay thế bằng datetime.utcnow()>=datetime(2017,12,05,22,0,0)hoặc một cái gì đó tương tự?
Adám

Sử dụng time.gmtimethay thế cho các so sánh tuple (xem câu trả lời của tôi)!
Antti Haapala

[time.time ()> 1512514800]
ăn kiêng

7

Python 3, 143 141 135 byte

Sử dụng lối thoát ANSI cho màu sắc, sử dụng năm dấu cách hoặc "100" làm chuỗi màu để tôi không cần in đặc biệt "100" ở đâu đó trên cờ. Chiều dài 5 vì chiều rộng, vì 90/5 == 90//5. Chuỗi đang được sử dụng đang được xác định trong hàng 1. Sau đó, chúng tôi lặp lại 55 vòng (chiều cao), trên mỗi lần lặp vđược đặt thành chuỗi có màu [Blue, BrightWhite] và chỉ mục được chọn là boolean row<20 or r>34. Chúng tôi nhân kết quả đó với 5 lần nữa (kích thước chiều rộng: 25:15:50 để tổng chiều rộng là 90). Sau đó, chúng tôi in ra v + Blue + Blue + Blue + v + v + Blacknơi vlà một trong hai màu xanh hoặc BrightWhite. Để làm rõ việc in: chiều rộng vlà 25 ký tự, chiều rộng của Blue ( e%44*3) là 15 và chiều rộng v*2là 50.25+15+50là 90 là chiều rộng và tuân theo các kích thước cần thiết trong tác vụ! Tóm tắt khá lộn xộn nhưng tôi đoán nó tốt hơn không có gì.

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
Chào mừng đến với trang web!
caird coinheringaahing

2
Chào mừng đến với PPCG! Tôi đã thêm một cờ ngôn ngữ vào câu trả lời của bạn và tôi sẽ đề nghị bạn thêm một mô tả cơ bản về cách chương trình của bạn hoạt động - nhưng nếu không, câu trả lời đầu tiên tuyệt vời :)
Taylor Scott

2
@TaylorScott Sẽ làm được! Và cảm ơn bạn, tôi đã ẩn nấp ở đây trong khoảng một hoặc hai năm nhưng chưa bao giờ gửi bất cứ điều gì trước đó. Không thể cưỡng lại vì Phần Lan tròn 100 năm!
FatalError

7

Đang xử lý.org / Java 191 188 byte

-3 byte nhờ 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);}

Trước Sau


>15125255999999Lcó thể>=15125256e6
Kevin Cruijssen 7/12/17

@KevinCruijssen có lẽ có thể rút ngắn nhưng 15125256e6 là 15125255815168, tức là 37 giờ quá muộn
PrincePolka

15125256e6D hoạt động, cảm ơn
PrincePolka

Hmm, 15125256e615125256000000khi tôi thử nghiệm nó trong Java 8. Nhưng tôi không biết Xử lý.org, vì vậy có lẽ nó hơi khác hoặc sử dụng một phiên bản khác? Đây là một TIO với một số thử nghiệm cơ bản 15125256e6để xác minh nó hoạt động trong Java 8. Nhưng tôi rất vui vì Dsau khi sửa nó. Rất vui vì tôi có thể giúp. :)
Kevin Cruijssen

7

VBA Excel, 120 118 117 byte

Chức năng cửa sổ ngay lập tức VBE ẩn danh không có đầu vào và đầu ra cờ Phần Lan và nếu Phần Lan lớn hơn 100 năm tuổi 100trên cờ đó. Điều này được thực hiện liên quan đến múi giờ Phục sinh của Hoa Kỳ, vì không có cách nào để Excel hoặc Excel VBA xác định múi giờ mà không cần bổ trợ hoặc truy cập internet.

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

Đầu ra

Nếu Phần Lan trẻ hơn 100 tuổi

Phần Lan trẻ

Nếu Phần Lan già hơn 100 tuổi

Phần Lan cổ

-2 Byte để thay đổi If #12/5/17 19:00#<=Now Then[B2]=100thànhIf Now>=#12/5/17 19:0#Then[B2]=100

-1 Byte để sử dụng Cellsthay vì[A1:R11]


2
Ai có thể nghĩ VBA của ol có thể làm điều này. Xuất sắc.
Floris

3
@Floris, tôi đã nhận ra rằng khi nói đến pixel art, Excel VBA có thể làm một số điều tuyệt vời. : D
Taylor Scott

Tôi được nhắc nhở về việc viết một cái gì đó trong tiền thân của VBA (một ngôn ngữ macro điên rồ được viết trong các ô của bảng Excel, một dòng trên mỗi ô) đã làm một cái gì đó tương tự (tạo một biểu đồ cường độ 2D của một chức năng mà tôi đang nghiên cứu). Đó phải là năm 1991. Cảm ơn những kỷ niệm.
Floris

1
@Floris thật là xấu hổ - nhưng thật tốt khi biết rằng người khác biết họ là gì :)
Taylor Scott

1
Và nghĩ về nó - có một cái gì đó trước 4.0 ... Tôi nhớ là đã khó chịu khi mọi thứ tan vỡ. Như tôi đã nhiều lần kể từ đó. Bậc thầy không tương thích ngược.
Floris

5

MATLAB, 133 130 123 byte

3 10 byte sabed cảm ơn cho @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

Điều này sử dụng [0, 51, 128]cho màu xanh. Kích thước của hình ảnh là 180 × 110 pixel.

Chạy mẫu:

nhập mô tả hình ảnh ở đây

Mẫu chạy với văn bản (thay đổi 737035thành 0mã để văn bản được hiển thị vào bất kỳ ngày nào):

nhập mô tả hình ảnh ở đây


4

JavaScript (ES5) + SVG (HTML5), 189 179 byte

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 để hiển thị rằng các yêu cầu về màu sắc đang được đáp ứng.) Chỉnh sửa: Đã lưu 10 byte nhờ @Shaggy. Đầu ra:

<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


Làm thế nào điều này xử lý bù múi giờ khi chạy ở nơi khác ngoài UTC + 2?
Adám

@ Adám Date.now()là trong UTC và tôi so sánh với giá trị UTC của 2017/12/06 00:00:00 UTC+2.
Neil

Sử dụng mã SVG của bạn trong đoạn mã php của tôi có ổn không?
th3pirat3

2
@ Adám tôi đã nói với bạn?
Neil

1
Thay thế <path></path>bằng <path/>để tiết kiệm một vài byte.
Xù xì

4

Python 3 với Gối, 213 212 211 ký tự (Unix) và 217 216 ký tự (Di động)

Đây là phiên bản Unix. Tôi nhận ra sau khi đăng bài rằng thời gian được trả lại time()không nhất thiết phải có kỷ nguyên vào ngày 1 tháng 1 năm 1970, vì vậy nó không nhất thiết phải mang theo.

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

Đây là mã di động, thêm 4 byte, nó sử dụng gmtimevới so sánh tuple nên nó cũng hoạt động đáng tin cậy trên 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()

Các hình ảnh được hiển thị trong một cửa sổ. Thực sự khó khăn để làm cho nó tiêu thụ ít nhân vật. Ngay cả time.timetrả về floatnhư vậy >0x5a273299sẽ không hoàn toàn chính xác, hoặc >0x5a273300sẽ bị tắt trong một phần triệu giây.

nhập mô tả hình ảnh ở đây

nhập mô tả hình ảnh ở đây


4

Tcl / Tk , 135 byte

Phải được chạy trong vỏ tương tác

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}

Trước 2017/12/06 02:00 GMT

nhập mô tả hình ảnh ở đây

Sau 2017/12/06 02:00 GMT

nhập mô tả hình ảnh ở đây


4

Java 342 368 361 321 317 (299 + 18) byte

Chơi gôn

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

Ung dung

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

Kết quả

Phần Lan

Tín dụng

40 byte được lưu bởi Olivier Grégoire khi sử dụng lambda.
4 byte được lưu bởi Kevin Cruijssen cho định dạng dài.
2 byte được lưu bởi user902383 cho định dạng hex.


1
@jfhcs: Chà, thật không may, đó là những quy tắc. Và ... đó là Java.
Antti29

1
Ah tôi thấy. Tôi sẽ cập nhật câu trả lời của tôi. Tôi phải giải thích sai các quy tắc.
jfh

1
Bạn có thể thay thế trues bằng 1>0, argsbằng avà có thể xóa khoảng trắng xung quanh =tại P j = new...để lưu một vài byte.
Justin Mariner

1
342 byte (324 byte + 18 byte cho import java.awt.*;), với điều kiện đi kèm.
Olivier Grégoire

1
Phản hồi hiện tại của bạn có một số sai sót khiến nó không hợp lệ: 1. không có gì importcả. 2. tên biến không được rút ngắn: argscó thể rút gọn thành a. 3. vẫn còn các không gian tùy chọn được chứa trong mục. 4. không có bản in có điều kiện "100".
Olivier Grégoire

3

vim, 147

Tôi thực sự thích thử thách này. © là thoát.

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 

nhập mô tả hình ảnh ở đây


3

bash và fantemagick, 135

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

nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây


1
Sử dụng tốt hơn đánh giá số học : ((`date +%s`>=1512511200))&&x=100. Lưu ý rằng tôi đã di chuyển các dấu ngoặc đơn bên trong -drawtham số, nơi chúng không cần thoát.
manatwork

2

Băng vệ sinh bắt buộc , 239 byte (không cạnh tranh)

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 trên suurempi kuin 1512511200000 , niin se näyttää tekstin"<text y=19>100" .

Phiên bản trực tuyến

Dịch:

Khi trang lớn mở ra, nó sẽ hiển thị văn bản "<svg><path d=180v110 /><path d=M0,40h50V0h30v40h100v30H80v40H50V70H0 fill=#005580 />"và, nếu thời gian hiện tại tính bằng mili giây lớn hơn 1512511200000, nó sẽ hiển thị văn bản "<text y=19>100".

SVG được lấy từ câu trả lời này bởi th3pirat3 (và Neil, xuất hiện).

Chương trình này được viết trong một phiên bản mới của Tampio mà tôi đang làm việc. Những người biết tiếng Phần Lan có thể thấy rằng nó gần như có thể đọc được. Tôi đánh dấu câu trả lời là không cạnh tranh vì ngôn ngữ này đã được xuất bản sau thử thách này.

Để chạy chương trình này, hãy chuyển đến phiên bản trực tuyến ở trên có chứa phiên bản JS đã biên dịch của chương trình hoặc tải xuống trình biên dịch từ trang Github của nó . Để biên dịch chương trình, hãy chạy python3 tampio.py -p program.itp >program.html.

Tampio không phải là một ngôn ngữ chơi golf theo bất kỳ biện pháp nào, nhưng do mã Svg tốt hơn, nó thực sự đã đánh bại Röda ... Tôi hơi ngạc nhiên.


Đó là giống như nó!
Antti29

2

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

nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây


1

HTML + CSS + Javascript, 339 byte

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

Đây là giải pháp tương tự được cắt giảm xuống còn 260 byte, giả sử cổng xem của bạn có tỷ lệ 18:11 thích hợp.

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

Bạn có thể loại bỏ 0 dấu thời gian trong một trong hai giải pháp để thấy "100" xuất hiện.


1

HTML + Javascript, 329 byte

Tôi đã xấu hổ lấy trộm phần kiểm tra ngày từ @jstnthms. Về cơ bản tôi chỉ viết bảng html thô với tỷ lệ hàng / col chính xác, thlà các phần màu xanh. Đã thử nghiệm trên IE và Chrome, cũng tại 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);">

Có thể bị đánh gôn thêm bởi javascript thuần túy (dán trên bàn điều khiển) ...?
diynevala

1

Perl 5, 139 byte

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

sẽ được tung ra

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'

chụp

tỷ lệ đã được thay đổi do tỷ lệ ký tự chiều cao / chiều rộng = 1,66 (5/3) nếu không với tỷ lệ ban đầu:

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

tỷ lệ ban đầu


1

Vợt 6.10 với 2htdp / hình ảnh, 202 byte

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

Ung dung:

(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

với văn bản nhập mô tả hình ảnh ở đây


Bạn là người đầu tiên đặt 100phần màu xanh - gần như bỏ lỡ nó.
Antti29

1

Cơ bản nhỏ , 300 byte

Một Script không có đầu vào và đầu ra cho TextWindowđối tượng.

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)

Hãy dùng thử tại SmallBasic.com! Yêu cầu IE / Silverlight

Đầu ra

Thể hiện sau ngày độc lập thứ 100 của Phần Lan. Đầu ra


0

mã được tạo trước đó đã được đánh xuống như sau:

HTML, CSS và JavaScript, 1599 byte

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>


Để bảo vệ tôi, tôi muốn nói rằng đây là lần đầu tiên của tôi. Sẽ cố gắng để làm cho mã ngắn hơn trong tương lai.
Raunaq Koppikar

Như Stephen đã nói, đây là một môn đánh gôn, và vì vậy chương trình của bạn nên đặt mục tiêu càng ngắn càng tốt. Xin lưu ý rằng nếu bạn không chơi chương trình của mình (nghĩa là để nguyên như vậy), nó có thể bị xóa vì hiện tại nó không phải là một ứng cử viên nghiêm trọng. Cuối cùng, chào mừng đến với trang web!
caird coinheringaahing

Chắc chắn rồi. Chắc chắn sẽ có được nó càng sớm càng tốt
Raunaq Koppikar

Chỉnh sửa theo đề xuất
Raunaq Koppikar

Bạn cũng có thể xóa thụt lề trong tất cả và xóa các dòng mới trong CSS và HTML. Ngoài ra, bạn có thể xóa khoảng trắng giữa các ký hiệu trong JS (như ===100).
NoOneIsĐây là

0

HTML + JavaScript, 247 byte

<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, 535 byte

Quyết định thử sử dụng hình ảnh Base64 để xem tôi có thể nhận được nó trong bao lâu. Không phải là một người chiến thắng, nhưng dù sao cũng thú vị.

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


Không cần dấu ngoặc trong phép nội suy ( ${(…)}${…}); không cần dấu ngoặc kép xung quanh các giá trị thuộc tính HTML đó; mặc dù không hợp lệ, trong hầu hết các trường hợp, bạn có thể cắt bỏ phần đệm của chuỗi được mã hóa base64 với các dấu bằng (Firefox chắc chắn không có vấn đề gì khi giải mã nó).
manatwork
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.