(Inspirado por um rascunho inicial do desafio da linha fractal do PhiNotPi .)
Você recebe uma largura W > 1
, uma altura H > 1
e uma sequência que consistem em 2(W+H-2)
caracteres ASCII imprimíveis. A tarefa é imprimir essa sequência em volta de um retângulo da largura e altura especificadas, começando no canto superior esquerdo, no sentido horário. O interior do retângulo é preenchido com espaços. Esperamos que os casos de teste deixem isso muito claro.
Você pode escrever um programa ou função, recebendo entrada via STDIN (ou alternativa mais próxima), argumento de linha de comando ou argumento de função e imprimindo o resultado em STDOUT (ou alternativa mais próxima) ou retornando-o como uma sequência.
Não deve haver espaços à esquerda ou à direita (além daqueles que possam estar na cadeia de entrada). Opcionalmente, você pode gerar uma única nova linha à direita.
Isso é código de golfe, então a submissão mais curta (em bytes) vence.
Casos de teste
Cada caso de teste é "String" W H
seguido pela saída esperada.
"Hello, World! "
5 4
Hello
,
!
dlroW
"+--+|||+--+|||"
4 5
+--+
| |
| |
| |
+--+
">v<^"
2 2
>v
^<
"rock beats scissors beats paper beats "
11 10
rock beats
s
s c
t i
a s
e s
b o
r
r s
epap staeb
Note that the following string contains an escaped '"'.
"!\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~"
46 3
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMN
~ O
}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQP
Classificação
Aqui está um snippet de pilha para gerar uma classificação regular e uma visão geral dos vencedores por idioma.
Para garantir que sua resposta seja exibida, inicie-a com um título, usando o seguinte modelo de remarcação:
# Language Name, N bytes
onde N
está o tamanho do seu envio. Se você melhorar sua pontuação, poderá manter as pontuações antigas no título, identificando-as. Por exemplo:
# Ruby, <s>104</s> <s>101</s> 96 bytes