*풀"이라고 더 잘 알려진 당구는 북미에서 매우 인기 있는 게임입니다. 게임은 여섯 개의 구멍이 있는 직사각형의 테이블 위에서 진행됩니다. 각 코너와 테이블의 가장 긴 부분의 정중앙에 하나씩의 구멍이 있습니다. 이 게임은 공하나를 큐대로 쳐서 다른 공들을 구멍 속에 넣어야합니다.
계산을 용이하게 하기위하여 데카르트의 좌표계를 사용하여 당구 테이블의 면적을 108X54로 측정했고 서남쪽 코너를 (0,0), 북동쪽 코너를(108,54)로 정하였습니다. 따라서 정중앙에 1부터 6까지의 번호가 붙여진 6개의 구멍은 각각 (0,0), (54,0), (108,0), (0,54), (54,54) 그리고 (108,54)의 좌표를 가집니다. 당구에 사용하는 공은 구형이고 지름 크기가 2입니다.
큐볼의 위치가 주어지고 다수의 다른 공인 타겟볼이 테이블 위에 있다면, 이 문제를 위한 당신이 할 일은 어떻게 하면 당신이 완벽한 "*풀"을 할 수 있을지 결정하기 위한 프로그램을 작성하는 것이다. 큐볼은 어떤 직선의 어떤 방향으로든지 칠 수 있다. 우리는 탄성력이 완벽한 공들 사이에 충돌이 일어났다면 타겟 볼은 큐볼에 의해 닿은 표면으로 부터 항상 직선으로 이동할 수 있다는 걸 고려해야합니다.(그림 참조)
**샷은 큐볼에 바로 부딪친 타겟볼이 바로 구멍에 들어갈 가능성을 고려해야합니다. 공이 다른 공과 부딪혀 테이블 가장자리에서 튕겨나오거(쿠션)나, 공이 테이블의 가장 자리를 뛰어넘을 경우는 고려하지 않습니다. 무슨 말이냐면, 당신은 ***뱅크샷, 콤비네이션 샷, 스핀샷, 또는 다른 기술을 이 문제에선 고려하지 않습니다. 큐볼의 들어오는 각도와 타겟볼의 나가는 각도의 차이는 90도 보다 커야한다는걸 알아둬야 합니다. 타겟볼은 구멍의 정중앙과 일치할 때 구멍 안에 들어갔다고 간주합니다.
* 풀은 우리나라로 치면 포켓볼입니다. ** 샷은 당구나 골프 따위에서, 공을 한 번 치는 일을 의미합니다. *** 뱅크샷, 콤비네이션 샷, 스핀샷은 당구의 기술 명입니다.
입력 30 27 70 24 0 80 27 40 27 2 38 28 38 26 81.0 27.0 54.5 27.0 1 54.0 33.3 81.0 27.0 54.5 25.0 1 54.0 33.3 0 출력 3 6 no shot 1 4 1 2 4
The surface of our pool table measures 108” by 54”, and to facilitate computation, we place it on the Cartesian plane with its southwest corner situated at (0, 0), and its northeast corner at (108, 54). Therefore, the centers of the 6 pockets, numbered 1 through 6, will have coordinates of (0, 0), (54, 0), (108, 0), (0, 54), (54, 54), and (108, 54), respectively (see Figure ). The billiard balls are spherical and measure 2” in diam- eter.
Given the location of the cue ball, a target ball, and a number of other balls on the table, your task for this problem is to write a program to determine whether or not you can successfully make a particular pool shot. The cue ball can be struck in any direction in a straight line. We consider collisions between the balls to be perfectly elastic, so that the target ball will always travel in a straight line, away from the point on its surface contacted by the cue ball (see Figure )
A shot is considered possible if the cue ball can be struck so that it collides directly with the target ball, in turn sending the target ball directly into a pocket. Neither ball should collide with any other balls, bounce off the edges of the table (cushions), nor should their centers cross the boundaries of the table. In other words, you are not to consider any bank shots, combination shots, spin shots, or any other trick shots in this problem. Note that the difference between the incoming angle of the cue ball and the outgoing angle of the target ball must be greater than 90.. The target ball is considered to land in a pocket when its center coincides with the center of that pocket.
입력 30 27 70 24 0 80 27 40 27 2 38 28 38 26 81.0 27.0 54.5 27.0 1 54.0 33.3 81.0 27.0 54.5 25.0 1 54.0 33.3 0 출력 3 6 no shot 1 4 1 2 4
출처:Stanford local 2007 번역:iam6ear