package main
import (
"bufio"
"fmt"
"os"
"strings"
)
func transform(textBlock []string) []string {
var transformedText []string
t := ""
longest := 0
for _, line := range textBlock {
if len(line) > longest {
longest = len(line)
}
}
for i := 0; i < longest; i++ {
for _, line := range textBlock {
if i < len(line) {
t += string(line[i])
} else {
t += " "
}
}
transformedText = append(transformedText, strings.TrimRight(t, " "))
t = ""
}
return transformedText
}
func main() {
reader := bufio.NewReader(os.Stdin)
input := "_"
var textBlock []string
fmt.Println("Lines to transform (blank to continue):")
for input != "" {
input, _ = reader.ReadString('\n')
input = strings.Trim(input, " \n\r")
textBlock = append(textBlock, input)
}
textBlock = textBlock[:len(textBlock)-1]
transformedText := transform(textBlock)
for _, text := range transformedText {
fmt.Println(text)
}
}
cGFja2FnZSBtYWluCgppbXBvcnQgKAogICAgImJ1ZmlvIgogICAgImZtdCIKICAgICJvcyIKICAgICJzdHJpbmdzIgopCgpmdW5jIHRyYW5zZm9ybSh0ZXh0QmxvY2sgW11zdHJpbmcpIFtdc3RyaW5nIHsKICAgIHZhciB0cmFuc2Zvcm1lZFRleHQgW11zdHJpbmcKICAgIHQgOj0gIiIKICAgIGxvbmdlc3QgOj0gMAogICAgZm9yIF8sIGxpbmUgOj0gcmFuZ2UgdGV4dEJsb2NrIHsKICAgICAgICBpZiBsZW4obGluZSkgPiBsb25nZXN0IHsKICAgICAgICAgICAgbG9uZ2VzdCA9IGxlbihsaW5lKQogICAgICAgIH0KICAgIH0KICAgIGZvciBpIDo9IDA7IGkgPCBsb25nZXN0OyBpKysgewogICAgICAgIGZvciBfLCBsaW5lIDo9IHJhbmdlIHRleHRCbG9jayB7CiAgICAgICAgICAgIGlmIGkgPCBsZW4obGluZSkgewogICAgICAgICAgICAgICAgdCArPSBzdHJpbmcobGluZVtpXSkKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHQgKz0gIiAiCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgdHJhbnNmb3JtZWRUZXh0ID0gYXBwZW5kKHRyYW5zZm9ybWVkVGV4dCwgc3RyaW5ncy5UcmltUmlnaHQodCwgIiAiKSkKICAgICAgICB0ID0gIiIKICAgIH0KICAgIHJldHVybiB0cmFuc2Zvcm1lZFRleHQKfQoKZnVuYyBtYWluKCkgewogICAgcmVhZGVyIDo9IGJ1ZmlvLk5ld1JlYWRlcihvcy5TdGRpbikKICAgIGlucHV0IDo9ICJfIgogICAgdmFyIHRleHRCbG9jayBbXXN0cmluZwogICAgZm10LlByaW50bG4oIkxpbmVzIHRvIHRyYW5zZm9ybSAoYmxhbmsgdG8gY29udGludWUpOiIpCiAgICBmb3IgaW5wdXQgIT0gIiIgewogICAgICAgIGlucHV0LCBfID0gcmVhZGVyLlJlYWRTdHJpbmcoJ1xuJykKICAgICAgICBpbnB1dCA9IHN0cmluZ3MuVHJpbShpbnB1dCwgIiBcblxyIikKICAgICAgICB0ZXh0QmxvY2sgPSBhcHBlbmQodGV4dEJsb2NrLCBpbnB1dCkKICAgIH0KICAgIHRleHRCbG9jayA9IHRleHRCbG9ja1s6bGVuKHRleHRCbG9jayktMV0KICAgIHRyYW5zZm9ybWVkVGV4dCA6PSB0cmFuc2Zvcm0odGV4dEJsb2NrKQogICAgZm9yIF8sIHRleHQgOj0gcmFuZ2UgdHJhbnNmb3JtZWRUZXh0IHsKICAgICAgICBmbXQuUHJpbnRsbih0ZXh0KQogICAgfQp9
cGFja2FnZSBtYWluCgppbXBvcnQgJnF1b3Q7Zm10JnF1b3Q7CgpmdW5jIG1haW4oKSB7CiAgICBxdWV1ZSA6PSBtYWtlKGNoYW4gc3RyaW5nLCAyKQogICAgcXVldWUgJmx0Oy0gJnF1b3Q7b25lJnF1b3Q7CiAgICBxdWV1ZSAmbHQ7LSAmcXVvdDt0d29PJnF1b3Q7CiAgICBjbG9zZShxdWV1ZSkKICAgIGZvciBlbGVtIDo9IHJhbmdlIHF1ZXVlIHsKICAgICAgICBmbXQuUHJpbnRsbihlbGVtKQogICAgfQp9
package main
import "fmt"
func main() {
queue := make(chan string, 2)
queue <- "one"
queue <- "twoO"
close(queue)
for elem := range queue {
fmt.Println(elem)
}
}