PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Free-Hack Coding Contest - A New Begining



krypt0n
09.04.2010, 02:57
CONTEST BEENDET - AUSWERTUNG FOLGT

Lang ists her da gab es einen kleinen Jungen im Pijama - er hatte eine Vision von einem Coding Contest bei dem die Elite der Freifallholzfäller ehrenhaft um die goldene Axt des Ponnies zu kämpfen glaubten. Doch es kam alles anders als man es sich ausgemalt hatte. Der Kampf war heftig und ausgeglichen. Viele Unicode Chars fielen im sinnlosen Gemetzel um Semikolons und Funktionsdefinitionen. Gar der kleine Junge, der mitlerweile zu einem wahrhaften König aufgestiegen ist konnte sich die Erinnerungen nicht mehr aus seinem begrenzten Arbeitsspeicher entfernen - die Garbagecollectors waren einfach zu schwach für eine Erinnerung solchen Rings.
Viele Sekunden später wagte es jedoch ein extrem reaktionsträges Edelgas erneut zu einem Treffen der Giganten aufzurufen. Dieses mal sollten Zeichen geschont werden und ISO über alle wachen. So rufe ich also erneut zu einem Coding Contest auf, diesmal soll das Versprechen aber wahr sein, dass es bei reger Teilnahme weitere Schlachten geben werde.

So genug getrollt, jetzt kommen harte delikate Fakten, wie sie unser Nerdherz (aka Logik) liebt.

So nachdem ich mich nun nochmals mit Blackberry abgesprochen habe stehen die genauen Regeln des ganzen.

Welche Sprachen sind erlaubt
Alle Sprachen, die die Eingabe und Ausgabemethoden unterstützen (so ziemlich alle [sogar Ook!!!]).

Was wird gecodet
Diesmal ist die Aufgabe, einen möglichst intelligenten Tic Tac Toe (nein nicht die "Verpiss dich"-Band, sondern das Logikspiel (http://de.wikipedia.org/wiki/Tic_Tac_Toe)) "Bot" zu programmieren.

Was muss beachtet werden
Um die Bots gegeneinander spielen zu lassen müssen sie alle das gleiche Format unterstützen, das später erklärt wird. Ausserdem sollten die Bots auf einigermassen moderater Hardware lauffähig sein. Es sind keine Teams erlaubt.

Wie wird bewertet
Die Bewertung wird nach einem normalen Tabellensystem gehandhabt. Jedes Programm tritt gegen jedes andere zehn Mal an. Bei fünf Runden hat Programm #1 den ersten Stein (erster Stein: X), die restlichen fünf Mal Programm #2. Wer am Schluss die meisten Siege hat gewinnt das Duell. Für den Sieger gibt es jeweils zwei Punkte, für den Verlierer 0. Gibt es ein Unentschieden gibt es für beide Parteien je einen Punkt. Falls ein Programm nicht korrekt funktioniert verliert es automatisch das Duell.
Die Quelltexte werden eingezogen, tragen aber nichts zur Bewertung bei.

Was bekommt/-en der/die Sieger
Vermutlich nur Ruhm und Ehre. Ausserdem natürlich die goldene Freifallholzfällerspezialextremaxt!

Wo gebe ich mein Programm ab
Per PN bei mir (krypt0n, der Fette Dude mit der Lightgun!). Pro Teilnehmer darf ein Programm abgegeben werden, bessere Versionen, die die alte ersetzen sind jedoch ausdrücklich erlaubt (so lange ihr es nicht übertreibt!).

Detailliertere Beschreibung des Problems
Euer Programm muss in der Lage sein pro Ausführung einen Zug in einem Tic Tac Toe Match auszuführen. Die Übergabe der aktuellen Spielsituation erfolgt per Commandline Argument (in vielen Sprachen argv genannt). Dieses ist folgendermassen aufgebaut:
Länge: neun ASCII Chars
Format: "_________" (ohne die Anführungs- und Schlusszeichen) dabei stehen die ersten drei ASCII Chars für die erste Reihe des Tic Tac Toe Felds, die zweiten drei für die zweite Reihe und die letzten drei für die dritte Spalte.
_ steht dabei für ein nicht besetztes Feld, X für ein vom ersten Programm besetztes Feld, O (ooh nicht null!) für ein vom zweiten Programm besetztes Feld.
Beispiel: "_X_OOX_X_" steht für folgendes Feld:

_ X _
O O X
_ X _

Ein leeres Feld wird demnach folgendermassen übergeben: "_________"
Die Eingabe kann als korrekt angenommen werden und muss nicht überprüft werden.
Das Programm muss als erstes feststellen, welcher Buchstabe am Zug ist und einen korrekten Zug für diesen Buchstaben ausführen. Danach muss das neue Spielfeld im gleichen Format wie die Eingabe, gefolgt von einem Zeilenvorschub (Windows Format: Carriage Return Line Feed ["\r\n", CRLF etc.]) ausgegeben werden. Ist ein unzulässiger Zug vollzogen worden, das Resultat im falschen Format etc. wird das Spiel forfait für das andere Programm gewertet.

Wie lange habe ich Zeit
Abgabetermin ist 1272232799 (aka Sonntag, der 25. April 2010 um 23:59:59)

Weiteres
Falls Fragen bestehen können diese hier in diesen Thread gepostet werden, ich und meine diabolischen Helfer werden euch aufklären.

Teilnehmer
... letzte Seite :D

trisn
09.04.2010, 08:25
falls zeit mit perl am start

Interceptor
09.04.2010, 09:42
Wenn Zeit, mit C bzw. C++ oder C# mit dabei.

MfG Interceptor

Slawa
09.04.2010, 10:47
Wenn Zeit, mit C bzw. C++ oder C# mit dabei.

MfG Interceptor

Wie oben gesagt, falls Zeit kommt VB.NET!

Gruß

Slawa

#AZURA
09.04.2010, 10:47
Diese WOche? und nächste? dann mit c# :D

Slawa
09.04.2010, 10:50
Diese WOche? und nächste? dann mit c# :D


@flensburg, wir können auch was zuasmmen coden

krypt0n
09.04.2010, 13:04
So Regeln/Contestdetails mit BB abgesprochen.

br00_pwn
09.04.2010, 13:07
Passt ja wunderbar, da ich mich gerade ausgiebig mit Bots beschäftige :)
Hört sich eigentlich nicht schwer an, mir gehen schon 1000 Ideen durch den Kopf..

Lg br00_pwn

AlterHacker
09.04.2010, 13:23
Sicher, dass wir Gewinner haben werden?
Soweit ich weiß, kommt doch eh immer unentschieden raus, wenn die Bots gut sind ^^.
Aber ich bin dabei (wenn ich bis dahin Zeit finde) und wenn, dann werd ichs euch nicht leicht machen xD

GregorSamsa
09.04.2010, 13:36
Wie sieht das aus, bei zu viel Gleichständen, mit Bewertungskritiken wie Codelänge, Algorithmuseffektivität (vllt. 1mio. laufen lassen und Zeit messen) etc...?

Ansonsten: Ich bin mit C dabei!

krypt0n
09.04.2010, 13:44
Sicher, dass wir Gewinner haben werden?
Soweit ich weiß, kommt doch eh immer unentschieden raus, wenn die Bots gut sind ^^.
Aber ich bin dabei (wenn ich bis dahin Zeit finde) und wenn, dann werd ichs euch nicht leicht machen xD

Ich bin mir bewusst, dass Tic Tac Toe gerade für Bots extrem einfach ist. Aber da ich nicht weiss, wie das Codingniveau hier im Allgemeinen so ist habe ich mir gedacht, dass wir für den ersten Contest (der eigentlich der 2. ist) eine einfachere Aufgabe stellen. Wenn ihr Vorschläge für weitere habt könnt ihr mir die BTW immer mitteilen ;)

So und jetzt nochmals kurz zum Ablauf, da es scheinbar irgendwelche Unklarheiten gibt. Hier ein Beispiel für den Ablauf eines Matches:

Es treten an: Mein Programm pwner.exe und BlackBerries Programm rottenegs.exe

1. Spiel
Aufruf per CMD: "pwner.exe _________" Rückgabe: "____X____\r\n"
Aufruf per CMD: "rotteneggs.exe ____X____" Rückgabe: "___OX____\r\n"
Aufruf per CMD: "pwner.exe ___OX____" Rückgabe: "_X_OX____\r\n"
Aufruf per CMD: "rotteneggs.exe _X_OX____" Rückgabe: "_X_OXO___\r\n"
Aufruf per CMD: "pwner.exe _X_OXO___" Rückgabe: "_X_OXO_X_\r\n"
Gewinner: pwner.exe (mittlere Reihe horizontal)

2. Spiel
Ablauf wie das erste nur, dass dieses mal rotteneggs.exe als erstes aufgerufen wird und deshalb den Buchstaben X besitzt.

Das ganze wird dann noch vier Mal auf die gleiche Art durchgeführt, so dass beide Programme je fünf Mal anfangen durften (und deshalb den Buchstaben X hatten) und fünf mal den zweiten Zug durchführen durften (mit dem Buchstaben O).
Falls weitere Fragen sind diese einfach stellen.


Wie sieht das aus, bei zu viel Gleichständen, mit Bewertungskritiken wie Codelänge, Algorithmuseffektivität (vllt. 1mio. laufen lassen und Zeit messen) etc...?

Ansonsten: Ich bin mit C dabei!

Das wollen wir aufgrund von Objektivität erstmal weglassen! Falls es wirklich nur Unentschieden geben sollte werden wir uns für nächstes mal ein einigermassen objektives Kriterium ausdenken, das auf alle Sprachen angewandt werden kann.

VooDoo666
09.04.2010, 14:23
Bin eventuell dabei.

NSGR
09.04.2010, 14:26
Ich bin mit Java dabei .
Ich fände ja Viergewinnt cooler :P
Vorallem gibt es da sicher nicht so viele Unentschieden.
MfG

krypt0n
09.04.2010, 14:29
Ich bin mit Java dabei .
Ich fände ja Viergewinnt cooler :P
Vorallem gibt es da sicher nicht so viele Unentschieden.
MfG

War anfangs auch eine Möglichkeit, jedoch wäre das wohl auf stupides Bruteforcing hinausgelaufen weil ein intelligenter Algorithmus viel schwieriger zu implementieren wäre.

AlterHacker
09.04.2010, 15:15
So schauts aus ^^.
Wüsste jetzt gar nicht mal so einfach, wie man das machen soll. Oka Bot programmieren ist jetzt nicht so mein Spezialgebiet, aber ich glaub alleine bei XXO läufts schon auf 2.5k if-abfragen hinaus.

Hu5eL
09.04.2010, 15:20
evtl auch dabei --> perl

Slawa
09.04.2010, 15:26
evtl auch dabei --> perl

Wie man hier sieht, sind schon einge gute Programmiersprachen dabei, ich denke das wird was!

Gruß

Slawa

Pr0g4mer
09.04.2010, 15:29
schade -.- bin da erst seit 3 tagen fertig mim abi, sonst wär ich dabei =(

gf0x
09.04.2010, 15:34
Bin evtl. mit vb.net dabei

EBFE
09.04.2010, 15:52
Das Programm muss als erstes feststellen, welcher Buchstabe am Zug istWenn die Programme jedesmal neu aufgerufen werden, kann man bei einem Feld mit (Anzahl(Buchstabe ≠ "_") >1 )nicht mehr erkennen, wer dran ist ;)



Aufruf per CMD: "pwner.exe ___OX____" Rückgabe: "_X_OX____\r\n"
___
OX_
___hier könne sowohl X wie O dran sein ;)

PS: da Scriptsprachen zugelassen sind: wie schaut es mit "benutzerdefinierten" Aufrufen aka "Interpreter script.x argument" ?

blackberry
09.04.2010, 15:58
hier könne sowohl X wie O dran sein ;)

Schön mitgedacht :)
krypt0n hat aber definiert, dass X immer anfängt (siehe "X für ein vom ersten Programm besetztes Feld" im Spoiler).
Insofern weiß man also, dass jetzt wieder X dran wäre.

Pseudocode:
if (AnzahlX > AnzahlO)
// O am Zug
else
// X am Zug

EBFE
09.04.2010, 16:04
Ok, dann wäre das ja erledigt (stand auch etwas versteckt im Text *sich ausred* ) :)

krypt0n
09.04.2010, 16:16
Wenn die Programme jedesmal neu aufgerufen werden, kann man bei einem Feld mit (Anzahl(Buchstabe ≠ "_") >1 )nicht mehr erkennen, wer dran ist ;)
Nein es beginnt immer X und dementsprechend kann O nie mehr Felder besetzen als X es tut.


PS: da Scriptsprachen zugelassen sind: wie schaut es mit "benutzerdefinierten" Aufrufen aka "Interpreter script.x argument" ?

Solange es einen Interpreter für Windows (eventuell auch Linux, muss aber noch schauen wie ich das mit den VB Heinis etc. regel) gibt, geht das klar. Ausgabe muss aber auch da passen.

Steiger_mp
09.04.2010, 17:15
wird nur Sieg oder Niederlage gewertet?
also spielt das Konzept keine rolle?

VooDoo666
09.04.2010, 17:17
wird nur Sieg oder Niederlage gewertet?
also spielt das Konzept keine rolle?

Bei den Leuten die bisher mitmachen, werden die Bots warscheinlich eh so gut sein, dass es nur unentschieden gibt. Wie dann ein Gewinner gefunden wird, ka.

Mfg

$_staX
09.04.2010, 17:18
Sicher, dass wir Gewinner haben werden?
Soweit ich weiß, kommt doch eh immer unentschieden raus, wenn die Bots gut sind ^^.
Aber ich bin dabei (wenn ich bis dahin Zeit finde) und wenn, dann werd ichs euch nicht leicht machen xD
Macht keinen Unterschied ob Vier-Gewinnt oder Tic Tac Toe, beide zählen zu den gelösten spielen ;) Ein Tic Tac Toe spiel geht im Optimalfall halt Unentschieden und ein Vier Gewinnt Spiel zugunsten des Beginners aus.

krypt0n
09.04.2010, 17:34
Wenn es wirklich lauter Unentschieden geben wird könnte man zum jetztigen Zeitpunkt noch darüber diskutieren, ob man noch eine zusätzliche Regel einführen will, nach welchem Kriterium eventuelle Unentschieden gewertet werden. Dies ist jedoch sehr schwierig, weil so ziemlich alle Sprachen akzeptiert werden und darum ein einheitliches Kriterium sehr schwierig zu finden ist.
Einzige Möglichkeit wäre meines erachtens, dass Bruteforcing ganz verboten wird oder bei einem Unentschieden das Programm mit einem "intelligenten" Lösungsverfahren zwei Punkte anstatt einem bekommt.
Was sagt ihr dazu?

NSGR
09.04.2010, 18:12
Macht keinen Unterschied ob Vier-Gewinnt oder Tic Tac Toe, beide zählen zu den gelösten spielen ;) Ein Tic Tac Toe spiel geht im Optimalfall halt Unentschieden und ein Vier Gewinnt Spiel zugunsten des Beginners aus.
Ja ok stimmt. Aber ich glaube bei Viergewinnt kann man nicht einfach nur mit dem Minimax arbeiten , sondern muss ihn erweitern . Mann kann auch Dame spielen :)

AlterHacker
09.04.2010, 18:23
Wenn es wirklich lauter Unentschieden geben wird könnte man zum jetztigen Zeitpunkt noch darüber diskutieren, ob man noch eine zusätzliche Regel einführen will, nach welchem Kriterium eventuelle Unentschieden gewertet werden. Dies ist jedoch sehr schwierig, weil so ziemlich alle Sprachen akzeptiert werden und darum ein einheitliches Kriterium sehr schwierig zu finden ist.
Einzige Möglichkeit wäre meines erachtens, dass Bruteforcing ganz verboten wird oder bei einem Unentschieden das Programm mit einem "intelligenten" Lösungsverfahren zwei Punkte anstatt einem bekommt.
Was sagt ihr dazu?

Nur, wie definierst du intelligent ? Fest einprogramierte Algos? Weil ein Bot, der dann wieder ein paar Möglichkeiten berechnet, wäre dann ja quasi ein Bruteforcer ^^.
Gibt ja nur 9! (58.980) mögliche Spielverläufe, die man dann im ersten Zug berücksichtigen könnte. Theoretisch gibt es für den ersten Zug ja nur 3 Felder, der rest wiederholt sich(drehung um 90°)
XX_
_X_
___
Also ist quasi ein "Bruteforce" Ding ~= ein inteligentes Tool.
&& Wenn die 'Algos' fest drinne sind, dann ist es ja auch nicht mehr so das intelligente Prog, sondern nur der Algo ^^.

krypt0n
09.04.2010, 18:29
Das ist ja das Problem des Ganzen, darum wird erstmal sicher nach Punkten entschieden.
Wie gesagt: Vorschläge für den nächsten Contest sind jederzeit willkommen.

Steiger_mp
09.04.2010, 18:32
unentscheiden müsste anders gewichtet werden, da ein "passiver" Bot schon sehr viele Punkte einnimmt, falls dieser die "Gewinnsumme" 15 beim Gegner erfolgreich verhindert.

blackberry
09.04.2010, 18:54
Gibt ja nur 9! (58.980) mögliche Spielverläufe

So kann man das nicht rechnen!
"Für Tic Tac Toe gibt es 255.168 verschiedene Spielverläufe, von denen 131.184 mit einem Sieg des ersten Spielers enden, 77.904 mit einem Sieg des zweiten Spielers und 46.080 mit einem Unentschieden. " (Quelle: Tic Tac Toe – Wikipedia)

krypt0n
09.04.2010, 19:03
unentscheiden müsste anders gewichtet werden, da ein "passiver" Bot schon sehr viele Punkte einnimmt, falls dieser die "Gewinnsumme" 15 beim Gegner erfolgreich verhindert.

Darüber könnte man eventuell diskutieren.

reddragon1212
09.04.2010, 19:10
find das ist ne richtig gute idee, allerdings kommt doch eigentlich eh immer unentschieden raus?
ich finde man hätte sich für 4 gewinnt entscheiden sollen das funktioniert ja nach dem gleichen prinzip nur paar felder mehr und der stein muss "runterrutschen" :D

Steiger_mp
09.04.2010, 19:12
find das ist ne richtig gute idee, allerdings kommt doch eigentlich eh immer unentschieden raus?
ich finde man hätte sich für 4 gewinnt entscheiden sollen das funktioniert ja nach dem gleichen prinzip nur paar felder mehr und der stein muss "runterrutschen" :D

Ziel ist es ja einen Bot zu programmieren, der gewinnt. Hier gehts nicht um den passiven Bot, den ich im Post vorher angesprochen habe.

AlterHacker
09.04.2010, 19:25
Vorschlag für nächsten Contest? 'Corewars' - Dummerweise aber nur in Assembler.

btw wieso ist als Tag 'phpisgay' ? :D

krypt0n
09.04.2010, 19:31
Ich verstehe schon, was ihr für Bedenken habt. Ich werde das mit BlackBerry nochmals kurz besprechen.

c4pone
09.04.2010, 19:45
Bin dabei. :P
Hab nur noch ne Frage unzwar muss unser Programm prüfen ob jemand gewonnen hat und dann nen entsprechenden return Wert geben oder einfach immer nur Steine setzen und der Schiedsrichter wertet das dann aus ?!

sp1nny
09.04.2010, 20:13
Bin auch dabei.

krypt0n
09.04.2010, 20:28
Aktuell muss es einfach nur Steine setzen. Ein Programm von mir wird eure Programme dann gegeneinander antreten lassen und prüft den gewinner etc.

blackberry
10.04.2010, 01:25
Hilfsprogramme

Ok, erste Hilfestellung, bzw. Erleichterung für die, die in die Testphase eintreten:
Mirror #1:
MEGAUPLOAD - The leading online storage and file delivery service@@AMEPARAM@@Filename:</font> <font style="font-family:arial; color:#FF6700; font-size:22px; font-weight:bold;">fh_ttt.rar@@AMEPARAM@@fh_ttt.rar

Mirror #2:
http://rapidshare.com/files/375476205/fh_ttt.rar.html

Enthalten sind zwei Testprogramme.
Das erste (ttt_match.exe) ist ein Programm wie krypt0n es wohl benutzen wird (er wird wohl eher sein eigenes machen, aber egal). Es ist dazu gut zwei TicTacToe Spiele, welche nach den hier vorliegenden Regeln arbeiten gegeneinander antreten zu lassen.

Das zweite Programm (ttt.exe) ist eine Art Skelett einer Lösung für diesen Wettbewerb. Einzigster Unterschied (zumindest bleibt zu hoffen, dass das ein Unterschied zu euren Programmen ist XD) ist, dass es nur zufällig ein leeres Feld sucht und dort das entsprechende Symbol setzt.
Es ist im Grunde also kein intelligenter Gegner, sondern dient nur als Testgegner für euer Programm zur Benutzung mit ttt_match.exe.

Weitere Informationen können der beiliegenden README-Datei entnommen werden.
Sollten dennoch Fragen besteht könnt ihr mich gerne hier, oder per PM kontaktieren.

P.S.: die Sourcecodes liegen zwecks Fairness nicht bei, können jedoch - falls Interesse besteht - NACH dem Wettbewerb veröffentlicht werden.


MfG. BlackBerry

EDIT:
Weil die Codes im Grunde auch wenig spoilen und einige nicht darauf zugreifen können (insbesondere Mac Benutzer - wurde bereits angesprochen), weil ich keine Binaries für sämtliche Plattformen bereitstellen kann wäre es ja auch wiederum unfair, wenn einige diese Hilfe haben und andere nicht.

Insofern hier die Sourcecodes: (in C)

SOURCECODES IN DEN DOWNLOADS OBEN

c4pone
10.04.2010, 14:10
Ist es auch ok den Bot in PHP zu programmieren !? Wenn ja, soll ich den Code dann komplimieren mit iergend nem php-to-exe Compiler ?!

blackberry
10.04.2010, 15:48
PHP ist absolut OK.
EBFE hat beim letzten Mal sogar was in Prolog abgegeben... (und glücklicherweise beschrieben wie man es ausführt)
Also solang man es zum Laufen bekommt ist alles ok.

0x30
10.04.2010, 16:17
Ich mach es lieber mit "random" Züge, erhöht den Spielspass :D

krypt0n
10.04.2010, 17:17
Mhh find ich jetzt nicht so gut, dass BB das Tool releases hat, die Leute die keinen Plan von Programmierung haben werden aber auch so nicht vom Sourcecode profitieren können.

Ich sorge dafür, dass ihr alle nötigen Interpreter etc. hab, so lange das Tool "irgendwie" per Konsole aufgerufen werden kann, ist es valide.

@0x30 freut mich du Schelm :D

sp1nny
10.04.2010, 18:02
Die Tools von Blackberry werden niemanden einen Vorteil verschaffen, da das einzige was man verwenden könnte die Zufallsgenerierung sein könnte, aber diese sowieso nicht sehr sinnvoll bei "guten" Bots ist. ^.^ Ansonsten gäbe es noch die Routine zur Prüfung des Sieges einer Person, jedoch ist diese sehr primitiv und wird bei komplexen Algorithmen nicht zur Anwendung kommen ( bei meinem jedenfalls nicht | Stichwort: For Schleifen ) Zur Prüfung des eigenen Bots sind sie jedoch sehr hilfreich. ;)

BTW: Ist die Siegesbedingung nur vertikal / horizontal oder gelten auch die Hauptdiagonalen als Siegesbedingung?

krypt0n
10.04.2010, 18:08
Es gelten die allgemeinen Tic Tac Toe Regeln: Der Sieg ist sowohl mit einer vollständigen horizontalen, vertikal oder diagonalen Reihe möglich.

DoS
10.04.2010, 22:28
Erst einmal ein großes Lob an BlackBerry und krypt0n. Ich bin euch sehr dankbar, dass ihr das hier veranstaltet.

Bin mal gespannt, wie das hier abschneidet bzw. wie das Duell zwischen Sp1nnys und meinem Bot laufen wird ;)

Wie man schon daraus schließen kann, mache ich auch mit :)

Mit freundlichen Grüßen
DoS

sp1nny
11.04.2010, 12:54
Also für mich ist das Ergebnis ganz klar DoS. ;)
Ich freue mich auch schon drauf. :D

DoS
11.04.2010, 18:58
"Also für mich ist das Ergebnis ganz klar DoS. "

Sehr nett von dir, dass du denkst: DoS/ ich gewinne :)


Man kann das falsch verstehen ;) . Entweder

Also für mich ist das Ergebnis ganz klar: DoS. (So habe ich das gerade interpretiert)

oder

Also für mich ist das Ergebnis ganz klar, DoS. (So, wie du das eigentlich meintest :D)



Mit freundlichen Grüßen
DoS

Variable X
11.04.2010, 19:16
Hmm werde echt mal schauen ^^

Könnt man nicht auch irgendwie ein Programm schreiben das das Gegnerprogramm dazu bringt, nicht zu funktionieren?
Keine Ahnung wie man das anstellen sollte aber die Idee fände ich witzig, so könnt man sich zumindest den Sieg holen...

Naja wie auch immer werde versuchen ein Programm in Delphi zu schreiben ^^


Edit:

Hilfsprogramme

Ok, erste Hilfestellung, bzw. Erleichterung für die, die in die Testphase eintreten:
MEGAUPLOAD - The leading online storage and file delivery service (http://www.megaupload.com/?d=MZ1JBJJG)

Enthalten sind zwei Testprogramme.
Das erste (ttt_match.exe) ist ein Programm wie krypt0n es wohl benutzen wird (er wird wohl eher sein eigenes machen, aber egal). Es ist dazu gut zwei TicTacToe Spiele, welche nach den hier vorliegenden Regeln arbeiten gegeneinander antreten zu lassen.

Das zweite Programm (ttt.exe) ist eine Art Skelett einer Lösung für diesen Wettbewerb. Einzigster Unterschied (zumindest bleibt zu hoffen, dass das ein Unterschied zu euren Programmen ist XD) ist, dass es nur zufällig ein leeres Feld sucht und dort das entsprechende Symbol setzt.
Es ist im Grunde also kein intelligenter Gegner, sondern dient nur als Testgegner für euer Programm zur Benutzung mit ttt_match.exe.

Weitere Informationen können der beiliegenden README-Datei entnommen werden.


Der DL-Link is leider down

0x30
11.04.2010, 19:34
Deshalb wurde auch der Source verlinkt damit man es selbst kompilieren kann.

Variable X
11.04.2010, 19:43
müsst ich mir aber erst nen prog ziehn zum kompilieren >.>

blackberry
11.04.2010, 22:26
Reup mit aktuellen Binaries + Sourcecodes:
DOWNLOADLINK OBEN

P.S.: bei Megaupload heißt es ja der Download sei temporär unzugänglich. Vielleicht behebt sich das ja automatisch. Auf RS habe ich es nämlich ursprünglich nicht hochgeladen, weil es da ja nach 10 Downloads weg ist.

0x30
11.04.2010, 22:29
Mach dir ein Collector Account (Gratis) und dann ist das mit den 10 download Limit nicht mehr.

Macacity
11.04.2010, 22:44
Hier nochmal ein Mirror, der erstmal nicht aufgeben sollte ;)
(free für alle & ohne Wartezeit^^)

http://rapidshare.com/files/375406720/fh_ttt.rar

Variable X
11.04.2010, 22:45
Ich danke dir :)
Naja mit nem collector account wäre das Problem wirklich behoben...

des weiteren funktioniert die ttt.exe nicht (bei mir zumindest)...
ich ruf sie über cmd mit "ttt.exe _________" auf aber es gibt keinen output oder sonstiges :o

blackberry
11.04.2010, 23:29
Das ist doof. Liegt aber am Compiler.
Ich hab das ganze mit dem -O3 (höchste Optimierung) compiliert.
Dabei hat das wohl irgendie mit der Routine für den Zufallsgenerator rumgefummelt was das ganze etwas durcheinander gebracht hat.

Tut mir leid :S
Hab die Links oben aktualisiert.

DL LINK OBEN

Variable X
12.04.2010, 12:42
Naja passiert :P XD werds gleich mal testen ob es jetzt funktioniert

Edit:\ Funktioniert 1a :)

EpicByte
12.04.2010, 13:06
Man könnte ja für den Tag der "Spiele" einen "Livestream" von krypt0ns PC aus organisieren um die Speile live mitzuverfolgen ;P

krypt0n
12.04.2010, 13:50
Man könnte ja für den Tag der "Spiele" einen "Livestream" von krypt0ns PC aus organisieren um die Speile live mitzuverfolgen ;P

Ich kann auch einfach die Logs der Matches online stellen :P

Variable X
12.04.2010, 21:49
So und erneut ein Post von mir ^^

Aber irre ich mich oder erkennt das Programm "ttt_match.exe" noch keine Diagonalen Siege an? Wenn mein Programm z.B. mit ner diagonalen Reihe gewinnt (X___X___X oder __X_X_X__) und keinen Zug mehr ausführt, zeigt mir das ttt_match an, dass mein Programm einen Fehler gemacht hat :P

Aber irgendwo hatte ich gelesen, dass die neue Version das auch unterstützen soll ^^

Naja werd jetzt erst mal pennen gehn und morgen mein Prog fertig schreiben.

mfg VariableX

blackberry
12.04.2010, 22:17
Oh my god.
Tut mir echt leid, wenn ttt_match.exe noch die alte Version ist.
Der Sourcecode im Paket war bereits der neue, nur die Binary eben scheinbar nicht.

Hab meine Links nochmal editiert (das kotzt echt an...)

Hoffentlich funktioniert jetzt alles wie geplant, weil sonst waren meine Programme wohl eher verwirrend als hilfreich :S


MfG. BlackBerry

Variable X
13.04.2010, 11:42
Werds sofort testen ^^

und mein Programm heute oder morgen fertigstellen :P

Und danke dir für den jeweiligen Aufwand den du dir machst xD Ich finde dein ttt_match echt klasse zum testen und aufspüren von Fehlern und mit dem Zufallsspiel ist es einfach Super :)

Also ein großes Lob an dich und so :)

Gruß VariableX

Edit:
So Leid es mir tut muss ich dir mitteilen, dass in deinem ttt_match immer noch ein Fehler ist :P

Diesmal hab ich mir aber auch den Code gleich mal angeguckt und bin selbst auf Fehlersuche gegangen, auch wenn ich eigentlich nicht mit C umgehen kann :P

und zwar nehm ich an, dass du mit diesen acht "Teilen" definieren willst wann wer gewonnen hat:

int check[][3] =
{
{ 0, 1, 2 }, { 3, 4, 5 }, { 6, 7, 8 },
{ 0, 3, 6 }, { 1, 4, 7 }, { 2, 5, 8 },
{ 1, 5, 9 }, { 3, 5, 7 }
};


Jedoch hast du dich hier vertan und bis anscheinen damit durcheinander gekommen, dass das bei dir mit der Zahl 0 beginn und nicht mit der 1

Das könnte der Fehler sein:

{ 0, 1, 2 }, { 3, 4, 5 }, { 6, 7, 8 }, stimmt
{ 0, 3, 6 }, { 1, 4, 7 }, { 2, 5, 8 }, stimmt auch
{ 1, 5, 9 }, { 3, 5, 7 } müsste { 0, 4, 8 }, { 2, 4, 6 } lauten... wenn ich mich nicht irre ^^ Du bist einfach um eins verrutscht :P


Hoffe das es stimmt, ansonsten haste wo anders einen Fehler ;)

blackberry
13.04.2010, 14:49
Danke für den Bugfix.
Deine Lösung stimmt :)

Das ganze hängt damit zusammen, dass die beiden letzten Arrays eben erst später dazugekommen sind.
Bei den Ersten hatte ich mir noch oben drüber so eine schöne Tabelle gemacht:
0 1 2
3 4 5
6 7 8
und dann alles abgelesen. Naja... bei den letzten eben nicht und dann hab ich mich vertan :( *rechtfertig*

Links sind geupdatet.

Variable X
13.04.2010, 15:16
Macht doch nichts ^^

aber ich verwende das Selbe Prinzip nur, dass ich mit 1 anfange ;) und muss mich dabei ab und an auch zusammenreißen, damit ich keinen Fehler rein bringe XD

Hab bereits 580 Zeilen Code oder so x.x aber es nähert sich dem Ende :)

mfg VariableX

Edit:

Wieder ein Bug in deinem Programm :P x'D

und zwar Zeigt er bei einem Spielfeld von:
XXO
OO_
X__
an, dass es ein draw sei, jedoch könnte es ja noch möglich sein, das O gewinnt, wenn X nen falschen Zug macht an stelle 8 bzw. 9 ^^ Sollte zwar nicht vorkommen, aber man weiß ja nie, in der realität gewinnt man ja auch nur durch Fehlzüge des anderen :P
Hie noch nen Pic davon:

http://www.abload.de/img/0000jr4x.jpg



Edit2:
So inzwischen funktionierst einwandfrei :)

c4pone
13.04.2010, 20:34
bin ja mal echt gespannt wie es ausgehen wird :D

Variable X
13.04.2010, 20:36
Naja wenn alle gescheit coden und keine Fehler machen, wird es immer unentschieden :P

sp1nny
13.04.2010, 21:17
Wie kommst du auf 580 Zeilen code oO..
In welcher Sprache codest du?

Variable X
13.04.2010, 21:19
delphi xD
naja das fertige Programm hat 650

Ich bin halt noch nicht gut darin xD bzw benutze zu wenig Funktionen, werde das Programm irgendwann mal noch kürzen aber jetzt werde ich mich erst mal wieder mit der Schule beschäftigen

Und ich weiß, dass es viel kürzer geht naja xD

mfg VariableX

sp1nny
14.04.2010, 18:26
So ich bin jetzt denke ich auch fertig und komme mit Kommentaren und Parametercheck auf 210 Zeilen. :P

Edit: Uhhhh 200 Posts :>

H4x0r007
14.04.2010, 18:36
Kann Brainfuck bzw. Ook! überhaupt argv Parameter aufnehmen? Ich denke, die Sprachen können nur von der späteren Tastatureingabe lesen?

Variable X
14.04.2010, 18:59
So ich bin jetzt denke ich auch fertig und komme mit Kommentaren und Parametercheck auf 210 Zeilen. :P

Edit: Uhhhh 200 Posts :>

210 Zeilen :) schön :D

Naja ich hab mal nachgerechnet mit Unterroutinen würd ich auch locker auf 200 Zeilen kommen >.< Ich werd morgen mal versuchen die einzubauen xD um meinen Code zu kürzen und alles übersichtlicher zu machen xD


Edit: Code ist nur noch 146 Zeilen lang :)

sp1nny
17.04.2010, 20:45
Wenn ich meinen Code kürze ist er auch nur so lang. :) Habs schon getestet.
Theoretisch könnte ich ihn auch nur auf ein par Zeilen kürzen aber wir wollen es ja nicht zu unübersichtlich machen. :D

AlterHacker
17.04.2010, 21:00
182 mit input-Validitätsprüfung und noch nicht zwingenden 'Features' [u.A. ist mein bot leicht zufallsgesteuert, damit was Abwechslung ins Spiel kommt xD]

Theoretisch könnte ich ihn auch nur auf ein par Zeilen kürzen aber wir wollen es ja nicht zu unübersichtlich machen.
- WORD

Variable X
17.04.2010, 22:33
Naja input hab ich nur so halb geprüft xD ob die länge stimmt, mehr nicht

Ja natürlich kann man das alles in eine lange Zeile schreiben ^^
Aber nein ich hab haufenweise unnützes Zeug rausgeschmissen und unterroutinen eingebaut... :)
Außerdem bin ich noch nicht soooo erfahren was programieren angeht, alles was ich kann hab ich selbst im Internet nachgeschaut, nie irgend nen Kurs besucht, oder das ganze Studiert :/

Und nen kleinen Zufall wollte ich eigentlich auch einbringen, aber habs noch nciht gemacht und werds wahrscheinlich auch nicht gemacht... Wobei ohne einen kleinen Zufall die "Bots" leider immer gleich spielen ^^ und bei 5 spielen immer das selbe Ergebnis raus kommt....

Naja aber die Aufgabe an sich fand ich toll und es hat mir einfach Spaß gemacht mal wieder was zu schreiben :)

sp1nny
17.04.2010, 23:09
Ich kann von mir auch nicht behaupten, dass ich irgendwelche Kurse besuche oder Informatik studiert habe. Ordentliche Bücher wirken jedoch Wunder. :)

Bei dem Parameter prüfe ich btw. folgendes:
-Anzahl der Paramter
-Länge
-Characters
-Steinanzahlen
-Spielfeld voll?
-Spiel schon zuende?

Hab mir sonst noch ein zweites Programm geschrieben, damit ich besser selber gegen meinen Bot spielen kann. :P
Bisher habe ich noch nie gewonnen.

Variable X
17.04.2010, 23:19
Naja ich überprüfe nicht ganz so viel ^^
Bei mir überprüft er die Länge, setzt danach alles auf Großbuchstaben, sofern jemand mal ein kleines x oder o gemacht hat ^^ und fängt dann an.
Dabei wird dann auch überprüft wie viel Steine gesetzt sind und teilweise auch wo diese sitzen ^^

Wenn das Spielfeld voll ist macht mein Programm einfach nichts, sprich es kommt nichts zurück ^^
Wenn man dem Programm ein volles Spielfeld übergibt ist man selbst schuld und schön blöd xD

Im Nachhinein ist mir zusammen mit meinem Vater, welcher von Beruf aus programmiert und der sich mein Programm mal angucken sollte, noch eine elegantere Lösung eingefallen die mir persönlich auch viel besser gefällt... bzw. ihm ist sie eingefallen :)

Aber da mein Programm auch richtig funktioniert und das ein Coding Contest ist, an dem ich teilnehmen will und das mit meinen Ideen werde ich bei meiner Version bleiben xD

EBFE
19.04.2010, 01:59
Hier mal ein kleines Script um die KIs zu testen ;)
zeigt
1) den nächsten möglichen Zug an
2) wieviele Gewinnchancen X bzw. O nach diesem Zug haben
Bsp:
x in der Mitte:


c:\xxostat>xxostats.exe "____X____"
x:1830, o:792, draw:576
o|_|_
_|x|_
_|_|_

x:2082, o:612, draw:576
_|o|_
_|x|_
_|_|_

x:1830, o:792, draw:576
_|_|o
_|x|_
_|_|_

x:2082, o:612, draw:576
_|_|_
o|x|_
_|_|_

x:2082, o:612, draw:576
_|_|_
_|x|o
_|_|_

x:1830, o:792, draw:576
_|_|_
_|x|_
o|_|_

x:2082, o:612, draw:576
_|_|_
_|x|_
_|o|_

x:1830, o:792, draw:576
_|_|_
_|x|_
_|_|o

gesamt:
x:15648, o:5616, draw:4608

die letzten 3 Felder frei:

C:\xxostat>xxostats.exe "xoxoox___"
x:0, o:1, draw:1
x|o|x
o|o|x
x|_|_

x:1, o:0, draw:1
x|o|x
o|o|x
_|x|_

x:1, o:0, draw:0
x|o|x
o|o|x
_|_|x

gesamt:
x:2, o:1, draw:2
erster Zug:


C:\xxostat>xxostats.exe "_________"
x:14652, o:7896, draw:5184
x|_|_
_|_|_
_|_|_

x:14232, o:10176, draw:5184
_|x|_
_|_|_
_|_|_

x:14652, o:7896, draw:5184
_|_|x
_|_|_
_|_|_

x:14232, o:10176, draw:5184
_|_|_
x|_|_
_|_|_

x:15648, o:5616, draw:4608
_|_|_
_|x|_
_|_|_

x:14232, o:10176, draw:5184
_|_|_
_|_|x
_|_|_

x:14652, o:7896, draw:5184
_|_|_
_|_|_
x|_|_

x:14232, o:10176, draw:5184
_|_|_
_|_|_
_|x|_

x:14652, o:7896, draw:5184
_|_|_
_|_|_
_|_|x

gesamt:
x:131184, o:77904, draw:46080


Nutzung:
entweder wie in Beispielen in der Konsole:
xxostats.exe "___FELD___" (Feld wie in der Aufgabe vorgegeben)
oder wer das Script selber ausführen möchte (und SWI Prolog (http://www.swi-prolog.org/download/stable) installiert hat):
C:\xxostat>c:\programme\pl\bin\plcon.exe -s xxostats.pl "____X____"
(-s steht für Source) und anschließend in die Prologconsole

cmd.eingeben (. =Punkt am Ende der Anweisung gehört dazu ;) )
oder
C:\xxostat>c:\programme\pl\bin\plcon.exe -g cmd -s xxostats.pl "____X____"
(-g cmd steht für autmatische ausführung des Prädikats "cmd" nach dem Laden des Scripts).

Source (SWI Prolog):


:-use_module(library(lists)).

cmd:- current_prolog_flag(argv,Args),
last(Args,Input),
convert(Input,Board),
whoami(Board,Player),
get_stats(Player,Board,Stats),
pretty_stats(Stats,(x:0,o:0,draw:0)),
halt.

%konvertiert Argument zur Atomliste (=>bequemeres Arbeiten)
convert(Atom,List):- downcase_atom(Atom,Downcase),
atom_chars(Downcase,List).

get_stats(Player,Board,Stats):- findall((Move,Stat),(
move(Player,Board,Move),
stats(Player,Move,Stat)
),Stats).

stats(Player,Board,[Player]):- winner(Board,Player),!.
stats(_,Board,[draw]):- draw(Board),!.
stats(Player,Board,Stats):- next_player(Player,Next),
findall(Stat,(
move(Next,Board,Move),
stats(Next,Move,Stat)
),Stats).

%prettyprint Board
pretty_print([]).
pretty_print([X,Y,Z|T]):- writeln(X|Y|Z),pretty_print(T),!.

pretty_stats([],(x:X,o:O,draw:D)):- writeln('gesamt:'),
Xs is X,Os is O,Ds is D,
writeln((x:Xs,o:Os,draw:Ds)),nl,!.

pretty_stats([(Board,Stats)|T],(x:Xs,o:Os,draw:Ds)):-
flatten(Stats,Flatlist),
count(x,Flatlist,X),
count(o,Flatlist,O),
count(draw,Flatlist,D),
writeln((x:X,o:O,draw:D)),
pretty_print(Board),!,nl,
pretty_stats(T,(x:X+Xs,o:O+Os,draw:D+Ds)),!.


%Spielzug
move(Player,['_'|Board],[Player|Board]).
move(Player,[Square|Board],[Square|NewBoard]):- move(Player,Board,NewBoard).

next_player(x,o).
next_player(o,x).

winner([Z,Z,Z|_],Z). %Horizontale Reihe
winner([_,_,_, Z,Z,Z|_],Z).
winner([_,_,_, _,_,_, Z,Z,Z],Z).

winner([Z,_,_, Z,_,_, Z,_,_],Z). %Vertikale Reihe
winner([_,Z,_, _,Z,_, _,Z,_],Z).
winner([_,_,Z, _,_,Z, _,_,Z],Z).

winner([_,_,Z, _,Z,_, Z,_,_],Z). %Diagonal
winner([Z,_,_, _,Z,_, _,_,Z],Z).

draw(Board):- \+memberchk('_',Board). %unentschieden: alle Felder besetzt

whoami(Board,o):- count(x,Board,Xs), %stellt fest, wer am Zug ist
count(o,Board,Os),
Xs>Os,!.
whoami(_,x).

count(Element,List,Count):- intersection(List,[Element],Elements),
length(Elements,Count).



oder
NoPaste - EBFE @ 19.04.10 2:40:45 [prolog] (http://www.nopaste.pl/p7o) (war der erste Googletreffer für NoPaste mit Prolog Syntaxhighlighting)
Compilierte Binary:
http://ebfe.de.vu/diverses/xxostat.zip

PS: es braucht bei einem leeren Feld ein paar Sekunden Zeit, bis die Statistik fertig ist (es ist halt unoptimiertes Prolog und kein C - dafür dürften die C-ler bei der Entwicklungszeit so richtig vor Neid erblassen :D. Hier wurde im Bot die KI einfach durch einen "Statistikauszähler" ersetzt und ein PrettyPrinter für die hübsche Ausgabe der Spielzüge/Statistik hinzugefügt.)

krypt0n
19.04.2010, 08:03
Kann Brainfuck bzw. Ook! überhaupt argv Parameter aufnehmen? Ich denke, die Sprachen können nur von der späteren Tastatureingabe lesen?

Jemand hat mich deswegen angeschrieben und ich habe ihm zugesichert, dass ich für esoterische Sprachen auch gerne Ausnahmen mache bei der Parameterübergabe und das Testscript auf ihre Möglichkeiten anpasse - natürlich nur aus Spass und Respekt, dass sich jemand wirklich so einen Aufwand macht.

AlterHacker
24.04.2010, 11:44
Ist es auch möglich, dass ich mein prog nur als src einreiche ? Ist C++ und sollte X-platform sein ;-)
Kann leider gerade schlecht .exe's erstellen^^

DoS
25.04.2010, 19:54
Ich gebe leider nicht mehr ab, weil ich mir die Zeit falsch eingeteilt habe. Am Ende kamen noch mehr Probleme als ich dachte. Ich werde mir jetzt allerdings keinen Schlaf rauben um weiter daran zu arbeiten. Dennoch würde ich sagen, dass ich einige Sachen gelernt habe und nicht zuletzt Zeiteinteilung bei einem Projekt ;)

Ich bedanke mich bei den beiden Organisatoren BlackBerry und krypt0n.

Allen anderen Wünsche ich noch viel Glück bei der Auswertung (ein bisschen mehr sogar sp1nny ;) ) :)

Mit freundlichen Grüßen
DoS

0x30
25.04.2010, 21:25
Scheisse :( Voll vergessen...

EBFE
25.04.2010, 21:33
*ihr habt doch alle bloß Angst vor meinem Bot* :)


db(board([x, o, x, o, x, '_', '_', x, o]), score((x:1, o:0, draw:1))).
db(board([x, o, x, o, x, '_', '_', '_', o]), score((x:3, o:0, draw:2))).
db(board([x, o, x, o, x, '_', '_', '_', '_']), score((x:14, o:0, draw:4))).
db(board([x, o, x, o, o, x, x, o, '_']), score((x:0, o:1, draw:0))).

Btw: nur mit sehr vielen Kommentaren+"präsentationsfertiger 2 Spalten Formatierung" sind es 174 Zeilen (davon 98 Zeilen eigentlicher Code)


File:f:/xxo/source/db_interface.pl
Lines:31
Code:14

File:f:/xxo/source/ki.pl
Lines:98
Code:54

File:f:/xxo/source/rules.pl
Lines:20
Code:12

File:f:/xxo/source/xxo.pl
Lines:25
Code:18

files :4
total lines:174
total code :98

krypt0n
25.04.2010, 23:39
So Contest ist geschlossen, ich werde das ganze wohl wenn ich gerade Zeit und Lust habe morgen auswerten. Teilgenommen haben übrigens:
AlterHacker
NSGR
wacked
EBFE
sp1nny
Variable X
c4pone

robo2 hatte scheinbar ein Problem, welches ich nicht rechtzeitig beantworten konnte. Du kannst mir dein Programm gerne noch zukommen lassen, in die offizielle Wertung wird es aber nicht aufgenommen. Tut mir Leid.

Vielen Dank für die rege Teilnahme, ich denke einem weiteren Contest wird nichts im Wege stehen.

Grz
krypt0n

Southpark
26.04.2010, 23:29
Wie sieht es nun aus?
Wann wird es ein Ergebniss geben?
Konnte leider nicht mitmachen aufgrund von Vergesslichkeit und mangelnder Zeit :(
Bin schon sehr gespannt.

lg Southii

Variable X
27.04.2010, 19:25
Bin auch sehr gespannt, wobei ich denke, dass die besten sich nichts untereinander tun, sondern immer draw spielen ^^

Finds interessanter die Denkweise der anderen zu sehen und deren Fehler, wenn welche drin sind ^^

AlterHacker
27.04.2010, 19:30
Jo ich schätze mal man wird nur verlieren wenn man iwie n (Logik?)Bug drinne hat ^^.
Ich bin auch mal gespannt, hoffentlich verkack ich nicht sonst wirds peinlich xD

sp1nny
27.04.2010, 19:33
Jup, wird wohl auf Draws hinauslaufen. Unterschiede wirds nur code-technisch geben. Hoffe ich verkacke auch nicht :D.

Btw: Krypt0n beeil dich ma ;)

Variable X
27.04.2010, 19:41
Ja so verkacken wär schon peinlich xD

Aber ich glaub bei mir könnts durchaus möglich sein, da ich viele Züge einfach durch überlegen eingesetzt habe und so glaub alle Möglichkeiten verarbeitet habe, aber wenn ich halt eine vergessen habe, dann is doof xD

c4pone
27.04.2010, 21:06
macht euch nicht zu viele Hoffnungen ich gewinn sowieso :D ,spaß bin echt gespannt wie ihr an die ganze Sache programmiertechnisch rangegangen seid :)

Variable X
27.04.2010, 21:14
Hmm ich hatte zwar noch ne schöne Idee, wie man auf jeden gewinnt, aber die wär nicht ganz legal gewesen xD (also das Programm hätte nicht wirklich gespielt, sondern dadurch gewonnen, dass das andere Programm keinen Zug ausführen kann xD)

sp1nny
27.04.2010, 21:21
Was mir auch noch eingefallen ist: Wenn die "Vergleichtools" keine Überprüfungen machen ob die Steine noch an der gleichen Stelle sind könnte man sehr leicht cheaten:

X O _ -> X O X
_ O _ -> _ O _
X X _ -> X O _

z.B.

Variable X
27.04.2010, 21:40
Also ich glaub wenn ich mich recht erinnere hab ich das mal ausprobiert, als ich das Vergleichtool mal getestet hatte und es wurde bemerkt ^^

reddragon1212
27.04.2010, 22:13
werden eigentlich auch die source-codes veröffentlicht? bin auf jedenfall an c++ interessiert :)

AlterHacker
28.04.2010, 16:25
Ich weiß nicht ob ich wirklich will dass mein schlamp-code veröffentlicht wird ;-)


Hmm ich hatte zwar noch ne schöne Idee, wie man auf jeden gewinnt, aber die wär nicht ganz legal gewesen xD (also das Programm hätte nicht wirklich gespielt, sondern dadurch gewonnen, dass das andere Programm keinen Zug ausführen kann xD)Das klingt interessant, erklär mal =)

Variable X
28.04.2010, 17:27
Naja du guckst einfach, welche Programme alles im Ordner sind, und verschiebst einfach mal ein paar Dateien in ein anderes Verzeichnis, für 5 sek. oder so und dann halt wieder zurück ^^

Dadurch würde das Gegner Programm beim Aufruf nicht antworten und das würde als Sieg für mein Programm gelten xD

Naja is aber nur ne Überlegung im Ansatz, wie man es umgesetzt hätte bleibt einem ja überlassen.

Aber da wir ja fair sein wollen, glaub ich nicht, dass jemand sowas gemacht hat xD

AlterHacker
28.04.2010, 17:31
Naja du guckst einfach, welche Programme alles im Ordner sind, und verschiebst einfach mal ein paar Dateien in ein anderes Verzeichnis, für 5 sek. oder so und dann halt wieder zurück ^^

Dadurch würde das Gegner Programm beim Aufruf nicht antworten und das würde als Sieg für mein Programm gelten xD

Naja is aber nur ne Überlegung im Ansatz, wie man es umgesetzt hätte bleibt einem ja überlassen.

Aber da wir ja fair sein wollen, glaub ich nicht, dass jemand sowas gemacht hat xD
Hehe das wäre echt asi xD
einfach mal in den *.exe's nach "_" "X" & "O" suchen und etwas spaß haben xD

0x30
28.04.2010, 18:06
Das ist dann aber kein Cheaten mehr Variable X

wacked
29.04.2010, 19:20
Dabei sein ist alles.

Wenn ich ein draw mache bin ich zufrieden.


if(Not2StonesInARow)
SetRandStone();

EBFE
29.04.2010, 19:48
http://ebfe.de.vu/diverses/xxo/highlighted_html_source/
http://ebfe.de.vu/diverses/xxo/highlighted_html_source/readme.html ;)

Variable X
29.04.2010, 19:50
wacked (http://free-hack.com/members/wacked.html)
wie genial xD
da hast du es dir echt einfach gemacht xD

wacked
30.04.2010, 15:21
einfach!=gut.
naja mal gucken was draus wird

DoS
01.05.2010, 11:42
Nicht viel, da du gegen Zwicken nichts damit ausrichtest ;)

Gruß -DoS

Variable X
01.05.2010, 20:46
ich will endlich Resultate :(

spann uns nicht so auf die Folter xD

wacked
06.05.2010, 18:46
N-N-N-Necrobump

NSGR
06.05.2010, 19:57
Naja nicht ganz ein Necrobump aber stimmt schon .
So langsam werde ich auch ungeduldig :P
Wenigstens Zwischenergebnisse? :>
MfG

AlterHacker
06.05.2010, 20:14
WORD!

Jetzt rück mal was raus hier.

Invincible
07.05.2010, 14:07
mai, mai

Variable X
13.05.2010, 17:16
Also so langsam ist es echt dreist, dass nichts kommt...

Wenn man sowas veranstaltet, dann sollte man das doch auch mal auswerten :(

Wir warten ja schließlich schon lang genug!!!

sp1nny
13.05.2010, 17:23
Echt ma bl0b! Du fauler Sack! :D

Stimmt aber schon was Variable X sagt, wäre nice wenn du es noch auswerten könntest und evtl. die Sources releasen könntest. Mich würde es interessieren wie die anderen Teilnehmer vorgegangen sind.

NSGR
13.05.2010, 20:57
Ich finde es nicht dreist das so etwas solange dauert , aber wenn man vorher noch sag ,dass es nur ein paar Tage dauert
(

So Contest ist geschlossen, ich werde das ganze wohl wenn ich gerade Zeit und Lust habe morgen auswerten.
)
,dann hat sich krypt0n ein wenig verschätzt oder ist faul (nicht böse gemeint) . Hätte man von Anfang an gewusst es dauert 2 Monate (als Beispiel) ,
dann wäre es ja ok gewesen ! Ich fände es nur fair , wenn wir in Kürze ein Statement bekommen wie lange es dauert.
MfG

c4pone
19.05.2010, 20:35
kommt hier nochmal was oder wars das jetzt ?
http://img339.imageshack.us/img339/7012/1273608343275.png (http://img339.imageshack.us/i/1273608343275.png/)
(http://imageshack.us)

AlterHacker
21.05.2010, 05:33
<ironie>
Er hat bestimmt nur mit nem Freund gewettet, wer die bessere XXO-KI codet und hat sich jetzt unsere src's geklaut =P.
</ironie>

Ich find langsam wirds echt dreist ^^. Komm schon gib dirn Ruck!

yuri
21.05.2010, 20:12
Mist, zu spät das Forum wiedergefunden sonst hätte ich auch mitgemacht :S

AlterHacker
09.06.2010, 05:35
Hört man langsam mochmal was von dir?
Also zumindest ein "ja keine Zeit dauert noch was" o. Ä. wäre nett.

MfG

Southpark
09.06.2010, 06:32
Im Irc meinte er letzens er macht es gerade was glaub nur ne Ausrede war :D
Denke es dauert noch etwas...

Stammi
04.07.2010, 16:57
Ich finde es mittlerweile schon echt traurig.

Hier haben sich viele Mühe gegeben, ein Programm zu programmieren und pünktlich abzugeben und nun bekommt man keine Rückmeldung.
Okay, es mag sein, dass krypt0n derzeit sehr wenig Zeit hat. Das respektiere ich natürlich auch, aber dennoch wäre ein kleines Statement von krypt0n nicht ganz unangemessen.
Möglich wäre natürlich auch, dass krypt0n etwas zugestoßen ist (man sollte alles in Erwägung ziehen) und für längere Zeit im Krankenhaus liegen muss. Dann kann er [wenn er kein Internet hat] natürlich nicht so schnell Antworten.
Den letzteren Fall kann man aber ausschließen, da er zuletzt Heute um 00:13 online war.

Meine persönliche Meinung ist: Wenn man keine Lust hat, so etwas auszuwerten, oder man weiß, dass man wenig Zeit hat, dann sollte man so einen Contest erst gar nicht starten.

Über ein Statement würde ich mich freuen,
~ Stammi.

hackerking
04.07.2010, 17:31
Lol, jeder Wettbewerb läuft doch so ab..
Ich habe mir (vor einem Jahr glaube ich) soviel Mühe mit meinem YouTube Loader + Konverter und meiner FFMpeg Bibliothek gemacht, und habe auch keine Rückmeldung gemacht..

Stammi
04.07.2010, 17:43
Lol
Lustig finde ich das nicht.


jeder Wettbewerb läuft doch so ab..
Dann wäre ich mal interessiert, womit du "jeder" definierst. Gut, aufwendige Contests brauchen seine Zeit. Aber dieser Contest ist nicht "super schwer" und aufwendig zum auswerten. Außerdem hatte krypt0n schon in vorherigen Posts erwähnt, dass er es in naher Zukunft auswerten möchte.


Ich habe mir (vor einem Jahr glaube ich) soviel Mühe mit meinem YouTube Loader + Konverter und meiner FFMpeg Bibliothek gemacht, und habe auch keine Rückmeldung gemacht..
Das tut mir sehr Leid für dich, dass du selber keine Rückmeldung "gemacht" hast.

Stammi
24.07.2010, 08:58
So langsam finde ich, geht es zum traurigen schon ins peinliche über.
Die letzte Aktivität von krypt0n war Gestern (23.07.2010) um 17:17 und er bekommt es noch nicht einmal zustande, ein kleines Feedback zu geben, was denn nun los ist?

Nun, ich würde mich jetzt nur wiederholen, wenn ich nochmal sagen würde, dass das Verhalten für mein Empfinden total inakzeptabel ist.

Ich kann nur so sagen: Bin ich froh, dass ich doch nicht bei diesem Contest mitgemacht habe.

~ Stammi.

wacked
04.09.2010, 19:34
http://free-hack.com/ansi-c-c-c/63856-tic-tac-toe-array-als-funktionsparamterer.html
gagaga
meldet sich einer freiwillig, anstelle von krypt0n, die Auswertung zu machen?

AlterHacker
04.09.2010, 19:58
http://img163.imageshack.us/img163/6480/pedobearsurprised.jpg

Was hat das mit nem TicTacToe-Bot zu tun wacked?
Absolut gar nüchtss (:

Stammi
20.09.2010, 17:25
Soll ich dazu noch etwas schreiben?
-> Nein.

Ich erspare mir nun einfach mein "philosophisches Geschwafel", denn leider wird es eh nichts nützen.
Ich bin endültig raus aus diesem Thread, obwohl ich es ziemlich schade finde.

Meine letzten Worte: krypt0n aka bl0b, du bist ein arrogantes Borstenvieh. ["Borstenvieh" wird doch nicht als Beleidigung angesehen, hoffe ich.]

ton1
02.12.2010, 16:27
ich war leider seit dem Start des Wettbewerbs nicht da, muss aber sagen, dass die Idee an sich absolut bescheuert ist, weil Tic Tac Toe ein Spiel ist, dass bei ordentlicher Programmierung grundsätzlich Unentschieden spielen wird. Deshalb wäre eine Auswertung auch unnötig.

Getti
02.12.2010, 16:55
Eine Auswertung wäre in sofern sinnvoll da es hier wohl nur eine Hand voll User gibt die so was überhaupt zustande bringen würden. Und man sich im Nachhinein austuaschen könnte er es wie gemacht (bzw. probiert) hat.
Schade nur das es nie zur Auswertung gekommen ist :-/

Rifler
07.12.2010, 08:01
hm, hab den Thread erst jetzt entdeckt. Find die Idee eigentlich auch schlecht, jeder weiß, dass TicTacToe mit ein bisschen nachdenken immer unentschieden ausgeht (In einem alten C++ Buch von mir ist sogar schon der fertige Code, der ist kaum länger als 50 Zeilen), und mit google search findet man auch den Algorithmus.

Jemand Bock auf noch einen Coding Contest und dafür mit ein bisschen komplizierteren Aufgaben? Wenn ja, dann überleg ich mir was ;)

blackberry
07.12.2010, 08:05
Dafür solltest du wohl eher einen neuen Thread aufmachen, aber wenn du Lust hast sowas zu organisieren, wird das natürlich auch von meiner Seite her unterstützt.