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):
Spesifikasi bendera
- Rasio bendera adalah
18:11
, dengan3
satuan silang yang tebal, memberikan seperangkat rasio horizontal5:3:10
dan seperangkat rasio vertikal4:3:4
. - Ukuran gambar harus minimal
180 x 110
piksel, atau untuk90 x 55
karakter seni ASCII . - Tidak ada warna RGB resmi untuk biru, tetapi gunakan perkiraan terdekat dari
(0, 53, 128)
. Jika sistem Anda tidak mendukung nilai RGB, gunakanblue
. - Untuk warna putih, gunakan RGB
(255, 255, 255)
atauwhite
.
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 100
harus muncul di suatu tempat pada bendera ketika tanggal di Finlandia ( UTC + 02: 00 ) adalah 2017-12-06
atau 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):
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 golf kode , jadi jangan sia-siakan karakter!
sumber
#
dalam hal seni ASCII ? Dan kemudian menyisipkan karakter di100
suatu tempat?Jawaban:
C (Windows), 361 byte
Belum dibuka:
Keluaran:
Output saat
UTC time >= 2017-12-05-22-00
:Tambahkan yang berikut ini dalam kode setelah
d=gmtime(&n);
mencobanya:sumber
PHP + SVG (HTML5),
147137123 byteKode SVG oleh Neil
https://codegolf.stackexchange.com/a/149850/66061
Pembaruan: Terima kasih kepada Shaggy karena membantu saya menghemat 10 byte.
Pembaruan 2: Ide cerdas oleh Ismael Miguel , terima kasih telah menghemat 14 byte
Normal
Setelah 6 Desember +2 jam
sumber
time()
beri UTC?1512525600
?1512525600
adalah2017-12-06T02:00:00+00:00 in ISO 8601
@ Adám dan ya, waktu () adalah zona waktu independen.Röda ,
252250 byteCobalah online!
sumber
C #,
407400277 byteAneh bagaimana
ForegroundColor =0
diizinkanDisimpan 1 byte berkat TuukkaX
Disimpan 67 byte berkat Adam
ungolfed untuk pengujian:
untuk pengujian 100:
sumber
ForegroundColor = 0
diperbolehkan karena literalnya0
dapat dikonversi menjadi tipe enum apa pun, seperti yang tertulis dalam spesifikasi C # .Mathematica, 129 byte
sebelum .. setelah ..
Anda selalu dapat mengujinya di Wolfram Sandbox
(rekatkan kode dan tekan Shift-Enter)
sumber
3721507200
?Python 2 ,
247246230210189 byteCobalah online!
Mencetak gambar .ppm:
Bendera normal
Tandai dengan 100
sumber
datetime.utcnow()+timedelta(hours=2)<datetime(2017,12,06)
diganti dengandatetime.utcnow()>=datetime(2017,12,05,22,0,0)
atau yang serupa?time.gmtime
sebagai gantinya untuk perbandingan tuple (lihat jawaban saya)!Python 3,
143141135 byteMenggunakan 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 iterasiv
diatur ke string dengan warna [Biru, BrightWhite] dan indeks yang dipilih adalah booleanrow<20 or r>34
. Kami mengalikan hasil itu dengan 5 lagi (dimensi lebar: 25:15:50 sehingga total lebar adalah 90). Lalu kami mencetak div + Blue + Blue + Blue + v + v + Black
manav
Biru atau BrightWhite. Untuk memperjelas pencetakan: lebarv
adalah 25 karakter, lebar Biru (e%44*3
) adalah 15 dan lebarv*2
50.25+15+50
adalah 90 yang lebarnya dan mengikuti dimensi yang diperlukan dalam tugas! Ringkasan yang cukup berantakan tapi kurasa lebih baik daripada tidak sama sekali.sumber
Processing.org / Java
191188 byte-3 byte terima kasih kepada KevinCruijssen
sumber
>15125255999999L
dapat>=15125256e6
15125256e6
adalah15125256000000
ketika 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 dasar15125256e6
untuk memverifikasi itu berfungsi di Java 8. Tapi saya senangD
setelah memperbaikinya. Senang bisa membantu. :)Excel VBA,
120118117 BytesFungsi jendela langsung VBE anonim yang tidak mengambil input dan mengeluarkan bendera Finlandia dan jika Finlandia berusia lebih dari 100 tahun
100
pada 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.Keluaran
Jika Finlandia lebih muda dari 100 tahun
Jika Finlandia lebih tua dari 100 tahun
-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
Cells
daripada[A1:R11]
sumber
MATLAB,
133130123 byte310 byte byte terima kasih atas @ flawr!Ini digunakan
[0, 51, 128]
untuk warna biru. Ukuran gambar adalah 180 × 110 piksel.Contoh dijalankan:
Contoh dijalankan dengan teks (diubah
737035
ke0
dalam kode sehingga teks ditampilkan pada hari apa saja):sumber
JavaScript (ES5) + SVG (HTML5),
189179 byte(HTML untuk menunjukkan bahwa persyaratan warna terpenuhi.) Edit: Disimpan 10 byte berkat @Shaggy. Output:
sumber
Date.now()
dalam UTC, dan saya membandingkan dengan nilai UTC dari2017/12/06 00:00:00 UTC+2
.<path></path>
dengan<path/>
untuk menyimpan beberapa byte.Python 3 dengan Bantal,
213212211 karakter (Unix) dan217216 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.Ini adalah kode portabel, 4 byte lebih, ia gunakan
gmtime
dengan perbandingan tuple sehingga harus bekerja dengan andal pada Windows juga.Gambar ditampilkan di jendela. Sangat sulit untuk membuatnya mengkonsumsi lebih sedikit karakter. Bahkan
time.time
mengembalikanfloat
jadi>0x5a273299
tidak akan begitu benar, atau>0x5a273300
akan dimatikan oleh mikrodetik.sumber
Tcl / Tk , 135 byte
Harus dijalankan di shell interaktif
Sebelum 2017/12/06 02:00 GMT
Setelah 2017/12/06 02:00 GMT
sumber
Java
342368361321317 (299 + 18) byteGolf
Tidak disatukan
Hasil
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.
sumber
true
s dengan1>0
,args
dengana
, dan dapat menghapus spasi=
di sekitarP j = new...
untuk menghemat beberapa byte.import java.awt.*;
), dengan ketentuan yang disertakan.import
sama sekali. 2. nama variabel tidak disingkat:args
dapat dikurangi menjadia
. 3. masih ada ruang opsional yang terkandung dalam entri. 4. tidak ada cetak bersyarat "100".vim, 147
Saya sangat suka tantangan ini ☺. © melarikan diri.
sumber
bash dan imagemagick, 135
sumber
((`date +%s`>=1512511200))&&x=100
. Perhatikan bahwa saya memindahkan tanda kutip tunggal di dalam-draw
parameter, di mana mereka tidak perlu melarikan diri.Imperative Tampio , 239 bytes (tidak bersaing)
Versi online
Terjemahan:
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, jalankan
python3 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.
sumber
bash, 198
sumber
HTML + CSS + Javascript, 339 byte
Berikut solusi yang sama dipangkas hingga 260 byte, yang mengasumsikan port tampilan Anda memiliki rasio 18:11 yang tepat.
Anda dapat menjatuhkan 0 dari timestamp di salah satu solusi untuk melihat "100" muncul.
sumber
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,
th
menjadi bagian biru. Diuji pada IE dan Chrome, juga di mee.fi-situs .sumber
Perl 5, 139 byte
akan diluncurkan
rasio diubah karena rasio karakter tinggi / lebar = 1,66 (5/3) jika tidak dengan rasio asli:
sumber
Racket 6.10 dengan 2htdp / image, 202 byte
Tidak Disatukan:
sumber
100
di bagian biru - hampir tidak terjawab.Small Basic , 300 byte
Script yang tidak mengambil input dan output ke
TextWindow
objek.Cobalah di SmallBasic.com! Membutuhkan IE / Silverlight
Keluaran
Tampil setelah hari kemerdekaan ke-100 Finlandia.
sumber
kode yang dibuat sebelumnya telah di-golf menjadi sebagai berikut:
HTML, CSS, dan JavaScript, 1599 byte
sumber
===
dan100
).HTML + JavaScript, 247 byte
sumber
JavaScript ES6, 532 byte
Memutuskan untuk mencoba menggunakan gambar Base64 untuk melihat seberapa pendek saya bisa mendapatkannya. Bukan pemenang, tapi tetap menarik.
sumber
${(…)}
→${…}
); 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).