Bon anniversaire, Finlande!

37

introduction

Comme on le sait, la Finlande célèbre en 2017 ses 100 ans d'indépendance. Pour marquer le coup, votre travail consiste à produire un drapeau finlandais pour le plus grand plaisir de tous.

Défi

Créez un programme ou une fonction qui produit le drapeau de la Finlande (la bordure grise n’y figure que pour la présentation):

Flag of Finland

Spécifications du drapeau

  • Le rapport du drapeau est 18:11, la croix étant une 3unité d'épaisseur, ce qui donne un ensemble de rapports horizontaux de 5:3:10et un ensemble de rapports verticaux de 4:3:4.
  • La taille de l'image doit être au moins de 180 x 110pixels ou, en cas d'art ASCII, de 90 x 55caractères.
  • Il n’existe pas de couleur RVB officielle pour le bleu, mais utilisez l’approximation la plus proche de (0, 53, 128). Si votre système ne prend pas en charge les valeurs RVB, utilisez blue.
  • Pour la couleur blanche, utilisez RVB (255, 255, 255)ou white.

Pas si vite

Comme dessiner le drapeau national finlandais serait plus simple que le défi islandais de l'année dernière , nous devrons augmenter la difficulté un peu. Étant donné que le jour de l’indépendance de la Finlande est le 6 décembre, le nombre décimal 100doit apparaître quelque part sur le drapeau lorsque la date en Finlande ( UTC + 02: 00 ) est 2017-12-06ultérieure ou ultérieure (votre code ne doit pas supposer que la machine sur laquelle il tourne est définie sur une valeur). fuseau horaire particulier). Avant la date, le numéro ne doit pas être là. Le numéro doit être imprimé en noir (RVB (0, 0, 0)ou black), mais vous pouvez choisir son emplacement et ses paramètres de police.

Un exemple d'un tel rendu (encore une fois, ignorez la bordure):

Flag of Finland with 100 on it

À des fins de test, il serait intéressant d’inclure deux versions supplémentaires de votre solution, une avec une date fixe dans le passé et une autre dans le futur.

Règles

Les failles standard sont interdites, de même que les images / bibliothèques de drapeaux intégrées. De plus, votre code ne doit prendre aucune entrée.

Les Finlandais n'aiment pas les bavardages, et c'est du , alors ne perdez pas vos personnages!

Antti29
la source
Devrions-nous simplement utiliser l’espace et # dans le cas d’art ASCII ? Et puis insérez les caractères 100quelque part?
Adám
1
Pouvons-nous prendre la date en Finlande comme entrée pour les systèmes dépourvus d'horloge murale interne ou ne mettant pas en œuvre le fuseau horaire? Je publie parfois des réponses dans l'assemblage GFA-Basic (Atari ST, sans fuseau horaire) ou CP-1610 (Intellivision, sans date / heure) et nous avons des réponses de temps en temps sur d'autres plates-formes de la vieille école. assez bon pour dessiner des choses comme ça mais semble être disqualifié ici à cause de la date.
Arnauld
1
@Arnauld: Mon dieu, je n'avais jamais pensé que quelqu'un utiliserait de tels systèmes. J'apprécie votre situation, mais est-ce que cela laisserait les autres en désavantage? Je pense qu'autoriser l'entrée ne vous laisserait qu'une simple comparaison d'entiers. Une entrée non concurrente sans aspect temporel serait-elle hors de question?
Antti29
1
@ Antti29 Honnêtement, je ne vois aucune bonne solution et il est trop tard pour procéder à une mise à jour majeure des règles. À moins que quelqu'un ne vienne avec une suggestion vraiment satisfaisante, je pense que ces systèmes ne peuvent tout simplement pas rivaliser ici. (J'ai vu le défi dans le bac à sable et je n'y ai pas pensé. Mon mauvais.)
Arnauld
9
L' autre drapeau finlandais est-il autorisé?
Justin Lardinois

Réponses:

24

C (Windows), 361 octets

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

Déroulé:

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

Sortie:

Sortie quand UTC time >= 2017-12-05-22-00:

Ajoutez ce qui suit dans le code après d=gmtime(&n);pour l'essayer:

d->tm_year = 117;
d->tm_mon = 11;
d->tm_mday = 5;
d->tm_hour = 21;
Steadybox
la source
13
Noms de variables mignons!
Adám
16

PHP + SVG (HTML5), 147 137 123 octets

Code SVG par 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';

Mise à jour: Merci à Shaggy de m'avoir aidé à économiser 10 octets.

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

Mise à jour 2: Idée intelligente d' Ismael Miguel , merci d'avoir économisé 14 octets

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

Ordinaire

normal

Après le 6 décembre +2 heures

after 6th Dec - +2 hours

th3pirat3
la source
Donc time()donne UTC?
Adám
Quand est-ce 1512525600?
Adám
1512525600est 2017-12-06T02:00:00+00:00 in ISO 8601@ Adám et oui, time () est un fuseau horaire indépendant.
th3pirat3
12

Röda , 252 250 octets

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

Essayez-le en ligne!

Fergusq
la source
25
L'audace! Vous avez résolu un problème en finnois avec une langue nommée en suédois.
Antti29
1
@Arthur Son nom vient du mot suédois, il n'y en a pas en finnois. Le git contient du finnois car je parle le finnois.
fergusq
1
@ Arthur: J'ai bien peur que vous deviez vous plonger dans la mentalité finlandaise pour apprécier pleinement mon commentaire :)
Antti29
1
@fergusq Eh bien, s'il s'agit de l'homme qui a nommé le langage, alors je suppose qu'il n'y a pas d'autorité supérieure. Cependant, même en sachant que "röda" n'est pas un mot finlandais, je maintiens que mon commentaire précédent était plausible. Les noms de langue ne doivent pas nécessairement être de vrais mots. De plus, même si je ne suis peut-être pas au courant, je suis parfaitement conscient de l'antagonisme des Finlandais contre les Suédois, l'histoire de l'occupation et le suédois étant obligatoires dans les écoles, ce qui en fait l'un des rappels constants.
Arthur
1
@ PaŭloEbermann: Malheureusement.
Antti29
11

C #, 407 400 277 octets

Bizarre comment ForegroundColor =0est autorisé

Enregistré 1 octet grâce à TuukkaX

67 octets sauvés grâce à 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);}}

non testé pour les tests:

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

pour tester 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();
    }
}
LiefdeWen
la source
3
ForegroundColor = 0est autorisé car le littéral 0est convertible en tout type d’énumération, comme indiqué dans la spécification C # .
Joey
9

Mathematica, 129 octets

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


avant .. après ..
enter image description here

enter image description here
vous pouvez toujours le tester sur Wolfram Sandbox
(collez le code et appuyez sur Maj-Entrée)

J42161217
la source
Quand est-ce 3721507200?
Adám
@ Adám AbsolutimeTime donne le nombre total de secondes écoulées depuis le début du 1er janvier 1900
J42161217
@Jenny_mathy le 1er janvier 1900 de quel fuseau horaire?
Daffy
@Daffy of utc +02: 00
J42161217
9

Python 2 , 247 246 230 210 189 octets

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

Essayez-le en ligne!

Imprime une image .ppm:

Drapeau normal

Finland

Drapeau avec 100

Finland100

TFeld
la source
Peut datetime.utcnow()+timedelta(hours=2)<datetime(2017,12,06)être remplacé par datetime.utcnow()>=datetime(2017,12,05,22,0,0)ou quelque chose de similaire?
Adám
Utilisez time.gmtimeplutôt pour les comparaisons de tuples (voir ma réponse)!
Antti Haapala
[time.time ()> 1512514800]
dieter
7

Python 3, 143 141 135 octets

Utilise ANSI d'échappement pour les couleurs, utilise cinq espaces ou "100" en tant que chaîne de couleur, de sorte que je n'ai pas besoin d'imprimer spécialement "100" quelque part sur le drapeau. Longueur 5 à cause de la largeur, parce que 90/5 == 90//5. La chaîne utilisée est définie dans la ligne 1. Ensuite, nous parcourons 55 tours (hauteur), chaque itération vest définie sur chaîne avec la couleur [Blue, BrightWhite] et l'index sélectionné est booléen row<20 or r>34. Nous multiplions ce résultat par 5 (dimensions de largeur: 25:15:50, la largeur totale est donc 90). Ensuite, nous imprimons v + Blue + Blue + Blue + v + v + Blackvest soit Bleu ou BrightWhite. Pour clarifier l’impression: largeur de vest de 25 caractères, largeur de Bleu ( e%44*3) est de 15 et largeur de v*250.25+15+50est 90 qui est la largeur et suit les dimensions requises dans la tâche! Résumé assez compliqué mais je suppose que c'est mieux que rien.

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)
Erreur fatale
la source
2
Bienvenue sur le site!
Caird coinheringaahing
2
Bienvenue chez PPCG! J'ai ajouté un drapeau de langue à votre réponse, et je suggérerais que vous ajoutiez une description de base du fonctionnement de votre programme - mais sinon, bonne première réponse :)
Taylor Scott
2
@TaylorScott fera l'affaire! Et merci, je me cache depuis un an ou deux mais je n’ai jamais rien soumis auparavant. Je ne pouvais pas résister à cause de la Finlande a cent ans!
FatalError
7

Processing.org / Java 191 188 octets

-3 octets grâce à 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

PrincePolka
la source
>15125255999999Lcan be>=15125256e6
Kevin Cruijssen
@KevinCruijssen peut-être peut-il être écourté mais 15125256e6 correspond à 15125255815168, soit 37 heures trop tard
PrincePolka
15125256e6D fonctionne, merci
PrincePolka
Hum, 15125256e6c'est 15125256000000quand je le teste en Java 8. Mais je ne connais pas Processing.org, alors c'est peut-être légèrement différent ou en utilisant une version différente? Voici un TIO avec quelques tests de base 15125256e6pour vérifier que cela fonctionne en Java 8. Mais je suis heureux de l’ Davoir corrigé. Heureux d'avoir pu aider. :)
Kevin Cruijssen
7

Excel VBA, 120 118 117 octets

Fonction de fenêtre immédiate VBE anonyme qui ne prend aucune entrée et émet le drapeau finlandais et si la Finlande a plus de 100 ans, utilisez 100ce drapeau. Cela concerne le fuseau horaire de Pâques des États-Unis, car Excel ou Excel VBA n’ont aucun moyen de déterminer un fuseau horaire sans complément ou accès à 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

Sortie

Si la Finlande a moins de 100 ans

Young Finnish

Si la Finlande a plus de 100 ans

Old Finnish

-2 octet pour passer If #12/5/17 19:00#<=Now Then[B2]=100àIf Now>=#12/5/17 19:0#Then[B2]=100

-1 octet pour l'utilisation de Cellsplutôt que[A1:R11]

Taylor Scott
la source
2
Qui aurait pensé que VBA pourrait faire cela? Excellent.
Floris
3
@ Floris, je me suis rendu compte qu'en matière de pixel art, Excel VBA peut faire des choses incroyables. : D
Taylor Scott
Cela me rappelle d’écrire quelque chose dans le précurseur de VBA (un langage macro fou qui était écrit dans les cellules de la feuille Excel, une ligne par cellule) et qui faisait quelque chose de similaire (créer un graphe d’intensité 2D d’une fonction que j’étais en train d’étudier). Cela devait être 1991. Merci pour les souvenirs.
Floris
1
@ Floris et bien c'est dommage - mais il est bon de savoir que quelqu'un d'autre sait ce qu'ils sont :)
Taylor Scott
1
Et à bien y penser, il y avait quelque chose avant la 4.0 ... Je me souviens avoir été ennuyé quand tout a éclaté. Comme je l'ai été plusieurs fois depuis. Maîtres de non-rétrocompatible.
Floris
5

MATLAB, 133 130 123 octets

3 10 octets sabré merci pour @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

Cette utilise [0, 51, 128] pour la couleur bleue. La taille de l'image est 180 × 110 pixels.

Échantillon échantillon:

enter image description here

Exemple exécuté avec le texte (changer 737035en 0dans le code pour que le texte soit affiché tous les jours):

enter image description here

Luis Mendo
la source
4

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

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 pour indiquer que les exigences de couleur sont remplies.) Éditer: 10 octets sauvegardés grâce à @Shaggy. Les sorties:

<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

Neil
la source
Comment cela gère-t-il le décalage de fuseau horaire lorsqu'il est exécuté ailleurs qu'en UTC + 2?
Adám
@ Adám Date.now()est en UTC et je compare à la valeur UTC de 2017/12/06 00:00:00 UTC+2.
Neil
Puis-je utiliser votre code SVG dans mon extrait de code php?
th3pirat3
2
@ Adám je vous ai déjà dit?
Neil
1
Remplacez <path></path>par <path/>pour sauvegarder quelques octets.
Shaggy
4

Python 3 avec oreiller, 213 212 211 caractères (Unix) et 217 216 caractères (Portable)

Ceci est la version Unix. Après avoir posté, j'ai réalisé que l'heure renvoyée par time()n'a pas nécessairement son époque le 1er janvier 1970, elle n'est donc pas nécessairement portable.

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

C’est le code portable, 4 octets de plus, qu’il utilise gmtimeavec la comparaison de tuples et qui devrait donc fonctionner de manière fiable également sur 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()

Les images sont affichées dans une fenêtre. Vraiment difficile de le faire consommer moins de caractères. Même si time.timeun retour ne serait pas tout à fait correct, ou serait décalé d'une microseconde.float>0x5a273299>0x5a273300

enter image description here

enter image description here

Antti Haapala
la source
4

Tcl / Tk , 135 octets

Doit être exécuté dans le shell interactif

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}

Avant le 06/12/2017 à 02h00 GMT

enter image description here

Après le 06/12/2017 à 02h00 GMT

enter image description here

sergiol
la source
4

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

Golfé

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

Résultat

Finland

Crédits

40 octets enregistrés par Olivier Grégoire pour l'utilisation de lambda.
4 octets enregistrés par Kevin Cruijssen pour le formatage long.
2 octets enregistrés par l'utilisateur 902383 pour le formatage hexadécimal.

jfh
la source
1
@ jfhcs: Eh bien, malheureusement, c'étaient les règles. Et ... c'est Java.
Antti29
1
Ah, je vois. Je mettrai à jour ma réponse. Je dois avoir mal interprété les règles.
Jfh
1
Vous pouvez remplacer le trues par 1>0, argsavec a, et pouvez supprimer les espaces autour =de P j = new...pour économiser quelques octets.
Justin Mariner
1
342 octets (324 octets + 18 octets pour import java.awt.*;), avec la condition incluse.
Olivier Grégoire
1
Votre réponse actuelle comporte plusieurs failles qui la rendent invalide: 1. il n’ya pas importdu tout. 2. les noms de variables ne sont pas abrégés: argspeuvent être réduits à a. 3. il y a encore des espaces optionnels contenus dans l'entrée. 4. il n'y a pas d'empreinte conditionnelle de "100".
Olivier Grégoire
3

vim, 147

J'aime vraiment ce défi. © c'est s'échapper.

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

pacholik
la source
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

pacholik
la source
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.

fergusq
la source
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

pacholik
la source
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.

jstnthms
la source
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);">
diynevala
la source
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

Nahuel Fouilleul
la source
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

Julian Zucker
la source
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

Taylor Scott
la source
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>

Raunaq Koppikar
la source
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>

tsh
la source
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>`)

Jamie Barker
la source
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