アットウィキロゴ

The Code A Doctor Loved

0088 : The Code A Doctor Loved



解説

与えられた文字列を変換規則に従って別の文字列に変換する。
配列にあらかじめデータを格納しておき、文字列を操作すればいい。
データの入力が面倒くさいけど・・・


プログラム

C


C++

+ ...
#include <iostream>
#include <string>
#include <map>
using namespace std;

typedef map<string, string> M;
typedef pair<string, string> IP;

int main() {
	M bm, am;
	bm.insert(IP(" ", "101"));
	bm.insert(IP("\'", "000000"));
	bm.insert(IP(",", "000011"));
	bm.insert(IP("-", "10010001"));
	bm.insert(IP(".", "010001"));
	bm.insert(IP("?", "000001"));
	bm.insert(IP("A", "100101"));
	bm.insert(IP("B", "10011010"));
	bm.insert(IP("C", "0101"));
	bm.insert(IP("D", "0001"));
bm.insert(IP("E", "110"));
	bm.insert(IP("F", "01001"));
	bm.insert(IP("G", "10011011"));
	bm.insert(IP("H", "010000"));
	bm.insert(IP("I", "0111"));
	bm.insert(IP("J", "10011000"));
	bm.insert(IP("K", "0110"));
	bm.insert(IP("L", "00100"));
	bm.insert(IP("M", "10011001"));
	bm.insert(IP("N", "10011110"));
	bm.insert(IP("O", "00101"));
	bm.insert(IP("P", "111"));
	bm.insert(IP("Q", "10011111"));
	bm.insert(IP("R", "1000"));
	bm.insert(IP("S", "00110"));
	bm.insert(IP("T", "00111"));
	bm.insert(IP("U", "10011100"));
	bm.insert(IP("V", "10011101"));
	bm.insert(IP("W", "000010"));
bm.insert(IP("X", "10010010"));
	bm.insert(IP("Y", "10010011"));
	bm.insert(IP("Z", "10010000"));

	am.insert(IP("00000", "A"));
	am.insert(IP("00001", "B"));
	am.insert(IP("00010", "C"));
	am.insert(IP("00011", "D"));
	am.insert(IP("00100", "E"));
am.insert(IP("00101", "F"));
	am.insert(IP("00110", "G"));
	am.insert(IP("00111", "H"));
	am.insert(IP("01000", "I"));
	am.insert(IP("01001", "J"));
	am.insert(IP("01010", "K"));
	am.insert(IP("01011", "L"));
am.insert(IP("01100", "M"));
	am.insert(IP("01101", "N"));
	am.insert(IP("01110", "O"));
	am.insert(IP("01111", "P"));
	am.insert(IP("10000", "Q"));
	am.insert(IP("10001", "R"));
	am.insert(IP("10010", "S"));
am.insert(IP("10011", "T"));
	am.insert(IP("10100", "U"));
	am.insert(IP("10101", "V"));
	am.insert(IP("10110", "W"));
 	am.insert(IP("10111", "X"));
	am.insert(IP("11000", "Y"));
	am.insert(IP("11001", "Z"));
	am.insert(IP("11010", " "));
	am.insert(IP("11011", "."));
	am.insert(IP("11100", ","));
	am.insert(IP("11101", "-"));
	am.insert(IP("11110", "\'"));
	am.insert(IP("11111", "?"));

	string s;
	while (getline(cin, s)) {
		string ans = "", w = "";
		for (int i = 0; i < s.size(); i++) {
			w += bm[s.substr(i, 1)];
		while (w.size() >= 5) {
				ans += am[w.substr(0, 5)];
				w.erase(0, 5);
			}
		}

	if (w.size() != 0) {
			while (w.size() != 5) w += "0";
			ans += am[w];
		}

	cout << ans << endl;
	}
 	
 	return 0;
} 

Java

最終更新:2012年12月11日 16:20