Bayrak bayrağına bakan ve bayrağın hangi ülkeden geldiğini belirleyen 256 bayt veya daha az kaynak kodlu tam bir program yazın. Meydan okumadaki 196 farklı bayrağı içeren bir zip dosyası buradan indirilebilir . Kaynak: [ Flagpedia ]. Bu 196 bayrak görüntüleri, programınızın işlemesi gereken tek girdidir.
Programınız girdi almayacak. Bayrak resmi, programınızla aynı dizinde olacak ve "f.png" olarak adlandırılacaktır. Programınız bu dosyayı açacak, tanımlayacak ve o ülkenin iki harfli kısaltmasını yazdıracaktır . Dosyaları açamayan bir dil kullanıyorsanız, programınızı olarak çalıştırmak da kabul edilebilir ./program < f.png
.
Her bayrak dosyası, beklenen çıktıyla aynı şekilde adlandırılır. 2 harfin üzerindeki tüm çıktılar yok sayılır.
Tüm çıktıların / dosya adlarının listesi:
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,
puanlama
İşte her gönderimi puanlamak için kullanacağım kısa bir python betiğ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")
Puanınız doğru bir şekilde tanımlanmış toplam bayrak sayısıdır. Beraberlik durumunda, daha önceki başvuru kazanır.
kurallar
Test kolaylığı için, Windows 10 veya Ubuntu için ücretsiz olarak kullanılabilen bir tercüman / derleyici içeren herhangi bir dil kullanılabilir.
Görüntü işleme kütüphanelerine izin verilir, ancak bayraklar veya ülkelerle ilgili yerleşik yapılara izin verilmez. ( öksürük Mathematica öksürük )
Lütfen programınızı çalıştırmak için gereken tam komutu ve gerekli kitaplıklara bağlantılar sağlayın.
Gönderiler "f.png" dışında hiçbir dosyayla etkileşimde bulunamaz.
Başvurularda zor bir zaman sınırım yok, ancak lütfen nispeten hızlı tutun. Puanlama betiğinin saatlerce sürmesini istemiyorum.
./program < f.png
seçeneği yalnızca dilin dosyaları okuma yolu yoksa kullanabilir miyiz, yoksa dil dosyaları okuyabilse bile kullanabilir miyiz? (Görünüşe göre CJam bilmediğim dosyalardan okuyabilir)