Code Bots 2에 오신 것을 환영합니다!
지난 코드 봇 이후 교훈을 배웠습니다. 더 적은 줄로 더 많은 행동을 맞출 수있는 더 많은 방법을 찾으려고 노력했습니다. 이벤트 중심 코드 봇을 만들 것입니다.
봇은 24 줄로 구성되어야합니다. 각 줄은 다음 두 형식 중 하나를 따릅니다.
Condition:Action
또는
Action
봇은를 A
통해 명명 된 5 개의 정수를 저장할 수있는 충분한 스토리지를 보유 하고 E
있습니다. 정수는 0에서 23 사이의 값을 저장할 수 있습니다.
각 차례, 당신은 줄을 실행합니다 C
, 하지 않는 조건 중 하나에 해당합니다. 그렇다면 C
참인 조건부 행 번호를 포함하고 해당 행이 실행됩니다. 매 턴이 끝날 때마다 C
증가합니다.
사용 가능한 조건이 있습니다.
Start
첫 번째 턴에만 해당됩니다. 코드에 정확히 한 번만 있어야합니다.BotAt(N)
N으로 정의 된 위치에 봇이있는 경우 trueEquals(A,B)
A가 B와 같으면 참입니다. 서로 다른 유형일 수 있으며, 같으면 같지 않습니다.Modified(A)
A
마지막 턴에 복사 된 경우 참 입니다.A
변수 이름, 줄 또는 조건이어야합니다.Any(C1,C2,...)
조건 중 하나라도 해당되면 참None(C1,C2,...)
조건이 하나도 없으면 참입니다.All(C1,C2,...)
모든 조건이 참이면 참Not(C)
C가 거짓이면 참입니다.C
조건이어야합니다.
변수는 다음 형식 중 하나 일 수 있습니다. 처음 9는 숫자이며이 페이지에서 N을 사용할 때마다 사용할 수 있습니다.
A
,B
,C
,D
,E
- 0에서 23 사이의 숫자
This
현재있는 줄 번호를 반환합니다Add(N1,N2,...)
모든 값의 합계를 반환합니다Sub(N1,N2)
N1에서 N2를 뺀 값을 반환합니다Mult(N1,N2,...)
모든 값의 곱을 반환합니다Div(N1,N2)
N1을 N2로 나눈 값을 반환합니다.Mod(N1,N2)
N1 mod N2를 반환합니다OVar(N)
변수 이름을 받아들이고 상대방의 변수를 반환합니다Line(N)
코드에서 N 번째 줄을 반환합니다Type(N)
코드에서 N 번째 라인 유형을 반환합니다 (유형은 액션의 이름입니다)Cond(N)
N 번째 줄에서 조건을 반환합니다CondType(N)
N 번째 줄에 조건 유형을 반환합니다 (유형은 조건의 이름입니다)OLine(N)
상대의 코드에서 N 번째 줄을 반환합니다OType(N)
상대방의 코드에서 N 번째 라인 유형을 반환합니다OCond(N)
N 번째 줄의 조건을 반환합니다OCondType(N)
N 번째 줄에 조건 유형을 반환합니다
A
및 B
개인 사용을 위해,되는 C
코드에서 실행하는 라인을 결정하는 데 사용되며, D
한 방향으로 사용됩니다. 의 각 값은 D
서로 다른 정사각형과 방향 쌍을 나타냅니다. E
매번 임의의 값을 생성합니다. D
과 E
달리, 임의의 값으로 초기화됩니다 0
.
사용되는 방향은입니다 [North,East,South,West][D%4]
. 당신의 상대는 그 방향으로 직각의 봇입니다.
사용 가능한 4 가지 작업이 있습니다.
Move
D
th 방향으로 1 칸 앞으로 이동합니다 . 거기에 봇이 있으면 움직이지 않습니다.Copy(A,B)
변수A
를에 복사합니다B
.B
변수 이름을 제외하고 숫자 값이 될 수 없습니다.A
그리고B
다른 유형이 될 수 없습니다. 줄을 복사해도 조건이 복사되지 않습니다.Flag
아무것도하지 않습니다. 코드에서 플래그가 가장 많은 봇이 포인트를 얻습니다. 가장 많은 점수를 얻은 봇이 승리합니다.If(C,L1,L2)
에 선을 수행L1
하는 경우C
는 true, 그렇지 수행입니다L2
.C
조건이며,L1
그리고L2
줄 수 있어야합니다.
큰 그림
모든 봇의 사본은 세계에 배치됩니다. 당신의 목표는 가능한 한 많은 봇에 깃발을 넣는 것입니다. 다른 깃발 유형보다 깃발 유형이 더 많은 각 봇에 대해 포인트를 얻습니다.
봇은 다음과 같이 배치됩니다.
B...B...B...B...
..B...B...B...B.
B...B...B...B...
10 개의 게임이 진행되며, 모든 게임에서 승자가 누구인지를 결정하여 점수가 평균됩니다.
사이드 노트
여러 조건이 적용되면 가장 불완전하게 따르는 조건 Start
이 실행됩니다.
봇은 밀집되어 있지만 다른 봇과 인접하지는 않습니다. (기술적으로 마지막 CodeBots와 동일한 형식입니다)
이 도전은 샌드 박스에 게시되지 않았기 때문에 (아무도 유리하지 않음) 공정성 또는 추가 기능을 위해 작은 세부 사항을 변경할 권리가 있습니다. 또한 CodeBots 러너에 버그가 있으면 봇이 성공을 위해 해당 버그에 의존하더라도 버그를 변경합니다. 가능한 한 공정하게 노력하고 있습니다 .
재귀 If
문은 실행되지 않습니다
봇이 24 줄보다 짧은 경우 나머지 줄은 Flag
자신에 복사 할 때 기억 C
이, C
자신의 턴의 끝에서 증가합니다.
CodeBots 인터프리터는 여기 에서 찾을 수 있습니다 . 쉬운 실행을 위해 .jar 파일이 포함되어 있습니다. 봇을 봇 폴더에 추가하기 만하면됩니다
점수
- 보그
- 1.3 게으른
- 0.9 수비수
- 0.5 플래 거
- 0.4 크리크 봇
- 0.4 교활한
- 0.3 공격자
- 0.3 가드
- 0.3 싱글 타겟
- 0.2 동결 봇
- 0.2 센티넬
- 0.2 드라이브 바이
- 0.0 교활한
- 0.0 MoveBot
- 0.0 CliqueBorg
- 0.0 계산기
- 0.0 테스트 봇
- 0.0 모방 자
최신 정보
상대의 코드를 볼 때 코드 줄이 회전합니다. 즉, 상대방의 1 행은 14 행 (또는 모든 행) 일 수 있습니다. 봇은 상대가 볼 때X
금액만큼 라인을 상쇄하는 고정 오프셋을 갖 습니다 . 상대 C
변수도 같은 X
양만큼 상쇄됩니다 . X
동일한 게임 내에서 변경되지는 않지만 게임에서 게임으로 변경됩니다.