3D 도형을보고 2 차원이 많다고 생각하십니까? 3D를 1D로 만들어 보자! (내가 무엇을했는지 보아?)
직무
큐브의 2D 표현 (아래 레이아웃)이 주어지면 포인터를 기준으로 단일 문자열로 전개하십시오.
큐브
이것은 ,
모서리 가없는 포인터 ( )와 포인터 ( )로 채워진 큐브의 레이아웃입니다 <>v^/
. 탐색 포인터 (NP)는 표시된 곳에서 프로그램을 시작합니다.
| NP begins here, moving right.
V
>,,,,,,,,,,,,,,,,,,v
, ,,
, , ,
, , ,
, , ,
, , ,
, , ,
, , ,
, , ,
/,,,,,,,,,,,,,,,,,,/ /
, , ,
, , ,
, , ,
, , ,
, , ,
, , ,
, , ,
, ,,
^,,,,,,,,,,,,,,,,,,<
NP는 시작부터 모서리에 닿을 때까지 계속 오른쪽으로 이동합니다. 각 모서리에는 포인터로 모서리를 재정의하지 않는 한 NP가 새 방향을 가리 키도록하는 기본 방향이 있습니다. 위의 다이어그램에 표시되어 있습니다. 프로그램의 포인터는 v^<>/
( /
레이아웃으로 인해 아래로 또는 위로 점으로 인해 둘 사이에 혼란이 발생하지 않습니다)
NP가 ¶
기호에 도달하면 이동이 멈 춥니 다 (예, 이것이 멀티 바이트 문자라는 것을 알고 처리하십시오). 포인터, no-op ( ,
) 및 ¶
기호를 제외한 각 문자가 최종 출력 문자열에 추가됩니다 .
입력
입력의 레이아웃과 일치하는 여러 줄 문자열입니다 CUBE 범위에있는 문자로 대체 공백이 아닌 문자로 0x21
에 0x7E
와 적어도 EOF의 인스턴스를.
다음과 같이 입력 할 수 있습니다.
- 여러 줄 문자열
- 각 줄이 목록의 새 요소 인 문자열 목록
- 각 줄이 목록으로 분류되는 2D 문자열 목록
산출
큐브는 단일 행 문자열로 평평 해졌습니다.
조건부 포인터
NP는에서 시작하는 "조건부"포인터라는 것에 사용되는 부울 값을가집니다 true
.
"조건부"포인터 ( ?
)는 NP 값 이 사용될 때마다 true
그리고 그 false
때마다 NP 값을 교대로 표시하는 포인터입니다 . 조건부 포인터는 3 개의 트랙 (3 포인트 코너)이 만나는 코너에서만 사용할 수 있습니다. true
NP가 조건부 포인터에 도달하면 값이 CUBE 이미지에서 기본 방향으로 이동하고 지시 된 후 NP 값이 토글됩니다. 따라서 켜져 있으면 false
NP가 기본이 아닌 방향을 따릅니다.
NP가 조건부로 향하는 경우는 없으며 기본 방향은 방금 나온 방향입니다. 이것이 앞면의 왼쪽 모서리이고 NP 값이 현재라고 상상해보십시오 true
.
NP direction
/
,
,
,,,?
,
,
기본 방향으로 원래 상태로 돌아 가기 때문에 이런 일이 발생하지 않습니다.
조건부 포인터가 3 점 모서리에있는 경우 :
- 마지막 문자열에 추가되지 않습니다
- NP 값이
true
와false
NP가 지시 된 후 후에 됩니다. - NP 값이
true
인 경우 NP가 기본 방향으로 리디렉션됩니다 . 그렇지 않으면 기본값 이 아닌 것으로 리디렉션됩니다 방향으로 .
트랙 또는 2 점 코너에있는 경우 :
- 마지막 문자열에 추가됩니다
- 값 은 토글됩니다
- IP 는 지시 되지 않습니다
조심해야 할 것
포인터가 트랙에 있고 공백을 가리 키지 않으면 NP가 새 트랙으로 보내지고 다음 문자열을 마지막 문자열에 추가하고 NP를 오른쪽으로 90도 회전시킵니다.
abcd
>e
g f
/
NP direction
평평 해지다
(...) gef (...)
아니
(...) g>def (...)
/
그렇게 공간으로 리디렉션 수 있으므로 포인터가이 경우에 NP를 리디렉션하지 않습니다
f
e
> ab/d
될 것이다 ab/def
규칙
- 큐브의 너비, 높이 및 깊이는 변경 될 수 있습니다
- 큐브의 높이와 깊이는 항상 동일하고 너비의 절반이되므로 너비는 항상 균일합니다.
- 너비는 6에서 60 사이 (포함)입니다.
¶
NP가 도달 할 수 있는 EOF ( ) 가 항상 있습니다 . 예를 들어 큐브<¶>
에는 NP가 큐브에 도달 할 수 없으므로 큐브에는 이와 같은 것이 없습니다.- 큐브의 트랙에 공백을 삽입 할 수 없으므로 마지막 문자열에는 공백이 없어야합니다.
- 포인터가 코너 중 하나가 아닌 트랙 중 하나에 배치되고 NP가 공백으로 향하게되면 NP가 일정하게 유지되고 문자가 최종 문자열에 추가됩니다.
- 그러나 포인터가 트랙에 유지되면 NP가 지시되고 포인터 문자가 추가되지 않습니다.
- no-ops (
,
)는 최종 문자열에 추가되지 않으므로 최종 문자열에는 포함되지 않아야합니다,
. - 입력이 올바르다 고 가정 할 수 있습니다.
- 이것은 코드 골프 이므로 바이트 단위의 가장 짧은 코드가 승리합니다!
예
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