Tarea
Dada una cadena no vacía de letras minúsculas ASCII a
- z
, tome su primer carácter, y:
- Rodéalo con un cuadrado de copias del segundo personaje,
- Rodea eso con un diamante de copias del tercer personaje,
- Rodea eso con un cuadrado de copias del cuarto personaje ...
… Alternando entre bordes cuadrados y de diamante hasta el final de la cuerda. El espacio vacío entre los bordes debe estar representado por espacios ASCII ( ).
Para agregar un borde cuadrado , dibuje un cuadrado exactamente alrededor de toda la "matriz de trabajo" actual:
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 agregar un borde de diamante , dibuje una forma de diamante centrada que toque el cuadrado más externo diagonalmente , pero no 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
Su programa debe generar la matriz final.
- Cada línea puede contener cualquier cantidad de espacios finales.
- Puede generar una lista de cadenas que representan líneas, o una sola cadena separada por una nueva línea con una nueva línea final opcional.
- Las líneas en blanco iniciales / finales no están permitidas.
- Las columnas principales de espacios también están prohibidas.
Este es el código de golf . El código más corto en bytes gana.
Casos de prueba
Los ejemplos anteriores se supone que las producciones de cat
, cats
, meow
, y meows
, en el orden de lectura. Algunos otros casos que vale la pena manejar:
Para la entrada
a
, su programa debería generar:a
Para la entrada
ab
, su programa debería generar:bbb bab bbb
Para la entrada
codegolf
, su programa debería generar: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
Implementación de referencia
Escribí un código de Julia que la salida de su programa debe coincidir (al menos visualmente). Pruébalo en línea!
\r\n
) en lugar de una (\n
)?