#include <cstring>
#include <string>
#include <fstream>
#include <algorithm>
#include <vector>
using namespace std;
void transpositionCipher(char *text)
{
//var length is text's length
int length = strlen(text);
int key = 0, col = 0, row = 0, tempTextLength = length, numOfRows = 0, counter = 0,
i = 0, j = 0;
std::vector<std::vector<char>> tranArr;
for (key = 2; key < 7; key++) {
while (tempTextLength % key != 0) {
if (tempTextLength - 1 % key == 0) {
tempTextLength--;
}
else tempTextLength++;
}
numOfRows = tempTextLength / key;
//allocation
tranArr.resize(numOfRows, std::vector<char>(key));
//fill the array
for (i = 0; i < length; i++) {
if (text[i] > 96 && text[i] < 123) {
if (row == numOfRows) {
col++;
row = 0;
}
tranArr.at(row).at(col) = text[i];
row++;
}
}
// reset.
row = 0; col = 0; tempTextLength = length; counter = 0;
}
}
int main()
{
transpositionCipher("nalcxehwttdttfseeleedsoaxfeahl");
}
I2luY2x1ZGUgPGNzdHJpbmc+CiNpbmNsdWRlIDxzdHJpbmc+CiNpbmNsdWRlIDxmc3RyZWFtPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8dmVjdG9yPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnZvaWQgdHJhbnNwb3NpdGlvbkNpcGhlcihjaGFyICp0ZXh0KSAKewogICAgLy92YXIgbGVuZ3RoIGlzIHRleHQncyBsZW5ndGgKICAgIGludCBsZW5ndGggPSBzdHJsZW4odGV4dCk7CiAgICBpbnQga2V5ID0gMCwgY29sID0gMCwgcm93ID0gMCwgdGVtcFRleHRMZW5ndGggPSBsZW5ndGgsIG51bU9mUm93cyA9IDAsIGNvdW50ZXIgPSAwLAogICAgICAgIGkgPSAwLCBqID0gMDsKICAgIHN0ZDo6dmVjdG9yPHN0ZDo6dmVjdG9yPGNoYXI+PiB0cmFuQXJyOwoKICAgIGZvciAoa2V5ID0gMjsga2V5IDwgNzsga2V5KyspIHsKICAgICAgICB3aGlsZSAodGVtcFRleHRMZW5ndGggJSBrZXkgIT0gMCkgewogICAgICAgICAgICBpZiAodGVtcFRleHRMZW5ndGggLSAxICUga2V5ID09IDApIHsKICAgICAgICAgICAgICAgIHRlbXBUZXh0TGVuZ3RoLS07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB0ZW1wVGV4dExlbmd0aCsrOwogICAgICAgIH0KCiAgICAgICAgbnVtT2ZSb3dzID0gdGVtcFRleHRMZW5ndGggLyBrZXk7CgogICAgICAgIC8vYWxsb2NhdGlvbgogICAgICAgIHRyYW5BcnIucmVzaXplKG51bU9mUm93cywgc3RkOjp2ZWN0b3I8Y2hhcj4oa2V5KSk7CgogICAgICAgIC8vZmlsbCB0aGUgYXJyYXkKICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgaWYgKHRleHRbaV0gPiA5NiAmJiB0ZXh0W2ldIDwgMTIzKSB7CiAgICAgICAgICAgICAgICBpZiAocm93ID09IG51bU9mUm93cykgewogICAgICAgICAgICAgICAgICAgIGNvbCsrOwogICAgICAgICAgICAgICAgICAgIHJvdyA9IDA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB0cmFuQXJyLmF0KHJvdykuYXQoY29sKSA9IHRleHRbaV07CiAgICAgICAgICAgICAgICByb3crKzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAvLyByZXNldC4KICAgICAgICByb3cgPSAwOyBjb2wgPSAwOyB0ZW1wVGV4dExlbmd0aCA9IGxlbmd0aDsgY291bnRlciA9IDA7CiAgICB9Cgp9CgppbnQgbWFpbigpCnsKICAgIHRyYW5zcG9zaXRpb25DaXBoZXIoIm5hbGN4ZWh3dHRkdHRmc2VlbGVlZHNvYXhmZWFobCIpOwp9Cg==