시간0:00.00

돌린 횟수0

큐브를 불러오고 있습니다스크립트를 켜면 큐브를 돌려 볼 수 있습니다

큐브를 드래그해서 돌리기, 바깥을 드래그해서 시점을 변경

풀이 방식
풀이 속도

큐브란

루빅스 큐브는 1974년 헝가리의 건축학 교수이자 조각가인 에르노 루빅이 만든 퍼즐입니다. 학생들에게 입체 구조를 설명하려고 만든 것이 시작이었고, 처음 이름은 '마법의 큐브'라는 뜻의 뷔뵈시 코츠카(Bűvös kocka)였습니다. 1980년 미국 장난감 회사 아이디얼이 만든 사람의 이름을 붙여 세계에 내놓으면서 지금의 루빅스 큐브(새 탭에서 열림)가 됐습니다.

어두운 나무 책상 위 스탠드 불빛 아래에 색이 섞인 3×3 큐브가 놓여 있고, 뒤로 화분과 스프링 수첩이 흐리게 보인다.

겉으로 보이는 작은 조각은 26개이고, 하는 일에 따라 셋으로 나뉩니다.

조각개수색특징
센터61개각 면 가운데. 움직이지 않아서 그 면의 색을 정한다
엣지122개두 면이 만나는 모서리
코너83개세 면이 만나는 꼭짓점

센터가 움직이지 않는다는 점이 중요합니다. 흰 센터의 맞은편은 늘 노란 센터이고, 큐브를 맞춘다는 것은 엣지 12개와 코너 8개를 센터 색에 맞춰 제자리로 보내는 일입니다.

나올 수 있는 상태는 43,252,003,274,489,856,000가지입니다. 이만큼 많은데도 어떤 상태든 20수 안에 풀 수 있다는 것이 2010년에 컴퓨터로 증명됐습니다. 이 20을 신의 수(새 탭에서 열림)라고 부릅니다(한 면을 90도든 180도든 한 번 돌리면 한 수로 칠 때).

자세한 설명표기법 · 공략법 · 만드는 과정

표기법

공식은 면 이름 여섯 글자로 적습니다. 큐브를 앞에서 바라본 채로 읽습니다.

글자면
U위(Up)
D아래(Down)
L왼쪽(Left)
R오른쪽(Right)
F앞(Front)
B뒤(Back)
  • 글자만 쓰면 그 면을 정면으로 바라봤을 때 시계 방향으로 90도 돌립니다.
  • 뒤에 '가 붙으면 반시계 방향으로 90도입니다. R'은 오른쪽 면을 거꾸로 돌립니다.
  • 뒤에 2가 붙으면 180도입니다.

예를 들어 R U R' U'는 오른쪽 면을 올리고, 위를 돌리고, 오른쪽 면을 내리고, 위를 되돌리는 네 수입니다. 아래 공략법에서 가장 자주 쓰는 동작입니다.

공략법

여기서는 처음 배우는 사람이 쓰는 층별 풀이를 씁니다. 흰 면을 아래, 노란 면을 위에 두고 아래 층부터 한 층씩 맞춥니다. 단계마다 외울 공식이 하나씩 있고, 공식은 큐브의 한 면을 앞(F)으로 정해 두고 읽습니다. 게임에서 풀이 방식을 '입문 공식'으로 두고 정답을 누르면 이 순서와 공식을 그대로 따르고, 지금 몇 단계에서 어떤 공식을 쓰는지 큐브 아래에 보여 줍니다.

1층: 흰 면

  1. 흰 십자: 흰 엣지 넷을 흰 센터 둘레로 모읍니다. 엣지의 옆 색이 옆면 센터 색과 맞아야 합니다. 정해진 공식 없이 조각마다 몇 수로 옮기는데, 게임은 옆면을 두 번 돌리거나 U' R' F R로 넣습니다.
  2. 흰 코너: 흰 코너를 들어갈 자리 바로 위(앞 오른쪽 위)로 가져온 뒤 R U R' U'를 되풀이합니다. 코너가 돌아가는 방향에 따라 한 번, 세 번, 다섯 번이면 제자리에 바르게 들어갑니다.

2층: 가운데 층

  1. 가운데 층 엣지: 위층에서 노란색이 없는 엣지를 찾아 옆 색이 맞는 면을 앞으로 둡니다. 오른쪽으로 보낼 때는 U R U' R' U' F' U F, 왼쪽으로 보낼 때는 U' L' U L U F U' F'. 엣지가 가운데 층에 뒤집혀 들어가 있으면 같은 공식으로 한 번 꺼낸 뒤 다시 넣습니다.

3층: 노란 면

  1. 노란 십자: F R U R' U' F'. 윗면 노란 엣지가 점 → ㄱ자 → 일자 → 십자 순서로 바뀝니다. 일자는 가로로, ㄱ자는 뒤와 왼쪽에 오게 두고 돌립니다.
  2. 노란 면: R U R' U R U2 R'. 윗면 코너까지 모두 노랗게 맞춥니다.
  3. 노란 코너 자리: U R U' L' U R' U' L. 제자리에 있는 코너 하나를 앞 오른쪽 위에 두고 나머지 셋을 돌려 자리를 바꿉니다. 이 공식은 5단계에서 맞춘 노란 면의 코너 방향을 다시 비틀어 놓습니다.
  4. 노란 코너 돌리기: 비틀린 코너를 앞 오른쪽 위에 두고 R' D' R D를 노란색이 위를 볼 때까지 되풀이합니다. 다음 코너는 윗면(U)만 돌려 같은 자리로 가져옵니다. 중간에 아래 두 층이 흐트러져 보여도, 네 코너를 다 돌리면 제자리로 돌아옵니다.
  5. 노란 엣지 자리: 맞는 엣지를 뒤에 두고 R U' R U R U R U' R' U' R2. 한두 번이면 큐브가 다 맞춰집니다.

이 방식은 외울 것이 적은 대신 수가 많습니다. 무작위로 섞은 큐브 600개를 이 순서대로 풀면 평균 197수(101~272수)가 나옵니다. 어떤 상태든 20수 안에 풀 수 있다는 신의 수와 비교하면 열 배쯤 돌아가는 셈이고, 빠르게 맞추는 사람들은 공식 수십 개를 외워 이 수를 줄입니다. 게임의 정답은 기본으로 20수 안에 푸는 최소 수 풀이를 쓰고, 풀이 방식을 '입문 공식'으로 바꾸면 이 여덟 단계를 보여 줍니다.

만드는 과정

이 게임은 외부 라이브러리 없이 브라우저의 캔버스 하나에 직접 그렸습니다. 일을 셋으로 나눴습니다. 큐브의 상태를 숫자로 다루는 부분, 화면에 그리고 손으로 돌리는 부분, 그리고 상태를 보고 공식으로 푸는 부분입니다.

노트북 화면 왼쪽에 흐린 코드 편집기, 오른쪽에 하늘색 선으로 그린 3×3 큐브가 있고, 책상 옆에 색이 섞인 진짜 큐브가 놓여 있다.

큐브를 숫자로

큐브를 작은 조각 27개로 보고, 조각마다 좌표(가로·세로·앞뒤 각각 -1, 0, 1)와 붙은 스티커의 방향을 적어 둡니다. 한 층을 돌린다는 것은 그 층에 있는 조각 아홉 개의 좌표와 스티커 방향을 축 둘레로 90도씩 돌리는 일입니다. 이렇게 두면 그리기와 풀이가 같은 상태를 보고, 섞기도 같은 돌리기를 무작위로 25번 하는 것으로 끝납니다. 같은 면을 연달아 돌리지 않게만 막았습니다.

그리고 돌리기

화면은 3D 엔진 없이 원근 투영으로 그립니다. 조각의 꼭짓점을 카메라 위치에 맞춰 평면에 옮기고, 먼 것부터 칠해 가까운 것이 위에 덮이게 합니다. 층이 도는 동안에는 도는 축을 따라 층 셋을 먼 쪽부터 칠해야 가려짐이 맞고, 조각 사이로 안쪽의 검은 면도 제대로 보입니다. 움직일 때만 다시 그리고, 가만히 있을 때는 멈춰 있어서 배터리를 쓰지 않습니다.

손으로 돌리는 부분이 가장 까다로웠습니다. 큐브 위를 누르면 손가락 밑의 스티커가 어느 면인지 기억해 두었다가, 10px 넘게 끌면 그 면 위에서 끈 방향과 가장 가까운 방향을 고릅니다. 면의 방향과 끈 방향이 정해지면 회전축이 정해지고, 손가락이 있던 줄이 돌아갈 층이 됩니다. 큐브 밖의 빈 곳을 끌면 층 대신 시점이 돕니다.

두 가지 풀이

정답은 섞은 순서를 거꾸로 되감지 않습니다. 지금 큐브 상태만 보고 풉니다. 풀이 방식은 두 가지입니다.

입문 공식은 위 공략법의 여덟 단계를 차례로 밟습니다. 단계마다 맞춰야 할 조각을 찾아 정해진 자리로 데려온 뒤 공식을 씁니다. 공식은 사람이 읽듯 앞면을 F로 둔 표기로 갖고 있다가, 실제로는 그 순간 앞으로 삼은 면에 맞춰 글자를 바꿔 돌립니다. 그래서 화면에는 R U R' U'로 보여도 큐브에서는 B U B' U'처럼 다른 면이 돌 수 있습니다.

최소 수는 컴퓨터 큐브 풀이에 널리 쓰이는 코시엠바의 2단계 알고리즘을 직접 옮겼습니다. 1단계에서는 모든 조각의 방향을 바로 하고 가운데 층 엣지 넷을 가운데 층으로 모읍니다. 그러면 큐브는 위아래 면은 90도, 나머지 네 면은 180도로만 돌려도 풀리는 상태가 되고, 2단계에서 그 돌리기만으로 조각의 자리를 맞춥니다. 두 단계 모두 '이 상태에서 적어도 몇 수가 남았는지'를 미리 계산한 표를 보며 가망 없는 길을 잘라 냅니다. 이 표를 만드는 데 0.6초쯤 걸려서, 화면이 멈추지 않도록 페이지 뒤쪽 작업(웹 워커)에서 미리 만들어 둡니다.

최소 수 풀이는 20수 이하 해를 찾으면 멈춥니다. 그래서 늘 가장 짧은 해는 아니지만, 신의 수가 말하는 20수 안에는 꼭 들어옵니다. 같은 섞기 600개를 두 방식으로 풀어 본 결과는 위 그래프와 같습니다.

입문 공식최소 수
평균197수19.5수
가장 적게101수13수
가장 많게272수20수
풀린 큐브600 / 600600 / 600

최소 수 풀이가 해를 찾는 데는 평균 0.3초, 가장 오래 걸린 경우 2.4초가 걸렸습니다.