νƒœκ·Έ 보관물: knot-theory

knot-theory

λ…Έν‹° 상황 ν•œ μ€„μž…λ‹ˆλ‹€. μ—¬κΈ°μ—μ„œ

λ‹€μš°μ˜ 맀듭과 κ·Έ ꡐ차점 ν‘œκΈ°λ²•μ„ κ³ λ €ν•˜μ—¬ λŒ€κ΄„ν˜Έ 닀항식을 κ³„μ‚°ν•˜μ‹­μ‹œμ˜€.

더 λ§Žμ€ 기술적 μ •μ˜κ°€ μžˆμ§€λ§Œ,이 λ„μ „μ—μ„œλŠ” 맀듭 을 끈의 두 끝을 ν•¨κ»˜ μ—°κ²°ν•˜μ—¬ 물리적으둜 λ§Œλ“  κ²ƒμœΌλ‘œ μƒκ°ν•˜λ©΄ μΆ©λΆ„ ν•©λ‹ˆλ‹€. 맀듭은 3 μ°¨μ›μœΌλ‘œ μ‘΄μž¬ν•˜κΈ° λ•Œλ¬Έμ— 쒅이에 그릴 λ•Œ 맀듭 λ‹€μ΄μ–΄κ·Έλž¨ 을 μ‚¬μš©ν•©λ‹ˆλ‹€. 맀듭 λ‹€μ΄μ–΄κ·Έλž¨ 은 ꡐ차점이 μ •ν™•νžˆ 두 쀄, ν•œ 쀄과 ν•œ μ€„μž…λ‹ˆλ‹€.

μ—¬κΈ°μ—μ„œ (b)와 (c)λŠ” 같은 λ§€λ“­μ˜ λ‹€λ₯Έ λ‹€μ΄μ–΄κ·Έλž¨μž…λ‹ˆλ‹€.

쒅이에 맀듭 λ‹€μ΄μ–΄κ·Έλž¨μ„ μ–΄λ–»κ²Œ ν‘œν˜„ν•©λ‹ˆκΉŒ? 우리 λŒ€λΆ€λΆ„μ€ λ ˜λΈŒλž€νŠΈκ°€ μ•„λ‹ˆλ―€ 둜 λ‹€μŒκ³Ό 같이 μž‘λ™ν•˜λŠ” Dowker ν‘œκΈ°λ²•μ— 의쑴 ν•©λ‹ˆλ‹€.

λ§€λ“­μ—μ„œ μž„μ˜μ˜ μ‹œμž‘μ μ„ μ§€μ •ν•˜μ‹­μ‹œμ˜€. λ‹€μŒ μˆ˜μ •κ³Ό, 맀듭과 숫자 1λΆ€ν„° λ°œμƒν•  νš‘λ‹¨μ„ 따라 μž„μ˜μ˜ λ°©ν–₯으둜 이동 :이 짝수이고 ν˜„μž¬λ €κ³ ν•˜λŠ” κ²½μš°μ— 이상 짝수 κ·Έ ꡐ차, λ¬΄νš¨ν™”ν•©λ‹ˆλ‹€. λ§ˆμ§€λ§‰μœΌλ‘œ 1, 3, 5 등에 ν•΄λ‹Ήν•˜λŠ” 짝수λ₯Ό μ„ νƒν•˜μ‹­μ‹œμ˜€.

예λ₯Ό λ“€μ–΄ λ΄…μ‹œλ‹€ :

이 λ§€λ“­μ—μ„œ μš°λ¦¬λŠ” μ‹œμž‘ μ§€μ μœΌλ‘œ β€œ1”을 μ„ νƒν•˜κ³  였λ₯Έμͺ½μœΌλ‘œ μ΄λ™ν–ˆμŠ΅λ‹ˆλ‹€. λ•Œλ§ˆλ‹€ μš°λ¦¬κ°€ κ°„λ‹€ 이상 λ˜λŠ” μ•„λž˜μ— λ‘œν”„μ˜ 또 λ‹€λ₯Έ 쑰각, μš°λ¦¬λŠ” ꡐ차점을 λ‹€μŒ μžμ—°μˆ˜λ₯Ό ν• λ‹Ήν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ [3,-12]λ‹€μ΄μ–΄κ·Έλž¨μ—μ„œ ꡐ차점에 ν•΄λ‹Ήν•˜λŠ” μŠ€νŠΈλžœλ“œμ— ν•΄λ‹Ήν•˜λŠ” 짝수λ₯Ό λ¬΄μ‹œν•©λ‹ˆλ‹€ . λ”°λΌμ„œμ΄ λ‹€μ΄μ–΄κ·Έλž¨μ€λ‘œ ν‘œμ‹œλ©λ‹ˆλ‹€ [[1,6],[2,5],[3,-12],[-4,9],[7,8],[-10,11]]. 1, 3, 5, 7 λ“±μ˜ 친ꡬλ₯Ό λ‚˜μ—΄ν•˜λ©΄ μš°λ¦¬μ—κ²Œ 제곡 [6,-12,2,8,-4,-10]λ©λ‹ˆλ‹€.

μ—¬κΈ° λͺ‡ κ°€μ§€μ£Όμ˜ ν•  사항이 μžˆμŠ΅λ‹ˆλ‹€. μš°μ„ , Dowker ν‘œκΈ°λ²•μ€ μž„μ˜μ˜ μ‹œμž‘μ κ³Ό λ°©ν–₯을 선택할 수 μžˆμœΌλ―€λ‘œ 주어진 λ§€λ“­λ§ˆλ‹€ 고유 ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€ . κ·ΈλŸ¬λ‚˜, ν‘œκΈ°λ²•μ΄ 주어지면 λ§€λ“­μ˜ ꡬ쑰 (κΈ°μˆ μ μœΌλ‘œλŠ” μ£Όμš” 맀듭 ꡬ성 μš”μ†Œμ˜ λ°˜μ˜κΉŒμ§€)λ₯Ό μ™„μ „νžˆ κ²°μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λͺ¨λ“  Dowker ν‘œκΈ°λ²•μ΄ κ°€λŠ₯ν•œ 맀듭을 ν˜•μ„± ​​할 μˆ˜μžˆλŠ” 것은 μ•„λ‹ˆμ§€λ§Œμ΄ λ¬Έμ œμ—μ„œλŠ” μž…λ ₯이 μ‹€μ œ 맀듭을 λ‚˜νƒ€λ‚΄λŠ” κ²ƒμœΌλ‘œ κ°€μ • ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

λ§€λ“­μ˜ λ°˜μ‚¬ μ‚¬μ΄μ˜ λͺ¨ν˜Έμ„±μ„ ν”Όν•˜κ³  문제λ₯Ό μ‰½κ²Œ ν•΄κ²°ν•˜κΈ° μœ„ν•΄ ꡐ차 ν‘œμ‹œ λͺ©λ‘μ„ μž…λ ₯으둜 μ œκ³΅ν•©λ‹ˆλ‹€.

μ–‘μ˜ κ΅μ°¨μ—μ„œ ν•˜λ‹¨ 선은 상단 μ„ μ˜ κ΄€μ μ—μ„œ μ™Όμͺ½μœΌλ‘œ μ΄λ™ν•©λ‹ˆλ‹€. 뢀정적인 κ΅μ°¨μ μ—μ„œλŠ” 였λ₯Έμͺ½μœΌλ‘œκ°‘λ‹ˆλ‹€. 맀듭 μ£Όμœ„λ₯Ό μ΄λ™ν•˜λŠ” λ°©ν–₯을 λ°”κΎΈλŠ” 것 (즉, μ˜€λ²„ 라인과 언더 라인을 λ°˜λŒ€λ‘œν•˜λŠ” 것 )은 ꡐ차 ν‘œμ‹œλ₯Ό 바꾸지 μ•ŠμŠ΅λ‹ˆλ‹€. 이 μ˜ˆμ—μ„œ ꡐ차 ν‘œμ‹œλŠ” [-1,-1,-1,1,-1,1]μž…λ‹ˆλ‹€. 그것듀은 λ‹€μš° 컀 ν‘œκΈ°λ²•κ³Ό 같은 μˆœμ„œλ‘œ μ£Όμ–΄μ§‘λ‹ˆλ‹€. 즉 1, 3, 5, 7 번의 ꡐ차점에 λŒ€ν•œ κ²ƒμž…λ‹ˆλ‹€.

A

D

⟨D⟩

  1. κ΅μ°¨μ μ΄μ—†λŠ” μœ μΌν•œ λ£¨ν”„μ—λŠ” 닀항식 1이 μžˆμŠ΅λ‹ˆλ‹€.

  2. D

    D

    D

    (βˆ’A2βˆ’Aβˆ’2)
  3. D

μœ„μ˜ μ΄λ―Έμ§€μ—μ„œ 첫 번째 λ‹€μ΄μ–΄κ·Έλž¨μ˜ 윀곽이 ꡐ차 된 ν˜•νƒœ λŠ” 두 번째 κ·Έλ¦Ό ( μ–‘μˆ˜ ν‰ν™œν™” ) λ˜λŠ” μ„Έ 번째 κ·Έλ¦Ό ( 음수 ν‰ν™œν™” ) κ³Ό 같이 λ³€ν™˜ 될 수 μžˆμŠ΅λ‹ˆλ‹€ .

A

Aβˆ’1

아직 ν˜Όλž€μŠ€λŸ¬μ›Œ? λŒ€κ΄„ν˜Έ 닀항식을 찾으렀고 μ‹œλ„ν•˜λŠ” 예λ₯Ό λ“€μ–΄ λ³΄κ² μŠ΅λ‹ˆλ‹€ (μ°Έκ³  :이 두 개의 맀듭은 μ„œλ‘œ μ—°κ²°λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. μ΄λŸ¬ν•œ μœ ν˜•μ˜ λ‹€μ΄μ–΄κ·Έλž¨μ€ μž…λ ₯이 단일 맀듭 일 λΏμ΄λ―€λ‘œμ΄ μ±Œλ¦°μ§€μ—μ„œ 잠재적 인 μž…λ ₯μ΄λ˜μ§€λŠ” μ•ŠμŠ΅λ‹ˆλ‹€. μ•Œκ³ λ¦¬μ¦˜μ˜ 쀑간 κ²°κ³Ό.)

μš°λ¦¬λŠ” λ¨Όμ € κ·œμΉ™ 3을 μ‚¬μš©ν•©λ‹ˆλ‹€

μš°λ¦¬λŠ” μƒˆλ‘œμš΄ 맀듭 λͺ¨λ‘μ—μ„œ κ·œμΉ™ 3을 λ‹€μ‹œ μ‚¬μš©ν•©λ‹ˆλ‹€.

이 4 개의 μƒˆλ‘œμš΄ 맀듭을 첫 번째 λ°©μ •μ‹μœΌλ‘œ λŒ€μΉ˜ν•©λ‹ˆλ‹€.

이 4에 κ·œμΉ™ 1κ³Ό 2λ₯Ό μ μš©ν•˜λ©΄

자, 이것은 μš°λ¦¬μ—κ²Œ 말해

맀듭 이둠에 λŒ€ν•œ κ°„λž΅ν•œ μ†Œκ°œλ₯Ό μ™„λ£Œ ν•œ 것을 μΆ•ν•˜ν•©λ‹ˆλ‹€!

μž…λ ₯

두 λͺ©λ‘ :

  • λ‹€μš° 컀 ν‘œκΈ°λ²• (예 πŸ™‚ [6,-12,2,8,-4,-10]. ꡐ차 λ²ˆν˜ΈλŠ” 1λΆ€ν„° μ‹œμž‘ν•΄μ•Όν•©λ‹ˆλ‹€. ν•΄λ‹Ή ν™€μˆ˜ [1,3,5,7,...]λŠ” μ•”μ‹œ 적이며 μž…λ ₯으둜 제곡 ν•΄μ„œλŠ” μ•ˆλ©λ‹ˆλ‹€ .

  • λ‹€μš° 컀 ν‘œκΈ°λ²•μ— ν•΄λ‹Ήν•˜λŠ” ꡐ차점에 λŒ€ν•œ λΆ€ν˜Έ ( 1/ -1λ˜λŠ” μ›ν•˜λŠ” 경우 0/ 1λ˜λŠ” false/ trueλ˜λŠ” '+'/ '-') [-1,-1,-1,1,-1,1].

ν•œ 쌍의 λͺ©λ‘ λŒ€μ‹ μ— ν•œ 쌍의 λͺ©λ‘μ„ κ°€μ§ˆ 수 μžˆμŠ΅λ‹ˆλ‹€. [[6,-1],[-12,-1],...

μ‚°μΆœ

Aβˆ’2+5+Aβˆ’A3

[[1,-2],[5,0],[1,1],[-1,3]]

βˆ’k…k

k∈N

[0,1,0,5,1,0,-1]

A0

κ·œμΉ™

이것은 λ„μ „μž…λ‹ˆλ‹€. ν‘œμ€€ ν—ˆμ μ„ μ‚¬μš©ν•  수 μ—†μœΌλ©° Dowker ν‘œκΈ°λ²• λ˜λŠ” λŒ€κ΄„ν˜Έ 닀항식을 κ³„μ‚°ν•˜λŠ” λ„κ΅¬κ°€μžˆλŠ” λΌμ΄λΈŒλŸ¬λ¦¬λŠ” μ‚¬μš©ν•  수 μ—†μŠ΅λ‹ˆλ‹€. (μ΄λŸ¬ν•œ 라이브러리λ₯Ό ν¬ν•¨ν•˜λŠ” μ–Έμ–΄λŠ” 라이브러리 / νŒ¨ν‚€μ§€κ°€ μ•„λ‹Œ μ—¬μ „νžˆ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€).

ν…ŒμŠ€νŠΈ

// 4-tuples of [dowker_notation, crossing_signs, expected_result, description]
[
 [[],[],[[1,0]],"unknot"],
 [[2],[1],[[-1,3]],"unknot with a half-twist (positive crossing)"],
 [[2],[-1],[[-1,-3]],"unknot with a half-twist (negative crossing)"],
 [[2,4],[1,1],[[1,6]],"unknot with two half-twists (positive crossings)"],
 [[4,6,2],[1,1,1],[[1,-7],[-1,-3],[-1,5]],"right-handed trefoil knot, 3_1"],
 [[4,6,2,8],[-1,1,-1,1],[[1,-8],[-1,-4],[1,0],[-1,4],[1,8]],"figure-eight knot, 4_1"],
 [[6,8,10,2,4],[-1,-1,-1,-1,-1],[[-1,-7],[-1,1],[1,5],[-1,9],[1,13]],"pentafoil knot, 5_1"],
 [[6,8,10,4,2],[-1,-1,-1,-1,-1],[[-1,-11],[1,-7],[-2,-3],[1,1],[-1,5],[1,9]],"three-twist knot, 5_2"],
 [[4,8,10,2,12,6],[1,1,-1,1,-1,-1],[[-1,-12],[2,-8],[-2,-4],[3,0],[-2,4],[2,8],[-1,12]],"6_3"],
 [[4,6,2,10,12,8],[-1,-1,-1,-1,-1,-1],[[1,-10],[2,-2],[-2,2],[1,6],[-2,10],[1,14]],"granny knot (sum of two identical trefoils)"],
 [[4,6,2,-10,-12,-8],[1,1,1,1,1,1],[[1,-14],[-2,-10],[1,-6],[-2,-2],[2,2],[1,10]],"square knot (sum of two mirrored trefoils)"],
 [[6,-12,2,8,-4,-10],[-1,-1,-1,1,-1,1],[[1,-2],[1,6],[-1,10]],"example knot"]
]

μ™ΈλΆ€ μžμ›

도전에 ν•„μš”ν•˜μ§€λŠ” μ•Šμ§€λ§Œ κ΄€μ‹¬μ΄μžˆλŠ” 경우 :


μƒŒλ“œ λ°•μŠ€ κ²Œμ‹œλ¬Ό : 1 , 2

Dowker ν‘œκΈ°λ²•μ˜ μ •μ˜μ—μ„œ μ‹€μˆ˜λ₯Ό μž‘μ€ @ChasBrown 및 @ H.Pwizμ—κ²Œ κ°μ‚¬λ“œλ¦½λ‹ˆλ‹€.



λ‹΅λ³€

K (ngn / k) , 196 193 λ°”μ΄νŠΈ

{!N::2*n:#x;{+/d,'x,'d:&:'-2!(|/n)-n:#:'x}(+/1-2*s){j::+,/y;,/(&0|2*x;(-1+#?{x[j]&:x@|j;x}/!N){-(d,x)+x,d:&4}/,1;&0|-2*x)}'(N!{(x,'|1+x;x+/:!2)}'((2*!n),'-1+x|-x)@'0 1=/:x>0)@'/:+~(y<0)=s:!n#2}

온라인으둜 μ‚¬μš©ν•΄λ³΄μ‹­μ‹œμ˜€!


λ‹΅λ³€

Brain-Flak , 1316 λ°”μ΄νŠΈ

(({})<({()<(({}<>))><>}){(({})[()()]<{([{}]({})<>({}<>))}{}(([({}<>)]<<>({}<>)<>((({})<<>{({}<>)<>}<>>))>)){({}<>)<>}<>{}(({}<{}(({}<{({}<>)<>}>))>))<>{({}<>)<>}>)}<>>){(({}){}()<({}<>)>)<>{}(({}){}<>)<>}<>{}{}(()){(<({}<({}<>)>)>)<>((){[()](<(({})<>){({}[({})]<>({}<>))}{}({}<>({}<{}<>{({}<>)<>}>)[()])<>({}({})[()])(([()]{()(<({}[({})]())>)}{})<{(<{}{}>)}{}><>{()((<({}()[({}<>)])<>>))}{}<{}{}>)((){[()]<({}()<({}<({}<<>({()<({}<>)<>>}<>){({}[()]<(({})<({()<({}<>)<>>})<>>)<>{({}[()]<<>({}<>)>)}{}>)}<>>)<>>)>)((){[()](<{}(({})<<>(({})<(<<>({}<<>({}<(()()){({}[()]<([{}]()<>)<>({}<<>{({}({})<>[({}<>)])}{}{}>){({}<>)<>}<>>)}{}>{})>)>)<>{}{({}<>)<>}<>([({}<>)]<((()))>)(())<>({}<>)<>{}({}[()]){<>({}<<>(()()){({}[()]<({}<<>{({}<>)<>}>){({}[({})]<>({}<>))}{}(({})<<>({}<>)<>([{}])>)>)}{}{}>)<>({}<(({})())>[()]<>)}{}({}<<>{}([{}]()<{({}<>)<>}>){({}({})<>[({}<>)])}{}{}>){({}<>)<>}<>{}{}{}>{})>)>)}{}){(<{}(({})<<>(({}{})<<>(<({}<>)>)<>{}{({}<>)<>}<>>(({}){}){})>)>)}>}{}){(<{}([{}]<({}<<>([{}]()<>)<>({}<<>{({}({})<>[({}<>)])}{}{}>){({}<>)<>}<>>({})({}){})>)>)}{}>)}{}){{}(([{}]){}<>{}{}<<>({}<>{}){([{}]({}()()<{}({}<>)(())<>>))}{}{}{}>{})(())<>{{}({}<>)(())<>}(<>)<>}{}}{}{}<>{}{}({}<{{}({}<>)(())<>}<>{{}{((<(())>))}{}}{}{{}({}<>)(())<>}>)<>{{}({}<(<()>)<>([]){{}({}<>)(())<>([])}{}>)<>{{}({}<>)<>}{}{}({}<>)<>}<>

온라인으둜 μ‚¬μš©ν•΄λ³΄μ‹­μ‹œμ˜€!

λ‚œ 아무것도 ν›„νšŒν•˜μ§€ μ•ŠλŠ”λ‹€. μž…λ ₯은 ν‰ν‰ν•œ 쌍의 λͺ©λ‘μž…λ‹ˆλ‹€.

# Part 1: extract edges
(({})<

({()<(({}<>))><>}){

(({})[()()]<

{([{}]({})<>({}<>))}{}(([({}<>)]<<>({}<>)<>((({})<<>{({}<>)<>}<>>))>)){({}<>)<>}

<>{}(({}<{}(({}<{({}<>)<>}>))>))<>{({}<>)<>}

>)}

<>>){(({}){}()<({}<>)>)<>{}(({}){}<>)<>}<>

{}{}(())

# Part 2: Compute bracket polynomial
{

  # Move degree/sign to other stack
  (<({}<({}<>)>)>)<>

  # If current shape has crossings:
  ((){[()](<

    # Consider first currently listed edge in set
    # Find the other edge leaving same crossing
    (({})<>){({}[({})]<>({}<>))}{}

    # Move to top of other stack
    # Also check for twist
    ({}<>({}<{}<>{({}<>)<>}>)[()])

    # Check for twist in current edge
    <>({}({})[()])

    (

      # Remove current edge if twist
      ([()]{()(<({}[({})]())>)}{})<{(<{}{}>)}{}>

      # Remove matching edge if twist
      <>{()((<({}()[({}<>)])<>>))}{}<{}{}>

    # Push 1 minus number of twists from current vertex.
    )

    # If number of twists is not 1:
    ((){[()]<

      # While testing whether number of twists is 2:
      ({}()<

        # Keep sign/degree on third stack:
        ({}<({}<

          # Duplicate current configuration
          <>({()<({}<>)<>>}<>){({}[()]<(({})<({()<({}<>)<>>})<>>)<>{({}[()]<<>({}<>)>)}{}>)}

        # Push sign and degree on separate stacks
        <>>)<>>)

      # If number of twists is not 2: (i.e., no twists)
      >)((){[()](<{}

        # Make first copy of sign/degree
        (({})<<>(({})<

          # Make second copy of sign/degree
          (<<>({}<<>({}<

            # Do twice:
            (()()){({}[()]<

              # Prepare search for vertex leading into crossing on other side
              ([{}]()<>)

              # While keeping destination on third stack:
              <>({}<

                # Search for matching edge
                <>{({}({})<>[({}<>)])}{}

              # Replace old destination
              {}>)

              # Move back to original stack
              {({}<>)<>}<>

            >)}{}

          # Add orientation to degree
          >{})>)>)

          # Move duplicate to left stack
          <>{}{({}<>)<>}<>

          # Create "fake" edges from current crossing as termination conditions
          ([({}<>)]<((()))>)(())<>

          # Create representation of "top" new edge
          ({}<>)<>{}({}[()])

          # While didn't reach initial crossing again:
          {

            # Keep destination of new edge on third stack
            <>({}<<>

              # Do twice:
              (()()){({}[()]<

                # Search for crossing
                ({}<<>{({}<>)<>}>){({}[({})]<>({}<>))}{}

                # Reverse orientation of crossing
                (({})<<>({}<>)<>([{}])>)

              >)}{}

              # Remove extraneous search term
              {}

            # Push new destination for edge
            >)

            # Set up next edge
            <>({}<(({})())>[()]<>)

          }

          # Get destination of last edge to link up
          {}({}<

            # Find edge headed toward original crossing
            <>{}([{}]()<{({}<>)<>}>){({}({})<>[({}<>)])}

          # Replace destination
          {}{}>)

          # Move everything to left stack
          {({}<>)<>}

          # Clean up temporary data
          <>{}{}{}

        # Push new sign/degree of negatively smoothed knot
        >{})>)

      # Else (two twists)
      # i.e., crossing is the twist in unknot with one half-twist
      >)}{}){(<{}

        # Copy sign and degree+orientation
        (({})<<>(({}{})<

          # Move sign to left stack
          <>(<({}<>)>)

          # Move copy of configuration to left stack
          <>{}{({}<>)<>}

        # Add an additional 4*orientation to degree
        <>>(({}){}){})>)

      >)}

    # Else (one twist)
    >}{}){(<

      # Invert sign and get degree
      {}([{}]<({}<

        # Search term for other edge leading to this crossing
        <>([{}]()<>)

        # With destination on third stack:
        <>({}<

          # Find matching edge
          <>{({}({})<>[({}<>)])}{}

        # Replace destination
        {}>)

        # Move stuff back to left stack
        {({}<>)<>}<>

      # Add 3*orientation to degree
      >({})({}){})>)

    >)}{}

  # Else (no crossings)
  >)}{}){{}

    # If this came from the 2-twist case, undo splitting.
    # If this came from an initial empty input, use implicit zeros to not join anything
    # New sign = sign - 2 * next entry sign
    (([{}]){}<>{}{}<

      # New degree = average of both degrees
      <>({}<>{})

      # Find coefficient corresponding to degree
      {([{}]({}()()<{}({}<>)(())<>>))}{}{}

    # Add sign to coefficient
    {}>{})

    # Move rest of polynomial back to right stack
    (())<>{{}({}<>)(())<>}

    # Set up next configuration
    (<>)<>

  }{}

}{}{}<>{}

# Step 3: Put polynomial in correct form

# Keeping constant term:
{}({}<

  # Move to other stack to get access to terms of highest absolute degree
  {{}({}<>)(())<>}<>

  # Remove outer zeros
  {{}{((<(())>))}{}}

  # Move back to right stack to get access to lower order terms
  {}{{}({}<>)(())<>}

>)<>

# While terms remain:
{

  # Move term with positive coefficient
  {}({}<(<()>)<>([]){{}({}<>)(())<>([])}{}>)<>{{}({}<>)<>}{}

  # Move term with negative coefficient
  {}({}<>)<>

}<>

λ‹΅λ³€