class TransposeText
{
public static void main
( String [ ] args
) {
String input
= "package main\n " + "\n " +
"import \" fmt\" \n " +
"\n " +
"func main() {\n " +
" queue := make(chan string, 2)\n " +
" queue <- \" one\" \n " +
" queue <- \" twoO\" \n " +
" close(queue)\n " +
" for elem := range queue {\n " +
" fmt.Println(elem)\n " +
" }\n " +
"}" ;
System .
out .
println ( transpose
( input
) ) ; }
{
StringBuilder result = new StringBuilder( ) ;
StringBuilder[ ] input = new StringBuilder[ str.split ( "\n " ) .length ] ;
for ( int i = 0 ; i < input.length ; i++ )
input[ i] = new StringBuilder( str.split ( "\n " ) [ i] ) ;
// Setting all of the input strings to be the same length by adding spaces
{
int x = 0 ;
for ( StringBuilder cur: input)
if ( x < cur.length ( ) ) x = cur.length ( ) ;
for ( StringBuilder cur: input)
while ( cur.length ( ) < x)
cur.append ( " " ) ;
}
for ( int i = 0 ; i < input[ 0 ] .length ( ) ; i++ )
{
for ( StringBuilder cur: input)
if ( cur.charAt ( i) != '\n ' )
result.append ( cur.charAt ( i) ) ;
result.append ( '\n ' ) ;
}
return result.toString ( ) ;
}
}
Y2xhc3MgVHJhbnNwb3NlVGV4dAp7CiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKQogICAgewogICAgICAgIFN0cmluZyBpbnB1dCA9ICJwYWNrYWdlIG1haW5cbiIgKwogICAgICAgICAgICAgICAgIlxuIiArCiAgICAgICAgICAgICAgICAiaW1wb3J0IFwiZm10XCJcbiIgKwogICAgICAgICAgICAgICAgIlxuIiArCiAgICAgICAgICAgICAgICAiZnVuYyBtYWluKCkge1xuIiArCiAgICAgICAgICAgICAgICAiICAgIHF1ZXVlIDo9IG1ha2UoY2hhbiBzdHJpbmcsIDIpXG4iICsKICAgICAgICAgICAgICAgICIgICAgcXVldWUgPC0gXCJvbmVcIlxuIiArCiAgICAgICAgICAgICAgICAiICAgIHF1ZXVlIDwtIFwidHdvT1wiXG4iICsKICAgICAgICAgICAgICAgICIgICAgY2xvc2UocXVldWUpXG4iICsKICAgICAgICAgICAgICAgICIgICAgZm9yIGVsZW0gOj0gcmFuZ2UgcXVldWUge1xuIiArCiAgICAgICAgICAgICAgICAiICAgICAgICBmbXQuUHJpbnRsbihlbGVtKVxuIiArCiAgICAgICAgICAgICAgICAiICAgIH1cbiIgKwogICAgICAgICAgICAgICAgIn0iOwoKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4odHJhbnNwb3NlKGlucHV0KSk7CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgU3RyaW5nIHRyYW5zcG9zZShTdHJpbmcgc3RyKQogICAgewogICAgICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0ID0gbmV3IFN0cmluZ0J1aWxkZXIoKTsKICAgICAgICBTdHJpbmdCdWlsZGVyW10gaW5wdXQgPSBuZXcgU3RyaW5nQnVpbGRlcltzdHIuc3BsaXQoIlxuIikubGVuZ3RoXTsKCiAgICAgICAgZm9yKGludCBpID0gMDsgaSA8IGlucHV0Lmxlbmd0aDsgaSsrKQogICAgICAgICAgICBpbnB1dFtpXSA9IG5ldyBTdHJpbmdCdWlsZGVyKHN0ci5zcGxpdCgiXG4iKVtpXSk7CgoKICAgICAgICAvLyBTZXR0aW5nIGFsbCBvZiB0aGUgaW5wdXQgc3RyaW5ncyB0byBiZSB0aGUgc2FtZSBsZW5ndGggYnkgYWRkaW5nIHNwYWNlcwogICAgICAgIHsKICAgICAgICAgICAgaW50IHggPSAwOwogICAgICAgICAgICBmb3IgKFN0cmluZ0J1aWxkZXIgY3VyOiBpbnB1dCkKICAgICAgICAgICAgICAgICAgICBpZiAoeCA8IGN1ci5sZW5ndGgoKSkgeCA9IGN1ci5sZW5ndGgoKTsKCiAgICAgICAgICAgIGZvcihTdHJpbmdCdWlsZGVyIGN1cjogaW5wdXQpCiAgICAgICAgICAgICAgICB3aGlsZShjdXIubGVuZ3RoKCkgPCB4KQogICAgICAgICAgICAgICAgICAgIGN1ci5hcHBlbmQoIiAiKTsKICAgICAgICB9CgogICAgICAgIGZvcihpbnQgaSA9IDA7IGkgPCBpbnB1dFswXS5sZW5ndGgoKTsgaSsrKQogICAgICAgIHsKICAgICAgICAgICAgZm9yIChTdHJpbmdCdWlsZGVyIGN1cjogaW5wdXQpCiAgICAgICAgICAgICAgICBpZiAoY3VyLmNoYXJBdChpKSAhPSAnXG4nKQogICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoY3VyLmNoYXJBdChpKSk7CiAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ1xuJyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CiAgICB9Cn0=