//i;j;d;f(char*s,int n){for(i=0;i<n;i++)for(j=0;j+i<strlen(s);j=d+i+(n<2)){d=j-i+2*n-2;putchar(s[i+j]);if(i>0&i<n-1&d<strlen(s))putchar(s[d]);}}
//t;i;j;d;f(s,n)char*s;{for(t=strlen(s),i=0;i<n;i++)for(j=0;j+i<t;j=d+i+(n<2))d=j-i+2*~-n,putchar(s[i+j]),i>0&i<n-1&d<t&&putchar(s[d]);}
// C variable and function declaration magic
t;i;j;d;f(s,n)char*s;{
// Iterate through each "row" of the string
// Iterate through each element on the row
// The original index iterator here was j+=2*(n-1), which is a full "zig-zag" forward
// The (n<2) is for the edge case of n==1, which will break the existing logic.
for(j=0; j+i<t; j=d+i+(n<2))
// If j+i is the "zig", d is the "zag": Original index was d=j+i+2*(n-i-1)
// Two's complement swag here courtesy of Jonathan Frech
d=j-i+2*~-n,
// Short circuit logic to write the "zag" character if we're not on the first or last row
i
>0 & i
<n
-1 & d
<t
&& putchar(s
[d
]); }
main(){
f
("programmingpuzzles",5); putchar('\n');
}
Ly9pO2o7ZDtmKGNoYXIqcyxpbnQgbil7Zm9yKGk9MDtpPG47aSsrKWZvcihqPTA7aitpPHN0cmxlbihzKTtqPWQraSsobjwyKSl7ZD1qLWkrMipuLTI7cHV0Y2hhcihzW2kral0pO2lmKGk+MCZpPG4tMSZkPHN0cmxlbihzKSlwdXRjaGFyKHNbZF0pO319Ci8vdDtpO2o7ZDtmKHMsbiljaGFyKnM7e2Zvcih0PXN0cmxlbihzKSxpPTA7aTxuO2krKylmb3Ioaj0wO2oraTx0O2o9ZCtpKyhuPDIpKWQ9ai1pKzIqfi1uLHB1dGNoYXIoc1tpK2pdKSxpPjAmaTxuLTEmZDx0JiZwdXRjaGFyKHNbZF0pO30KCi8vIEMgdmFyaWFibGUgYW5kIGZ1bmN0aW9uIGRlY2xhcmF0aW9uIG1hZ2ljCnQ7aTtqO2Q7ZihzLG4pY2hhcipzO3sKICAgICAgICAvLyBJdGVyYXRlIHRocm91Z2ggZWFjaCAicm93IiBvZiB0aGUgc3RyaW5nCiAgICAgICAgZm9yKHQ9c3RybGVuKHMpLGk9MDsrK2k8bjspCiAgICAgICAgICAgIC8vIEl0ZXJhdGUgdGhyb3VnaCBlYWNoIGVsZW1lbnQgb24gdGhlIHJvdwogICAgICAgICAgICAvLyBUaGUgb3JpZ2luYWwgaW5kZXggaXRlcmF0b3IgaGVyZSB3YXMgais9Mioobi0xKSwgd2hpY2ggaXMgYSBmdWxsICJ6aWctemFnIiBmb3J3YXJkCiAgICAgICAgICAgIC8vIFRoZSAobjwyKSBpcyBmb3IgdGhlIGVkZ2UgY2FzZSBvZiBuPT0xLCB3aGljaCB3aWxsIGJyZWFrIHRoZSBleGlzdGluZyBsb2dpYy4KICAgICAgICAgICAgZm9yKGo9MDsgaitpPHQ7IGo9ZCtpKyhuPDIpKQogICAgICAgICAgICAgICAgLy8gSWYgaitpIGlzIHRoZSAiemlnIiwgZCBpcyB0aGUgInphZyI6IE9yaWdpbmFsIGluZGV4IHdhcyBkPWoraSsyKihuLWktMSkKICAgICAgICAgICAgICAgIC8vIFR3bydzIGNvbXBsZW1lbnQgc3dhZyBoZXJlIGNvdXJ0ZXN5IG9mIEpvbmF0aGFuIEZyZWNoCiAgICAgICAgICAgICAgICBkPWotaSsyKn4tbiwKICAgICAgICAgICAgICAgIHB1dGNoYXIoc1tpK2pdKSwKICAgICAgICAgICAgICAgIC8vIFNob3J0IGNpcmN1aXQgbG9naWMgdG8gd3JpdGUgdGhlICJ6YWciIGNoYXJhY3RlciBpZiB3ZSdyZSBub3Qgb24gdGhlIGZpcnN0IG9yIGxhc3Qgcm93CiAgICAgICAgICAgICAgICBpPjAgJiBpPG4tMSAmIGQ8dCAmJiBwdXRjaGFyKHNbZF0pOwogICAgfQoKbWFpbigpewoJZigiV0FURVJNRUxPTiIsMyk7IHB1dGNoYXIoJ1xuJyk7CglmKCJXQVRFUk1FTE9OIiw0KTsgcHV0Y2hhcignXG4nKTsKCWYoInByb2dyYW1taW5ncHV6emxlcyIsNSk7IHB1dGNoYXIoJ1xuJyk7CglmKCJjb2RlZ29sZiIsMyk7IHB1dGNoYXIoJ1xuJyk7CglmKCJlbGVwaGFudCIsNCk7IHB1dGNoYXIoJ1xuJyk7CglmKCIxMjM0NTY3IiwzKTsgcHV0Y2hhcignXG4nKTsKCWYoIkFCQUJBQkFCQUIiLDIpOyBwdXRjaGFyKCdcbicpOwoJZigicXdlcnR5dWlvcCIsMSk7IHB1dGNoYXIoJ1xuJyk7CgkKfQ==