

Moderator: Board moderators
Code: Select all
/*
Name: Mine Sweeper
Number: 10279
Type : simulation
Process : ON
Author :Salman Zaman
Email : zamansalman@gmail.com
Date : 15/08/05 20:10
*/
#include<stdio.h>
#include<string.h>
//#include<conio.h>
int main(){
int t,n,i,j,k;
int mines[200][200];
int touch[200][200];
int output[200][200];
char input[100];
// freopen("10279.txt","r",stdin);
// printf("%d",'.');
gets(input);
sscanf(input,"%d",&t);
for(k=0;k<t;k++){
gets(input);
gets(input);
sscanf(input,"%d",&n);
for(i=0;i<=n;i++){
for(j=0;j<=n;j++){
mines[i][j]=0;
output[i][j]=0;
touch[i][j]=0;
}
}
for(i=1;i<=n;i++){
gets(input);
for(j=0;j<n;j++){
if(input[j]=='.'){
mines[i][j+1]=0;
}
else if(input[j]=='*'){
mines[i][j+1]=1;
}
}
}
for(i=1;i<=n;i++){
gets(input);
for(j=0;j<n;j++){
if(input[j]=='x'){
touch[i][j+1]=1;
}
else if(input[j]=='.'){
touch[i][j+1]=0;
}
}
}
for(i=1;i<=n;i++){
for(j=1;j<=n;j++){
// printf("%d ",touch[i][j]);
if(touch[i][j]){
if(i-1>=1 && j-1>=1){
output[i][j]+=mines[i-1][j-1];
}
if(i-1>=1) {
output[i][j]+=mines[i-1][j];
}
if(i-1>=1 && j+1<=n){
output[i][j]+=mines[i-1][j+1];
}
if(j-1>=1){
output[i][j]+=mines[i][j-1];
}
if(j+1<=n){
output[i][j]+=mines[i][j+1];
}
if(i+1<=n && j-1>=1){
output[i][j]+=mines[i+1][j-1];
}
if(i+1<=n){
output[i][j]+=mines[i+1][j];
}
if(i+1<=n && j+1<=n){
output[i][j]+=mines[i+1][j+1];
}
// output[i][j]='1';
}
else {
output[i][j]=46;
}
}
// printf("\n");
}
for(i=1;i<=n;i++){
for(j=1;j<=n;j++){
if(output[i][j]==46){
printf("%c",'.');
}
else{
printf("%d",output[i][j]);
}
}
printf("\n");
}
printf("\n\n");
}
// getch();
return 0;
}
Code: Select all
1
8
...**..*
......*.
....*...
........
........
.....*..
...**.*.
.....*..
xxxxxxxx
xxxx....
xxxx....
xxxxx...
xxxxx...
xxxxx...
xxx.....
xxxxx...
Code: Select all
001**22*
0013..*.
0001*...
00011...
00001...
00123*..
001**.*.
00123*..
Code: Select all
00111221
0013....
0001....
00011...
00001...
00123...
001.....
00123...
Code: Select all
#include<stdio.h>
char grid[20][20],extra[20][20];
void putmine(int n)
{
int i,j;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
if(grid[i][j]=='*')
extra[i][j]='*';
}
int count(int i,int j, int n)
{
int s=0;
if(i<n-1)
if(grid[i+1][j]=='*')
s++;
if(i<n-1 && j<n-1)
if(grid[i+1][j+1]=='*')
s++;
if(j<n-1)
if(grid[i][j+1]=='*')
s++;
if(i>0)
{
if(grid[i-1][j]=='*')
s++;
if(grid[i-1][j+1]=='*')
s++;
}
if(j>0)
{
if(grid[i][j-1]=='*')
s++;
if(grid[i+1][j-1]=='*')
s++;
}
if(i>0 && j>0)
{
if(grid[i-1][j-1]=='*')
s++;
}
return s;
}
int main()
{
int i,j,N,n,s,chk;
scanf("%d",&N);
while(N--)
{
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%s",grid[i]);
for(i=0;i<n;i++)
scanf("%s",extra[i]);
chk=1;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(extra[i][j]=='x')
{
if(grid[i][j]=='*')
chk=0;
s=count(i,j,n);
extra[i][j]=s+48;
}
}
}
if(chk==0)
putmine(n);
for(i=0;i<n;i++)
printf("%s\n",extra[i]);
//if(N!=0)
printf("\n");
}
}
Code: Select all
1
.
x
Code: Select all
1
8
...**..*
......*.
....*...
........
........
.....*..
...**.*.
.....*..
xxxx....
xxxx....
xxxx....
xxxxx...
xxxxx...
xxxxx...
xxx.....
xxxxx...
Code: Select all
001**..*
0013..*.
0001*...
00011...
00001...
00123*..
001**.*.
00123*..
Code: Select all
#include<stdio.h>
int main()
{
char area [102][102];
char output [102][102];
char used[102][102];
int m,n,i,j,k,flag=0;
char c;
scanf("%d\n",&n);
for(k=0;k<n;k++)
{
scanf("%d",&m);
flag=0;
for(i=0;i<m;i++)
for(j=0;j<m;j++)
output[i][j]='0';
for(i=0;i<m;i++)
for(j=0;j<m;j++)
{
scanf("%c",&c);
if(c=='\n')
{
j--;
}
else
{
area[i][j]=c;
if(area[i][j]=='*')
{
output[i][j]='*';
if(i!=0)
{
if(output[i-1][j]!='*')
output[i-1][j]++;
if(j!=m-1)
if(output[i-1][j+1]!='*')
output[i-1][j+1]++;
if(j!=0)
if(output[i-1][j-1]!='*')
output[i-1][j-1]++;
}
if(j!=0)
if(output[i][j-1]!='*')
output[i][j-1]++;
if(j!=m-1)
if(output[i][j+1]!='*')
output[i][j+1]++;
if(i!=m-1)
{
if(output[i+1][j]!='*')
output[i+1][j]++;
if(j!=0)
if(output[i+1][j-1]!='*')
output[i+1][j-1]++;
}
if(!i&&!j)
if(output[i-1][j-1]!='*')
output[i-1][j-1]++;
if((i!=m-1)&&(j!=m-1))
if(output[i+1][j+1]!='*')
output[i+1][j+1]++;
}
}
}
for(i=0;i<m;i++)
for(j=0;j<m;j++)
{
scanf("%c",&c);
if(c=='\n')
{
j--;
}
else
{
used[i][j]=c;
if(!flag)
{
if(c=='X')
if(area[i][j]=='*')
flag=1;
}
}
}
if(k)
printf("\n");
for(i=0;i<m;i++)
{
for(j=0;j<m;j++)
{
if(flag)
{
if(area[i][j]=='*')
printf("%c",'*');
else
if(used[i][j]=='X')
printf("%c",output[i][j]);
else
printf("%c",'.');
}
else
{
if(used[i][j]=='X')
printf("%c",output[i][j]);
else
printf("%c",'.');
}
}
printf("\n");
}
}
return 0;
}