EDIT Modifiquei a redação das regras para tornar algumas coisas implícitas mais explícitas. Também acrescentei alguma ênfase para esclarecer alguns pontos de aparente confusão e defini explicitamente a opção de criar um programa independente em vez de uma função.
O objetivo aqui é criar uma função que pega um arquivo de texto (ou string) e o transpõe para que as linhas se tornem colunas e vice-versa.
Exemplo:
Eu sou um texto Transponha-me. Consegues fazê-lo?
Resulta em:
ITC ra aan mn sy apo ou ts eed xo tm .ei .t ?
As regras:
- Você está autorizado a assumir que os únicos caracteres em branco utilizados são
" "
e"\n"
e que não há nenhum espaço em branco à direita em qualquer linha. - Você pode assumir que o arquivo é ASCII. O marcador da linha final que você deseja usar depende de você (CRLF ou LF). Ele deve funcionar corretamente no exemplo, mas também deve funcionar em qualquer entrada que satisfaça as suposições acima.
- Pode ser necessário inserir espaços (como no exemplo) onde não havia nenhum para manter as colunas alinhadas.
- Seu resultado não deve ter espaços em branco à direita em nenhuma linha .
- O caractere de nova linha final (para a última linha) é opcional.
- Deve ser uma função ou um programa completo. Se sua função aceitar uma string, ela deverá retornar os resultados como uma string. Se ele aceitar um nome de arquivo, você retornará o nome do arquivo em que salvou o resultado. Além disso, você pode escrever um programa completo que aceite a entrada STDIN e produz o resultado correto para STDOUT; se você fizer isso, você deve não saída qualquer coisa para STDERR.
- O procedimento mais curto vence, mas vou votar de qualquer resposta que eu quiser.
Com base nas regras, a saída no exemplo tem 53 ou 52 bytes de comprimento (para novas linhas LF), dependendo se a nova linha final está incluída ou não.
Nota: Não é um requisito específico, mas se sua função, quando executada duas vezes sucessivas, não for idêntica à original (a nova linha final pode ser diferente e todas as linhas vazias no final do arquivo serão excluídas), você será excluído. provavelmente quebrando uma das regras.