나의 큐브 맞추는 방법은 루빅스 큐브 맞추기 정리로 완전히 완성이 되어 더 이상 추가할 게 없을 것 같은데 계속 큐브를 이리저리 돌리면서 새로운 방법을 찾는 내 모습이 큐브 깍는 노인 같다.

“노인장, 거 다 된 것 같소. 큐브 이리 내 놓으시오.”

“다 된 것 같아도 언제나 새로운 것이 번쩍이며 나타나는 게 세상의 이치요.”

노인은 막무가내였다.

큐브를 깍으면서 새로운 동작을 발견하였다. 이 새로운 동작들을 큐브 깍기 동작이라고 명명한다. 왜냐하면 큐브를 깍는 것 같은 동작이기 때문이다. 이 동작들로부터 기존 동작에서 제자리회전하는 코너조각을 달리할 수 있다. B2 동작이 B 동작과 다른 코너조각을 제자리회전시키는 것처럼.

1 큐브 깍기

큐브 깍기 동작은 윗면, 아랫면, 왼쪽면, 오른쪽면을 인접한 순서로 모두 90도씩 같은 방향으로 돌리는 걸 말한다. 이게 꼭 곶감 깍는 것과 닮았다고 해서 큐브 깍기라고 이름 붙였다고 안드로메다 은하에 전해지고 있다.

여러 큐브 깍기 동작을 일반적으로 표시하기 위해서 P<S><N>_<L|R>[']로 표현하자. S는 시작면이고 N은 횟수이다. '은 역동작 표시이다. L은 시계방향, R은 반시계방향으로 면들을 순차적으로 돌린다는 말이다. 시작면은 숫자로 표시하는데 윗면은 1, 왼쪽면은 2, 아랫면은 3, 오른쪽면은 4이다.

이로써 P25_R은 왼쪽면-아랫면-오른쪽면-윗면-왼쪽면 순으로 각면을 시계방향으로 돌리는 걸 말한다. 면 순서와 면을 돌리는 방향은 서로 반대이다. 면 순서가 시계방향이면 면들을 돌리는 방향은 반시계방향이고, 면 순서가 반시계방향이면 면들을 돌리는 방향은 시계방향이다.

P25_R = L'-D'-R'-U'-L'
P25_R' = L-U-R-D-L

2 큐브 깍기의 효과

큐브 깍기를 하는 중에 보면 앞면의 코너조각 중 시작 코너조각이 다른 코너조각 자리로 점프하고 있는 걸 볼 수 있다. 그래서 다 돌면 그 시작 코너조각은 원래 자리 근처로 오고 다른 코너조각들도 원래 자리에 있게 된다. 반면, 모서리조각들은 면 순서 방향으로 순환한다.

횟수가 4이면 시작면 모서리조각만 딴 데서 온 조각이 들어가 있고 나머지 모서리조각 자리에는 면 순서 방향으로 한 칸 씩 이동한 다른 모서리조각이 들어 있다. 그리고 코너조각들은 모두 원래 자리에 있다.

횟수가 5이면 모서리조각들은 모두 면 순서 방향으로 한 칸 씩 이동하고 시작면 코너조각 자리 두 개 중 시작 코너조각은 뒷면 코너조각이 들어 있고 다른 코너조각 자리는 시작 코너조각이 들어 있다.

’위와 같이 해 놓고 A, B, C 동작을 한다면’이 이 글의 주제이다. 코너조각은 그대로 있고 모서리조각은 이동해 있기 때문에 이 상태에서 A, B, C 동작을 하면 기존 동작과는 다른 코너조각이 제자리회전하는 효과를 얻을 수 있다. 물론 이 때 A, B, C 동작이 바꾸는 자리에는 다른 데서 온 조각이 없어야 한다.

3 새로운 동작

A_L 동작을 위한 큐브 깍기는 P34_(L|R)P35_R, P25_L이 가능하다. 하지만 이 중 두 가지는 기존 동작에서 만들 수 있는 변화를 만드니 쓸모없다. 나머지 두 개는 A_R 동작의 것과 함께 서로 호환이 되기 때문에 둘 중 더 간단한 것인 P34_L을 고른다. 마찬가지로 A_R을 위한 큐브 깍기는 P34_R이 된다. 최종 동작을 A2_LA2_R로 명명한다.

A2_L  = P34_L-A_L-P34_L'
A2_R  = P34_R-A_R-P34_R'
A2_L' = P34_L-A_L'-P34_L'
A2_R' = P34_R-A_R'-P34_R'

이 동작들은 모두 그에 대응하는 A 동작과 같은 코너조각을 제자리회전시킨다. 하지만 A 동작을 했을 때처럼 바뀌지 않는 모서리조각을 아랫면이 되도록 큐브를 돌려놓고 보면 아랫면 코너조각들이 둘 모두 제자리회전을 한 걸 알 수 있다. 이건 A 동작으로 한 번에 만들 수 없다.

B_L 동작도 같은 방식으로 큐브 깍기를 찾아 보면 P44_RP45_L이 나온다. 하지만 P44_RP45_L은 앞서 A_L에서처럼 서로 호환이 되지 않는 변화를 만든다. 이 두 큐브 깍기는 B_LB2_L의 관계와 같은 것이다. 재미있게도 P45_L-B_L-P45_L'P44_L-B2_L-P44_L'은 효과만 같은 게 아니라 그 동작이 완전히 같다. 따라서 우리는 B_L 동작에 대해서는 P44_R을, B2_L 동작에 대해서는 P44_L을 취한다. 이 최종 동작을 각각 B3_L, B4_L이라고 명명한다.

B3_L  = P44_R-B_L-P44_R'
B3_R  = P24_L-B_R-P24_L'
B4_L  = P44_L-B2_L-P44_L'
B4_R  = P24_R-B2_R-P24_R'
B3_L' = P44_R-B_L'-P44_R'
B3_R' = P24_L-B_R'-P24_L'
B4_L' = P44_L-B2_L'-P44_L'
B4_R' = P24_R-B2_R'-P24_R'

이제 C_L 동작을 보자. 윗면 모서리조각과 아랫면 왼쪽 코너조각이 바뀌지 않는다. 따라서 P14_(L|R)P25_L이나 P35_R이 될 것이다. 이 중 P14_R은 기존 것으로 만들 수 있는 것이 나오므로 쓸모가 없다. 나머지 세 개는 서로 호환이 되는데 다음에 얘기할 이유로 P35_R을 선택한다. 그리고 최종 동작을 C2_L이라고 명명한다.

C2_L  = P35_R-C_L-P35_R'
C2_R  = P35_L-C_R-P35_L'
C2_L' = P35_R-C_L'-P35_R'
C2_R' = P35_L-C_R'-P35_L'

4 큐브 깍기의 유추

언제 저 공식을 쓸지, 큐브를 어떻게 놓고 저 공식을 써야 할지 머리가 아플 것이다. 그러나 여기에도 규칙은 존재한다. 공식을 외울 필요도 없다. 참으로 우주는 경이롭다.

큐브 깍기가 포함된 동작들은 기존 동작들과 모서리조각의 움직임은 같고, 바뀌지 않는 코너조각의 위치(또는 바뀌는 세 코너조각의 위치)가 다를 뿐이다. 그러므로 코너조각 위치는 무시하고(얼마만큼 제자리회전시켜야 하는지는 알고) 모서리조각만을 보고 기존 동작 중 어떤 것을 적용할지 판별한다. 예를 들어, 같은 모서리조각 움직임을 위해서는 A_LA_R', B_LB2_L, C_LC_R' 같이 항상 두 가지 동작을 할 수 있다. 둘 중 어느 것을 적용할지는 바뀌지 않아야 할 코너조각의 위치에 따라 결정되는데 일단 그 동작을 적용할 수 있도록 큐브를 돌려 잡는다.

그리고 코너조각을 살피고 기존 동작을 쓰면 안 되는 위치에 바뀌지 않아야 할 코너조각이 있을 경우 그 코너조각에게 ‘너 왜 여깄어!’ 하며 화를 내 주고 그 코너조각과 인접한 코너조각 자리 중 거기 있었으면 기존 동작으로 되는 코너조각 자리를 찾는다. 그런 후에 아까 그 코너조각에게 ‘네가 여기 있었으면 됐잖아!’ 하고 다그치며 그 코너조각이 인접한 그 코너조각 자리에 위치하도록 큐브를 돌려 잡는다. 여기에서 그 코너조각이 거기 있었으면 했을 동작이 A나 B 동작이면 바로 그 동작이 나중에 해야 할 동작이다. 만약 C 동작이면 그 동작이 아닌 위에서 말한 두 가지 중 다른 하나를 나중에 해야 한다.

그리고 그 코너조각 자리와 그 당돌한 코너조각이 있는 면을 시작면으로 해서 큐브를 돌린 방향과 반대 방향으로 큐브 깍기(A, B는 4-깍기, C만 5-깍기)를 시작한다. 그리고 윗 문단에서 결정한 기존 동작을 하고 큐브 깍기 역동작을 하면 된다. 참 쉽죠?

5 큐브 깍기의 의의

이제 큐브 깍기를 통해서 바뀔 코너조각이 어디든 상관이 없어지므로 코너조각의 제자리회전 값과 그에 따른 코너조각의 순환방향만 신경 쓰면 된다. 예를 들면, A 동작에서 코너조각을 1/3만큼 회전시키려면 모서리조각은 시계반대방향으로 순환해야 한다.

네 코너조각의 제자리회전 상태는 어떤 상태든 두 번의 A, B, C 동작으로 맞춤 상태로 만들 수 있다. 예를 들어, 000011102220으로, 1110은 두 2220으로, 12121110101102222202으로 0000을 만들 수 있다. 그리고 한번에 풀려면 모서리조각 하나는 위치와 제자리회전 상태가 모두 맞춰진 상태여야 한다. 따라서 [**** 0000 1111]이나 [**** 2222 1111]만 아니면 두 번만에 큐브를 맞출 수 있을 것 같다고 생각했으나 아직 모르겠다. 아래에 서술하는 CB 동작을 써도 안 되는 게 있는 것 같다.

6 보너스 동작

“신에게는 아직 보너스 동작이 남아 있사옵니다.”

“그냥 하지 마!”

이러다가 안 끝날 것 같다.

C 동작은 A 동작에서 아랫면 모서리조각이 변하지 않는 것을 이용한 것이다. B 동작은 오른쪽면이나 왼쪽면의 모서리조각이 변하지 않는다. 따라서 이에 대한 C 동작을 만들 수 있지 않을까. 그래서 나온 것이 바로 CB 동작이라고 이름 붙인 것이다. 간단하다. 윗면과 아랫면을 오른쪽이나 왼쪽으로 돌리고 B나 B2 동작을 하면 된다.

CB_L   = z'-U-D'-B_L-D-U'-z
CB_R   = z-U'-D-B_R-D'-U-z'
CB2_L  = z'-U-D'-B2_L-D-U'-z
CB2_R  = z-U'-D-B2_R-D'-U-z'
CB_L'  = z'-U-D'-B_L'-D-U'-z
CB_R'  = z-U'-D-B_R'-D'-U-z'
CB2_L' = z'-U-D'-B2_L'-D-U'-z
CB2_R' = z-U'-D-B2_R'-D'-U-z'

이 새로운 동작도 C 동작처럼 코너조각을 1/3(2/3)만큼 회전시키려면 모서리조각은 시계방향(시계반대방향)으로 순환해야 한다. 이것만 빼면 B3나 B4와 유사하다. B나 B2로 풀 수 없게 ‘너 왜 거기 있어?’ 하는 것을 해결하는 것은 B3나 B4와 같은데 기존과 코너조각 제자리회전 값이 다른 것이다. 왜 이런 비장의 무기를 ‘너 왜 거기 있어?’ 하는 것에만 주었을까?

이 동작을 하려면 먼저 모서리조각만 보고 기존 동작을 할 방향으로 큐브를 돌려 잡는다. 여기서 당돌한 코너조각이 B나 B2 동작을 하는 것을 방해한다면 원하는 코너조각의 제자리회전 값을 따져 보자. 만약 B나 B2 동작의 제자리회전 값과 다르다면 CB를 해야 한다. 그렇다면 그 당돌한 코너조각을 대각선 방향으로 보냈을 때 B나 B2의 어느 동작을 하면 되는지 보고 그 동작의 역동작을 나중에 할 것이다.

그리고 큐브를 180도 돌려 잡는다. 변하지 않을 모서리조각과 반대방향으로 윗면과 아랫면을 돌리고 이동한 면을 정면에 보이게 한 후에 윗문단에서 말한 그 역동작을 취한다. 그리고 다시 돌아오면 된다. 참 쉽죠?

이 동작들이 만들어 내는 조각의 이 움직임을 어디서 많이 본 것 같을 수 있다. 그렇다면 거짓말. 아무도 기억하고 있지 않을 것을… 이 움직임은 바로 루빅스 큐브 공식 없이 맞추기 글의 부록에서 A 동작(그 때는 그런 이름이 없었지만)과 함께 소개한 9-12번 동작이 만들어 내는 움직임이다.

7 야바위

글을 다 쓰고 나니 그냥 두 코너조각의 위치를 잠깐 바꾸면 되지 않을까란 생각이 들었다. 이 쉬운 걸… 그러나 우주는 큐브 깍기를 원했으리라.

아랫면 두 코너조각의 자리를 맞바꾼다고 해 보자. 큐브를 y축 시계방향으로 돌려 잡는다. 그런 다음 왼쪽면, 오른쪽면을 돌려 두 코너조각을 아래로 내린다. 그리고 그 상태에서 아랫면을 시계방향으로 90도 돌린다. 그리고 오른쪽면을 시계방향으로 90도 돌린다. 그리고 아랫면을 시계반대방향으로 90도 돌린다. 그리고 왼쪽면을 시계반대방향으로 돌린다. 그리고 큐브를 y축 시계반대방향으로 돌려 잡는다. 그러면 두 코너조각의 자리가 맞바꾸게 된다. 이걸 식으로 표현하면 다음과 같다.

T  = y'-L'-R-D'-R'-D-L-y
T' = y'-L'-D'-R-D-R'-L-y

이걸 알면 큐브 깍기를 포함한 동작으로 만들어 내는 움직임을 다 만들 수 있다. 이걸로 A2_L과 같은 효과를 주는 동작을 만드는데 A_L 동작을 할 때와 같은 방향으로 큐브를 잡는 걸로 하면 다음과 같다.

AT_L  = x-T-x'-A_L-x-T'-x'
AT_L' = x-T-x'-A_L'-x-T'-x'

8 1011 3131 0101

위의 방법을 다 써도 [1011 3131 0101]을 두 번만에 풀 수 없다니 자괴감이 든다. 나는 무엇을 위해 이 방법들을 발견했던가. 전에 만든 프로그램의 결과를 보면 기존 동작으로도 세 번만에 풀 수 있는데…

9 …라고 생각했는데

이 쉬운 방법을 왜 몰랐을까? 난 바보인가 보다.

앞면의 윗줄과 아랫줄, 또는 왼쪽줄과 오른쪽줄을 바꾸면 된다. 윗줄과 아랫줄이라면, 윗면과 아랫면을 180도 돌리고 뒷면을 180도 돌리고 다시 윗면과 아랫면을 180도 돌리면 된다. 이 상태에서 모서리조각을 순환시킨다면 결과적으로 순환 방향이 좌우반전이 되기 때문에 모서리조각 순환과 코너조각 제자리회전 값의 관계가 기존과 달라진다. 또 코너조각들이 대각선 방향으로 자리를 맞바꾸기 때문에 큐브 깍기나 야바위를 해야 할 수 있다.

[1011 3131 0101]을 풀어 보자. 맞춰진 코너조각을 오른쪽 아래로 오게 하자. 그런 후에 왼쪽줄과 오른쪽줄을 바꾸고 여기서 B_R'을 수행한다. 그리고 다시 바꾼 줄을 돌려 놓자. 모서리조각이 모두 노란색이 되는데 여기서 맞춰진 모서리조각을 아래에 오게 하자. 또 왼쪽줄과 오른쪽줄을 바꾸고 A_R'을 하고 다시 줄을 돌려 놓으면 다 맞춰진다.