터치스크린이 나오면서 소프트웨어 설계자는 손가락 제스처에 맞춰 조작 방식을 다시 만들어야 했다. 제스처를 해석하는 첫 단계는 그 제스처가 어떤 종류인지 분류하는 것이다. 손가락은 정확한 한 점이 아니라 픽셀 덩어리를 남기고 제스처에는 움직임이 섞여 있어서, 이 분류가 생각보다 어렵다.
터치는 서로 이어진 픽셀 집합이다. 두 픽셀이 가로나 세로로 맞닿아 있으면 같은 터치에 속한다. 터치의 터치점은 그 집합에 속한 모든 픽셀 위치의 평균이다.
그립은 한 이미지에 있는 모든 터치점의 집합이다. 그립점은 그립에 속한 모든 터치점 위치의 평균이다. 터치점의 터치 벡터는 그립점에서 그 터치점으로 향하는 벡터다.
제스처는 처음 그립과 나중 그립의 쌍이고, 두 그립의 터치 개수는 같다. 두 그립의 터치는 일대일로 대응시킨다. 가능한 대응 중에서 대응된 터치점 사이 거리의 제곱합이 최소가 되는 대응을 쓴다.
제스처의 종류는 이동(pan), 줌(zoom), 회전(rotation) 셋이고, 종류마다 거리가 정의된다.
거리가 가장 큰 종류로 제스처를 분류한다.
이미지 두 장이 나란히 주어진다. 두 이미지 모두 15행 30열이다. 15개의 각 줄에는 처음 이미지의 픽셀 30개, 공백 한 칸, 나중 이미지의 픽셀 30개가 차례로 있다. 터치에 속한 픽셀은 X, 속하지 않은 픽셀은 마침표(.)로 나타낸다. 두 이미지의 터치 개수는 같고, 1개 이상 5개 이하다.
터치 개수와 제스처 종류를 한 줄에 공백 한 칸으로 구분해 출력한다. 종류는 pan, zoom, rotate 중 하나다.
줌이면 종류 뒤에 방향도 출력한다. 나중 그립의 그립 퍼짐이 처음 그립의 그립 퍼짐보다 작으면 in, 그렇지 않으면 out이다. 회전이면 종류 뒤에 clockwise 또는 counter-clockwise를 출력한다. 방향은 화면에 보이는 대로 정하고, 이미지의 첫 줄이 위쪽이다.
답을 결정하는 모든 거리 비교는 10−5의 수치 오차에 대해 안전하다.