- Code: Select all
/* DELETED */
Moderator: Board moderators
/* DELETED */
import java.io.*;
class Main
{
int[][] SweeperField;
void SetupSweeperField(int x, int y)
{
SweeperField = new int[x][y];
}
String Begin(String Input)
{
int Axis = Input.indexOf(" ");
byte x = Byte.parseByte(Input.substring(0, Axis));
byte y = Byte.parseByte(Input.substring(Axis + 1, Input.length()));
SetupSweeperField(x,y);
for (int i = 0; i < x; i++)
{
Input = readLn(255);
int LatestMine = Input.indexOf("*");
while (LatestMine != -1)
{
Increment(i, LatestMine);
LatestMine = Input.indexOf("*", LatestMine+1);
}
}
return ToString();
}
void Begin()
{
String Answer = "";
String Input = readLn(255);
int Counter = 1;
while (!Input.equals("0 0"))
{
Answer += "Field #" + Counter + ":\n" + Begin(Input) + "\n";
Input = readLn(255);
Counter++;
}
System.out.print(Answer.substring(0, Answer.length() - 2));
}
static void main(String[] args)
{
Main Sweeper = new Main();
Sweeper.Begin();
}
void Increment(int x, int y)
{
for (int i = -1; i <= 1; i++)
{
for (int j = -1; j <= 1; j++)
{
if ((((x+i) >= 0) && ((x+i) < SweeperField.length) && ((y+j) >= 0) && ((y+j) < SweeperField[0].length)))
{
SweeperField[x+i][y+j]++;
}
}
}
SweeperField[x][y] = -5;
}
String ToString()
{
String Answer = "";
for (int i = 0; i < SweeperField.length; i++)
{
for (int j = 0; j < SweeperField[0].length; j++)
{
if (SweeperField[i][j] < 0)
Answer += "*";
else
Answer += SweeperField[i][j];
}
Answer += "\n";
}
return Answer;
}
static String readLn (int maxLg)
{
byte lin[] = new byte [maxLg];
int lg = 0, car = -1;
String line = "";
try
{
while (lg < maxLg)
{
car = System.in.read();
if ((car < 0) || (car == '\n')) break;
lin [lg++] += car;
}
}
catch (IOException e)
{
return (null);
}
if ((car < 0) && (lg == 0))
return (null);
return (new String (lin, 0, lg));
}
}3 4
...*
**..
..*.
5 5
..*..
..*..
**...
.....
....*
3 6
***..*
......
..*...
0 0
Field #1:
222*
**32
23*1
Field #2:
02*20
24*20
**210
22111
0001*
Field #3:
***11*
243211
01*1002 2
..
.*
3 3
..*
**.
...
1 8
....**.*
10 7
.......
...*..*
*....**
......*
..*....
.......
.......
..*...*
*...*..
*.....*
0 0
Field #1:
11
1*
Field #2:
23*
**2
221
Field #3:
0001**2*
Field #4:
0011111
111*23*
*1112**
121113*
01*1011
0111000
0111011
12*212*
*312*32
*20112*#include <iostream>
#include <string>
using namespace std;
char mines[101][101];
int count(int red,int kol,int maxred, int maxkol)
{
int u=0;
if (red!=maxred)
{
if (mines[red+1][kol]=='*') u++;
}
if (red!=1)
{
if (mines[red-1][kol]=='*') u++;
}
if (kol!=maxkol)
{
if (mines[red][kol+1]=='*') u++;
}
if (kol!=1)
{
if (mines[red][kol-1]=='*') u++;
}
if (kol!=1&&red!=1)
{
if (mines[red-1][kol-1]=='*') u++;
}
if (kol!=maxkol&&red!=maxred)
{
if (mines[red+1][kol+1]=='*') u++;
}
if (kol!=1&&red!=maxred)
{
if (mines[red+1][kol-1]=='*') u++;
}
if (kol!=maxkol&&red!=1)
{
if (mines[red-1][kol+1]=='*') u++;
}
return u;
}
int main()
{
int n=0,m=0,q=0;
char nmines[101][101];
string s[100],s1="";
while(1)
{
cin >> n >> m;
if (n==0||m==0) return 0;
q++;
for (int i=1;i<=n;i++)
{
do
{
cin >> s[i];
}
while (s[i].length()!=m);
}
for (int i=1;i<=n;i++)
{
for (int j=0;j<s[i].length();j++)
{
s1=s[i];
mines[i][j+1]=s1[j];
}
}
cout << "Field #" << q << ":" << endl;
for (int i=1;i<=n;i++)
{
for (int j=1;j<=m;j++)
{
if (mines[i][j]!='*')
nmines[i][j]=count(i,j,n,m)+'0';
else
nmines[i][j]='*';
}
}
for (int i=1;i<=n;i++)
{
for (int j=1;j<=m;j++)
{
cout << nmines[i][j];
}
cout << endl;
}
cout << endl;
}
return 0;
}
string s[100],s1="";
for (int i=1;i<=n;i++)
{
do
{
cin >> s[i];
}
while (s[i].length()!=m);
}
#include <stdio.h>
int main(void)
{
int arr[150][150];
int i,j,mrow,mcol,cnt=0;
char c[200];
while(scanf("%d%d ",&mrow,&mcol)!=EOF) {
if(mrow==0 && mcol==0) break;
printf("Field #%d:\n",++cnt);
for(i=0 ; i<mrow ; i++) {
scanf("%s",c);
for(j=0 ; j<mcol ; j++) {
if(c[j]=='*') arr[i][j] = -100;
else arr[i][j] = 0;
}
}
for(i=0 ; i<mrow ; i++) {
for(j=0 ; j<mcol ; j++) {
if (arr[i][j] < 0) {
arr[i-1][j-1] ++; arr[i-1][j] ++; arr[i-1][j+1] ++;
arr[i][j-1] ++; arr[i][j] ++; arr[i][j+1] ++;
arr[i+1][j-1] ++; arr[i+1][j] ++; arr[i+1][j+1] ++;
}
}
}
for(i=0 ; i<mrow ; i++) {
for(j=0 ; j<mcol ; j++) {
if (arr[i][j] > -1) printf("%d",arr[i][j]);
else printf("*");
}
printf("\n");
}
printf("\n");
}
return 0;
}
#include<stdio.h>
#include<stdlib.h>
char a[102][102];
int n,m;
int check(int j,int i,int m){
int count=0;
if(a[j][i]=='*')
return 9;
else {
if(j!=0){
if(a[j-1][i-1]=='*' && i!=0)
count++;
if(a[j-1][i]=='*')
count++;
if(a[j-1][i+1]=='*')
count++;
}
if(a[j][i-1]=='*' && i!=0)
count++;
if(a[j][i+1]=='*')
count++;
if(j!=m){
if(a[j+1][i-1]=='*' && i!=0)
count++;
if(a[j+1][i]=='*')
count++;
if(a[j+1][i+1]=='*')
count++;
}
return count+'0';
}
}
int main(void){
int cnt=0;
int i,j;
while(1){
scanf("%d %d",&n,&m);
if(n==0 && m==0)
break;
cnt++;
for(j=0;j<n;j++){
for(i=0;i<m;i++){
a[j][i]='.';
}
}
for(j=0;j<n;j++){
for(i=0;i<m;i++){
scanf(" %c",&a[j][i]);
}
}
for(j=0;j<n;j++){
for(i=0;i<m;i++){
if(check(j,i,m)!=9)
a[j][i]=check(j,i,m);
}
}
if(cnt>1)printf("\n");
printf("Field #%d:\n",cnt);
for(j=0;j<n;j++){
for(i=0;i<m;i++)
printf("%c",a[j][i]);
printf("\n");
}
}
return 0;
}Users browsing this forum: No registered users and 0 guests