256バイト以下のソースコードを使用して完全なプログラムを作成します。このプログラムは、フラグの画像を見て、そのフラグの発行元の国を判別します。チャレンジの196個の異なるフラグを含むzipファイルは、ここからダウンロードできます。ソース:[ Flagpedia ]。これらの196個のフラグ画像は、プログラムが処理する必要がある唯一の入力です。
プログラムは何も入力しません。フラグ画像はプログラムと同じディレクトリにあり、「f.png」という名前が付けられます。プログラムはこのファイルを開いて識別し、その国の 2文字の略語を印刷します。ファイルを開くことができない言語を使用している場合は、プログラムをとして実行することもできます./program < f.png
。
各フラグファイルには、予想される出力と同じ名前が付けられます。2文字を超える出力はすべて無視されます。
すべての出力/ファイル名のリストは次のとおりです。
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,
得点
以下に、各提出物を採点するために使用する短いpythonスクリプトを示します。
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")
スコアは、正しく識別されたフラグの総数です。同点の場合、以前の提出が優先されます。
ルール
私のテストの便宜のために、Windows 10またはUbuntu用の自由に利用可能なインタープリター/コンパイラーを備えた任意の言語を使用できます。
画像処理ライブラリは使用できますが、フラグまたは国に関連する組み込み機能は使用できません。(咳 Mathematica 咳)
プログラムを実行するために必要な完全なコマンドと、必要なライブラリへのリンクを提供してください。
提出物は、「f.png」以外のファイルと対話できません。
提出に厳しい制限時間はありませんが、比較的迅速に保管してください。採点スクリプトに数時間かかることは望ましくありません。
./program < f.png
言語にファイルを読み取る方法がない場合にのみオプションを使用できますか、言語がファイルを読み取ることができる場合でも使用できますか?(どうやらCJamはファイルから読み取ることができますが、知りませんでした)