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
ভাষাটি যদি ফাইলগুলি পড়ার কোনও উপায় না থাকে তবে আমরা কেবলমাত্র সেই বিকল্পটি ব্যবহার করতে পারি , অথবা আমরা ভাষাটি ফাইল পড়তে পারি এমনকি এটিও ব্যবহার করতে পারি? (দৃশ্যত সিজেএম ফাইলগুলি থেকে পড়তে পারে, যা আমি জানতাম না)