#include <stdio.h>
char* convert(char* s, int numRows){
if(numRows == 1)
return s;
int length_s = 0, diff = 0, index = 0, i, j=0;
int toggle = 0;
while(s[length_s] != '\0')
length_s ++;
printf("length_s %d \n",length_s
); char* converted_string
= (char*)malloc(length_s
* sizeof(char*)); diff = (numRows * 2) - 2;
for(i = 1; i <= numRows; i++){
toggle = 0;
index = i;
while(index <= length_s){
if(i == 1 || i == numRows){
converted_string [j] = s[index - 1];
index = index + diff;
} else{
converted_string[j] = s[index - 1];
if(toggle == 0)
index = index + ((numRows - i)*2);
else
index = index + (diff - ((numRows - i)*2));
if(toggle == 0)
toggle = 1;
else
toggle = 0;
}
j++;
}
}
//printf("converted_string %s\n",converted_string);
int final_length_s = 0;
while(s[final_length_s] != '\0')
final_length_s ++;
printf("length_s %d \n",final_length_s
); return converted_string;
}
int main()
{
char* input_string;
int numRows;
input_string = "Apalindromeisaword,phrase,number,orothersequenceofunitsthatcanbereadthesamewayineitherdirection,withgeneralallowancesforadjustmentstopunctuationandworddividers.";
numRows = 2;
printf("%s \n",convert
(input_string
,numRows
)); return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CmNoYXIqIGNvbnZlcnQoY2hhciogcywgaW50IG51bVJvd3MpewogICAgaWYobnVtUm93cyA9PSAxKQogICAgICAgIHJldHVybiBzOwoJaW50IGxlbmd0aF9zID0gMCwgZGlmZiA9IDAsIGluZGV4ID0gMCwgaSwgaj0wOwoJaW50IHRvZ2dsZSA9IDA7Cgl3aGlsZShzW2xlbmd0aF9zXSAhPSAnXDAnKQoJCWxlbmd0aF9zICsrOwoJcHJpbnRmKCJsZW5ndGhfcyAlZCBcbiIsbGVuZ3RoX3MpOwoJY2hhciogY29udmVydGVkX3N0cmluZyA9IChjaGFyKiltYWxsb2MobGVuZ3RoX3MgKiBzaXplb2YoY2hhciopKTsKCWRpZmYgPSAobnVtUm93cyAqIDIpIC0gMjsKCWZvcihpID0gMTsgaSA8PSBudW1Sb3dzOyBpKyspewoJCXRvZ2dsZSA9IDA7CgkJaW5kZXggPSBpOwoJCXdoaWxlKGluZGV4IDw9IGxlbmd0aF9zKXsKCQkJaWYoaSA9PSAxIHx8IGkgPT0gbnVtUm93cyl7CgkJCQljb252ZXJ0ZWRfc3RyaW5nIFtqXSA9IHNbaW5kZXggLSAxXTsKCQkJCWluZGV4ID0gaW5kZXggKyBkaWZmOwoJCQl9IGVsc2V7CgkJCQljb252ZXJ0ZWRfc3RyaW5nW2pdID0gc1tpbmRleCAtIDFdOwoJCQkJaWYodG9nZ2xlID09IDApCgkJCQkJaW5kZXggPSBpbmRleCArICgobnVtUm93cyAtIGkpKjIpOwoJCQkJZWxzZQoJCQkJCWluZGV4ID0gaW5kZXggKyAoZGlmZiAtICgobnVtUm93cyAtIGkpKjIpKTsKCQkJCWlmKHRvZ2dsZSA9PSAwKQoJCQkJICAgIHRvZ2dsZSA9IDE7CgkJCQllbHNlIAoJCQkJICAgIHRvZ2dsZSA9IDA7CgkJCX0KCQkJaisrOwoJCX0KCX0KCS8vcHJpbnRmKCJjb252ZXJ0ZWRfc3RyaW5nICVzXG4iLGNvbnZlcnRlZF9zdHJpbmcpOwoJaW50IGZpbmFsX2xlbmd0aF9zID0gMDsKCXdoaWxlKHNbZmluYWxfbGVuZ3RoX3NdICE9ICdcMCcpCgkJZmluYWxfbGVuZ3RoX3MgKys7CglwcmludGYoImxlbmd0aF9zICVkIFxuIixmaW5hbF9sZW5ndGhfcyk7CglyZXR1cm4gY29udmVydGVkX3N0cmluZzsKfQppbnQgbWFpbigpCnsKCWNoYXIqIGlucHV0X3N0cmluZzsKCWludCBudW1Sb3dzOwoJaW5wdXRfc3RyaW5nID0gIkFwYWxpbmRyb21laXNhd29yZCxwaHJhc2UsbnVtYmVyLG9yb3RoZXJzZXF1ZW5jZW9mdW5pdHN0aGF0Y2FuYmVyZWFkdGhlc2FtZXdheWluZWl0aGVyZGlyZWN0aW9uLHdpdGhnZW5lcmFsYWxsb3dhbmNlc2ZvcmFkanVzdG1lbnRzdG9wdW5jdHVhdGlvbmFuZHdvcmRkaXZpZGVycy4iOwoJbnVtUm93cyA9IDI7CglwcmludGYoIiVzIFxuIixjb252ZXJ0KGlucHV0X3N0cmluZyxudW1Sb3dzKSk7CglyZXR1cm4gMDsKfQ==