256 बाइट्स या उससे कम के स्रोत कोड के साथ एक पूर्ण कार्यक्रम लिखें जो एक ध्वज की छवि को देखता है और यह निर्धारित करता है कि झंडा किस देश से है। चुनौती में 196 अलग-अलग झंडों वाली ज़िप फ़ाइल यहाँ से डाउनलोड की जा सकती है । स्रोत: [ फ्लैगपीडिया ]। ये 196 ध्वज चित्र केवल इनपुट हैं जिन्हें आपके प्रोग्राम को संभालना है।
आपके कार्यक्रम में कोई इनपुट नहीं लिया जाएगा। ध्वज चित्र आपके प्रोग्राम के समान निर्देशिका में होगा और "f.png" नाम दिया जाएगा। आपका प्रोग्राम इस फ़ाइल को खोलेगा, इसकी पहचान करेगा और उस देश के लिए दो अक्षर का संक्षिप्त नाम प्रिंट करेगा । यदि आप ऐसी भाषा का उपयोग करते हैं जो फाइलें नहीं खोल सकती हैं, तो यह आपके प्रोग्राम को चलाने के लिए भी स्वीकार्य है ./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,
स्कोरिंग
यहाँ एक छोटी अजगर स्क्रिप्ट है जिसका उपयोग मैं प्रत्येक सबमिशन स्कोर करने के लिए करूँगा।
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")
आपका स्कोर सही पहचाने गए झंडे की कुल संख्या है। एक टाई के मामले में, पहले जमा करने वाला जीत जाता है।
नियम
मेरी परीक्षण सुविधा के लिए, विंडोज 10 या उबंटू के लिए स्वतंत्र रूप से उपलब्ध दुभाषिया / संकलक वाली किसी भी भाषा का उपयोग किया जा सकता है।
छवि प्रसंस्करण पुस्तकालयों की अनुमति है, लेकिन झंडे या देशों से संबंधित किसी भी निर्माण की अनुमति नहीं है। ( कफ गणितज्ञ खांसी )
कृपया किसी भी आवश्यक लाइब्रेरी के लिंक के साथ अपने प्रोग्राम को चलाने के लिए आवश्यक पूर्ण कमांड प्रदान करें।
सबमिशन "f.png" को छोड़कर किसी भी फाइल के साथ इंटरैक्ट नहीं कर सकता है।
मेरे पास प्रस्तुतियाँ पर कोई कठिन समय-सीमा नहीं है, लेकिन कृपया इसे अपेक्षाकृत जल्दी रखें। मैं स्कोरिंग स्क्रिप्ट को घंटे नहीं लेना चाहता।
./program < f.png
विकल्प का उपयोग कर सकते हैं यदि भाषा में फ़ाइलों को पढ़ने का कोई तरीका नहीं है, या क्या हम इसका उपयोग तब भी कर सकते हैं जब भाषा फ़ाइलों को पढ़ सकती है? (जाहिरा तौर पर CJam फाइलों से पढ़ सकता है, जो मुझे नहीं पता था)