소개
당신은 무인도에 약간의 종들이 갇혀 있으며 보물을 찾고 있습니다. 검색 시간이 길수록 더 많은 보물을 찾습니다. 검색하는 사람이 적을수록 더 많은 사람을 찾습니다.
공급이 제한되어 있기 때문에 지도자는 그룹의 1/4까지 몇 사람이 매일 밤 죽도록 남겨두기로 결정했습니다. 그는 어느 날에 얼마나 많은 사람들이 죽을지를 정확하게 말하지 않기로 결정했습니다.
당신은 5 명으로 구성된 소그룹을 통제하고 있으며, 그들은 5 명을 소중히 여길 것입니다.
객관적인
이 경쟁의 목적은 가능한 많은 보물을 모으는 것입니다. 당신의 종들이 캠프로 돌아 가려고하지 않을 때마다, 그들은 특정한 수의 보물을 발견 할 것입니다. 종들은 다른 시간에 캠프로 돌아올 수 있습니다.
노동자가 보물을 찾기 위해 떠날 때마다, 노동자는 1+R
보물 조각을 찾습니다 . 여기서 R
캠프에 이미 돌아온 노동자의 수 (모든 봇 중)가 있습니다. 데드 봇은이 계산에 영향을 미치지 않습니다.
하루의 시작시에, 난수 ( n
발) 2
에이 max(3, floor(num_live_players/4))
선택 될 것이다. (1 일 10 플레이어의 경우,이은 2
에 max(3,50/4)=12
1 일에 20 명의 선수들도이 될 것입니다. 2
에 max(3,100/4)=25
이 숫자는 그 날을 위해 죽을 남아있을 것입니다 선수의 수를 나타냅니다.), 및 프로그램에 제공되지 않습니다 .
하인이 마지막 n
으로 돌아온 사람들 중 하나라면 , 그 / 그녀는 죽었고, 찾은 보물을 당신의 소유물로 옮길 수 없습니다. 또한, 종은 모험의 나머지 부분을 위해 보물 사냥에 참여할 수 없습니다.
최종 점수는 모험 (컨트롤러 실행) 당 획득 한 평균 보물의 양입니다.
열린 슬롯보다 같은 턴에 더 많은 사람들이 캠프에 돌아 오려고 시도하면 난수는 누가 들어가고 누가 죽는 지 결정합니다.
일출부터 일몰까지이 섬의 하루는 30 턴 동안 지속됩니다. 밤에는 위험한 동물이 많기 때문에 일몰으로 돌아 오지 않으면 캠프에 들어갈 수 없습니다.
입출력
시뮬레이션 전체에서 프로그램을 실행해야합니다.
시뮬레이션 시작시 봇의 인덱스가있는 INDEX I
위치 I
가 입력 됩니다 (이 인덱스는 1부터 계산).
하루의 시작에서, START_DAY D/N
프로그램에 입력됩니다 D
(부터 하루 번호입니다 1
), 그리고 N
동일 max(3, floor(num_live_players/4))
특정 일에 죽을 수 있습니다 사람들의 최대 수입니다.
각 턴이 시작될 START_TURN T
때 프로그램에 입력됩니다. 여기서 T
턴 번호는 (에서 시작 1
)입니다.
당신의 프로그램이 이것을 받으면, 각각의 쉼표로 구분 된 당신의 하인들의 움직임 목록으로 응답해야합니다.
유효한 움직임은 다음과 같습니다.
R
: 캠프로 돌아갑니다.S
: 보물을 찾으십시오.N
: 서번트가 이미 죽었거나 야영 중입니다.
유효하지 않은 움직임을 입력하는 S
것은 봇이 살아 있고 캠프가 아닌 것처럼 해석됩니다 N
.
매 턴이 끝날 때마다 문자열이 프로그램에 전달됩니다.
END_TURN [Turn #] [Bot 1 Moves] [Bot 2 Moves] ...
각 봇의 하인 동작은 쉼표로 구분됩니다.
이러한 움직임은 다음 중 하나입니다.
R
: 그 차례에 캠프로 돌아 왔습니다.r
: 그 차례에 캠프로 돌아 오지 못했습니다.S
: 여전히 보물을 찾고 있습니다.D
: 이전 차례에 사망했습니다.N
: 캠프에 이미 돌아 왔습니다.
봇과 하인은 전체 시뮬레이션에서 동일한 순서로 유지됩니다.
예를 들면 다음과 같습니다.
INDEX 2
....
END_TURN 8 N,N,N,N,N r,r,r,r,D D,D,D,N,R S,D,D,N,D
여기, 당신은 두 번째 봇 ( r,r,r,r,r
)이며, 여전히 살아있는 (그리고 네 개 모두에게 불행하게도 실패한) 네 종을 모두 반환하려고했습니다. 봇 1의 종들은 모두 캠프에 돌아 왔습니다. 봇 3에는 죽은 종 3 명이 있는데 한 명은 다시 캠프에 돌아 왔으며 다섯 번째 종은 성공적으로 돌아 왔습니다. 봇 4에는 한 종의 종이 있었고 (하루가 마지막 차례이므로 죽을 것임) 한 종의 야영지와 세 명의 종이 있습니다.
이 각 문자열 다음에 하루의 끝을 알리는 문자열이 출력되지 않는 한 (아래 참조) 프로그램은 하인의 다음 동작을 쉼표로 구분하여 출력합니다. 모든 종들은 ( N
캠프에 D
이미 있고 이미 죽은 경우) 계정을 고려해야합니다 . 잘못된 행동은 S
하인이 아직 야영 / 사망하지 않은 것처럼 취급됩니다 . 예:
N,N,S,S,R
이는 다음을 의미합니다.
Servant # | Action
1 | Do nothing.
2 | Do nothing.
3 | Stay put (keep looking for treasure).
4 | Stay put (keep looking for treasure).
5 | Try to return to camp.
하루가 끝날 때, 다음 줄은 마지막 턴의 END
줄 다음에 전달 되어 살아있는 모든 사람에게 알려줍니다.
END_DAY [Day #] [Bot 1 Status] [Bot 2 Status]
여기서 상태는 쉼표로 구분 된 A
(alive) 또는 D
(dead) 목록입니다 . 다음날은 바로 시작됩니다.
라이브 하인이 6 명 미만이면 시뮬레이션이 종료됩니다. 프로그램은 시뮬레이션이 끝날 때 다음과 같은 입력을받습니다 :
EXIT
규칙 / 세부 사항
- 당신의 행동이있는 턴에만
S
보물을 찾을 것입니다. - 실행 된 시뮬레이션 수 : 1000 회
- 프로그램이 움직임을 결정하는 데 1 초 이상 걸리지 않아야합니다.
- 프로그램이 일찍 종료되지 않아야합니다. 정확히 한 번 시작됩니다.
- 각 출력 후에 출력 버퍼 (해당되는 경우)가 플러시되는지 확인하십시오.
- 봇의 폴더 (
./players/BotName/
) 에 파일이 기록 될 수 있습니다 . 봇 이름은 영숫자가 아닌 모든 문자가 제거되고 CamelCase로 작성된 봇의 이름입니다. 실행은 순차적으로 수행되므로 컨트롤러 실행간에 데이터를 저장할 수 있습니다. - 프로그램을받은 후 종료해야합니다
EXIT
. - 컴파일 또는 오류가 발생하지 않거나 유효하지 않은 텍스트 (쉼표로 구분 된 5 자의 형식이 아닌)를 출력하는 프로그램은 경쟁에서 제외 될 수 있습니다. 개행은 각 출력을 따라야합니다.
- 컨트롤러는 GitHub 에서 찾을 수 있습니다 .
봇 이름, 언어 + 버전, 코드 및 명령 (해당되는 경우)을 작성하고 봇을 실행하십시오.
예
프로그램에서 출력되는 텍스트 앞에는 접두사가 붙습니다 >
. 프로그램은이 문자를 출력하지 않아야합니다.
INDEX 2
START_DAY 1/3
START_TURN 1
>S,S,S,S,S
END_TURN 1 S,R,S,S,S S,S,S,S,S
START_TURN 2
>S,S,S,S,S
END_TURN 2 S,N,S,R,S S,S,S,S,S
START_TURN 3
>R,R,S,S,S
END_TURN 3 R,N,R,N,R R,R,S,S,S
START_TURN 4
>N,N,S,S,S
END_TURN 4 N,N,N,N,N N,N,S,S,S
START_TURN 5
>N,N,R,R,R
END_TURN 5 N,N,N,N,N N,N,r,r,R
END_DAY 1 A,A,A,A,A A,A,D,D,A
START_DAY 2/3
START_TURN 1
>S,S,N,S,N
END_TURN 1 R,R,R,R,R S,S,D,D,N
END_DAY 2 A,A,A,A,A D,D,D,D,D
EXIT
위 예제의 점수는 다음과 같습니다.
Bot# Day 1 Day 2 Total
1 10 0 10
S1 1+2 0 3
S2 0 0 0
S3 1+2 0 3
S4 1 0 1
S5 1+2 0 3
2 20 0 20
S1 1+2 0 3
S2 1+2 0 3
S3 0 0 0
S4 0 0 0
S5 1+2+3+8 0 14
따라서 승자는 봇 2입니다. 승자는 절대 끝까지 살아남을 필요는 없습니다. (플레이어가 봇을 다시 보낼 때까지 캠프가 가득 차지 않았기 때문에 플레이어는 1 일에 30 세가 될 때까지 남아있을 수 있습니다.)
점수
Bot Score
Bob 2939.422
Statisticians 2905.833
Morning Birds 1652.325
Evolved 1578.285
Slow Returners 1224.318
Wandering Fools 1065.908
Randomizers 735.313
Drunkards 0
Plague 0
로그는 GitHub에서 사용 가능 합니다 . 각 평가판 당 결과는 이 Google 스프레드 시트에서 확인할 수 있습니다 .