DER WETTBEWERB IST BEENDET UND DIE GEWINNER STEHEN FEST. DIE BEKANNTGABE UND DIE LÖSUNGEN BEFINDEN SICH IN DIESEM THREAD.
So, Ostern will ich mal zum Anlass nehmen, einen kleinen Technik-Contest zu starten. Ich will keine großen Worte verschwenden, deshalb komme ich gleich zur Sache:
Worum geht es beim Technik-Contest?
Bei dem Technik-Contest geht es darum, innerhalb des Game Makers ohne die Zugabe von DLLs eine Problematik möglichst effektiv zu lösen. Das heißt kurzer, schneller und natürlich intelligenter Code. In erster Linie wird bewertet, in wievielen Zeilen das Problem gelöst wird. Jeder Befehl zählt dabei als eine Zeile. Kommentare, geschweifte Klammern oder Var-Statements werden dabei nicht gezählt. Schleifen werden unterschiedlich berücksichtigt. Ferner wird Augenmerk auf den Einsatz von zeitaufwendigen Funktionen und zuvielen Variablen gelegt.
Wie nehme ich teil?
Es gilt das (natürlich vollkommen selbstverfasste Script) im GML-Tag per PN an mich über das Forum zu schicken. Alles was vor Einsendeschluss eintrifft, wird gezählt.
Die Aufgaben allerdings, die ich stelle, dürften nur von denen gelöst werden können, die sich selber als "GML-Fortgeschritten" einschätzen. Moderatoren und andere Höhergestellte können auch teilnehmen, werden aber außerhalb der normalen User bewertet.
Was gibt es zu gewinnen?
In erster Linie Ruhm. Es gibt selten Gelegenheit, seine Codekünste so unter Beweis zu stellen, dass jeder es mitkriegt. Dies ist also eine prima Gelegenheit. Allerdings wäre es vielleicht eine Idee, Leuten mit besonderen Code-Künsten eine Art Sonder-Icon oder einen Sonder-Rang zu gewähren. Ob und wie wir das realisieren, wird noch entschieden. Mit einer guten Arbeit kann man sich ein solchen Abzeichen dann verdienen.
Was passiert, wenn ich gewinne?
Dann wird der Code veröffentlicht, mitsamt einer genauen Erläuterung, damit jeder ihn versteht. Je nachdem habe ich auch eine Musterlösung selber ausgearbeitet, die dann gegengehalten wird. Es kann natürlich passieren, dass jemand eine noch bessere Lösung findet. In dem Fall muss ich natürlich meine Schwäche eingestehen.
Die Aufgabe für dieses Mal lautet:
Es gilt ein Skript namens binary_check(value,pos) zu schreiben. Dieses Skript soll value, eine positive Dezimalzahl, auf eine Binärstelle pos untersuchen. Wenn pos den Wert 1 trägt, soll die Binärstelle ganz rechts überprüft werden, bei 2 die zweite von rechts, bei 4 die 3., bei 8 die 4. und so weiter. Wenn die entsprechende Binärstelle 0 ist, soll false wiedergegeben werden, bei einer 1 true.
Ein Beispiel:
binary_check(133,4)
133 wäre in Binär 10000101.
Bei 4, also der 3. Stelle von rechts, wäre das Ergebnis 1. Wäre argument1 (oben als pos angegeben) 8, dann wäre es 0.
Und nicht vergessen: Je weniger (echte) Code-Zeilen ihr benötigt, desto eher tragt ihr den Sieg davon!
Vorrichtungen, die eine korrekte Benutzung der Argumente gewährleisten (wie z.B. if isstring(value) then exit;), müssen NICHT implentiert werden.
Für diese Aufgabe existiert eine Musterlösung von mir.
Einsendeschluss ist der 23.4.06 um 20.00 Uhr. Einsendungen wie gesagt an mich per PN. Wer seine Lösung anderweitig vorher auf dem Forum veröffentlicht oder Tipps gibt, wird aufs Grausamste bestraft. Also Zurückhaltung bitte. ^^
edit:
Es wäre schön, wenn jeder, der daran teilnehmen will oder sogar schon etwas eineschickt hat, das in diesem Thread vermerkt, damit die anderen eine Idee davon haben, gegen wen sie so antreten. Wenn man seinen eigenen Code verbessert hat, darf man die verbesserte Variante natürlich einschicken. Sie wird dann statt der alten genommen.
So, Ostern will ich mal zum Anlass nehmen, einen kleinen Technik-Contest zu starten. Ich will keine großen Worte verschwenden, deshalb komme ich gleich zur Sache:
Worum geht es beim Technik-Contest?
Bei dem Technik-Contest geht es darum, innerhalb des Game Makers ohne die Zugabe von DLLs eine Problematik möglichst effektiv zu lösen. Das heißt kurzer, schneller und natürlich intelligenter Code. In erster Linie wird bewertet, in wievielen Zeilen das Problem gelöst wird. Jeder Befehl zählt dabei als eine Zeile. Kommentare, geschweifte Klammern oder Var-Statements werden dabei nicht gezählt. Schleifen werden unterschiedlich berücksichtigt. Ferner wird Augenmerk auf den Einsatz von zeitaufwendigen Funktionen und zuvielen Variablen gelegt.
Wie nehme ich teil?
Es gilt das (natürlich vollkommen selbstverfasste Script) im GML-Tag per PN an mich über das Forum zu schicken. Alles was vor Einsendeschluss eintrifft, wird gezählt.
Die Aufgaben allerdings, die ich stelle, dürften nur von denen gelöst werden können, die sich selber als "GML-Fortgeschritten" einschätzen. Moderatoren und andere Höhergestellte können auch teilnehmen, werden aber außerhalb der normalen User bewertet.
Was gibt es zu gewinnen?
In erster Linie Ruhm. Es gibt selten Gelegenheit, seine Codekünste so unter Beweis zu stellen, dass jeder es mitkriegt. Dies ist also eine prima Gelegenheit. Allerdings wäre es vielleicht eine Idee, Leuten mit besonderen Code-Künsten eine Art Sonder-Icon oder einen Sonder-Rang zu gewähren. Ob und wie wir das realisieren, wird noch entschieden. Mit einer guten Arbeit kann man sich ein solchen Abzeichen dann verdienen.
Was passiert, wenn ich gewinne?
Dann wird der Code veröffentlicht, mitsamt einer genauen Erläuterung, damit jeder ihn versteht. Je nachdem habe ich auch eine Musterlösung selber ausgearbeitet, die dann gegengehalten wird. Es kann natürlich passieren, dass jemand eine noch bessere Lösung findet. In dem Fall muss ich natürlich meine Schwäche eingestehen.
Die Aufgabe für dieses Mal lautet:
Es gilt ein Skript namens binary_check(value,pos) zu schreiben. Dieses Skript soll value, eine positive Dezimalzahl, auf eine Binärstelle pos untersuchen. Wenn pos den Wert 1 trägt, soll die Binärstelle ganz rechts überprüft werden, bei 2 die zweite von rechts, bei 4 die 3., bei 8 die 4. und so weiter. Wenn die entsprechende Binärstelle 0 ist, soll false wiedergegeben werden, bei einer 1 true.
Ein Beispiel:
binary_check(133,4)
133 wäre in Binär 10000101.
Bei 4, also der 3. Stelle von rechts, wäre das Ergebnis 1. Wäre argument1 (oben als pos angegeben) 8, dann wäre es 0.
Und nicht vergessen: Je weniger (echte) Code-Zeilen ihr benötigt, desto eher tragt ihr den Sieg davon!
Vorrichtungen, die eine korrekte Benutzung der Argumente gewährleisten (wie z.B. if isstring(value) then exit;), müssen NICHT implentiert werden.
Für diese Aufgabe existiert eine Musterlösung von mir.
Einsendeschluss ist der 23.4.06 um 20.00 Uhr. Einsendungen wie gesagt an mich per PN. Wer seine Lösung anderweitig vorher auf dem Forum veröffentlicht oder Tipps gibt, wird aufs Grausamste bestraft. Also Zurückhaltung bitte. ^^
edit:
Es wäre schön, wenn jeder, der daran teilnehmen will oder sogar schon etwas eineschickt hat, das in diesem Thread vermerkt, damit die anderen eine Idee davon haben, gegen wen sie so antreten. Wenn man seinen eigenen Code verbessert hat, darf man die verbesserte Variante natürlich einschicken. Sie wird dann statt der alten genommen.