내가 좋아하는 게임이 있습니다. 유한 크기의 격자에서 발생하지만 구처럼 감싸집니다. 해당 그리드에서 임의의 (정수 전용) 포인트가 선택됩니다. 그런 다음 사용자에게 좌표 입력을 요청하는 프롬프트가 표시됩니다. 내 입력이 임의의 점과 정확히 일치하면 내가 이겼다는 메시지가 나타납니다. 그렇지 않으면 입력과 임의의 점 사이의 포인트 단위 거리를 알 수 있습니다. 예를 들어, 내가 추측 (2,2)
하고 임의의 점이에 있으면 (4,3)
거리는입니다 sqrt[(3-2)^2 + (4-2)^2] = sqrt[5]
.
플레이어가 포인트의 올바른 위치에 도달 할 때까지 게임이 계속됩니다.
목표 위에서 설명한 게임의 기능 버전을 만듭니다. 그렇게하려면 전체 프로그램을 작성해야합니다. 프로그램이해야 할 일은 다음과 같습니다.
- 보드의 높이와 너비의 두 가지 입력을 요청하십시오. 원점은 보드의 왼쪽 상단에 있습니다. 이 입력은 초과하지 않습니다
1024
. - 해당 보드에서 임의의 지점을 선택하십시오. 이것은 추측 할 포인트가 될 것입니다.
- 회전을 시뮬레이션하는 입력을 수락하십시오. 입력은 공백으로 구분 된 정수 쌍이거나 두 개의 개별 정수 입력입니다. 이 입력에 응답하여 프로그램은 다음 두 가지 중 하나를 수행합니다.
- 입력이 선택된 임의의 점과 일치하면 사용자의 승리를 알리는 메시지를 출력합니다. 나는 "당신이 이겼습니다!"라고 제안합니다.
- 그렇지 않으면, 사용자의 입력 지점과 임의의 지점 사이의 거리를 출력하십시오.
- 사용자가 승리를 거두면 사용자가 한 턴 수를 표시합니다. 그런 다음 프로그램이 종료됩니다.
보너스
보너스는이 목록에 표시된 순서대로 적용됩니다
- 프로그램이
D
게임이 발생하는 차원을 설명 하는 입력 정수 를 사용 하는 경우 -150 바이트 예를 들어이면D = 3
임의의3
정수 점을 생성하고3
정수 입력을 받아 해당 점 사이의 거리를 출력합니다. score < 0
사용자가 주어진 치수의 그리드와 회전 카운터에서 이전에 추측 한 위치를 표시하는 보드 (ASCII 또는 그림)의 그래픽 표현을 제공하는 경우 -50 % (또는 + 50 % 인 경우 ). (첫 번째 보너스를 받으면이 보너스는2D
and1D
모드 에만 적용됩니다 . 3D 그래픽 출력을 추가하면 -50 %가 추가로 제공됩니다.)- -60 바이트 (게임 시작시 입력에 의해 선택됨, 즉 주어진
0
경우 일반 게임 모드 수행, 지정된1
경우이 게임 모드 수행)에서 점이 턴당 1 단위 씩 임의의 직교 방향으로 이동 하는 게임 모드를 제공 할 수있는 경우 -60 바이트
포장에 대한 추가 정보
랩핑은 세 번째 보너스에서 이동 점이 경계를 넘어 이동할 때만 발생합니다. 이 경우 이동 점은 다음과 같이 각 점으로 뒤 틀립니다.
... ...
..R (move right) R..
... ...
이 줄 바꿈 동작은 점의 방향이 바뀌 었다는 사실 외에는 사용자의 추측에 영향을 미치지 않습니다.
리더 보드
이 게시물의 맨 아래에있는 스택 스 니펫은 답변 a) 언어 당 가장 짧은 솔루션 목록으로, b) 전체 리더 보드로 카탈로그를 생성합니다.
답변이 표시되도록하려면 다음 마크 다운 템플릿을 사용하여 헤드 라인으로 답변을 시작하십시오.
# Language Name, N bytes
N
제출물의 크기는 어디에 있습니까 ? 당신이 당신의 점수를 향상시킬 경우에, 당신은 할 수 있습니다 를 통해 눈에 띄는에 의해, 헤드 라인에 오래된 점수를 유지한다. 예를 들어 :
# Ruby, <s>104</s> <s>101</s> 96 bytes
헤더에 여러 개의 숫자를 포함 시키려면 (예 : 점수가 두 파일의 합이거나 인터프리터 플래그 페널티를 별도로 나열하려는 경우) 실제 점수가 헤더 의 마지막 숫자 인지 확인하십시오 .
# Perl, 43 + 2 (-p flag) = 45 bytes
언어 이름을 링크로 만들면 스 니펫에 표시됩니다.
# [><>](http://esolangs.org/wiki/Fish), 121 bytes
10x10
임의의 요점은, (9,4)
그리고 내 생각 (2,2)
의 거리 sqrt(13)
나 sqrt(53)
? (미래를 위해 참고 : 이상한 일을하는 경우 테스트 케이스를 제공하는 것이 거의 불가능하므로 임의성을 포함하지 마십시오). 2. 세번째 보너스에서, 포인트가 이동하기 전후에 거리를 계산하고 출력해야합니까?