30 Euro - Wettbewerb

Szene Wettbewerbe

Achtung: Dieser Wettbewerb ist bereits abgelaufen.

Dirk Knoop veranstaltete dieser Tage einen Miniwettbewerb. Er brauchte für ein Problem die schnellste Lösung in Form einer Funktion.

~Aufgabe~

In einem 20x24 Dim-Feld, welches mit Zahlen der Menge M = {0,1,2,3,4} gefüllt ist, soll erkannt werden, ob in senkrechter, waagerechter oder diagonaler Reihenfolge mindestens drei mal die gleiche Zahl steht. Ausgenommen hierbei wird die 0. Sollte dies der Fall sein, muss die Funktion in in alle Felder, die Teil einer solchen Reihe sind, eine 9 reinschreiben.

Beispiel:
Zitat:

111111111111111111111111
111111111111111111111111
121212121212121212120000


Wird zu:
Zitat:
999999999999999999999999
999999999999999999999999
929292929292929292920000


~Rahmenbedingung~

Dirk hat den Code zur Messung der Zeit mitgegeben:
Code: [AUSKLAPPEN]
Graphics 800,600,0,2
SetBuffer BackBuffer()
SeedRnd 5
Dim felder (20,24)
For x=1 To 20
   For y=1 To 24
      felder(x,y)=Rand(0,4)
      Text x*10,y*12,felder(x,y)
   Next
Next
startzeit=MilliSecs()
For durchlauf=0 To 500000

;Hier kommt dann die Routine hin.

Next
endzeit=MilliSecs()
For x=1 To 20
   For y=1 To 24
      If felder(x,y)=9 Then Color 255,0,0
      Text x*10+220,y*12,felder(x,y)
      Color 255,255,255
   Next
Next
Text 10,380,endzeit-startzeit
Flip
Waitkey


Es ging wie geschrieben um die schnellste Funktion!

Sieger des Wettbewerbs war übrigens Rallimen.

  • Zuletzt aktualisiert am 5.7.2006 von D2006.