Untitled

                Never    
C
       
#include <stdio.h>
#define N 5
#define M 5
#define L 50

void readBoard(int board[N][M]);
void readGame(int steps[L], int * numOfSteps);
int isCellLegal(int x, int y);
int isBomb(int Board[N][M], int x, int y);
int performStep(int Board[N][M], int x, int y, int * bombsRevealed);
int isWinner(int  Board[N][M]);
int playGame(int Board[N][M], int Steps[L], int numOfSteps, int *totalBombsRevealed);



int main()
{
    int board[N][M]={0};
    int steps[L]={0};
    int numOfSteps=0;
    int totalBombsRevealed=0;
    int i,j;
    int k;

    readBoard(board);
    readGame(steps,& numOfSteps);
    k=playGame(board,steps,numOfSteps,&totalBombsRevealed);

    printf("%d\n",k);
    printf("%d\n",totalBombsRevealed);

       for (i=0;i<N;i++)
       {for (j=0; j<M;j++)
        printf("%d",board[i][j]);
       }
       printf ("\n");

    return 0;
}

void readBoard(int board[N][M])
  {

    int i,j;
    for (i=0;i<N;i++)
       {for (j=0; j<M;j++)
         {scanf("%d",&board[i][j]);
         }
       }
  }
void readGame(int steps[L], int * numOfSteps)
  {

    int i;
    int m;
    *numOfSteps=0;

    for(i=0;i<L;i++)
        {scanf("%d",&m);
            if (m==-1)
            {
                steps[L]=m;
                break;
            }
            else
            {
            steps[L]=m;
            {   if (steps[L]%2==1)
               {*numOfSteps= *numOfSteps+1;
                }

            }
            }
        }
  }
int isCellLegal(int x, int y)
   {
      if (x>=N || x<0 ||y<0||y>=M ) return 0;
        return 1 ;
   }

int isBomb(int Board[N][M], int x, int y)
{   if (Board[x][y]== -1)
    {return 1;
    }
    else
    {Board[x][y]=0;
     return 0;
    }
}


int performStep(int Board[N][M], int x, int y, int * bombsRevealed)
{   int i=0,j=0;

    if (isBomb(Board,x,y )==1)
    {* bombsRevealed=0;
        return -1;
    }

    for (i=(-Board[x][y]);i<=Board[x][y];i++)
    {for (j=(-Board[x][y]);j<=Board[x][y];j++)
    {
        if (isCellLegal(x+i,y+j)==1 && isBomb(Board,x+i,y+j)==1)
        {
            (*bombsRevealed)++;
        }
    if (isCellLegal(x+i,y+j))
    {Board[x+i][y+j]=0;

    }
}
    }


int isWinner(int  Board[N][M])
{
    int i,j;

    for (i=0; i<N; i++)
    for (j=0; i<M; j++)
    {
        if (Board[i][j]!=-1 && Board[i][j]==0)
            return 0;

    }
return 1;
}
int playGame(int Board[N][M], int Steps[L], int numOfSteps, int *
totalBombsRevealed)
{    int BombsRevealed=0,i,n;
        for(i=0;i<numOfSteps*2;i+=2)
        {
            BombsRevealed=0;
            n=performStep(Board,Steps[i],Steps[i+1],&BombsRevealed);
            if(n==-1)return -1;
            *totalBombsRevealed+=BombsRevealed;
            if(isWinner(Board)==1)return 1;

        }

        return 0;
    }

Raw Text