Hai mai visto forme 3D e pensi che abbiamo 2 molte dimensioni. Quindi trasformiamo il 3D in 1D! (Vedi cosa ho fatto lì?)
Compito
Data una rappresentazione 2D di un cubo (layout sotto), appiattiscilo in una singola stringa, sulla base di puntatori.
Il cubo
Questo è il layout del cubo riempito con no-ops ( ,) e puntatori agli angoli ( <>v^/). Il puntatore di navigazione (NP) avvia il programma dove mostrato.
| NP begins here, moving right.
V
>,,,,,,,,,,,,,,,,,,v
, ,,
, , ,
, , ,
, , ,
, , ,
, , ,
, , ,
, , ,
/,,,,,,,,,,,,,,,,,,/ /
, , ,
, , ,
, , ,
, , ,
, , ,
, , ,
, , ,
, ,,
^,,,,,,,,,,,,,,,,,,<
L'NP continua a muoversi dall'inizio fino a quando non incontra un angolo. Ogni angolo ha una direzione predefinita che, a meno che non venga sovrascritta nell'angolo da un puntatore, punterà NP in una nuova direzione. Sono mostrati nel diagramma sopra. I puntatori nel programma sono v^<>/(i /punti in basso o in alto, a causa del layout non ci sarà mai confusione tra i due)
L'NP smette di muoversi quando raggiunge il ¶simbolo (Sì, lo so che si tratta di un carattere multi-byte, trattalo). Ogni carattere che passa viene aggiunto alla stringa di output finale ad eccezione dei puntatori, del no-op ( ,) e del ¶simbolo.
Ingresso
Ingresso sarà una stringa multi linea che corrisponde al layout del CUBE con i caratteri non di spaziatura sostituiti con qualsiasi carattere nell'intervallo 0x21di 0x7Ee almeno un'istanza del EOF.
Puoi inserire input come:
- Una stringa multilinea
- Un elenco di stringhe in cui ogni riga è un nuovo elemento nell'elenco
- Un elenco 2D di stringhe in cui ciascuna riga è suddivisa in un elenco
Produzione
Il cubo, appiattito in una stringa a riga singola.
Puntatore condizionale
NP ha un valore booleano che viene utilizzato per qualcosa chiamato un puntatore "condizionale" che inizia a true.
Il puntatore "condizionale" ( ?) è un puntatore che alternerà il valore NP tra truee falseogni volta che viene utilizzato. I puntatori condizionali hanno effetto solo se utilizzati negli angoli in cui si incontrano 3 tracce (angolo a 3 punti). Se il valore è truequando NP raggiunge il puntatore condizionale, NP si sposta nella direzione predefinita nell'immagine CUBE e, dopo essere stato diretto, il valore NP viene commutato. Pertanto, se è attivo false, NP segue la direzione non predefinita.
Non ci sarà mai un caso in cui NP va verso un condizionale e la direzione di default è la direzione da cui è appena arrivata. Immagina che questo sia l'angolo sinistro della faccia anteriore e che il valore NP sia attualmente true:
NP direction
/
,
,
,,,?
,
,
Ciò non accadrà mai, poiché la direzione predefinita lo rispecchierà com'era.
Se il puntatore condizionale si trova su un angolo di 3 punti:
- Non viene aggiunto alla stringa finale
- Il valore NP viene commutato tra
trueefalsedopo che NP è stato diretto. - Se il valore NP è
true, NP viene reindirizzato alla direzione predefinita . Altrimenti, viene reindirizzato alla direzione non predefinita .
Se si trova su una pista o un angolo a 2 punti:
- Viene aggiunto alla stringa finale
- il valore è attivato / disattivato
- L'IP non è diretto
Qualcosa a cui fare attenzione
Se un puntatore si trova su una traccia e non punta negli spazi, NP viene diretto nella nuova traccia, aggiunge il carattere successivo alla stringa finale e ruota l'NP di 90 gradi a destra.
abcd
>e
g f
/
NP direction
si appiattirebbe
(...) gef (...)
NON
(...) g>def (...)
Un /puntatore non reindirizza NP in questo caso in quanto potrebbe reindirizzare in uno spazio così
f
e
> ab/d
potrebbe diventare ab/def
Regole
- La larghezza, l'altezza e la profondità del cubo possono variare
- L'altezza e la profondità del cubo saranno sempre le stesse e saranno dimezzate, quindi la larghezza sarà sempre uniforme.
- La larghezza sarà compresa (compresa) tra 6 e 60.
- Ci sarà sempre un EOF (
¶) che può essere raggiunto da NP. Ad esempio non ci sarà mai qualcosa del genere nel cubo:<¶>poiché NP non sarebbe mai in grado di raggiungere il cubo. - Poiché uno spazio non può essere inserito nelle tracce del cubo, la stringa finale non dovrebbe mai avere uno spazio al suo interno.
- Se un puntatore viene posizionato in una delle tracce (non su un angolo) e dirige NP negli spazi, NP rimane costante e il carattere viene aggiunto alla stringa finale.
- Tuttavia, se il puntatore lo mantiene sulla traccia, NP viene diretto e il carattere del puntatore non viene aggiunto
- Dato che no-ops (
,) non viene aggiunto alla stringa finale, la stringa finale non deve contenere alcuna stringa,al suo interno. - Si può presumere che l'input sarà corretto.
- Questo è un codice-golf quindi vince il codice più breve in byte !
Esempi
Input
Output
-----
Input
Output
abcdef
¶ ,g
q,,,,, h
p ,i
onmlkj
abcdefghijklmnopq
-----
>,,,,,,,,,,,,,,,,,,v
¶ ,,
, , ,
, , ,
, , ,
, , ,
, , ,
, , ,
, , ,
/,,,,,,,,,,,,,,,,,,/ /
, , ,
, , ,
, , ,
, , ,
, , ,
, , ,
, , ,
, ,,
^,,,,,,,,,,,,,,,,,,<
nothing
-----
Mr/~gm,Vc!r,0cbmPC@Zg9jb)7=m^ppwN*Nuk){r
c ¶Z
J ; #
e j 8
] b "
# ` 4
h $ -
p n 2
L S P
B ; R
@ J D
E N <
O \ p
B y =
| 9 ;
T x [
6 o k
! L =
E K ~
>mjmz6,?A*Q)^.a:IpGP"^bK}DSXL)2F!BV|"m6/ T
a A 6
5 = p
1 i R
4 / ?
- Z (
1 " `
' 0 {
N p M
O * K
Z J $
" ( d
4 + o
f U g
i v b
U ~ L
U M h
g ^ D
2 (g
5]u*n<Ldn</9/XQyC444Va\m}W3Rf,rp"a@5cZB0
(Newlines added for readability)
Mr/~gmVc!r0cbmPC@Zg9jb)7=m^ppwN*Nuk){rZ#8"4-2PRD<p=;[k=~T
6pR?(`{MK$dogbLhDg0BZc5@a"prfR3W}m\aV444CyQX/9/ndLn*u]52g
UUif4"ZON'1-415amjmz6?A*Q)^.a:IpGP"^bK}DSXL)2F!BV|"m6KLox9
y\NJ;Sn$`bj;
-----
NEWYORKCITYBABY!
¶ ,,
, , ,
, , ,
, , ,
, , ,
, , ,
,,,,,,,,,,,,,,,, ,
, , ,
, , ,
, , ,
, , ,
, , ,
, ,,
,,,,,,,,,,,,,,,,
NEWYORKCITYBABY!
-----
/{Y!_(=-)s<e!D^<+<+1o30d>QOx9kfu?3X2I:8],t>Ye~,Y9/6;u@
] >Y
! 1 )
c 7 8
^ K &
f K 9
M } O
s _ ?
h N e
? u ,
g = s
> Q M
a 0 9
b c (
h { c
[ m *
I R %
K E >
u 5 n
W f ]
} | y
F E q
) < ;
X L S
F M |
u * Z
>XZpJ=L`+8ONRk?T7$qVr6-U^f14{>>ABEEP`Mjx&T[/&o*F=*qq{/ e
¶ < ^
+ P C
. x m
; ^ >
y 4 b
5 v `
Q B c
2 e r
a x I
3 1 Y
Q v `
w ; o
* S h
E b S
r 6 P
M ` l
% M A
- ` "
j \ s
} ~ J
$ h c
% p O
I Z Z
] N E
` 3<
x^}}SI"-a3[%7U5EV}"UM?Aov|E_yjrMt<HAQ@}QAABO&y//R0$\2p
(Newlines added for readability)
]!c^fMsh?g>abh[IKuW}F)XFuXZpJ=L`+8ONRk?T7$qVr6-U^f14{ABEE
P`Mjx&T[/&o*F=*qq{*ML<E|f5ERm{c0Q=uN_}KK71Y)8&9O?esM9(c*%
>n]yq;S|Ze^Cm>b`crIY`ohSPlA"sJcOZE3NZph~\`M`6bS;;Sb6`M`\~
hpZN3p2\$0R//y&OBAAQ}@QAHtMrjy_E|voA?MU"}VE5U7%[3a-"IS}}^
x`]I%$}j-%MrE*wQ3a2Q5y;.+
-----
%:biv+|?
¶ \+
T c ,
?{yX<//v "
i [ @
Q Tj
U8sUNl.?
%:biv+|+"@jT[[T.lNUs8UQi{yXXy{T
-----
FCf2hoYA)&*j
F ¶#
3 p (
& ~ w
; * t
39Hq{F'MmmO/ 9
5 \ D
- | }
8 c l
a 25
GKa"<0/7MG[?
FCf2hoYA)&*j#(wt9D}l5[GM7/0"aKGa8-53;&3FFCf2hoYA)&*j#(wt9D}l52c|\*~p
-----
#S^[WNk3;9v;e2\h!@CI#Il?
G g`
$ 2 \
V 9 S
m Y b
6 ) *
U ' V
[ g V
I 8 X
< T U
K ¶ C
?ozMt+xxxxutvQgkx&D9I/<v '
w K p
V y h
( R y
e P i
] ! x
Z / s
y w '
# X 4
c ~ W
Z E,
~IdXPYS.Lc49lC~vjULUBv.?
(Newlines added for readability)
#S^[WNk3;9v;e2\h!@CI#Il`\Sb*VVXUC'phyixs'4WE~Xw/!PRyKKyRP!/wX~E
.vBULUjv~Cl94cL.SYPXdI~Zc#yZ]e(VwozMt+xxxxutvQgkx&D9I//I9D&xkgQ
vtuxxxx+tMzoK<I[U6mV$G#S^[WNk3;9v;e2\h!@CI#Ilg29Y)'g8T