CSharp:Test Selezione Personale Dama
From Aino Wiki
Traccia
Il gioco segue le regole della DAMA, abbiamo l'unica pedina simboleggiata dalla 'O' dobbiamo "mangiare" quelle con la 'X'. Lo scopo è restituire il numero di pedine 'X' mangiate. Il metodo padre è una funzione chiamata "solution". La scacchiera è una matrice di dimensione variabile simboleggiata da un vettore unidimensionale di stringhe, le celle virtuali libere sono simboleggiate dal carattere '.'.
Soluzione
using System; public class Program { public static bool CanEat(string[] B, int iO, int jO, out int iE, out int jE) { bool yes = false; int maxColumns = B[0].Length; iE = 0; jE = 0; if (B[iO - 1][jO - 1] == 'X' && (iO - 2) >= 0 && (jO - 2) >= 0 && B[iO - 2][jO - 2] == '.' ) { iE = iO - 2; jE = jO - 2; yes = true; } else { Console.WriteLine(string.Format("non in ({0}, {1})", iO - 1, jO - 1)); if (B[iO - 1][jO + 1] == 'X' && (iO + 2) >= 0 && (jO + 2) <= maxColumns && B[iO - 2][jO + 2] == '.') { iE = iO - 2; jE = jO + 2; yes = true; } } if (yes) { Console.WriteLine(string.Format("Può mangiare in ({0}, {1})", iE, jE)); } return yes; } public static int solution(string[] B) { int outResult = 0; int maxRows = B.Length; int maxColumns = 0; int iO = -1; int jO = -1; int iE = -1; int jE = -1; if (maxRows > 0) { maxColumns = B[0].Length; } Console.WriteLine(string.Format("Board {0} x {1}", maxRows, maxColumns)); for (int i = (maxRows -1); i > 0; i--) { // Console.WriteLine(string.Format("Searcing in row {0}", i)); // Posizione di O for (int j = 0; j < maxColumns; j++) { if (B[i][j] == 'O') { Console.WriteLine(string.Format("Found in ({0}, {1})", i, j)); iO = i; jO = j; break; } } // Trovato O ? if (iO > -1 && jO > -1 && (iO - 1) > 0 && (jO + 2) <= maxColumns) { // Conta se e quanto può mangiare while (CanEat(B, iO, jO, out iE, out jE)) { // Si sposta nella posizione oltre la pedina in cui ha mangiato iO = iE; jO = jE; outResult++; } } //Console.WriteLine(string.Format("{0}", maxT_WinterValue)); } //Console.WriteLine(string.Format("Fine: {0}", outResult)); return outResult; } public static void Main() { string[] vectorOfBoardRows = { "..X...", "......", "....X.", ".X....", "..X.X.", "...O.." }; int outResult = solution(vectorOfBoardRows); Console.WriteLine(string.Format("RISULTATO: {0}", outResult)); } }
Mappa e Link
C# | Test per prove di Selezione professionale
Parole chiave: