domingo, 29 de julio de 2012

10189 - Minesweeper, uva

#include<iostream>
#include<cstdio>
#include<vector>
#include<cstring>
#define db(a) cout << #a << " = " << a << endl
#define db2(a, b) cout << #a << " = " << a << " " << #b << " = " << b << endl
using namespace std;
int n, m;
int dx[] = {-1, -1, -1,  0, 0, 1, 1, 1};
int dy[] = {-1,  0,  1, -1, 1, -1, 0, 1};
vector<string> grid;
char tonum(int x, int y) {
 int cont = 0;
 for (int i = 0; i < 8; i++)
  if (x + dx[i] >= 0 && x + dx[i] < n && y + dy[i] >= 0 && y + dy[i] < m)
   if (grid[x + dx[i]][y + dy[i]] == '*') cont++;
 return cont + '0';
}
int main() {
 #ifdef dennisbot
  freopen("in.in", "r", stdin);
  freopen("ou.out", "w", stdout);
 #endif
 string linea;
 int field = 1;
 cin >> n >> m;
 while (1) {
  for (int i = 0; i < n; i++) {
   cin >> linea;
   grid.push_back(linea);
  }
  for (int i = 0; i < n; i++) 
   for (int j = 0; j < m; j++) 
    if (grid[i][j] != '*')
     grid[i][j] = tonum(i, j);
  
  cout << "Field #" << field++ << ":"<< endl;
  for (int i = 0; i < n; i++)
   cout << grid[i] << endl;
  cin >> n >> m;
  if (n == 0 && m == 0) break;
  cout << endl;
  grid.clear();
 }
 return 0;
}

No hay comentarios:

Publicar un comentario