깃발의 이미지를보고 깃발의 출신 국가를 결정하는 256 바이트 이하의 소스 코드로 전체 프로그램을 작성하십시오. 챌린지에 196 개의 다른 플래그를 포함하는 zip 파일은 여기 에서 다운로드 할 수 있습니다 . 출처 : [ 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은 내가 알지 못하는 파일을 읽을 수 있음)