introduzione
Alice è una lingua 2-d di Martin Ender che ha due diverse modalità di esecuzione, cardinale e ordinale . Quando il puntatore dell'istruzione passa attraverso un mirror (uno /o l'altro \), passa da una modalità all'altra.
In questa sfida ci concentreremo sulla modalità ordinale , in cui i comandi operano sulle stringhe e il puntatore dell'istruzione si sposta in diagonale, rimbalzando contro i bordi del codice.
I programmi semplici che funzionano solo in modalità ordinale possono essere scritti in uno stile abbastanza compatto, come nel seguente esempio:
/fbd/
@aec\
Qui l'IP si avvia in modalità cardinale dalla prima cellula verso est, attraversa il primo specchio e inizia a muoversi in diagonale e rimbalzare, l'esecuzione di comandi a, be c. Incontra quindi lo specchio nord-est che lo fa andare a sud verso l'altro specchio e quindi inizia a rimbalzare verso ovest, incontrando i comandi d, ee f, infine @, che termina il programma.
Questo tipo di struttura è piuttosto compatta, ma non è facile da scrivere e mantenere (l'aggiunta di un singolo comando potrebbe costringerci a riordinare la maggior parte del codice!), Quindi mi piacerebbe che mi aiutassi con la formattazione.
L'obiettivo
Data una sequenza di comandi, in cui ogni comando è un singolo carattere ASCII stampabile, riordinali su due righe in modo che la prima metà della sequenza possa essere letta a partire dal primo carattere della seconda riga e quindi spostandosi sempre in diagonale verso destra, mentre la seconda metà può essere letta prendendo i caratteri rimanenti da destra a sinistra. Non preoccuparti dei mirror e del simbolo di terminazione, li aggiungerò io.
Quindi, ad esempio, dato l'input abcdefche dovresti produrre
fbd
aec
Nel caso in cui l'input abbia una lunghezza dispari, dovresti aggiungere un singolo spazio (che è un noop in Alice) ovunque, purché la sequenza di comandi rilevata rimanga la stessa. Puoi anche scegliere di produrre due righe di lunghezza diversa per un carattere, nel qual caso quella più corta ha uno spazio singolo alla fine.
Regole
Questo è code-golf , la risposta più breve, in byte, vince!
- È possibile immettere / emettere tramite uno dei metodi di immissione / emissione predefiniti
- L'input è costituito da una singola riga di caratteri ASCII stampabili
- È consentita una sola nuova riga finale nell'output
- Alcuni output del tuo programma potrebbero non avere un comportamento completamente corretto quando eseguiti come programmi Alice (ad es. Se lo spazio di riempimento è inserito all'interno di una stringa letterale). Non devi preoccuparti di queste situazioni
- Sono vietate le scappatoie standard
Casi test
--Input
abcdef
--Output
fbd
aec
--Input
123
--Output
2
13
OR
31
2
OR
3
12
OR
32
1
--Input
O
--Output
O
OR
O
--Input
"Hello, World!"o
--Output
oH!lloo
""edlr,W
--Input
i.szR.szno
--Output
o.zz.
inssR
--Input
" ^^} .~[}.~~[}{~~{}[^^^^.""!}"r.h~;a*y'~i.*So
--Output
o *^i}'.*[;.h~r}}~"{.[^
"S .^~ y~a}~~.["{!~"}^^^
(Odd length, your solution may be different)