#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
// input-string, input-string-size
i
=-1,j
,s
=1,x
;C
(char*n
){while(n
[++i
])s
+=isdigit(n
[i
])?n
[i
]*2+1:2;char*m
=(char*)malloc(s
);for(i
=j
=-1;n
[++i
]&(m
[++j
]='|');)if(n
[i
]=='/')m
[++j
]='\n';else if(isdigit(n
[i
]))for(x
=n
[i
]-'0';x
;--x
&&(m
[++j
]='|'))m
[++j
]=' ';else m
[++j
]=n
[i
];m
[++j
]='\0';return m
;}
// input-string, input-string-size
char* C2(char*n)
{
int i=-1,j,s=1,x;
while(n
[++i
])s
+=isdigit(n
[i
])?n
[i
]*2+1:2;
i=j=-1;
while(n[++i])
{
m[++j]='|';
if (n[i]=='/')
m[++j]='\n';
for(x=n[i]-'0';x;--x&&(m[++j]='|')) m[++j]=' ';
else
m[++j]=n[i];
}
m[++j]='|';
m[++j]='\0';
return m;
}
int main(void)
{
// tests
printf("\n---------------------------\n"); printf("\n---------------------------\n"); printf(C
("rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR")); printf("\n---------------------------\n"); printf(C
("r1bk3r/p2pBpNp/n4n2/1p1NP2P/6P1/3P4/P1P1K3/q5b1")); printf("\n---------------------------\n");
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPGN0eXBlLmg+CgovLyBpbnB1dC1zdHJpbmcsIGlucHV0LXN0cmluZy1zaXplCmk9LTEsaixzPTEseDtDKGNoYXIqbil7d2hpbGUoblsrK2ldKXMrPWlzZGlnaXQobltpXSk/bltpXSoyKzE6MjtjaGFyKm09KGNoYXIqKW1hbGxvYyhzKTtmb3IoaT1qPS0xO25bKytpXSYobVsrK2pdPSd8Jyk7KWlmKG5baV09PScvJyltWysral09J1xuJztlbHNlIGlmKGlzZGlnaXQobltpXSkpZm9yKHg9bltpXS0nMCc7eDstLXgmJihtWysral09J3wnKSltWysral09JyAnO2Vsc2UgbVsrK2pdPW5baV07bVsrK2pdPSdcMCc7cmV0dXJuIG07fQoKLy8gaW5wdXQtc3RyaW5nLCBpbnB1dC1zdHJpbmctc2l6ZQpjaGFyKiBDMihjaGFyKm4pCnsKICAgIGludCBpPS0xLGoscz0xLHg7CiAgICB3aGlsZShuWysraV0pcys9aXNkaWdpdChuW2ldKT9uW2ldKjIrMToyOwogICAgY2hhciptPShjaGFyKiltYWxsb2Mocyk7CiAgICAKICAgIGk9aj0tMTsKICAgIHdoaWxlKG5bKytpXSkKCXsKCQltWysral09J3wnOwoJCQoJCWlmIChuW2ldPT0nLycpCgkJCW1bKytqXT0nXG4nOwoJCWVsc2UgaWYgKGlzZGlnaXQobltpXSkpCgkJCWZvcih4PW5baV0tJzAnO3g7LS14JiYobVsrK2pdPSd8JykpIG1bKytqXT0nICc7CgkJZWxzZQoJCQltWysral09bltpXTsKCX0KCiAgICBtWysral09J3wnOwogICAgbVsrK2pdPSdcMCc7CiAgICByZXR1cm4gbTsKfQoKaW50IG1haW4odm9pZCkKewoJLy8gdGVzdHMKCXByaW50ZigiXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiIpOwoJcHJpbnRmKEMoIjgvOC84LzgvOC84LzgvOCIpKTsKCXByaW50ZigiXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiIpOwoJcHJpbnRmKEMoInJuYnFrYm5yL3BwcHBwcHBwLzgvOC84LzgvUFBQUFBQUFAvUk5CUUtCTlIiKSk7CglwcmludGYoIlxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iKTsKCXByaW50ZihDKCJyMWJrM3IvcDJwQnBOcC9uNG4yLzFwMU5QMlAvNlAxLzNQNC9QMVAxSzMvcTViMSIpKTsKCXByaW50ZigiXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiIpOwoJCglyZXR1cm4gMDsKfQo=