Tarefa
Dada uma sequência não vazia de letras ASCII em minúsculas a
- z
, pegue seu primeiro caractere e:
- Coloque um quadrado de cópias do segundo caractere,
- Cerque isso com um diamante de cópias do terceiro personagem,
- Envolva isso com um quadrado de cópias do quarto personagem…
… Alternando entre bordas quadradas e diamantes até o final da corda. O espaço vazio entre as bordas deve ser representado por espaços ASCII ( ).
Para adicionar uma borda quadrada , desenhe um quadrado exatamente ao redor de toda a "matriz de trabalho" atual:
sssssssssss
t s t s
t t s t t s
t t s t t s
t aaa t s t aaa t s
t aca t => st aca ts
t aaa t s t aaa t s
t t s t t s
t t s t t s
t s t s
sssssssssss
Para adicionar uma borda de diamante , desenhe uma forma de diamante centralizada que toque o quadrado mais externo na diagonal , mas não ortogonalmente :
s
s s
s s
s s
s s
s s
s s
wwwwwwwwwww s wwwwwwwwwww s
w o w s w o w s
w o o w s w o o w s
w o o w s w o o w s
w o eee o w s w o eee o w s
wo eme ow => s wo eme ow s
w o eee o w s w o eee o w s
w o o w s w o o w s
w o o w s w o o w s
w o w s w o w s
wwwwwwwwwww s wwwwwwwwwww s
s s
s s
s s
s s
s s
s s
s
Seu programa deve gerar a matriz final.
- Cada linha pode conter qualquer quantidade de espaços à direita.
- Você pode gerar uma lista de cadeias representando linhas ou uma única cadeia separada por nova linha com uma nova linha à direita opcional.
- Linhas em branco à esquerda / à direita não são permitidas.
- As principais colunas de espaços também não são permitidas.
Isso é código-golfe . O código mais curto em bytes vence.
Casos de teste
Os exemplos acima são esperados saídas para cat
, cats
, meow
e meows
, em ordem de leitura. Alguns outros casos que valem a pena ser tratados:
Para a entrada
a
, seu programa deve gerar:a
Para a entrada
ab
, seu programa deve gerar:bbb bab bbb
Para a entrada
codegolf
, seu programa deve gerar:fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff f l f f l l f f l l f f l l f f l l f f l l f f l l f f l l f f l l f f l l f f l l f f l l f f l l f f l l f f l l f f l ooooooooooooooooooooooooooo l f f l o g o l f f l o g g o l f f l o g g o l f f l o g g o l f f l o g g o l f f l o g g o l f f l o g g o l f f l o g eeeeeeeeeee g o l f f l o g e d e g o l f f l o g e d d e g o l f f l o g e d d e g o l f f l o g e d ooo d e g o l f fl og ed oco de go lf f l o g e d ooo d e g o l f f l o g e d d e g o l f f l o g e d d e g o l f f l o g e d e g o l f f l o g eeeeeeeeeee g o l f f l o g g o l f f l o g g o l f f l o g g o l f f l o g g o l f f l o g g o l f f l o g g o l f f l o g o l f f l ooooooooooooooooooooooooooo l f f l l f f l l f f l l f f l l f f l l f f l l f f l l f f l l f f l l f f l l f f l l f f l l f f l l f f l l f f l f fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
Implementação de referência
Eu escrevi um código Julia que a saída do seu programa deve corresponder (pelo menos visualmente). Experimente online!
\r\n
) em vez de um (\n
)?