Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstdio>
- #include <algorithm>
- #include <cstring>
- #include <string>
- #include <cctype>
- #include <stack>
- #include <queue>
- #include <list>
- #include <vector>
- #include <map>
- #include <set>
- #include <sstream>
- #include <stdlib.h>
- #define LL unsigned long long
- using namespace std;
- char tablero[8][8];
- void marcar_torre(int i,int j){
- /*atras de j*/
- for(int k=j-1;k>=0;k--){
- if(tablero[i][k]=='.'){
- tablero[i][k]='X';
- }else if(tablero[i][k]!='.' && (tablero[i][k]!='X')){
- break;
- }
- }/*para la parte de adelante de la posicion*/
- for(int k=j+1;k<8;k++){
- if(tablero[i][k]=='.'){
- tablero[i][k]='X';
- }else if(tablero[i][k]!='.' && (tablero[i][k]!='X')){
- break;
- }
- }
- /*para la parte de arriba de la posicion*/
- for(int k=i-1;k>=0;k--){
- if(tablero[k][j]=='.'){
- tablero[k][j]='X';
- }else if(tablero[k][j]!='.' && (tablero[k][j]!='X')){
- break;
- }
- }
- /*para la parte de abajo de la posicion*/
- for(int k=i+1;k<8;k++){
- if(tablero[k][j]=='.'){
- tablero[k][j]='X';
- }else if(tablero[k][j]!='.' && (tablero[k][j]!='X')){
- break;
- }
- }
- }
- void marcar_bishop(int i,int j){
- /*diagonal izquierda superior*/
- for (int k=i-1,l=j-1;k>=0 && l>=0;k--,l--){
- if(tablero[k][l]=='.'){
- tablero[k][l]='X';
- }else if(tablero[k][l]!='.' && (tablero[k][l]!='X')){
- break;
- }
- }
- /*diagonal izquierda inferior*/
- for (int k=i+1,l=j-1;l>=0 && k<8;k++,l--){
- if(tablero[k][l]=='.'){
- tablero[k][l]='X';
- }else if(tablero[k][l]!='.' && (tablero[k][l]!='X')){
- break;
- }
- }
- /*diagonal derecha superior*/
- for (int k=i-1,l=j+1;k>=0 && l<8;k--,l++){
- if(tablero[k][l]=='.'){
- tablero[k][l]='X';
- }else if(tablero[k][l]!='.' && (tablero[k][l]!='X')){
- break;
- }
- }
- /*diagonal derecha inferior*/
- for (int k=i+1,l=j+1;k<8 && l<8;k++,l++){
- if(tablero[k][l]=='.'){
- tablero[k][l]='X';
- }else if(tablero[k][l]!='.' && (tablero[k][l]!='X')){
- break;
- }
- }
- }
- void marcar_queen(int i,int j){
- for(int k=j-1;k>=0;k--){
- if(tablero[i][k]=='.'){
- tablero[i][k]='X';
- }else if(tablero[i][k]!='.' && (tablero[i][k]!='X')){
- break;
- }
- }/*para la parte de adelante de la posicion*/
- for(int k=j+1;k<8;k++){
- if(tablero[i][k]=='.'){
- tablero[i][k]='X';
- }else if(tablero[i][k]!='.' && (tablero[i][k]!='X')){
- break;
- }
- }
- /*para la parte de arriba de la posicion*/
- for(int k=i-1;k>=0;k--){
- if(tablero[k][j]=='.'){
- tablero[k][j]='X';
- }else if(tablero[k][j]!='.' && (tablero[k][j]!='X')){
- break;
- }
- }
- /*para la parte de abajo de la posicion*/
- for(int k=i+1;k<8;k++){
- if(tablero[k][j]=='.'){
- tablero[k][j]='X';
- }else if(tablero[k][j]!='.' && (tablero[k][j]!='X')){
- break;
- }
- }
- /*diagonal izquierda superior*/
- for (int k=i-1,l=j-1;k>=0 && l>=0;k--,l--){
- if(tablero[k][l]=='.'){
- tablero[k][l]='X';
- }else if(tablero[k][l]!='.' && (tablero[k][l]!='X')){
- break;
- }
- }
- /*diagonal izquierda inferior*/
- for (int k=i+1,l=j-1;l>=0 && k<8;k++,l--){
- if(tablero[k][l]=='.'){
- tablero[k][l]='X';
- }else if(tablero[k][l]!='.' && (tablero[k][l]!='X')){
- break;
- }
- }
- /*diagonal derecha superior*/
- for (int k=i-1,l=j+1;k>=0 && l<8;k--,l++){
- if(tablero[k][l]=='.'){
- tablero[k][l]='X';
- }else if(tablero[k][l]!='.' && (tablero[k][l]!='X')){
- break;
- }
- }
- /*diagonal derecha inferior*/
- for (int k=i+1,l=j+1;k<8 && l<8;k++,l++){
- if(tablero[k][l]=='.'){
- tablero[k][l]='X';
- }else if(tablero[k][l]!='.' && (tablero[k][l]!='X')){
- break;
- }
- }
- }
- void marcar_knight(int i,int j){
- int nx,ny;
- nx=i-2; ny=j-1; if(tablero[nx][ny]=='.' && nx>=0 && ny>=0) tablero[nx][ny]='X';
- nx=i-2; ny=j+1; if(tablero[nx][ny]=='.' && nx>=0 && ny<8) tablero[nx][ny]='X';
- nx=i-1; ny=j+2; if(tablero[nx][ny]=='.' && nx>=0 && ny<8) tablero[nx][ny]='X';
- nx=i-1; ny=j-2; if(tablero[nx][ny]=='.' && nx>=0 && ny>=0) tablero[nx][ny]='X';
- nx=i+1; ny=j-2; if(tablero[nx][ny]=='.' && nx<8 && ny>=0) tablero[nx][ny]='X';
- nx=i+1; ny=j+2; if(tablero[nx][ny]=='.' && nx<8&& ny<8) tablero[nx][ny]='X';
- nx=i+2; ny=j-1; if(tablero[nx][ny]=='.' && nx<8 && ny>=0) tablero[nx][ny]='X';
- nx=i+2; ny=j+1; if(tablero[nx][ny]=='.' && nx<8 && ny<8) tablero[nx][ny]='X';
- }
- void marcar_king(int i,int j){
- int nx,ny;
- nx=i-1; ny=j-1; if(tablero[nx][ny]=='.' && nx>=0 && ny>=0) tablero[nx][ny]='X';
- nx=i-1; ny=j+1; if(tablero[nx][ny]=='.' && nx>=0 && ny<8) tablero[nx][ny]='X';
- nx=i-1; ny=j; if(tablero[nx][ny]=='.' && nx>=0) tablero[nx][ny]='X';
- nx=i; ny=j-1; if(tablero[nx][ny]=='.' && ny>=0) tablero[nx][ny]='X';
- nx=i; ny=j+1; if(tablero[nx][ny]=='.' && ny<8) tablero[nx][ny]='X';
- nx=i+1; ny=j+1; if(tablero[nx][ny]=='.' && nx<8&& ny<8) tablero[nx][ny]='X';
- nx=i+1; ny=j-1; if(tablero[nx][ny]=='.' && nx<8 && ny>=0) tablero[nx][ny]='X';
- nx=i+1; ny=j; if(tablero[nx][ny]=='.' && nx<8) tablero[nx][ny]='X';
- }
- void marcar_black_pawn(int i,int j){
- int nx,ny;
- nx=i+1; ny=j+1; if(tablero[nx][ny]=='.' && nx<8&& ny<8) tablero[nx][ny]='X';
- nx=i+1; ny=j-1; if(tablero[nx][ny]=='.' && nx<8 && ny>=0) tablero[nx][ny]='X';
- }
- void marcar_white_pawn(int i,int j){
- int nx,ny;
- nx=i-1; ny=j-1; if(tablero[nx][ny]=='.' && nx>=0 && ny>=0) tablero[nx][ny]='X';
- nx=i-1; ny=j+1; if(tablero[nx][ny]=='.' && nx>=0 && ny<8) tablero[nx][ny]='X';
- }
- int main() {
- int i,j,n,cont,empty;
- i=0;j=0;cont=0;
- char cad[200];
- while(scanf("%s",&cad)!=EOF){
- for(int k=0;k<8;k++){
- for(int l=0;l<8;l++){
- tablero[k][l]='.';
- }
- }
- empty=0;i=0;cont=0;
- while(i<8){
- j=0;
- while(j<8 && cad[cont]!='/'){
- if(isdigit(cad[cont])){
- n=cad[cont]-'0';
- for(int k=0;k<n;k++) {
- j++;
- }
- cont++;
- }else {
- tablero[i][j]=cad[cont];
- j++;cont++;
- }
- }
- i++;cont++;
- }
- for (int k=0;k<8;k++){
- for(int l=0;l<8;l++){
- if(tablero[k][l]=='r' || tablero[k][l]=='R'){
- marcar_torre(k,l);
- }else if(tablero[k][l]=='n'|| tablero[k][l]=='N'){
- marcar_knight(k,l);
- }else if(tablero[k][l]=='q' || tablero[k][l]=='Q'){
- marcar_queen(k,l);
- }else if(tablero[k][l]=='b' || tablero[k][l]=='B'){
- marcar_bishop(k,l);
- }else if(tablero[k][l]=='k' || tablero[k][l]=='K'){
- marcar_king(k,l);
- }else if(tablero[k][l]=='p'){
- marcar_black_pawn(k,l);
- }else if(tablero[k][l]=='P'){
- marcar_white_pawn(k,l);
- }else continue;
- }
- }
- /*ahora basta observar los espacios que aun son '.'*/
- for(int k=0;k<8;k++){
- for(int l=0;l<8;l++){
- if(tablero[k][l]=='.') empty++;
- }
- }
- printf("%d\n",empty);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement