Dipende molto da come hai implementato la tua struttura dati della scacchiera... immagino che tu abbia utilizzato una matrice (array)...
In questo caso, senza sapere nulla di nulla, l'unico suggerimento che ti posso dare è che le diagonali di una matrice godono di alcune proprietà interessanti:
Data una matrice di questo tipo (le coordinate sono sempre date come [RIGA,COLONNA]):
codice:
0 1 2 3 4 5 6 7
+---+---+---+---+---+---+---+---+
0 | | | | | | | | |
+---+---+---+---+---+---+---+---+
1 | | | | | | | | |
+---+---+---+---+---+---+---+---+
2 | | | | | | | | |
+---+---+---+---+---+---+---+---+
3 | | | | | | | | |
+---+---+---+---+---+---+---+---+
4 | | | | | | | | |
+---+---+---+---+---+---+---+---+
5 | | | | | | | | |
+---+---+---+---+---+---+---+---+
6 | | | | | | | | |
+---+---+---+---+---+---+---+---+
7 | | | | | | | | |
+---+---+---+---+---+---+---+---+
1) Le diagonali principali (quelle da ALTO-SINISTRA a BASSO-DESTRA, ad esempio, da [0,2] a [5,7]) possono essere identificate da una costante K data dalla differenza fra indice di colonna e indice di riga (nell'esempio, la costante vale 2)
2) Le diagonali secondarie (quelle al contrario della diagonali principali, da BASSO-SINISTRA a ALTO-DESTRA, esempio da [6,0] a [0,6]) possono essere identificate da una costante K data dalla somma fra indice di riga e indice di colonna (nell'esempio, la costante è 6).
Utilizzando queste due proprietà puoi sapere in tempo O(n) se il RE è su una diagonale dell'alfiere.
Ciao.