이스터 에그 헌트
봇은 계란을 찾기 전에 계란을 찾습니다. 봇 행복합니다.
개요
이것은 언덕 왕이다 부활절과 부활절 달걀 사냥 전통을 기리기위한 도전입니다!
봇은 대각선을 포함하여 모든 방향으로 두 공간의 비전을 가지고 있습니다. 계란을 찾고 있으며 가장 많은 계란을 얻는 사람은 이깁니다!
보드
보드 o
는 부활절 달걀 인 #
s, 벽인 *
s, 다른 플레이어 인 s, 빈 공간 인 s로 구성됩니다.
- 가장자리 길이가있는 정사각형이됩니다.
(number of entries) * 3
. - 벽으로 둘러싸 일 것입니다.
- 벽 안에는 무작위로 배치 된 직선 벽
#
이 있으며, 길이는 2에서 10 사이의 임의의 길이를 갖습니다. 있을 것이다(number of entries) * 3
그들 중에 입니다. - 계란은 무작위로 배치됩니다.
(number of entries) * 4
그들 중 하나 가있을 것이고 , 그들은 빈칸에서만 생성됩니다 (칸 ) 입니다.
- 보드 생성 프로세스가 제대로 작동하려면 전체가 7 개 이상 있어야합니다.
다음은 테스트 할 임의의 보드 를 생성하는 JSFiddle입니다 . 예를 들면 다음과 (number of entries) = 7
같습니다.
#####################
# o ##
# # o ##
# #o ###### ##
###### # ##
## o # # ##
## o# #o# o o##
## #o # # o # #
## # o # # # #
## ## # # o # #
## # # o # # #
## # o # ## # # #
## # # # #
# o # ## # #
# o oo ##o #
#o ####### oo ## #
# # # #
# o o o# #
# o #### o o#
# #
#####################
보드가 생성 된 후 각 플레이어는 임의의 사각형 (빈 공간) 에 배치됩니다 .
입력
6 줄의 입력을받습니다. 처음 다섯 줄은 시야 (보드의 경계를 벗어난 공간은로 표시되고 X
중간 공간은 항상 *
)로 표시되며 여섯 번째 줄은 비어 있습니다 (처음에는).
산출
세 줄을 출력합니다. 먼저, 이동하려는 방향 :
1 2 3
8 YOU 4
7 6 5
(이동하지 않으려는 경우 9는 작동하지 않습니다.) 둘째, A
공격, 수사 중 하나 C
또는N
(이것은 곧 깊이 설명됩니다), 세 번째 줄은 최대 1024 길이의 문자열입니다 봇의 기억이 될 것입니다. 원하는 용도로 사용하거나 비워 둘 수 있습니다. 이 메모리는 다음 실행시 프로그램에 대한 여섯 번째 입력 라인이됩니다.
추가 출력 라인은 모두 무시되며 라인이 하나만 있으면 두 번째 라인은 공백으로 간주됩니다.
움직이는
이동 한 위치를 결정하는 데 다음 프로세스가 사용됩니다.
- 이사 할 때 빈 공간에있게되면 (
)에 도달하면 플레이어가 해당 공간에 배치됩니다.
- 벽에 닿으면
#
)에 들어가면 이동이 무시되고 턴을 잃습니다. - 달걀 (
o
) 또는 플레이어 (*
)로 끝나는 경우이 정보는 모든 사람이 이동 한 후에 저장되며 사용됩니다.
모두가 움직 인 후에 모호성이 해결됩니다.
같은 공간에 착륙 한 두 명의 플레이어가 있다면 전투가 발생합니다! 이것은 A
/ C
/ N
가 재생되는 곳입니다. A
ttack의 비트 N
(일반 공격) othing, N
othing 비트 C
ounter (당신이 카운터 아무것도 할 수 없습니다), 그리고 C
비트는 ounter A
(역습) ttack. 이 싸움에서이긴 플레이어는 자신의 광장에 머무르고, 잃은 플레이어는 처음 시작한 원래의 광장으로 돌아갑니다. 동점 일 경우 두 선수 모두 원래 위치로 돌아갑니다.
잃거나 묶인 플레이어가 원래 위치로 돌아가서 다른 플레이어가있는 경우, 전투가 없으며 다른 플레이어도 원래 공간으로 되돌아갑니다. 경우 이 공간은 다른 선수가 그 플레이어는 되돌아 가고 모든 플레이어가 다른 공간에있을 때까지 계속됩니다.
한 공간에 3 명 이상의 플레이어가있는 경우 모두 원래 위치로 되돌아갑니다.
어떤 선수가 여전히 계란 위에 서 있다면 ...
- 플레이어가를 선택
A
하면 알이 파괴됩니다. - 플레이어가를 선택
C
하면 아무 일도 일어나지 않으며 플레이어는 원래 공간으로 되돌아갑니다. - 플레이어가을 선택
N
하면 플레이어는 알을 줍습니다! 플레이어의 점수는 1 씩 증가하고 알은 제거됩니다.
언어
각 참가자 간의 공정성을 보장하기 위해 Windows, OSX 및 Linux에서 자유롭게 사용할 수있는 모든 언어를 사용할 수 있습니다. 코드를 자유롭게 실행할 수 없지만 형식으로 컴파일 또는 패키지 할 수있는 경우이 형식도 답에 포함하십시오. 코드를보다 일반적인 언어 (예 : CoffeeScript-> JavaScript)로 컴파일 할 수 있다면 이상적입니다.
채점
당신의 점수는 당신이 열 번 실행에서 수집하는 평균 계란 수입니다. 모든 알이 모이거나 (number of entries * 25)
회전이 지나면 런이 종료됩니다 . 모든지도에 도달 할 때까지지도를 계속 생성하여 각지도의 모든 계란에 도달 할 수 있는지 수동으로 확인하겠습니다.
스코어 보드
다음 조건이 모두 충족되면 스코어 보드가 추가됩니다.
- 양수 또는 0 점 (비공개되지 않음)을 가진 7 개 이상의 유효한 출품작이 제출되었습니다.
- 이 도전을 만든 후 최소 48 시간이 지났습니다 (UTC 14:23).
규칙이 명확하지 않은 경우 설명을 추가하는 경우를 제외하고이 사전 대회 기간 동안 규칙은 변경되지 않습니다. 점수 판이 완성되면 테스트 프로그램도 여기에 게시되어 출품작을 테스트 할 수 있습니다. 이것에 대한 테스트 코드는 여전히 진행 중이지만 재생할 수 있으며 작동합니다. 여기 GitHub 저장소가 있습니다.
9
하면 의미있는 공격을 할 수 없습니다. 다른 선수 (B)가 해당 선수 광장에 들어서서 이기면 A는 원래 광장으로 다시 이동합니다 (동일 함). 그러나 이제 A와 B가 모두 있기 때문에 충돌이 발생하므로 B는 자신의 광장으로 돌아 가야합니다. 따라서 결과는 실제 전투와 무관하며 B는 항상 초기 광장으로 돌아가고 A는 항상 그대로 유지됩니다. 그것은 내가 다른 사람을위한 길을 막음으로써 또 다른 제출을 도울 수있는 둘 다 쓸 수있게 해줄 것입니다.