큐브를 평평하게


17

3D 도형을보고 2 차원이 많다고 생각하십니까? 3D를 1D로 만들어 보자! (내가 무엇을했는지 보아?)

직무

큐브의 2D 표현 (아래 레이아웃)이 주어지면 포인터를 기준으로 단일 문자열로 전개하십시오.

큐브

이것은 ,모서리 가없는 포인터 ( )와 포인터 ( )로 채워진 큐브의 레이아웃입니다 <>v^/. 탐색 포인터 (NP)는 표시된 곳에서 프로그램을 시작합니다.

         | NP begins here, moving right.
         V
         >,,,,,,,,,,,,,,,,,,v
        ,                  ,,
       ,                  , ,
      ,                  ,  ,
     ,                  ,   ,
    ,                  ,    ,
   ,                  ,     ,
  ,                  ,      ,
 ,                  ,       ,
/,,,,,,,,,,,,,,,,,,/        /
,                  ,       ,
,                  ,      ,
,                  ,     ,
,                  ,    ,
,                  ,   ,
,                  ,  ,
,                  , ,
,                  ,,
^,,,,,,,,,,,,,,,,,,<

NP는 시작부터 모서리에 닿을 때까지 계속 오른쪽으로 이동합니다. 각 모서리에는 포인터로 모서리를 재정의하지 않는 한 NP가 새 방향을 가리 키도록하는 기본 방향이 있습니다. 위의 다이어그램에 표시되어 있습니다. 프로그램의 포인터는 v^<>/( /레이아웃으로 인해 아래로 또는 위로 점으로 인해 둘 사이에 혼란이 발생하지 않습니다)

NP가 기호에 도달하면 이동이 멈 춥니 다 (예, 이것이 멀티 바이트 문자라는 것을 알고 처리하십시오). 포인터, no-op ( ,) 및 기호를 제외한 각 문자가 최종 출력 문자열에 추가됩니다 .

입력

입력의 레이아웃과 일치하는 여러 줄 문자열입니다 CUBE 범위에있는 문자로 대체 공백이 아닌 문자로 0x210x7E적어도 EOF의 인스턴스를.

다음과 같이 입력 할 수 있습니다.

  • 여러 줄 문자열
  • 각 줄이 목록의 새 요소 인 문자열 목록
  • 각 줄이 목록으로 분류되는 2D 문자열 목록

산출

큐브는 단일 행 문자열로 평평 해졌습니다.

조건부 포인터

NP는에서 시작하는 "조건부"포인터라는 것에 사용되는 부울 값을가집니다 true.

"조건부"포인터 ( ?)는 NP 값 이 사용될 때마다 true그리고 그 false때마다 NP 값을 교대로 표시하는 포인터입니다 . 조건부 포인터는 3 개의 트랙 (3 포인트 코너)이 만나는 코너에서만 사용할 수 있습니다. trueNP가 조건부 포인터에 도달하면 값이 CUBE 이미지에서 기본 방향으로 이동하고 지시 된 NP 값이 토글됩니다. 따라서 켜져 있으면 falseNP가 기본이 아닌 방향을 따릅니다.

NP가 조건부로 향하는 경우는 없으며 기본 방향은 방금 나온 방향입니다. 이것이 앞면의 왼쪽 모서리이고 NP 값이 현재라고 상상해보십시오 true.

      NP direction
      /
     ,
    ,
,,,?
   ,
   ,

기본 방향으로 원래 상태로 돌아 가기 때문에 이런 일이 발생하지 않습니다.

조건부 포인터가 3 점 모서리에있는 경우 :

  • 마지막 문자열에 추가되지 않습니다
  • NP 값이 truefalse 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

문제 없습니다 :) 정말 멋진 도전 btw! :)
HyperNeutrino

@HyperNeutrino 현상금이 시작된 지금 죄책감을 느낍니다. 이것은 내가 일하고 있었지만 포기하고 게시하기로 결정한 프로젝트였습니다. 그래서 나는 오래된 솔루션을 닦고 현상금에 게시 할 수 있습니다! 비록 주말까지 응답이 없다면, 그렇게 할 것입니다
caird coinheringaahing

@RandomUser 지금 가서 답변을 게시하면 사람들이 이길만한 것이 있으면 답변을 더 많이받습니다. 유죄를 인정하지 마십시오. 5 개의 답변 투표에 해당합니다.
programmer5000

@ programmer5000 아직 끝나지 않았고 골프장 근처가 아니었지만 며칠 안에
끝내야합니다

@RandomUser derp
Stephen

답변:


8

Python 3 , 1558 1553 1419 1417 1347 1258 바이트

L=list
M=map
Q=len
m=~0
G,H,J,K,Y,I=[0,1],[0,m],[1,0],[m,0],[m,1],[1,m]
def U(p,c,u,a):
 global F;F+=c*a
 try:u=[G,J,I,I,Y,K,H][[[0,h],[0,w],[h,w],[h,e],[h,0],[l,0],[l,e]].index(p)]
 except:0
 p=L(M(sum,zip(p,u)));return F,p,u
def f(a):
 global w,h,e,l,F;a=L(M(L,a.split('\n')));p=0,0
 for(i)in range(Q(a[0])):
  if' '<a[0][i]:p=0,~-i,;break
 c,P,F,w,h,e,l,t=a[p[0]][p[1]],'><^v/','',~-Q(a[0]),Q(a)//2,~-Q(a[m]),~-Q(a),{'v':J,'^':K,'>':G,'<':H}
 C,u,s,r,E=[[0,w],[0,h],[h,w],[h,e],[h,0],[l,0],[l,e]],[G,t.get(c,I)][c in P],0,1,[[0,w-1],[1,w-1],[1,w],[~-h,1],[h,1],[e-2,-~e],[e-2,e]]
 while'¶'!=c:
  k=p,c,u
  g=L(M(sum,zip(p,u)))
  if s:s=0;u=u[::m]
  if(c)in' ,':F,p,u=U(*k,0)
  elif(c)in P:
   if(p)in C:u=[t[c],[Y,I][p[1]==w]][c=='/'];p=g
   elif(p)in E:F,p,u,s=[(F,g,t[c],1),U(*k,1)+s][c=='/']
   else:
    o=t.get(c,u)
    try:n=a[p[0]+o[0]][p[1]+o[1]];u=[u,o][(' '<n)*~(p[0]<1<'^'==c)]
    except:0
    if u!=t.get(c):F,p,u=U(*k,1)
    else:p=g
  elif'?'==c:
   F+=c*-~(p in C!=F[m]!=c);r=~r
   if~r<1and(p)in[[0,w],[h,e],[h,0],[l,e]]:u=[[I,H][u!=G],[H,J][u!=K],[G,J][u!=K],[K,Y][u!=I]][[[0,w],[h,e],[h,0],[l,e]].index(p)];p=L(M(sum,zip(p,u)))
   elif-1>r:F,p,u=U(*k,0)
  else:F,p,u=U(*k,1)
  c=a[p[0]][p[1]]
 for(c)in'?, ':F=F.replace(c,'')
 return F

온라인으로 사용해보십시오!

@sagiksp 덕분에 5 바이트 절약

@ Mr.Xcoder와 @totallyhuman 덕분에 20 바이트 절약

다양한 골프 트릭으로 128 바이트 절약

@JonathanFrech 덕분에 72 바이트 절약

@ Mr.Xcoder 덕분에 추가 89 바이트를 절약했습니다.


좋은 골프, 당신은 몇 가지를보고 싶었지만, not(p[0] == 0)그냥있을 수 있습니다 p[0]!=0.
sagiksp

단일 바이트 만 들여 쓰기 수준을 다르게하여 많은 바이트를 줄일 수 있습니다.
Uriel

@Uriel 탭은 실제로 space다음으로 이동합니다 \t(탭) space\t등. SE가 게시물을 형식화하는 방식
caird coinheringaahing

@Ilikemydog oh great
Uriel

왜 들여 쓰는가?
Shaggy
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.