Compito
Data una stringa non vuota di lettere minuscole ASCII a
- z
, prendere il suo primo personaggio, e:
- Circondalo con un quadrato di copie del secondo personaggio,
- Circondalo con un diamante di copie del terzo personaggio,
- Circondalo con un quadrato di copie del quarto personaggio ...
... alternando bordi quadrati e bordi di diamanti fino alla fine della corda. Lo spazio vuoto tra i bordi dovrebbe essere rappresentato da spazi ASCII ( ).
Per aggiungere un bordo quadrato , disegna un quadrato esattamente attorno all'intero "array di lavoro" corrente:
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
Per aggiungere un bordo di diamante , disegna una forma di diamante centrata che tocca il quadrato più esterno in diagonale , ma non 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
Il tuo programma deve generare l'array finale.
- Ogni riga può contenere qualsiasi quantità di spazi finali.
- È possibile generare un elenco di stringhe che rappresentano linee o una singola stringa separata da una nuova riga con una nuova riga finale facoltativa.
- Le righe vuote iniziali / finali non sono consentite.
- Anche le colonne di spazi principali non sono consentite.
Questo è code-golf . Vince il codice più breve in byte.
Casi test
Gli esempi precedenti sono attesi per uscite cat
, cats
, meow
, e meows
, in ordine di lettura. Alcuni altri casi che vale la pena trattare:
Per l'input
a
, il tuo programma dovrebbe produrre:a
Per l'input
ab
, il tuo programma dovrebbe produrre:bbb bab bbb
Per l'input
codegolf
, il tuo programma dovrebbe produrre: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
Implementazione di riferimento
Ho scritto del codice Julia che dovrebbe corrispondere all'output del tuo programma (almeno visivamente). Provalo online!
\r\n
) anziché uno (\n
)?