우주선 함장이 처리해야 할 일의 목록은 길다. 함대의 기함이라도 전투 중에는 챙길 것이 많다. 전력을 돌려야 하고, 행렬을 다시 뒤집어야 하고, 언젠가는 장식만 요란한 비상 탈출정까지 가야 할지도 모른다. 그래서 길고 번거롭지만 정보만큼은 확실한 이름의 프로그램 CaptainsLogStardate41254.7TheseAreTheVoyagesOfTheStarship (Enterprise Edition)을 개발하고 있다. 첫 번째 버전은 전투 중에 명령을 내리는 기능을 지원한다. 프로그램이 다뤄야 하는 계통은 세 종류다.
do_damage_to_self를 찾고 있다.첫 줄에 테스트 케이스의 개수 T가 주어진다. 이어서 T개의 케이스가 주어진다.
각 케이스의 첫 줄에는 네 정수 A, B, C, D가 공백으로 구분되어 주어진다. 앞의 세 수는 각각 1종, 2종, 3종 계통의 개수이고, 네 번째 수는 손상 횟수다.
이 줄 다음에 1종 계통의 이름이 A줄, 2종 계통의 이름이 B줄, 3종 계통의 이름이 C줄, 손상된 계통의 이름이 손상된 순서대로 D줄 주어진다.
계통 이름을 SYSTEM이라고 할 때, 내릴 명령은 다음 중 하나다.
recalibrate SYSTEMinvert SYSTEMre-invert SYSTEMdivert all power to SYSTEMABANDON SHIP. REPEAT. ALL HANDS ABANDON SHIP.손상 하나마다 승무원에게 내릴 올바른 명령을 한 줄에 하나씩 출력한다.
1종 계통은 손상되면 언제나 재보정해야 하므로 recalibrate [계통 이름]을 출력한다.
2종 계통은 처음 손상되면 뒤집고, 다음 손상에는 다시 뒤집고, 그다음에는 또 뒤집는 식으로 번갈아 처리한다. 상태에 맞춰 invert [계통 이름] 또는 re-invert [계통 이름]을 출력한다.
3종 계통은 전력 100단위로 시작하고, 한 번 손상될 때마다 전력 10단위를 잃는다. 배에는 손상된 계통에 몰아줄 여분 전력이 20단위 있다. 손상 후에도 계통이 살아 있으면 여분 전력이 이미 다 소모되었더라도 divert all power to [계통 이름]을 출력한다. 전력을 몰아주라는 명령을 받으면 승무원은 그 계통의 전력을 100단위로 되돌리는 데 필요한 만큼만 여분 전력을 쓴다. 손상 후 3종 계통의 전력이 10단위 이하가 되면 ABANDON SHIP. REPEAT. ALL HANDS ABANDON SHIP.을 출력하고 그 케이스를 끝낸다. 그 케이스의 남은 손상에는 명령을 내리지 않는다.
케이스는 서로 독립이다. 계통의 전력, 2종 계통의 뒤집힌 상태, 여분 전력 20단위는 케이스마다 처음 상태로 돌아간다.
탈출 명령을 제외한 모든 명령은 소문자로 출력한다. 탈출 명령은 위에 적힌 대문자와 문장 부호를 그대로 지켜 출력한다.