Convert QWERTY to Dvorak

 
Time Limit:2000MS     Memory Limit:65536KB     64bit IO Format:%lld & %llu

Description

Edward, a poor copy typist, is a user of the Dvorak Layout. But now he has only a QWERTY Keyboard with a broken Caps Lock key, so Edward never presses the broken Caps Lock key. Luckily, all the other keys on the QWERTY keyboard work well. Every day, he has a lot of documents to type. Thus he needs a converter to translate QWERTY into Dvorak. Can you help him?

The QWERTY Layout and the Dvorak Layout are in the following:

Qwerty Layout
The QWERTY Layout

Dvorak Layout
The Dvorak Layout

Input

A QWERTY document Edward typed. The document has no more than 100 kibibytes. And there are no invalid characters in the document.

Output

The Dvorak document.

Sample Input

Jgw Gqm Andpw a H.soav Patsfk f;doe
Nfk Gq.d slpt a X,dokt vdtnsaohe
Kjd yspps,glu pgld; aod yso kd;kgluZ
1234567890
`~!@#$%^&*()}"']_+-=ZQqWEwe{[\|
ANIHDYf.,bt/
ABCDEFuvwxyz

Sample Output

Hi, I'm Abel, a Dvorak Layout user.
But I've only a Qwerty keyboard.
The following lines are for testing:
1234567890
`~!@#$%^&*()+_-={}[]:"'<>,.?/\|
ABCDEFuvwxyz
AXJE>Ugk,qf;
#include<iostream>
#include<algorithm>
#include<map>
using namespace std;
map<char,char>M;
void init(){
    M['-']='[';      M['A']='A';    M['X']='Q';
    M['_']='{';     M['a']='a';    M['x']='q';
    M['+']='}';      M['s']='o';    M['C']='J';
    M['=']=']';      M['S']='O';    M['c']='j';
    M['Q']='"';      M['D']='E';    M['V']='K';
    M['q']='\'';     M['d']='e';    M['v']='k';
    M['W']='<';      M['F']='U';    M['B']='X';
    M['w']=',';      M['f']='u';    M['b']='x';
    M['E']='>';      M['G']='I';    M['N']='B';
    M['e']='.';      M['g']='i';    M['n']='b';
    M['R']='P';      M['H']='D';    M['M']='M';
    M['r']='p';      M['h']='d';    M['m']='m';
    M['T']='Y';      M['j']='h';    M['<']='W';
    M['t']='y';      M['K']='T';    M[',']='w';
    M['Y']='F';      M['J']='H';    M['>']='V';
    M['y']='f';      M['k']='t';    M['.']='v';
    M['U']='G';      M['L']='N';    M['?']='Z';
    M['u']='g';      M['l']='n';    M['/']='z';
    M['I']='C';      M[':']='S';    M['{']='?';
    M['i']='c';      M[';']='s';    M['[']='/';
    M['O']='R';      M['"']='_';    M['}']='+';
    M['o']='r';      M['\'']='-';   M[']']='=';
    M['P']='L';      M['Z']=':';
    M['p']='l';      M['z']=';';
}
int main(){
    init();
    string str;
    while(getline(cin,str)){
        for(int i=0;i<str.length();i++){
                if(M.count(str[i]))cout<<M[str[i]];
                else cout<<str[i];
        }
        cout<<endl;
    }
return 0;
}
View Code

 

posted @ 2015-07-17 21:27  无解大神  阅读(447)  评论(0)    收藏  举报