POJ 2993, Emag eht htiw Em Pleh

模拟类


Description
This problem is a reverse case of the problem 2996. You are given the output of the problem H and your task is to find the corresponding input.

 

Input
according to output of problem 2996.

 

Output
according to input of problem 2996.

 

Sample Input
White: Ke1,Qd1,Ra1,Rh1,Bc1,Bf1,Nb1,a2,c2,d2,f2,g2,h2,a3,e4
Black: Ke8,Qd8,Ra8,Rh8,Bc8,Ng8,Nc6,a7,b7,c7,d7,e7,f7,h7,h6

 

Sample Output
+---+---+---+---+---+---+---+---+
|.r.|:::|.b.|:q:|.k.|:::|.n.|:r:|
+---+---+---+---+---+---+---+---+
|:p:|.p.|:p:|.p.|:p:|.p.|:::|.p.|
+---+---+---+---+---+---+---+---+
|...|:::|.n.|:::|...|:::|...|:p:|
+---+---+---+---+---+---+---+---+
|:::|...|:::|...|:::|...|:::|...|
+---+---+---+---+---+---+---+---+
|...|:::|...|:::|.P.|:::|...|:::|
+---+---+---+---+---+---+---+---+
|:P:|...|:::|...|:::|...|:::|...|
+---+---+---+---+---+---+---+---+
|.P.|:::|.P.|:P:|...|:P:|.P.|:P:|
+---+---+---+---+---+---+---+---+
|:R:|.N.|:B:|.Q.|:K:|.B.|:::|.R.|
+---+---+---+---+---+---+---+---+

 

Source
CTU Open 2005


 

//  POJ2993.cpp : Defines the entry point for the console application.
//

#include
< iostream >
#include
< string >
using   namespace  std;

int  main( int  argc,  char *  argv[])
{
    
char  chessboard[ 17 ][ 33 ];

    
// init chessboard
     for  ( int  j  =   0 ; j  <   33 ++ j)
        
for  ( int  i  =   0 ; i  <   17 ++ i)
        {
            
if  ((i  &   1 ==   0 ) chessboard[i][j]  =  (j  &   3 ==   0   ?   ' + ' ' - ' ;
            
else   if  ((j  &   3 ==   0 ) chessboard[i][j]  =   ' | ' ;
            
else  chessboard[i][j]  =  ((j  >>   2 +  (i  >>   1 ))  &   1   ?   ' : ' : ' . ' ;
        };

    
string  line;
    
for  ( int  k  =   0 ; k  <   2 ++ k)
    {
        cin 
>>  line;
        cin 
>>  line;
        
int  x, y;
        
const   string  CAP  =   " KQRBN " ;
        
bool  white  =  k  ==   0   ?   true false ;
        
char  ch;
        
int  i  =   0 ;
        
while  (i  <  line.size())
        {
            
if  (CAP.find(line[i])  !=   - 1 )
            {
                ch 
=  white  ?  line[i] : line[i]  - ' A '   + ' a ' ;
                
++ i;
            }
            
else
            {
                
int  z  =  CAP.find(line[i]);
                ch 
=  white  ?   ' P '  :  ' p ' ;
            }

            x 
=  line[i]  -   ' a ' ;
            y 
=  line[i  +   1 -   ' 1 ' ;

            x 
=   2   +  x  *   4 ;
            y 
=   16   -  ( 1   +  y  *   2 );

            chessboard[y][x] 
=  ch;

            i 
+=   3 ;
        }
    }

    
for  ( int  i  =   0 ; i  <   17 ++ i)
    {
        
for  ( int  j  =   0 ; j  <   33 ++ j)
            cout 
<<  chessboard[i][j];
        cout 
<< " \n " ;
    }
    
return   0 ;
}

转载于:https://www.cnblogs.com/asuran/archive/2009/09/29/1576095.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值