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 ? truefalse;
        
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;
}
posted @ 2009-09-29 03:33  Weiyu Wang  阅读(401)  评论(0编辑  收藏  举报