2017-09-06 3 views
0


Ich programmiere derzeit eine AI für das Spiel Hex. Die Karte wird durch ein Array der Länge 121 dargestellt. Während der Simulationsphase der Monte-Carlo-Baumsuche extrahiere ich die möglichen Züge.

Ich Schleife nur über das Array und extrahiere den Index, wo ein Wert 0 gefunden wurde. (Mögliche Werte sind 1, -1,0)Extrahieren 0 Werte aus Array

std::vector<unsigned char>moveListe; 
moveListe.reserve(121 - board->moveCount); 
for (unsigned char i = 0; i<121; i++) { 
    if (board->board[i] != EMPTY) { 
     continue; 
    } 
    moveListe.push_back(i); 

} 

Gibt es eine Möglichkeit, dies zu beschleunigen?

+1

Haben Sie eine Frage? –

+0

@ manni66: Sry, ich hatte es eilig. Ich habe meinen obigen Text bearbeitet – CheckersGuy

+1

Warum müssen Sie es beschleunigen? Wenn Sie Probleme mit Ihrem Code haben, brauchen Sie wahrscheinlich viel mehr Informationen darüber, warum dieser Code Ihren Anforderungen nicht entspricht und wie schnell Sie ihn benötigen. – Tas

Antwort

0

Es gibt keine Lösung, um alle Positionen von Nullwerten aus dem STL-Vektor oder einem einfachen Array der Länge n in der Zeit kleiner als O (n) zu extrahieren. Dieser Teil Ihres Algorithmus sollte effizient sein.