Tulis program lengkap dengan kode sumber 256 byte atau kurang yang terlihat pada gambar bendera dan tentukan dari negara mana bendera itu berasal. File zip yang berisi 196 bendera berbeda dalam tantangan dapat diunduh dari sini . Sumber: [ Flagpedia ]. 196 gambar bendera ini adalah satu-satunya input yang harus ditangani oleh program Anda.
Program Anda tidak akan menerima input. Gambar bendera akan berada di direktori yang sama dengan program Anda dan dinamai "f.png". Program Anda akan membuka file ini, mengidentifikasinya, dan mencetak singkatan dua huruf untuk negara itu . Jika Anda menggunakan bahasa yang tidak dapat membuka file, Anda juga dapat menjalankan program sebagai ./program < f.png
.
Setiap file flag dinamai sama dengan output yang diharapkan. Semua output di atas 2 huruf akan diabaikan.
Berikut adalah daftar semua output / nama file:
ad, ae, af, ag, al, am, ao, ar, at, au, az, ba, bb, bd, be, bf, bg, bh, bi, bj,
bn, bo, br, bs, bt, bw, by, bz, ca, cd, cf, cg, ch, ci, cl, cm, cn, co, cr, cu,
cv, cy, cz, de, dj, dk, dm, do, dz, ec, ee, eg, eh, er, es, et, fi, fj, fm, fr,
ga, gb, gd, ge, gh, gm, gn, gq, gr, gt, gw, gy, hn, hr, ht, hu, id, ie, il, in,
iq, ir, is, it, jm, jo, jp, ke, kg, kh, ki, km, kn, kp, kr, ks, kw, kz, la, lb,
lc, li, lk, lr, ls, lt, lu, lv, ly, ma, mc, md, me, mg, mh, mk, ml, mm, mn, mr,
mt, mu, mv, mw, mx, my, mz, na, ne, ng, ni, nl, no, np, nr, nz, om, pa, pe, pg,
ph, pk, pl, pt, pw, py, qa, ro, rs, ru, rw, sa, sb, sc, sd, se, sg, si, sk, sl,
sm, sn, so, sr, st, sv, sy, sz, td, tg, th, tj, tl, tm, tn, to, tr, tt, tv, tw,
tz, ua, ug, us, uy, uz, va, vc, ve, vn, vu, ws, ye, za, zm, zw,
Mencetak gol
Berikut ini adalah skrip python pendek yang akan saya gunakan untuk menilai setiap pengiriman.
import os
import subprocess
import random
botlist = []
with open("bots.txt") as bots:
for line in bots:
line = line.split(", ")
if len(line) >= 2:
botLine = line + [0]
botlist.append(botLine)
files = os.listdir(os.getcwd() + "/flags")
random.shuffle(files)
def test(bot_command):
score = 0
for filename in files:
command = "COPY flags\\{} f.png".format(filename)
os.system(command)
print bot_command
result = subprocess.check_output(bot_command, shell = True)
if result[:2] == filename[:2]:
score += 1
return score
for i in range(len(botlist)):
command = botlist[i][1]
botlist[i][2] = test(command)
with open("output.txt", "w+") as output:
for bot in botlist:
output.write("{} got a score of {}.".format(bot[0], bot[2]))
os.system("del f.png")
Skor Anda adalah jumlah total bendera yang diidentifikasi dengan benar. Dalam hal seri, pengajuan sebelumnya menang.
Aturan
Untuk kenyamanan pengujian saya, bahasa apa pun dengan juru bahasa / kompiler yang tersedia secara bebas untuk Windows 10 atau Ubuntu dapat digunakan.
Pustaka pemrosesan gambar diizinkan, tetapi bawaan apa pun yang terkait dengan bendera atau negara tidak diizinkan. ( Batuk Mathematica batuk )
Harap berikan perintah lengkap yang diperlukan untuk menjalankan program Anda bersama dengan tautan ke perpustakaan yang diperlukan.
Kiriman tidak boleh berinteraksi dengan file apa pun kecuali "f.png".
Saya tidak memiliki batas waktu pengajuan yang sulit, tapi tolong tetap relatif cepat. Saya tidak ingin skrip penilaian membutuhkan waktu berjam-jam.
./program < f.png
opsi jika bahasa tidak memiliki cara membaca file, atau bisakah kita juga menggunakannya bahkan jika bahasa dapat membaca file? (Rupanya CJam dapat membaca dari file, yang saya tidak tahu)