З днем ​​народження, Фінляндія!


37

Вступ

Як відомо, у 2017 році Фінляндія святкує 100 років своєї незалежності. Щоб відзначити цю подію, ваша робота - виготовити фінський прапор для задоволення кожного.

Виклик

Створіть програму або функцію, яка створює прапор Фінляндії (сіра межа є лише для презентації):

Flag of Finland

Технічні характеристики прапора

  • Коефіцієнт прапора становить 18:11, при цьому хрест має 3одиниці товщини, що дає набір горизонтального відношення 5:3:10та набір вертикальних коефіцієнтів 4:3:4.
  • Малюнок повинен бути 180 x 110розміром не менше пікселів або символів ASCII, якщо це зображення, 90 x 55символів.
  • Немає офіційного кольору RGB для синього, але використовуйте найближче наближення (0, 53, 128). Якщо ваша система не підтримує значення RGB, використовуйте blue.
  • Для білого кольору використовуйте RGB (255, 255, 255)або white.

Не так швидко

Оскільки малювання національного прапора Фінляндії було б простішим, ніж минулорічний ісландський виклик , нам доведеться трохи посилити труднощі. Зважаючи на те , що День незалежності Фінляндії - 6 грудня, десяткове число 100повинно бути десь на прапорі, коли дата у Фінляндії ( UTC + 02: 00 ) 2017-12-06або пізніше (ваш код не повинен вважати, що машина, на якій працює, встановлена ​​на конкретний часовий пояс). До дати номер не повинен бути там. Номер повинен бути надрукований чорним кольором (RGB (0, 0, 0)або black), але його розміщення та параметри шрифту залежать від вас.

Приклад такого візуалізації (знову ж таки, ігноруйте кордон):

Flag of Finland with 100 on it

З метою тестування було б непогано включити дві додаткові версії вашого рішення, одну з фіксованою датою в минулому та одну в майбутньому.

Правила

Стандартні лазівки заборонені, як і вбудовані зображення прапорів / бібліотек. Також ваш код не повинен приймати жодних даних.

Фіни не люблять невеликих розмов, і це , тому не витрачайте персонажів!


Чи варто просто використовувати простір і # у випадку мистецтва ASCII ? А потім 100десь вставити символи ?
Adám

1
Чи можна вважати дату у Фінляндії як вхідну інформацію для систем, у яких немає внутрішнього настінного годинника або не реалізують часовий пояс? Я час від часу публікую відповіді в GFA-Basic (Atari ST, немає часового поясу) або CP-1610 (Intellivision, взагалі немає дати / часу), і ми час від часу отримуємо відповіді на інших платформах для старих шкіл, які зазвичай досить добре малює такі речі, але, здається, тут дискваліфікують через питання про дату.
Арнольд

1
@Arnauld: Боже, я ніколи не думав, що хтось використовуватиме такі системи. Я вдячний за ваше важке становище, але чи залишить це людей у ​​невигідності? Я думаю, що дозволити введення даних залишить вас просто простим цілим порівнянням. Чи не піде питання про неконкурентний запис без часового аспекту?
Antti29

1
@ Antti29 Чесно кажучи, я не можу придумати жодного хорошого рішення, і вже пізно робити якісь істотні оновлення правил. Якщо хтось не приходить із задоволенням, я думаю, що ці системи тут просто не можуть конкурувати. (Я бачив виклик у пісочниці і не думав над цим. Моє погано.)
Арнольд

Відповіді:


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-код Ніла

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

Оновлення: Дякую Шаггі, що допомогла мені зберегти 10 байт.

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

Оновлення 2: Розумна ідея Ісмаїла Мігеля , дякую за економію 14 байт

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

Нормальний

normal

Після 6 грудня +2 години

after 6th Dec - +2 hours


Так time()дає UTC?
Адам

Коли це 1512525600?
Адам

1512525600є 2017-12-06T02:00:00+00:00 in ISO 8601@ Adám, так, час () не залежить від часового поясу.
th3pirat3

12

Рода , 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
@Arthur Це названо шведським словом, у фінській мові такого слова немає. Git містить фінську мову, тому що я є фіномовною.
fergusq

1
@Arthur: Боюсь, вам потрібно буде заглибитися у фінське мислення, щоб повністю оцінити мій коментар :)
Antti29

1
@fergusq Добре, якщо це від людини, яка насправді назвала мову, то, мабуть, немає вищого авторитету. Однак, навіть знаючи, що "röda" не є фінським словом, я вважаю, що мій попередній коментар був правдоподібним. Назви мови не повинні бути власне словами. Крім того, хоча я, можливо, не перебуваю в його внутрішній стороні, я добре знаю той антагонізм, який фіни мають проти шведів, оскільки історія окупації та шведська мова є обов'язковим у школах як одне з декількох постійних нагадувань.
Артур

1
@ PaŭloEbermann: На жаль.
Antti29

11

C #, 407 400 277 байт

Дивно, як ForegroundColor =0це дозволено

Збережено 1 байт завдяки TuukkaX

Збережено 67 байт завдяки Адаму

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

неозорений для тестування:

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може бути конвертованим у будь-який тип перерахунку, як це записано у специфікації C # .
Джої

9

Математика, 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}}


перед .. після ..
enter image description here

enter image description here
ви завжди можете перевірити його на Wolfram Sandbox
(вставити код і натиснути Shift-Enter)


Коли це 3721507200?
Adám

@ Adám AbsolutimeTime дає загальну кількість секунд з початку 1 січня 1900 р.
J42161217

@Jenny_mathy 1 січня 1900 року, який часовий пояс?
Даффі

@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

Спробуйте в Інтернеті!

Друкує зображення .ppm:

Звичайний прапор

Finland

Прапор зі 100

Finland100


Можна datetime.utcnow()+timedelta(hours=2)<datetime(2017,12,06)замінити datetime.utcnow()>=datetime(2017,12,05,22,0,0)чи чимось подібним?
Адам

Використовуйте time.gmtimeнатомість для порівняння кортежів (див. Мою відповідь)!
Антті Хаапала

[time.time ()> 1512514800]
dieter

7

Python 3, 143 141 135 байт

Використовує біг ANSI для кольорів, використовує п'ять пробілів або "100" як кольоровий рядок, так що мені не потрібно спеціально друкувати "100" десь на прапорі. Довжина 5 через ширину, тому що 90/5 == 90//5. Рядок, що використовується, визначається у рядку 1. Потім ми повторюємо 55 круглих (висота), на кожній ітерації vвстановлюється рядок з кольором [Blue, BrightWhite], а вибраний індекс булевий row<20 or r>34. Помножимо цей результат ще раз на 5 (розміри ширини: 25:15:50, тож загальна ширина дорівнює 90). Тоді ми роздруковуємо, v + Blue + Blue + Blue + v + v + Blackде vє Blue або BrightWhite. Для уточнення друку: ширина v25 символів, ширина Blue ( e%44*3) - 15, а ширина v*2- 50.25+15+50дорівнює 90, що становить ширину і відповідає розмірам, необхідним у завданні! Досить безладний підсумок, але я думаю, це краще, ніж нічого.

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

Processing.org / 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);}

Before After


>15125255999999Lможе бути>=15125256e6
Кевін Круїссен

@KevinCruijssen, можливо, його можна скоротити, але 15125256e6 - це 15125255815168, що на 37 годин пізніше
PrincePolka

15125256e6D працює, спасибі
PrincePolka

Хм, 15125256e6це 15125256000000коли я тестую його на Java 8. Але я не знаю Processing.org, тож, можливо, це дещо інше чи використання іншої версії? Ось ТІО з деякими основними тестами, 15125256e6щоб перевірити, чи працює він на Java 8. Але я радий, що Dпісля його виправлення. Радий, що можу допомогти. :)
Кевін Круїйсен

7

Excel VBA, 120 118 117 байт

Анонімна функція негайного вікна VBE, яка не приймає вводу та виводить фінський прапор, і якщо Фінляндія 100на цьому прапорі більше 100 років . Це робиться стосовно Пасхального часового поясу в Сполучених Штатах, оскільки немає можливості Excel або Excel VBA визначити часовий пояс без надбудови чи доступу до Інтернету.

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 років

Young Finnish

Якщо Фінляндія старше 100 років

Old Finnish

-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
Хто б міг подумати, що це може зробити VBA. Відмінно.
Флоріс

3
@Floris, я зрозумів, що коли мова йде про піксельне мистецтво, Excel VBA може зробити дивовижні речі. : D
Тейлор Скотт

Мені нагадують написати щось у попереднику для VBA (божевільна мова макросів, яка була записана у клітинках листа Excel, по одному рядку на комірку), що зробила щось подібне (створити 2D графік інтенсивності функції, яку я вивчав). Мабуть, це був 1991 рік. Дякую за спогади.
Флоріс

1
@Floris добре, що це ганьба - але добре знати, що хтось інший знає, які вони :)
Тейлор Скотт

1
І подумайте про це - щось було раніше 4.0 ... Я пам'ятаю, що дратувався, коли все зламалося. Як я був з того часу. Майстри не сумісних назад.
Флоріс

5

MATLAB, 133 130 123 байт

3 10 байтів спасибі за @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 пікселів.

Проба зразка:

enter image description here

Приклад запуску з текстом (зміна 737035до 0в коді , так що текст відображається в будь-який день):

enter image description here


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?
Adám

@ Adám Date.now()знаходиться в UTC, і я порівнюю зі значенням UTC 2017/12/06 00:00:00 UTC+2.
Ніл

Чи добре використовувати ваш SVG-код у моєму фрагменті php?
th3pirat3

2
@ Adám Я вже вам казав?
Ніл

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при порівнянні з кортежем, тому він повинен надійно працювати і в 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повернення floatтак >0x5a273299би було не зовсім таким правильним, або >0x5a273300було б вимкнено мікросекундою.

enter image description here

enter image description here


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

enter image description here

Після 2017/12/06 02:00 GMT

enter image description here


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

Безумовно

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

Результат

Finland

Кредити

40 байт, збережених Олів'є Грегоаре за використання лямбда.
4 байти, збережені Кевіном Круйсенсом для тривалого форматування.
2 байта врятований user902383 для шестигранної форматуванні.


1
@jfhcs: Well, unfortunately, those were the rules. And... that's Java.
Antti29

1
Ah I see. I will update my answer. I must have misinterpreted the rules.
jfh

1
You can replace the trues with 1>0, args with a, and can remove the spaces around = at P j = new... to save a few bytes.
Justin Mariner

1
342 bytes (324 bytes + 18 bytes for import java.awt.*;), with the condition included.
Olivier Grégoire

1
Your current response has several flaws that make it invalid: 1. there is no import at all. 2. the variable names aren't shortened: args can be reduced to a. 3. there are still optional spaces that are contained in the entry. 4. there is no conditional print of "100".
Olivier Grégoire

3

vim, 147

I really like this challenge ☺. © is escape.

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 

enter image description here


3

bash and 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:

enter image description here enter image description here


1
Better use arithmetic evaluation: ((`date +%s`>=1512511200))&&x=100. Note that I moved the single quotes inside the -draw parameter, where they need no escaping.
manatwork

2

Imperative Tampio, 239 bytes (non-competing)

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

Online version

Translation:

When the big page opens, it will show the text "<svg><path d=180v110 /><path d=M0,40h50V0h30v40h100v30H80v40H50V70H0 fill=#005580 />" and, if the current time in milliseconds is greater than 1512511200000, it will show the text "<text y=19>100".

SVG was taken from this answer by th3pirat3 (and Neil, appearently).

This program is written in a new version of Tampio I have been working on. Those of you who know Finnish can see that it is almost readable. I marked the answer as non-competing because this language was published after this challenge.

To run this program, either go to the online version above that contains the compiled JS version of the program or download the compiler from its Github page. To compile the program, run python3 tampio.py -p program.itp >program.html.

Tampio is not a golfing language by any measure, but due to the better svg code, it actually beat Röda... I was a little surprised.


That's more like it!
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

enter image description here enter image description here


1

HTML + CSS + Javascript, 339 bytes

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

Here's the same solution trimmed down to 260 bytes, which assumes your viewing port has the proper 18:11 ratio.

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

You can knock a 0 off of the timestamp in either solution to see the "100" appear.


1

HTML + Javascript, 329 bytes

I shamelessly stole the date-checking part from @jstnthms. Basically I just write crude html table with correct row/col ratios, th being the blue parts. Tested on IE and Chrome, also at 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);">

Could be further golfed by pure javascript (paste on console)...?
diynevala

1

Perl 5, 139 bytes

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

to be launched

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'

capture

ratio was changed because of character ratio height/width = 1.66 (5/3) otherwise with original ratio :

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

original ratio


1

Racket 6.10 with 2htdp/image, 202 bytes

(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

with text enter image description here


You're the first one to place the 100 on a blue part — almost missed it.
Antti29

1

Small Basic, 300 bytes

A Script that takes no input and outputs to the TextWindow object.

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)

Try it at SmallBasic.com! Requires IE/Silverlight

Output

Shown after the Finland's 100th independence day. Output


0

the previously made code has been golfed down to the following:

HTML, CSS and JavaScript, 1599 bytes

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>


Well in my defence, I'd say this is my first time. Will try to make shorter code in future.
Raunaq Koppikar

As Stephen has already said, this is a code golf, and so your program should aim to be as short as possible. Please keep in mind that if you don't golf your program (i.e. leave it as-is), it is subject to deletion as it currently isn't a serious contender. Finally, welcome to the site!
caird coinheringaahing

Sure. Will definitely get it golfed asap
Raunaq Koppikar

Edited as suggested
Raunaq Koppikar

You can also remove indentation in all, and remove newlines in CSS and HTML. Plus you can remove spaces between symbols in JS (like === and 100).
NoOneIsHere

0

HTML + JavaScript, 247 bytes

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

Decided to try using a Base64 image to see how short I could get it. Not a winner, but interesting nonetheless.

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


No need for parentheses inside interpolation (${(…)}${…}); no need for double quotes around those HTML attribute values; although invalid, in most cases you can cut off the base64 encoded strings's padding with equal signs (Firefox has certainly no problem decoding it).
manatwork
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.