(UVA) 10189 - Minesweeper - Solução
import java.io.*;
import java.util.*;
class Main {
public static void main(String[] args) throws NumberFormatException, IOException {
Main processando = new Main();
processando.takeInput();
System.exit(0);
}
char[][] leMapa(BufferedReader br, int linha, int coluna) throws NumberFormatException, IOException {
int a;
int b;
char[][] matrizChar = new char[linha][coluna];
char caracter = 'a';
String string1;
for (a = 0; a < linha; a++) {
string1 = br.readLine();
for (b = 0; b < coluna; b++) {
caracter = string1.charAt(b);
matrizChar[a][b] = caracter;
}
}
return matrizChar;
}
void imprimeResultado(int[][] matrizResposta, int linha, int coluna) {
int i;
int j;
for (i = 0; i < linha; i++) {
for (j = 0; j < coluna; j++) {
if (matrizResposta[i][j] == -1) {
System.out.print('*');
}
else {
System.out.print(matrizResposta[i][j]);
}
}
System.out.println();
}
}
int[][] processa(char[][] matriz, int linha, int coluna) {
int i;
int j;
int[][] matrizResposta = new int[linha][coluna];
int contador = 0;
for (i = 0; i < linha; i++) {
for (j = 0; j < coluna; j++) {
if (i != 0 && j != 0) {
if (matriz[i-1][j-1] == '*') {
contador++;
}
}
if (i != 0) {
if (matriz[i-1][j] == '*') {
contador++;
}
if (j != coluna-1) {
if (matriz[i-1][j+1] == '*') {
contador++;
}
}
}
if (j != 0) {
if (matriz[i][j-1] == '*') {
contador++;
}
if (i != linha-1) {
if (matriz[i+1][j-1] == '*') {
contador++;
}
}
}
if (j != coluna-1) {
if (matriz[i][j+1] == '*') {
contador++;
}
}
if (i != linha-1) {
if (matriz[i+1][j] == '*') {
contador++;
}
}
if (i != linha-1 && j != coluna-1) {
if (matriz[i+1][j+1] == '*') {
contador++;
}
}
if (matriz[i][j] != '*') {
matrizResposta[i][j] = contador;
}
else {
matrizResposta[i][j] = -1;
}
contador = 0;
}
}
return matrizResposta;
}
void takeInput() throws NumberFormatException, IOException {
String line = "";
StringTokenizer tokenizer = null;
int i = 0;
int j = 0;
char[][] matriz;
int[][] resposta;
int contador = 0;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
while ((line = br.readLine()) != null) {
tokenizer = new StringTokenizer(line);
i = Integer.parseInt(tokenizer.nextToken());
j = Integer.parseInt(tokenizer.nextToken());
if (i == 0 && j == 0) {
return;
}
matriz = leMapa(br, i, j);
resposta = processa(matriz, i, j);
contador++;
if (contador != 1)
System.out.println();
System.out.println("Field #" + contador + ":");
imprimeResultado(resposta, i, j);
}
return;
}
}
import java.util.*;
class Main {
public static void main(String[] args) throws NumberFormatException, IOException {
Main processando = new Main();
processando.takeInput();
System.exit(0);
}
char[][] leMapa(BufferedReader br, int linha, int coluna) throws NumberFormatException, IOException {
int a;
int b;
char[][] matrizChar = new char[linha][coluna];
char caracter = 'a';
String string1;
for (a = 0; a < linha; a++) {
string1 = br.readLine();
for (b = 0; b < coluna; b++) {
caracter = string1.charAt(b);
matrizChar[a][b] = caracter;
}
}
return matrizChar;
}
void imprimeResultado(int[][] matrizResposta, int linha, int coluna) {
int i;
int j;
for (i = 0; i < linha; i++) {
for (j = 0; j < coluna; j++) {
if (matrizResposta[i][j] == -1) {
System.out.print('*');
}
else {
System.out.print(matrizResposta[i][j]);
}
}
System.out.println();
}
}
int[][] processa(char[][] matriz, int linha, int coluna) {
int i;
int j;
int[][] matrizResposta = new int[linha][coluna];
int contador = 0;
for (i = 0; i < linha; i++) {
for (j = 0; j < coluna; j++) {
if (i != 0 && j != 0) {
if (matriz[i-1][j-1] == '*') {
contador++;
}
}
if (i != 0) {
if (matriz[i-1][j] == '*') {
contador++;
}
if (j != coluna-1) {
if (matriz[i-1][j+1] == '*') {
contador++;
}
}
}
if (j != 0) {
if (matriz[i][j-1] == '*') {
contador++;
}
if (i != linha-1) {
if (matriz[i+1][j-1] == '*') {
contador++;
}
}
}
if (j != coluna-1) {
if (matriz[i][j+1] == '*') {
contador++;
}
}
if (i != linha-1) {
if (matriz[i+1][j] == '*') {
contador++;
}
}
if (i != linha-1 && j != coluna-1) {
if (matriz[i+1][j+1] == '*') {
contador++;
}
}
if (matriz[i][j] != '*') {
matrizResposta[i][j] = contador;
}
else {
matrizResposta[i][j] = -1;
}
contador = 0;
}
}
return matrizResposta;
}
void takeInput() throws NumberFormatException, IOException {
String line = "";
StringTokenizer tokenizer = null;
int i = 0;
int j = 0;
char[][] matriz;
int[][] resposta;
int contador = 0;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
while ((line = br.readLine()) != null) {
tokenizer = new StringTokenizer(line);
i = Integer.parseInt(tokenizer.nextToken());
j = Integer.parseInt(tokenizer.nextToken());
if (i == 0 && j == 0) {
return;
}
matriz = leMapa(br, i, j);
resposta = processa(matriz, i, j);
contador++;
if (contador != 1)
System.out.println();
System.out.println("Field #" + contador + ":");
imprimeResultado(resposta, i, j);
}
return;
}
}
Comments
Post a Comment