Schreiben Sie ein vollständiges Programm mit einem Quellcode von 256 Byte oder weniger, das ein Bild einer Flagge anzeigt und feststellt, aus welchem Land diese Flagge stammt. Eine Zip-Datei mit den 196 verschiedenen Flags der Challenge kann hier heruntergeladen werden . Quelle: [ Flagpedia ]. Diese 196 Flag-Bilder sind die einzigen Eingaben, die Ihr Programm verarbeiten muss.
Ihr Programm nimmt keine Eingabe entgegen. Das Flag-Image befindet sich im selben Verzeichnis wie Ihr Programm und heißt "f.png". Ihr Programm öffnet diese Datei, identifiziert sie und druckt die zweibuchstabige Abkürzung für dieses Land . Wenn Sie eine Sprache verwenden, die keine Dateien öffnen kann, können Sie Ihr Programm auch als ausführen ./program < f.png
.
Jede Flag-Datei hat den gleichen Namen wie die erwartete Ausgabe. Alle Ausgaben über 2 Buchstaben werden ignoriert.
Hier ist eine Liste aller Ausgaben / Dateinamen:
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,
Wertung
Hier ist ein kurzes Python-Skript, mit dem ich jede Einreichung bewerten werde.
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")
Ihre Punktzahl ist die Gesamtzahl der korrekt identifizierten Flaggen. Im Falle eines Gleichstands gewinnt die frühere Einreichung.
Regeln
Für meinen Testkomfort kann jede Sprache mit einem frei verfügbaren Interpreter / Compiler für Windows 10 oder Ubuntu verwendet werden.
Bildverarbeitungsbibliotheken sind zulässig, jedoch sind keine mit Flaggen oder Ländern verknüpften eingebauten Bibliotheken zulässig. ( Husten Mathematica Husten )
Bitte geben Sie den vollständigen Befehl ein, der zum Ausführen Ihres Programms erforderlich ist, sowie Links zu den erforderlichen Bibliotheken.
Einsendungen dürfen mit keiner Datei außer "f.png" interagieren.
Ich habe kein festes Zeitlimit für die Einreichung, aber bitte behalte es relativ schnell bei. Ich möchte nicht, dass das Scoring-Skript Stunden dauert.
./program < f.png
Option nur verwenden, wenn die Sprache keine Möglichkeit zum Lesen von Dateien hat, oder können wir sie auch verwenden, selbst wenn die Sprache Dateien lesen kann? (Anscheinend kann CJam aus Dateien lesen, die ich nicht kannte)