#include #include #include using namespace std; short first (short); short second (short); short third (short); short fourth (short); int main() { ifstream input; string in; string out; short one, two, three, four; int groups; int len; char ch1, ch2, ch3, ch4; int pick; input.open("ugly2.txt"); getline (input, in); while (!input.eof()) { out = ""; groups = in.size()/4; for (pick = 0; pick < groups; pick++) { one = in[pick*4]; two = in[pick*4+1]; three = in[pick*4+2]; four = in[pick*4+3]; ch1 = first(one)*64 + second(four)*16 + third(three)*4 + fourth(two); ch2 = first(two)*64 + second(one)*16 + third(four)*4 + fourth(three); ch3 = first(three)*64 + second(two)*16 + third(one)*4 + fourth(four); ch4 = first(four)*64 + second(three)*16 + third(two)*4 + fourth(one); out = out + ch1 + ch2 + ch3 + ch4; } len = out[0]; cout << out.substr(1,len) << endl; getline(input, in); } input.close(); return 0; } short first (short group) { return (group / 64); } short second (short group) { return (group % 64 / 16); } short third (short group) { return (group % 16 / 4); } short fourth (short group) { return (group % 4); }