Buon compleanno, Finlandia!


37

introduzione

Come è noto, nel 2017 la Finlandia celebra i suoi 100 anni di indipendenza. Per l'occasione, è tuo compito produrre una bandiera finlandese per il divertimento di tutti.

Sfida

Crea un programma o una funzione che produce la bandiera della Finlandia (il bordo grigio è presente solo a scopo di presentazione):

Bandiera della Finlandia

Specifiche della bandiera

  • Il rapporto della bandiera è 18:11, con la croce essendo 3unità spesse, dando un insieme orizzontale di rapporto 5:3:10e un insieme verticale di 4:3:4.
  • L'immagine deve avere una 180 x 110dimensione di almeno pixel, o in caso di arte ASCII, 90 x 55caratteri.
  • Non esiste un colore RGB ufficiale per il blu, ma usa l'approssimazione più vicina a (0, 53, 128). Se il sistema non supporta i valori RGB, utilizzare blue.
  • Per il colore bianco, utilizzare RGB (255, 255, 255)o white.

Non così in fretta

Dato che disegnare la bandiera nazionale finlandese sarebbe più semplice della sfida islandese dell'anno scorso , dovremo aumentare un po 'la difficoltà. Dato che la Festa dell'indipendenza della Finlandia è il 6 dicembre, il numero decimale 100deve apparire da qualche parte sulla bandiera quando la data in Finlandia ( UTC + 02: 00 ) è 2017-12-06o successiva (il tuo codice non dovrebbe presumere che la macchina su cui è in esecuzione sia impostata su un fuso orario particolare). Prima della data, il numero non deve essere presente. Il numero deve essere stampato in nero (RGB (0, 0, 0)o black) ma i suoi parametri di posizionamento e carattere sono a te.

Un esempio di tale rendering (di nuovo, ignora il bordo):

Bandiera della Finlandia con 100 su di essa

A scopo di test, sarebbe bello includere due versioni aggiuntive della soluzione, una con una data fissa in passato e una in futuro.

Regole

Sono vietate le scappatoie standard , così come le immagini / le librerie di flag incorporate. Inoltre, il tuo codice non deve accettare alcun input.

Ai finlandesi non piacciono le chiacchiere, e questo è , quindi non sprecare personaggi!


Dovremmo semplicemente usare lo spazio e # in caso di arte ASCII ? E quindi inserire i personaggi 100da qualche parte?
Adám,

1
Possiamo prendere la data in Finlandia come input per i sistemi che non dispongono di un orologio da parete interno o che non implementano il fuso orario? Occasionalmente invio risposte in GFA-Basic (Atari ST, senza fuso orario) o CP-1610 (Intellivision, nessuna data / ora) e di tanto in tanto abbiamo risposte su altre piattaforme di vecchia scuola che di solito sono abbastanza bravo a disegnare cose del genere ma sembra essere squalificato qui a causa del problema della data.
Arnauld,

1
@Arnauld: Accidenti, non avrei mai pensato che qualcuno avrebbe usato tali sistemi. Apprezzo la tua situazione ma ciò lascerebbe gli altri in svantaggio? Penso che consentire l'input ti lascerebbe solo un semplice confronto intero. Un ingresso non concorrenziale senza l'aspetto temporale sarebbe fuori discussione?
Antti29,

1
@ Antti29 Onestamente, non riesco a pensare a nessuna buona soluzione ed è troppo tardi per fare un importante aggiornamento delle regole. A meno che qualcuno non abbia un suggerimento davvero soddisfacente, penso che questi sistemi semplicemente non possano competere qui. (Ho visto la sfida nella sandbox e non ci ho pensato. Mio male.)
Arnauld

Risposte:


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

srotolato:

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

Produzione:

Uscita quando UTC time >= 2017-12-05-22-00:

Aggiungere quanto segue nel codice dopo d=gmtime(&n);per provarlo:

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

13
Nomi variabili carini!
Adám,

16

PHP + SVG (HTML5), 147 137 123 byte

Codice SVG di 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';

Aggiornamento: grazie a Shaggy per avermi aiutato a salvare 10 byte.

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

Aggiornamento 2: Idea intelligente di Ismael Miguel , grazie per aver salvato 14 byte

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

Normale

normale

Dopo il 6 dic +2 ore

dopo il 6 dicembre - +2 ore


Quindi time()dà UTC?
Adám,

Quando è 1512525600?
Adám,

1512525600è 2017-12-06T02:00:00+00:00 in ISO 8601@ Adám e sì, time () è indipendente dal fuso orario.
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>`]}

Provalo online!


25
L'audacia! Hai risolto una sfida finlandese con una lingua di nome svedese.
Antti29,

1
@Arthur Prende il nome dalla parola svedese, non esiste una parola simile in finlandese. Il git contiene finlandese perché io sono di lingua finlandese.
Fergusq,

1
@Arthur: temo che dovrai approfondire la mentalità finlandese per apprezzare appieno il mio commento :)
Antti29

1
@fergusq Bene, se viene dall'uomo che ha effettivamente chiamato la lingua, allora suppongo che non ci sia autorità superiore. Tuttavia, anche con la consapevolezza che "röda" non è una parola finlandese, sostengo che il mio commento precedente fosse plausibile. I nomi delle lingue non devono essere parole reali. Inoltre, anche se potrei non essere al suo interno, sono ben consapevole dell'antagonismo che i finlandesi hanno contro gli svedesi, con la storia dell'occupazione e che lo svedese è obbligatorio nelle scuole come uno dei numerosi ricordi costanti.
Arthur,

1
@ PaŭloEbermann: Purtroppo.
Antti29,

11

C #, 407 400 277 byte

Strano come ForegroundColor =0 è permesso

Salvato 1 byte grazie a TuukkaX

Risparmiato 67 byte grazie ad 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 autorizzato per i test:

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

per testare 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è consentito perché il valore letterale 0è convertibile in qualsiasi tipo di enum, come scritto nella specifica C # .
Joey,

9

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


prima .. dopo ..
enter image description here

enter image description here
puoi sempre testarlo su Wolfram Sandbox
(incolla il codice e premi Shift-Enter)


Quando è 3721507200?
Adám,

@Adám AbsolutimeTime fornisce il numero totale di secondi dall'inizio del 1 gennaio 1900
J42161217

@Jenny_mathy 1 gennaio 1900 di quale fuso orario?
Daffy,

@Daffy of 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

Provalo online!

Stampa un'immagine .ppm:

Bandiera normale

Finland

Bandiera con 100

Finland100


Può datetime.utcnow()+timedelta(hours=2)<datetime(2017,12,06)essere sostituito con datetime.utcnow()>=datetime(2017,12,05,22,0,0)qualcosa di simile?
Adám,

Usa time.gmtimeinvece per i confronti tupla (vedi la mia risposta)!
Antti Haapala,

[time.time ()> 1512514800]
dieter

7

Python 3, 143 141 135 byte

Utilizza la fuga ANSI per i colori, usa cinque spazi o "100" come una stringa colorata in modo da non dover stampare appositamente "100" da qualche parte sulla bandiera. Lunghezza 5 a causa della larghezza, perché 90/5 == 90//5. La stringa utilizzata viene definita nella riga 1. Quindi ripetiamo 55 round (altezza), ad ogni iterazione vviene impostata la stringa con il colore [Blu, BrightWhite] e l'indice selezionato è booleano row<20 or r>34. Moltiplichiamo nuovamente quel risultato per 5 (dimensioni della larghezza: 25:15:50, quindi la larghezza totale è 90). Quindi stampiamo v + Blue + Blue + Blue + v + v + Blackdove si vtrova Blue o BrightWhite. Per chiarire la stampa: la larghezza di vè di 25 caratteri, la larghezza di Blu ( è 90 che è la larghezza e segue le dimensioni richieste nell'attività! Riepilogo piuttosto disordinato ma immagino sia meglio di niente. e%44*3 ) è 15 e la larghezza di v*2è 50.25+15+50

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
Benvenuti nel sito!
caird coinheringaahing il

2
Benvenuti in PPCG! Ho aggiunto un flag di lingua alla tua risposta, e ti suggerirei di aggiungere una descrizione di base di come funziona il tuo programma - ma per il resto, ottima prima risposta :)
Taylor Scott

2
@TaylorScott Lo farà! E grazie, mi sto nascondendo qui da un anno o due ma non ho mai presentato nulla prima. Non ho potuto resistere perché la Finlandia compie 100 anni!
Errore irreversibile

7

Processing.org / Java 191 188 byte

-3 byte grazie a 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


>15125255999999Lpuò essere>=15125256e6
Kevin Cruijssen il

@KevinCruijssen forse può essere abbreviato ma 15125256e6 è 15125255815168, che è di 37 ore in ritardo
PrincePolka,

15125256e6D funziona, grazie
PrincePolka

Hmm, 15125256e6è 15125256000000quando lo collaudo in Java 8. Ma non conosco Processing.org, quindi forse è leggermente diverso o usando una versione diversa? Ecco un TIO con alcuni test di base 15125256e6per verificare che funzioni in Java 8. Ma sono contento che Ddopo averlo corretto. Sono contento di poterti aiutare. :)
Kevin Cruijssen il

7

Excel VBA, 120 118 117 byte

Funzione di finestra immediata VBE anonima che non accetta input e genera la bandiera finlandese e se la Finlandia ha più di 100 anni 100su quella bandiera. Questo viene fatto rispetto al fuso orario di Pasqua degli Stati Uniti, poiché non esiste alcun modo per Excel o Excel VBA per determinare il fuso orario senza componenti aggiuntivi o accedere a 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

Produzione

Se la Finlandia ha meno di 100 anni

Young Finnish

Se la Finlandia ha più di 100 anni

Old Finnish

-2 byte per passare If #12/5/17 19:00#<=Now Then[B2]=100aIf Now>=#12/5/17 19:0#Then[B2]=100

-1 byte da utilizzare Cellsanziché[A1:R11]


2
Chi avrebbe mai pensato che il vecchio VBA potesse farlo. Eccellente.
Floris,

3
@Floris, mi sono reso conto che quando si tratta di pixel art, Excel VBA può fare alcune cose incredibili. : D
Taylor Scott,

Mi viene in mente di scrivere qualcosa nel precursore di VBA (un linguaggio macro pazzo che è stato scritto nelle celle del foglio Excel, una riga per cella) che ha fatto qualcosa di simile (creare un grafico di intensità 2D di una funzione che stavo studiando). Deve essere stato il 1991. Grazie per i ricordi.
Floris,

1
@Floris è un peccato, ma è bello sapere che qualcun altro sa cosa sono :)
Taylor Scott

1
E vieni a pensarci bene - prima del 4.0 c'era qualcosa ... Ricordo di essere stato infastidito quando tutto si è rotto. Come sono stato molte volte da allora. Maestri di non retrocompatibili.
Floris,

5

MATLAB, 133 130 123 byte

3 10 byte sabati grazie per @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

Questo utilizza [0, 51, 128]per il colore blu. La dimensione dell'immagine è di 180 × 110 pixel.

Esecuzione di esempio:

enter image description here

Esempio eseguito con il testo (cambiando 737035in 0nel codice in modo che il testo venga mostrato in qualsiasi giorno):

enter image description here


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 per mostrare che i requisiti di colore sono soddisfatti.) Modifica: salvato 10 byte grazie a @Shaggy. Uscite:

<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


In che modo gestisce l'offset del fuso orario quando viene eseguito altrove rispetto a UTC + 2?
Adám,

@Adám Date.now()è in UTC e io confronto con il valore UTC di 2017/12/06 00:00:00 UTC+2.
Neil,

Va bene usare il tuo codice SVG nel mio frammento di php?
th3pirat3,

2
@Adám te l'ho già detto?
Neil,

1
Sostituisci <path></path>con <path/>per salvare alcuni byte.
Shaggy,

4

Python 3 con cuscino, 213 212 211 caratteri (Unix) e 217 216 caratteri (portatile)

Questa è la versione Unix. Mi sono reso conto dopo la pubblicazione che il tempo di ritorno time()non ha necessariamente la sua epoca il 1 ° gennaio 1970, quindi non è necessariamente portatile.

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

Questo è il codice portatile, 4 byte in più, utilizza gmtimecon il confronto delle tuple, quindi dovrebbe funzionare in modo affidabile anche su 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()

Le immagini vengono visualizzate in una finestra. Davvero difficile farlo consumare meno personaggi. Anche time.timerestituisce un floatcosì >0x5a273299non sarebbe così corretto, o >0x5a273300verrebbe disattivato di un microsecondo.

enter image description here

enter image description here


4

Tcl / Tk , 135 byte

Deve essere eseguito nella shell interattiva

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}

Prima del 2017/12/06 alle 02:00 GMT

enter image description here

Dopo il 2017/12/06 alle 02:00 GMT

enter image description here


4

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

golfed

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

Risultato

Finland

Crediti

40 byte salvati da Olivier Grégoire per l'utilizzo di lambda.
4 byte salvati da Kevin Cruijssen per la formattazione lunga.
2 byte salvati dall'utente 902383 per la formattazione esadecimale.


1
@jfhcs: purtroppo quelle erano le regole. E ... questo è Java.
Antti29,

1
Ah capisco Aggiornerò la mia risposta. Devo aver frainteso le regole.
jfh

1
È possibile sostituire la trues con 1>0, argscon ae rimuovere gli spazi intorno =a P j = new...per salvare qualche byte.
Justin Mariner il

1
342 byte (324 byte + 18 byte per import java.awt.*;), con la condizione inclusa.
Olivier Grégoire,

1
La tua risposta attuale ha diversi difetti che la rendono invalida: 1. non c'è importaffatto. 2. i nomi delle variabili non sono abbreviati: argspossono essere ridotti a a. 3. ci sono ancora spazi opzionali contenuti nella voce. 4. non esiste una stampa condizionale di "100".
Olivier Grégoire,

3

vim, 147

Mi piace molto questa sfida ☺. © è fuga.

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 e 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
Un uso migliore valutazione aritmetica: ((`date +%s`>=1512511200))&&x=100. Si noti che ho spostato le virgolette singole all'interno del -drawparametro, dove non è necessario eseguire l'escape.
arte

2

Tampio imperativo , 239 byte (non concorrenti)

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

Versione online

Traduzione:

Quando si apre la grande pagina, mostrerà il testo "<svg><path d=180v110 /><path d=M0,40h50V0h30v40h100v30H80v40H50V70H0 fill=#005580 />"e, se l'ora corrente in millisecondi è maggiore di 1512511200000, mostrerà il testo "<text y=19>100".

SVG è stato preso da questa risposta da th3pirat3 (e Neil, apparentemente).

Questo programma è scritto in una nuova versione di Tampio a cui ho lavorato. Quelli di voi che conoscono il finlandese possono vedere che è quasi leggibile. Ho contrassegnato la risposta come non competitiva perché questa lingua è stata pubblicata dopo questa sfida.

Per eseguire questo programma, vai alla versione online sopra che contiene la versione compilata JS del programma o scarica il compilatore dalla sua pagina Github . Per compilare il programma, eseguirepython3 tampio.py -p program.itp >program.html .

Tampio non è affatto un linguaggio da golf, ma a causa del miglior codice svg, in realtà ha battuto Röda ... Sono rimasto un po 'sorpreso.


È più simile!
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 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>

Ecco la stessa soluzione ridotta a 260 byte, il che presuppone che la tua porta di visualizzazione abbia il rapporto 18:11 corretto.

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

È possibile eliminare uno 0 dal timestamp in entrambe le soluzioni per visualizzare "100".


1

HTML + Javascript, 329 byte

Ho spudoratamente rubato la parte di controllo della data da @jstnthms. Fondamentalmente scrivo solo una tabella HTML grezza con i rapporti riga / col corretti, thessendo le parti blu. Testato su IE e Chrome, anche su 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);">

Potrebbe essere ulteriormente golfato da javascript puro (incolla su console) ...?
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

da lanciare

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

il rapporto è stato modificato a causa dell'altezza / larghezza del rapporto carattere = 1,66 (5/3), altrimenti con il rapporto originale:

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

Racchetta 6.10 con 2htdp / immagine, 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))

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


Sei il primo a posizionare la 100parte blu - quasi mancata.
Antti29,

1

Piccolo di base , 300 byte

Uno script che non accetta input e output per l' TextWindowoggetto.

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)

Provalo su SmallBasic.com! Richiede IE / Silverlight

Produzione

Indicato dopo il centesimo giorno dell'indipendenza della Finlandia. Output


0

il codice precedentemente creato è stato modificato fino al seguente:

HTML, CSS e 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>


Beh, a mia difesa, direi che questa è la mia prima volta. Proverà a rendere il codice più breve in futuro.
Raunaq Koppikar il

Come ha già detto Stephen, questo è un codice golf, e quindi il tuo programma dovrebbe mirare ad essere il più breve possibile. Tieni presente che se non giochi a golf il tuo programma (es. Lasciandolo così com'è), è soggetto a cancellazione in quanto attualmente non è un concorrente serio. Finalmente, benvenuto nel sito!
caird coinheringaahing il

Sicuro. Sicuramente lo farà giocare al più presto
Raunaq Koppikar il

Modificato come suggerito
Raunaq Koppikar il

Puoi anche rimuovere il rientro in tutto e rimuovere le nuove righe in CSS e HTML. Inoltre puoi rimuovere gli spazi tra i simboli in JS (come ===e 100).
NoOneIsHere il

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

Ho deciso di provare a utilizzare un'immagine Base64 per vedere quanto potevo ottenerla. Non un vincitore, ma comunque interessante.

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


Non sono necessarie parentesi all'interno dell'interpolazione ( ${(…)}${…}); non c'è bisogno di virgolette doppie attorno a quei valori di attributo HTML; anche se non valido, nella maggior parte dei casi è possibile tagliare il padding delle stringhe con codifica base64 con uguali segni (Firefox non ha certamente problemi a decodificarlo).
arte
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.