Seite 1 von 1

freiesMagazin Programmierwettbewerb

Verfasst: Freitag 3. Oktober 2014, 13:10
von Malta
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()

Re: freiesMagazin Programmierwettbewerb

Verfasst: Freitag 3. Oktober 2014, 13:52
von Hyperion
Der Link ist kaputt :!:

Re: freiesMagazin Programmierwettbewerb

Verfasst: Freitag 3. Oktober 2014, 14:43
von Malta

Re: freiesMagazin Programmierwettbewerb

Verfasst: Freitag 3. Oktober 2014, 15:18
von 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()