Selamat Ulang Tahun, Finlandia!


37

pengantar

Seperti diketahui, pada 2017, Finlandia merayakan 100 tahun kemerdekaannya. Untuk menandai kesempatan itu, tugas Anda adalah membuat bendera Finlandia untuk kesenangan semua orang.

Tantangan

Buat program atau fungsi yang menghasilkan bendera Finlandia (perbatasan abu-abu hanya ada untuk keperluan presentasi):

Bendera Finlandia

Spesifikasi bendera

  • Rasio bendera adalah 18:11, dengan 3satuan silang yang tebal, memberikan seperangkat rasio horizontal 5:3:10dan seperangkat rasio vertikal 4:3:4.
  • Ukuran gambar harus minimal 180 x 110piksel, atau untuk 90 x 55karakter seni ASCII .
  • Tidak ada warna RGB resmi untuk biru, tetapi gunakan perkiraan terdekat dari (0, 53, 128). Jika sistem Anda tidak mendukung nilai RGB, gunakan blue.
  • Untuk warna putih, gunakan RGB (255, 255, 255)atau white.

Tidak secepat itu

Karena menggambar bendera nasional Finlandia akan lebih sederhana daripada tantangan Islandia tahun lalu , kita harus sedikit meningkatkan kesulitan. Mengingat Hari Kemerdekaan Finlandia pada tanggal 6 Desember, angka desimal 100harus muncul di suatu tempat pada bendera ketika tanggal di Finlandia ( UTC + 02: 00 ) adalah 2017-12-06atau lebih baru (kode Anda tidak boleh berasumsi bahwa mesin yang sedang dihidupkan diatur ke zona waktu tertentu). Sebelum tanggal, nomor itu tidak boleh ada di sana. Angka harus dicetak hitam (RGB (0, 0, 0)atau black) tetapi parameter penempatan dan font terserah Anda.

Contoh render semacam itu (sekali lagi, abaikan perbatasan):

Bendera Finlandia dengan 100 di atasnya

Untuk tujuan pengujian, alangkah baiknya untuk menyertakan dua versi tambahan dari solusi Anda, satu dengan tanggal tetap di masa lalu dan satu di masa mendatang.

Aturan

Celah standar dilarang, seperti juga gambar bendera / pustaka bawaan. Selain itu, kode Anda tidak boleh mengambil input apa pun.

Orang Finlandia tidak suka obrolan ringan, dan ini , jadi jangan sia-siakan karakter!


Haruskah kita hanya menggunakan ruang dan # dalam hal seni ASCII ? Dan kemudian menyisipkan karakter di 100suatu tempat?
Adm

1
Bisakah kita mengambil tanggal di Finlandia sebagai input untuk sistem yang tidak memiliki jam dinding internal atau tidak menerapkan zona waktu? Saya sesekali memposting jawaban di GFA-Basic (Atari ST, tidak ada zona waktu) atau perakitan CP-1610 (Intellivision, tidak ada tanggal / waktu sama sekali) dan kami memiliki jawaban di beberapa platform sekolah lama lainnya dari waktu ke waktu yang biasanya cukup pandai menggambar hal-hal seperti itu tetapi tampaknya didiskualifikasi di sini karena masalah tanggal.
Arnauld

1
@Arnauld: Astaga, saya tidak pernah berpikir ada orang yang akan menggunakan sistem seperti itu. Saya menghargai kesulitan Anda tetapi apakah itu akan membuat orang lain dirugikan? Saya pikir memungkinkan input akan meninggalkan Anda dengan hanya perbandingan bilangan bulat sederhana. Akankah entri yang tidak bersaing tanpa aspek waktu keluar dari pertanyaan?
Antti29

1
@ Antti29 Sejujurnya, saya tidak bisa memikirkan solusi yang baik dan sudah terlambat untuk melakukan pembaruan besar pada aturan. Kecuali seseorang datang dengan saran yang sangat memuaskan, saya pikir sistem ini tidak dapat bersaing di sini. (Saya melihat tantangan di kotak pasir dan tidak memikirkan hal itu. Buruk saya.)
Arnauld

Jawaban:


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

Belum dibuka:

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

Keluaran:

Output saat UTC time >= 2017-12-05-22-00:

Tambahkan yang berikut ini dalam kode setelah d=gmtime(&n);mencobanya:

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

13
Nama variabel yang lucu!
Adm

16

PHP + SVG (HTML5), 147 137 123 byte

Kode SVG oleh 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';

Pembaruan: Terima kasih kepada Shaggy karena membantu saya menghemat 10 byte.

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

Pembaruan 2: Ide cerdas oleh Ismael Miguel , terima kasih telah menghemat 14 byte

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

Normal

normal

Setelah 6 Desember +2 jam

setelah 6 Desember - +2 jam


Jadi time()beri UTC?
Adm

Kapan 1512525600?
Adm

1512525600adalah 2017-12-06T02:00:00+00:00 in ISO 8601@ Adám dan ya, waktu () adalah zona waktu independen.
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>`]}

Cobalah online!


25
Keberanian itu! Anda telah memecahkan tantangan bahasa Finlandia dengan bahasa yang diberi nama Swedia.
Antti29

1
@Arthur Diberi nama setelah kata Swedia, tidak ada kata seperti itu di Finlandia. Git berisi bahasa Finlandia karena saya berbahasa Finlandia.
fergusq

1
@Arthur: Saya khawatir Anda harus mempelajari pola pikir orang Finlandia untuk sepenuhnya menghargai komentar saya :)
Antti29

1
@fergusq Nah, jika itu dari orang yang benar-benar menyebutkan bahasa, maka saya kira tidak ada otoritas yang lebih tinggi. Namun, bahkan dengan pengetahuan bahwa "röda" bukan kata Finlandia, saya berpendapat bahwa komentar saya sebelumnya masuk akal. Nama bahasa tidak harus berupa kata yang sebenarnya. Juga, sementara saya mungkin tidak berada di dalamnya, saya sangat menyadari antagonisme yang dimiliki Finlandia terhadap Swedia, dengan sejarah pekerjaan, dan Swedia wajib di sekolah sebagai salah satu dari beberapa pengingat yang konstan.
Arthur

1
@ PaŭloEbermann: Sayangnya.
Antti29

11

C #, 407 400 277 byte

Aneh bagaimana ForegroundColor =0diizinkan

Disimpan 1 byte berkat TuukkaX

Disimpan 67 byte berkat Adam

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

ungolfed untuk pengujian:

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

untuk pengujian 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 = 0diperbolehkan karena literalnya 0dapat dikonversi menjadi tipe enum apa pun, seperti yang tertulis dalam spesifikasi 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}}


sebelum .. setelah ..
masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini
Anda selalu dapat mengujinya di Wolfram Sandbox
(rekatkan kode dan tekan Shift-Enter)


Kapan 3721507200?
Adm

@ Adám AbsolutimeTime memberikan jumlah total detik sejak awal 1 Januari 1900
J42161217

@ Janny_mathy 1 Januari 1900 dari zona waktu apa?
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

Cobalah online!

Mencetak gambar .ppm:

Bendera normal

Finlandia

Tandai dengan 100

Finland100


Dapat datetime.utcnow()+timedelta(hours=2)<datetime(2017,12,06)diganti dengan datetime.utcnow()>=datetime(2017,12,05,22,0,0)atau yang serupa?
Adm

Gunakan time.gmtimesebagai gantinya untuk perbandingan tuple (lihat jawaban saya)!
Antti Haapala

[time.time ()> 1512514800]
dieter

7

Python 3, 143 141 135 byte

Menggunakan pelarian ANSI untuk warna, menggunakan lima spasi atau "100" sebagai string berwarna sehingga saya tidak perlu mencetak "100" secara khusus di suatu tempat di bendera. Panjang 5 karena lebar, karena 90/5 == 90//5. String yang digunakan semakin didefinisikan di baris 1. Kemudian kita mengulangi 55 putaran (tinggi), pada setiap iterasi vdiatur ke string dengan warna [Biru, BrightWhite] dan indeks yang dipilih adalah boolean row<20 or r>34. Kami mengalikan hasil itu dengan 5 lagi (dimensi lebar: 25:15:50 sehingga total lebar adalah 90). Lalu kami mencetak di v + Blue + Blue + Blue + v + v + Blackmana vBiru atau BrightWhite. Untuk memperjelas pencetakan: lebar vadalah 25 karakter, lebar Biru ( e%44*3) adalah 15 dan lebar v*250.25+15+50adalah 90 yang lebarnya dan mengikuti dimensi yang diperlukan dalam tugas! Ringkasan yang cukup berantakan tapi kurasa lebih baik daripada tidak sama sekali.

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
Selamat datang di situs ini!
caird coinheringaahing

2
Selamat datang di PPCG! Saya telah menambahkan bendera bahasa untuk jawaban Anda, dan saya sarankan Anda menambahkan deskripsi dasar tentang cara kerja program Anda - tetapi sebaliknya, jawaban pertama yang bagus :)
Taylor Scott

2
@TaylorScott Akan lakukan! Dan terima kasih, saya telah bersembunyi di sini selama satu atau dua tahun tetapi tidak pernah mengirimkan apa pun sebelumnya. Tidak bisa menolak karena Finlandia berusia 100 tahun!
FatalError

7

Processing.org / Java 191 188 byte

-3 byte terima kasih kepada 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);}

Sebelum setelah


>15125255999999Ldapat>=15125256e6
Kevin Cruijssen

@KevinCruijssen mungkin dapat disingkat tetapi 15125256e6 adalah 15125255815168, yang terlambat 37 jam
PrincePolka

15125256e6D berfungsi, terima kasih
PrincePolka

Hmm, 15125256e6adalah 15125256000000ketika saya mengujinya di Jawa 8. Tapi saya tidak tahu Processing.org, jadi mungkin itu sedikit berbeda atau menggunakan versi yang berbeda? Berikut adalah TIO dengan beberapa tes dasar 15125256e6untuk memverifikasi itu berfungsi di Java 8. Tapi saya senang Dsetelah memperbaikinya. Senang bisa membantu. :)
Kevin Cruijssen

7

Excel VBA, 120 118 117 Bytes

Fungsi jendela langsung VBE anonim yang tidak mengambil input dan mengeluarkan bendera Finlandia dan jika Finlandia berusia lebih dari 100 tahun 100pada bendera itu. Ini dilakukan sehubungan dengan Timezone Paskah Amerika Serikat, karena tidak ada cara bagi Excel atau Excel VBA untuk menentukan zona waktu tanpa tambahan atau mengakses 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

Keluaran

Jika Finlandia lebih muda dari 100 tahun

Finlandia muda

Jika Finlandia lebih tua dari 100 tahun

Finlandia tua

-2 Byte untuk diubah If #12/5/17 19:00#<=Now Then[B2]=100 menjadiIf Now>=#12/5/17 19:0#Then[B2]=100

-1 Byte untuk penggunaan Cellsdaripada[A1:R11]


2
Siapa yang mengira VBA bisa melakukan ini. Luar biasa.
Floris

3
@ Floris, saya menyadari bahwa ketika datang ke pixel art, Excel VBA dapat melakukan beberapa hal luar biasa. : D
Taylor Scott

Saya diingatkan menulis sesuatu dalam prekursor ke VBA (bahasa makro gila yang ditulis dalam sel-sel lembar Excel, satu baris per sel) yang melakukan sesuatu yang serupa (membuat grafik intensitas 2D dari fungsi yang saya pelajari). Itu pasti tahun 1991. Terima kasih atas ingatannya.
Floris

1
@ Floris yah, itu memalukan - tetapi ada baiknya mengetahui bahwa orang lain tahu siapa mereka :)
Taylor Scott

1
Dan kalau dipikir-pikir itu - ada sesuatu sebelum 4.0 ... Saya ingat kesal ketika semuanya pecah. Karena saya sudah berkali-kali sejak itu. Master yang tidak kompatibel mundur.
Floris

5

MATLAB, 133 130 123 byte

3 10 byte byte terima kasih atas @ 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

Ini digunakan [0, 51, 128]untuk warna biru. Ukuran gambar adalah 180 × 110 piksel.

Contoh dijalankan:

masukkan deskripsi gambar di sini

Contoh dijalankan dengan teks (diubah 737035ke 0dalam kode sehingga teks ditampilkan pada hari apa saja):

masukkan deskripsi gambar di sini


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 untuk menunjukkan bahwa persyaratan warna terpenuhi.) Edit: Disimpan 10 byte berkat @Shaggy. Output:

<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


Bagaimana ini menangani offset zona waktu ketika dijalankan di tempat lain selain di UTC + 2?
Adm

@ Adám Date.now()dalam UTC, dan saya membandingkan dengan nilai UTC dari 2017/12/06 00:00:00 UTC+2.
Neil

Apakah saya tetap bisa menggunakan kode SVG Anda di snippet php saya?
th3pirat3

2
@ Adm, saya sudah memberi tahu Anda?
Neil

1
Ganti <path></path>dengan <path/>untuk menyimpan beberapa byte.
Shaggy

4

Python 3 dengan Bantal, 213 212 211 karakter (Unix) dan 217 216 karakter (Portable)

Ini adalah versi Unix. Saya menyadari setelah memposting bahwa waktu yang dikembalikan oleh time()belum tentu memiliki zamannya pada 1 Januari 1970, sehingga belum tentu portabel.

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

Ini adalah kode portabel, 4 byte lebih, ia gunakan gmtimedengan perbandingan tuple sehingga harus bekerja dengan andal pada Windows juga.

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

Gambar ditampilkan di jendela. Sangat sulit untuk membuatnya mengkonsumsi lebih sedikit karakter. Bahkan time.timemengembalikan floatjadi >0x5a273299tidak akan begitu benar, atau >0x5a273300akan dimatikan oleh mikrodetik.

masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini


4

Tcl / Tk , 135 byte

Harus dijalankan di shell interaktif

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}

Sebelum 2017/12/06 02:00 GMT

masukkan deskripsi gambar di sini

Setelah 2017/12/06 02:00 GMT

masukkan deskripsi gambar di sini


4

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

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

Tidak disatukan

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

Hasil

Finlandia

Kredit

40 byte disimpan oleh Olivier Grégoire karena menggunakan lambda.
4 byte disimpan oleh Kevin Cruijssen untuk pemformatan panjang.
2 byte disimpan oleh user902383 untuk format hex.


1
@ jfhcs: Yah, sayangnya, itulah aturannya. Dan ... itu Jawa.
Antti29

1
Ah saya mengerti. Saya akan memperbarui jawaban saya. Saya pasti salah mengartikan aturan.
jfh

1
Anda dapat mengganti trues dengan 1>0, argsdengan a, dan dapat menghapus spasi =di sekitar P j = new...untuk menghemat beberapa byte.
Justin Mariner

1
342 byte (324 byte + 18 byte import java.awt.*;), dengan ketentuan yang disertakan.
Olivier Grégoire

1
Respons Anda saat ini memiliki beberapa kelemahan yang membuatnya tidak valid: 1. tidak ada importsama sekali. 2. nama variabel tidak disingkat: argsdapat dikurangi menjadi a. 3. masih ada ruang opsional yang terkandung dalam entri. 4. tidak ada cetak bersyarat "100".
Olivier Grégoire

3

vim, 147

Saya sangat suka tantangan ini ☺. © melarikan diri.

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 

masukkan deskripsi gambar di sini


3

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

masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini


1
Lebih baik menggunakan evaluasi aritmatika: ((`date +%s`>=1512511200))&&x=100. Perhatikan bahwa saya memindahkan tanda kutip tunggal di dalam -drawparameter, di mana mereka tidak perlu melarikan diri.
manatwork

2

Imperative Tampio , 239 bytes (tidak bersaing)

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

Anda hanya melihat avautuu , se näyttää tekstin"<svg><path d=180v110 /><path d=M0,40h50V0h30v40h100v30H80v40H50V70H0 fill=#005580 />" ja , jos nykyinen Aika millisekunteina pada suurempi Kuin 1512511200000 , niin se näyttää tekstin"<text y=19>100" .

Versi online

Terjemahan:

Ketika halaman besar terbuka, itu akan menampilkan teks "<svg><path d=180v110 /><path d=M0,40h50V0h30v40h100v30H80v40H50V70H0 fill=#005580 />"dan, jika waktu saat ini dalam milidetik lebih besar dari1512511200000 , itu akan menampilkan teks "<text y=19>100".

SVG diambil dari jawaban ini oleh th3pirat3 (dan Neil, tampaknya).

Program ini ditulis dalam versi baru dari Tampio yang telah saya kerjakan. Anda yang mengenal bahasa Finlandia dapat melihat bahwa itu hampir dapat dibaca. Saya menandai jawabannya sebagai tidak bersaing karena bahasa ini diterbitkan setelah tantangan ini.

Untuk menjalankan program ini, buka versi online di atas yang berisi versi JS yang dikompilasi dari program atau unduh kompiler dari halaman Github -nya . Untuk mengkompilasi program, jalankanpython3 tampio.py -p program.itp >program.html .

Tampio bukan bahasa golf dengan ukuran apa pun, tetapi karena kode svg yang lebih baik, itu sebenarnya mengalahkan Röda ... Saya sedikit terkejut.


Itu lebih seperti itu!
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

masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini


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>

Berikut solusi yang sama dipangkas hingga 260 byte, yang mengasumsikan port tampilan Anda memiliki rasio 18:11 yang tepat.

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

Anda dapat menjatuhkan 0 dari timestamp di salah satu solusi untuk melihat "100" muncul.


1

HTML + Javascript, 329 byte

Saya tanpa malu-malu mencuri bagian pemeriksaan tanggal dari @jstnthms. Pada dasarnya saya hanya menulis tabel html mentah dengan rasio baris / col yang benar, thmenjadi bagian biru. Diuji pada IE dan Chrome, juga di mee.fi-situs .

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

Bisa lebih lanjut golf dengan javascript murni (tempel di konsol) ...?
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

akan diluncurkan

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'

menangkap

rasio diubah karena rasio karakter tinggi / lebar = 1,66 (5/3) jika tidak dengan rasio asli:

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

rasio asli


1

Racket 6.10 dengan 2htdp / image, 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))

Tidak Disatukan:

(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

dengan teks masukkan deskripsi gambar di sini


Anda adalah orang pertama yang menempatkannya 100di bagian biru - hampir tidak terjawab.
Antti29

1

Small Basic , 300 byte

Script yang tidak mengambil input dan output ke TextWindowobjek.

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)

Cobalah di SmallBasic.com! Membutuhkan IE / Silverlight

Keluaran

Tampil setelah hari kemerdekaan ke-100 Finlandia. Keluaran


0

kode yang dibuat sebelumnya telah di-golf menjadi sebagai berikut:

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


Nah dalam pembelaan saya, saya akan mengatakan ini adalah pertama kalinya saya. Akan mencoba membuat kode yang lebih pendek di masa mendatang.
Raunaq Koppikar

Seperti yang telah dikatakan Stephen, ini adalah kode golf, sehingga program Anda harus sesingkat mungkin. Harap diingat bahwa jika Anda tidak golf program Anda (yaitu biarkan apa adanya), itu dapat dihapus karena saat ini bukan pesaing serius. Akhirnya, selamat datang di situs ini!
caird coinheringaahing

Yakin. Pasti akan mendapatkannya
golf

Diedit seperti yang disarankan
Raunaq Koppikar

Anda juga dapat menghapus lekukan di semua, dan menghapus baris baru di CSS dan HTML. Plus, Anda dapat menghapus spasi di antara simbol di JS (seperti ===dan 100).
NoOneIsHere

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

Memutuskan untuk mencoba menggunakan gambar Base64 untuk melihat seberapa pendek saya bisa mendapatkannya. Bukan pemenang, tapi tetap menarik.

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


Tidak perlu tanda kurung di dalam interpolasi ( ${(…)}${…}); tidak perlu tanda kutip ganda di sekitar nilai atribut HTML tersebut; meskipun tidak valid, dalam kebanyakan kasus Anda dapat memotong lapisan string base64 yang dikodekan dengan tanda-tanda yang sama (Firefox tentu tidak memiliki masalah mendekode itu).
manatwork
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.