3D-Array ([3][3][3]) van bytes, 0 = Leeg, 1 = X, 2 = O
Je moet dan iteren over alle vakken met 3 geneste for-loops (X, Y, Z) en dan in de binnenste loop een aantal keer de functie 'checkline (X, Y, Z, RX, RY, RZ)' aanroepen met alle combinaties van 1, 0, -1 (dus weer 3 geneste for-loops) voor RX, RY en RZ, behalve 0, 0, 0. RX, RY en RZ zijn dan dus richtingsvectoren. Binnen checkline moet je dan boundary-checking doen en een lijn proberen te volgen met de richting RX, RY, RZ. voorbeeld checkline (0, 0, 0, 1, 1, 1) Kijkt dus vanaf 0, 0, 0 diagonaal richting de andere hoek van de kubus.
Even 4 voorbeeldscenario's.
Staat er op 0,0,0 een 0 ? => return 0.
Staat er op 0,0,0 een 1? Staat er op 1,1,1 een 1 ? Staat er op 2,2,2 een 1? => return 1
Staat er op 0,0,0 een 2? Staat er op 1,1,1 een 2? Staat er op 2,2,2 een 2? => return 2
Staat er op 0,0,0 een 1? Staat er op 1,1,1 een 1 ? Staat er op 2,2,2 een 2? => return 0
Het meest elegant is een recursieve oplossing. Veel succes ermee.
Hey ... maar dan heb je ook wat!