เขียนโปรแกรมเต็มรูปแบบที่มีซอร์สโค้ดขนาด 256 ไบต์หรือน้อยกว่าซึ่งดูที่รูปธงและกำหนดประเทศที่ตั้งค่าสถานะ ไฟล์ ZIP ที่มีธงที่แตกต่างกัน 196 ในความท้าทายสามารถดาวน์โหลดได้จากที่นี่ แหล่งที่มา: [ Flagpedia ] รูปภาพธง 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")
คะแนนของคุณคือจำนวนธงทั้งหมดที่ระบุไว้อย่างถูกต้อง ในกรณีที่เสมอกันการส่งก่อนหน้านี้จะชนะ
กฎระเบียบ
เพื่อความสะดวกในการทดสอบฉันสามารถใช้ภาษาใดก็ได้ที่มีล่าม / คอมไพเลอร์สำหรับ Windows 10 หรือ Ubuntu ฟรี
อนุญาตให้ใช้ไลบรารีการประมวลผลภาพ แต่ไม่อนุญาตให้มีตัวสร้างภายในที่เกี่ยวข้องกับธงหรือประเทศ ( ไอ Mathematica ไอ )
โปรดระบุคำสั่งเต็มรูปแบบที่จำเป็นในการเรียกใช้โปรแกรมของคุณพร้อมกับลิงก์ไปยังไลบรารีที่จำเป็น
สิ่งที่ส่งมาอาจไม่สามารถโต้ตอบกับไฟล์ใด ๆ ยกเว้น "f.png"
ฉันไม่มีข้อ จำกัด เรื่องเวลาในการส่งงาน แต่โปรดช่วยให้มันค่อนข้างเร็ว ฉันไม่ต้องการให้สคริปต์ให้คะแนนใช้เวลาหลายชั่วโมง
./program < f.png
ตัวเลือกได้หรือไม่ถ้าภาษาไม่มีวิธีอ่านไฟล์หรือเราสามารถใช้มันได้แม้ว่าภาษาจะอ่านไฟล์ได้หรือไม่? (เห็นได้ชัดว่า CJam สามารถอ่านได้จากไฟล์ซึ่งฉันไม่รู้)