Viết một chương trình đầy đủ với mã nguồn từ 256 byte trở xuống nhìn vào hình ảnh của một lá cờ và xác định quốc gia đó là cờ nào. Một tập tin zip chứa 196 cờ khác nhau trong thử thách có thể được tải xuống từ đây . Nguồn: [ Flagpedia ]. Những hình ảnh cờ 196 này là đầu vào duy nhất mà chương trình của bạn phải xử lý.
Chương trình của bạn sẽ không có đầu vào. Hình ảnh cờ sẽ nằm trong cùng thư mục với chương trình của bạn và được đặt tên là "f.png". Chương trình của bạn sẽ mở tệp này, xác định nó và in hai chữ cái viết tắt cho quốc gia đó . Nếu bạn sử dụng ngôn ngữ không thể mở tệp, bạn cũng có thể chấp nhận chạy chương trình của mình ./program < f.png
.
Mỗi tệp cờ được đặt tên giống như đầu ra dự kiến. Tất cả đầu ra trên 2 chữ cái sẽ bị bỏ qua.
Dưới đây là danh sách tất cả các kết quả đầu ra / tên tệp:
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,
Chấm điểm
Đây là một đoạn script python ngắn mà tôi sẽ sử dụng để ghi điểm cho mỗi lần gửi.
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")
Điểm của bạn là tổng số cờ được xác định chính xác. Trong trường hợp hòa, nộp trước đó thắng.
Quy tắc
Để thuận tiện cho việc thử nghiệm của tôi, có thể sử dụng bất kỳ ngôn ngữ nào có trình thông dịch / trình biên dịch miễn phí cho Windows 10 hoặc Ubuntu.
Thư viện xử lý hình ảnh được cho phép, nhưng bất kỳ nội dung liên quan đến cờ hoặc quốc gia đều không được phép. ( ho Mathicala ho )
Vui lòng cung cấp lệnh đầy đủ cần thiết để chạy chương trình của bạn cùng với các liên kết đến bất kỳ thư viện cần thiết nào.
Đệ trình có thể không tương tác với bất kỳ tệp nào ngoại trừ "f.png".
Tôi không có bất kỳ giới hạn thời gian khó khăn nào trong việc gửi, nhưng vui lòng giữ nó tương đối nhanh. Tôi không muốn kịch bản ghi điểm mất hàng giờ.
./program < f.png
tùy chọn nếu ngôn ngữ không có cách đọc tệp, hoặc chúng ta cũng có thể sử dụng nó ngay cả khi ngôn ngữ có thể đọc tệp? (Rõ ràng là CJam có thể đọc từ các tệp mà tôi không biết)