/* * Main.java * java program model for www.programming-challenges.com */ import java.io.*; import java.util.*; class minesweeper implements Runnable{ static String ReadLn(int maxLength){ // utility function to read from stdin, // Provided by Programming-challenges, edit for style only byte line[] = new byte [maxLength]; int length = 0; int input = -1; try{ while (length < maxLength){//Read untill maxlength input = System.in.read(); if ((input < 0) || (input == '\n')) break; //or untill end of line ninput line [length++] += input; } if ((input < 0) && (length == 0)) return null; // eof return new String(line, 0, length); }catch (IOException e){ return null; } } public static void main(String args[]) // entry point from OS { minesweeper myWork = new minesweeper(); // Construct the bootloader myWork.run(); // execute } public void run() { new Q102().run(); } } class Q102 implements Runnable{ public void sweepmines(int row, int col, int arr[][]) { char res; for(int i=1; i<=row; i++) { for(int j=1; j<=col; j++) { if (arr[i][j] == 1) { res = '*'; } else { res = Integer.toString(arr[i-1][j] + arr[i-1][j-1] + arr[i-1][j+1] + arr[i][j-1] + arr[i][j+1]+arr[i+1][j-1]+arr[i+1][j]+arr[i+1][j+1]).charAt(0); } System.out.print(res); } System.out.println(); } } public void run(){ try { int num = 1; BufferedReader is = new BufferedReader(new InputStreamReader(System.in)); String inputLine; while ((inputLine = is.readLine( )) != null) { String a[] = inputLine.trim().split("\\s+"); int n = Integer.parseInt(a[0]); int m = Integer.parseInt(a[1]); int arr[][] = new int[n+2][m+2]; if ((n==0) && (m==0)) { break; } for(int i=0; i<n+2;i++) { for(int j=0; j<m+2;j++) { arr[i][j] = 0; } } for (int i =1; i <= n; i++) { String row = is.readLine(); row = row.trim(); for(int j=1;j<= m;j++) { if (row.charAt(j-1) == '*') arr[i][j] = 1; } } if (num == 1) System.out.println("Field #"+num++ + ":"); else System.out.println("\nField #"+num++ + ":"); sweepmines(n, m, arr); } is.close( ); } catch (Exception e) { System.out.println(e); } } }