freiesMagazin Programmierwettbewerb

Du hast eine Idee für ein Projekt?
Antworten
Malta
User
Beiträge: 83
Registriert: Samstag 8. Januar 2011, 23:51

Das freiesMagazin hat einen Programmierwettbewerb ausgeschrieben:
http://www.freiesmagazin.de/20141001-si ... -gestartet

Die Idee für den Wettbewerb basiert auf dem Lightcycle-Race aus dem Film „Tron“. In einer Arena treten zwei Bots gegeneinander an. Jede Runde können sie sich entscheiden, nichts zu tun oder sich um 90 Grad nach rechts oder nach links zu drehen. Danach bewegen sie sich automatisch ein Feld vorwärts. Hierbei besetzt jeder Bot das Feld, das er gerade verlässt, welches dadurch für jeden unpassierbar bleibt (auch für den Bot selbst). Wer bei einer Bewegung gegen eine Wand bzw. gegen ein besetztes Feld läuft/fährt, scheidet aus.

Ich habe mir auch Gedanken gemacht und ein Python Test Bot geschrieben, der nur gerade aus fährt:

Code: Alles auswählen

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import sys

fobj = open("ausgabe.txt", "w")
line = ''
z = 1
while line != 'END':
     line = input()
     fobj.write(str(z) + ' ' + line + "\n")
     if line[:3] == 'SET':
         fobj.write('> SET: '+line[4:] + "\n")

     if line[:5] == 'ROUND':
         fobj.write('> ROUND '+line + ' > ' + str(z) + "\n")
         if line[6:] == str(z):
            sys.stdout.flush()
            print('AHEAD')
            fobj.write('< AHEAD ' + str(z) + "\n")
            z += 1

fobj.write('Bot Ende')
fobj.close()
Zuletzt geändert von Malta am Freitag 3. Oktober 2014, 14:42, insgesamt 1-mal geändert.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Der Link ist kaputt :!:
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Malta
User
Beiträge: 83
Registriert: Samstag 8. Januar 2011, 23:51

BlackJack

@Malta: Dein Testbot ist aber recht unschön. Lauter magische Zahlen/Indexe, kryptische Namen, `str()` und ``+`` zum zusammensetzen von Werten und Zeichenketten, kein ``with`` im Zusammenhang mit der Datei, und im Grunde viel zu umständlich. Die Logdatei kann man sich sparen, dafür gibt es vom Wettbewerb ja die Testumgebung die solche Informationen ausspuckt.

Minimal bliebe dann nur noch so etwas (ungetestet):

Code: Alles auswählen

#!/usr/bin/env python
# coding: utf8
import sys


def main():
    for line in iter(raw_input, 'END'):
        if line.startswith('ROUND'):
            sys.stdout.write('AHEAD\n')
            sys.stdout.flush()


if __name__ == '__main__':
    main()
Antworten