BrainF *** edBotsForBattling-A Brainf *** 토너먼트


88

전투 경기장의 모든 봇은 갑자기 머리가 망가졌으며 아무도 그 이유를 설명 할 수 없습니다. 그러나 Brainfuck이 더 이상 이해하는 유일한 언어이지만, 그들이 여전히 싸울 수있는 한 누가 신경 써야합니다.


마지막 제출 이후 오랜 시간이 지났으므로 마침내 BrainFuckedBotsForBattling의 우승자를 발표 했습니다.


스코어 보드

|       Owner        |          Bot            Score |
|--------------------|-------------------------------|
| LymiaAluysia       | NyurokiMagicalFantasy -  600  |
| Sylwester          | LethalLokeV2.1        -  585  |
| weston             | MickeyV4              -  584  |
| Sp3000             | YandereBot            -  538  |
| Comintern          | CounterPunch          -  512  |
| Sylwester          | BurlyBalderV3         -  507  |
| LymiaAluysia       | NestDarwin            -  493  |
| IstvanChung        | Bigger                -  493  |
| Manu               | DecoyMaster           -  489  |
| archaephyrryx      | Wut                   -  478  |
| DLosc              | LightfootPlodder      -  475  |
| archaephyrryx      | 99BottlesOfBats       -  461  |
| Sylwester          | TerribleThorV2        -  458  |
| MikaLammi          | WallE2.0              -  443  |
| Mikescher          | MultiVAC              -  441  |
| archaephyrryx      | Twitcher              -  439  |
| Timtech            | MetalDetector         -  438  |
| AndoDaan           | BeatYouMate           -  433  |
| csarchon           | TheWallmaster         -  427  |
| Sparr              | SeeSawRush            -  412  |
| archaephyrryx      | Stitcher              -  406  |
| PhiNotPi           | RandomOscillator      -  403  |
| ccarton            | AnybodyThere          -  398  |
| Comintern          | 2BotsOneCup           -  392  |
| kaine              | SternBot              -  387  |
| PhiNotPi           | EvoBot2               -  385  |
| PhiNotPi           | EvoBot1               -  381  |
| Brilliand          | TimedAttack           -  373  |
| Sylwester          | ReluctantRanV2        -  373  |
| AndoDaan           | PrimesAndWonders      -  359  |
| Nax                | TruthBot              -  357  |
| DLosc              | Plodder               -  356  |
| weston             | FastTrapClearBot      -  345  |
| MikaLammi          | PolarBearMkII         -  340  |
| Sp3000             | ParanoidBot           -  336  |
| Moop               | Alternator            -  319  |
| TestBot            | FastClearBot          -  302  |
| icedvariables      | PyBot                 -  293  |
| TestBot            | DecoyBot              -  293  |
| kaine              | BestOffense           -  291  |
| Geobits            | Backtracker           -  289  |
| bornSwift          | ScribeBot             -  280  |
| IngoBuerk          | Geronimo              -  268  |
| flawr              | CropCircleBot         -  239  |
| plannapus          | CleanUpOnAisleSix     -  233  |
| frederick          | ConBot                -  230  |
| frederick          | 128Bot                -  222  |
| AndoDaan           | EndTitled             -  219  |
| PhiNotPi           | CloakingDeviceBot     -  215  |
| AndoDaan           | GetOffMate            -  206  |
| DLosc              | ScaredyBot            -  205  |
| isaacg             | CleverAndDetermined   -  202  |
| PhiNotPi           | CantTouchThis         -  202  |
| Moop               | StubbornBot           -  174  |
| Cruncher           | StallBot              -  168  |
| IngoBuerk          | Gambler               -  157  |
| BetaDecay          | RussianRoulette       -  129  |
| flawr              | DoNothingBot          -  123  |
| SebastianLamerichs | Dumbot                -  115  |
| mmphilips          | PacifistBot           -  112  |
| SeanD              | DontUnderstand        -  92   |
| proudHaskeller     | PatientBot            -  83   |
| frederick          | Dumberbot             -  70   |
| flawr              | MetaJSRandomBot       -  68   |
| Darkgamma          | TheRetard             -  61   |
| BetaDecay          | Roomba                -  61   |
| BetaDecay          | PrussianRoulette      -  31   |
| frederick          | Dumbestbot            -  0    |

최종 점수 2014 년 9 월 10 일

EDIT6 : 극단적 인 크기와 런타임으로 인해 로그가 삭제되었습니다. 의 줄을 주석 해제하여 직접 생성 할 수 있습니다 RunThisTournament.py.

EDIT5 : 컨트롤러에 약어 처리를 구현 했으며 더 이상 런타임이 더 이상 없습니다. 이것은 숫자와 괄호가 더 이상 주석으로 취급되지 않는 부작용이 있습니다. 주석이 달린 버전을 제공하려는 경우에도 여전히 사용할 수 있지만 주석 처리 되지 않은 코드 버전 이있는 경우 매우 유용 하므로 주석을 수동으로 제거 할 필요가 없습니다. 감사!

EDIT4 : 토너먼트가 인기있는 네트워크 질문에서 제거되어 제목이 변경되었습니다. 이것을 지적 해 주신 @Geobits에게 감사드립니다!

EDIT3 : 예기치 않은 결과로 인해 bf 프로그램에서 제거 된 주석이 수정되었습니다. 의견을 삭제하는 데 문제가있는 사람은보고 해주세요.

EDIT2 : 컴퓨터가 느리게 작동하기 때문에 시간 제한을 100000 사이클에서 10000 사이클로 줄였습니다. 어쨌든 누군가가이 시점을 넘어서서 실행중인 게임의 결과를 돌린 것은 아닙니다.

EDIT1 : 인터프리터가 주석이 달린 프로그램의 숫자를 무시하지 않는 변환 스크립트의 버그가 수정되었습니다.


기술

이것은이다 브레인 퍽의 영감 대회 BF 마상 창 시합 . 두 개의 봇 (Brainfuck 프로그램)은 메모리 테이프로 표시되는 경기장에서 서로 싸우고 있습니다. 각 셀은 -127에서 128까지의 값을 보유하고 한계에서 랩핑 할 수 있습니다 (따라서 128 + 1 = -127).

유효한 지침은 일반적인 Brainfuck과 유사합니다. 즉,

+ : Increment cell at your pointer's location by 1
- : Decrement cell at your pointer's location by 1
> : Move your memory pointer by 1 cell towards the enemy flag
< : Move your memory pointer by 1 cell away from the enemy flag
[ : Jump behind the matching ']'-bracket if the cell at your pointer's location equals 0
] : Jump behind the matching '['-bracket if the cell at your pointer's location is not 0
. : Do nothing

경기장의 크기는 10 ~ 30 개이며, 각 전투마다 의사 무작위로 선택됩니다. 양쪽 끝에는 초기 값이 128 인 '플래그'가 있으며 다른 모든 셀은 0이됩니다. 봇의 목표는 적들이 자신의 깃발을 0으로 만들기 전에 2 번 연속 주기로 적의 깃발을 0으로 만드는 것입니다.

각 봇은 자신의 관점에서 셀 [0] 인 자체 플래그에서 시작합니다. 상대는 테이프의 다른쪽에 있습니다.

[ 128 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 128 ]
   ^                                             ^
my bot                                       other bot

두 봇 모두 동시에 작업을 수행하는데, 이는 한 주기로 간주됩니다. 게임은 10000 회주기 후 또는 승리 조건 중 하나에 도달하자마자 종료됩니다. 프로그램 중 하나가 종료되면 게임이 끝날 때까지 무언가를 중단하지만 여전히 이길 수 있습니다.


승리 조건

봇은 다음 조건 중 하나에서 승리합니다.

  • 적보다 먼저 적의 깃발이 제로화됩니다
  • 당신의 적이 테이프에서 자신의 포인터를 움직입니다 ( >플래그 또는 <자신의 실행)
  • 당신의 깃발의 가치는 10000주기 후에 상대방의 깃발의 가치보다 0에서 더 멀다

규칙

게시물에는 봇 이름과 코드가 포함되어야합니다.

  • 다음 약어 구문을 사용하여 코드를 더 읽기 쉽게 만들 수 있습니다.
    • 이 예 (+)*4와 동일 ++++이 어떤 명령의 유효 괄호 탁월한 브래킷 제외한 루프 로직은 약어 로직과 충돌하기 때문이다. [-[-[-대신에 사용하십시오([-)*3
  • 약어 +-><[].이외의 다른 모든 문자 는 주석이므로 무시됩니다.()*

규칙을 따르지 않는 봇은 토너먼트에서 제외됩니다.

  • 기본 Brainfuck 만 허용되며 절차 또는 산술 연산을 지원하는 다른 변형은 허용되지 않습니다.
  • 봇의 소스 코드는 대괄호를 포함하지 않아야합니다

기본 전략 에 대해 알리지 만 자신의 봇에 다른 코드를 사용 하지 마십시오 .


채점

봇의 점수는 다른 모든 봇과의 승리 횟수에 의해 결정됩니다. 2 개의 봇 사이의 조우는 서로 다른 메모리 테이프 길이를 가진 10 개의 일치로 구성되며, 조우 당 최대 10 점을 얻습니다. 무승부는이 경기에서 점수가 없습니다.


제어 프로그램

github에서 전투 프로그램 의 전체 로그와 함께 제어 프로그램 을 찾을 수 있습니다 . 리더 보드가 생성되면 여기에 리더 보드가 게시됩니다.

리포지토리를 복제하여 다른 사람과 직접 봇을 시도하십시오. python Arena.py yourbot.bf otherbot.bf경기를 진행하는 데 사용 합니다. 명령 행 플래그 -m및을 사용 하여 조건을 수정할 수 있습니다 -t. 터미널이 ANSI 이스케이프 시퀀스를 지원하지 않으면 --no-color플래그를 사용하여 컬러 출력을 비활성화하십시오.


봇 예제

FastClearBot.bf

(>)*9       Since the tape length is at least 10, the first 9 cells can be easily ignored
([          Find a non-zero cell
+++         Increment at first, since it could be a decoy
[-]         Set the cell to zero
]>          Move on to the next cell
)*21        Repeat this 21 times

DecoyBot.bf

>(+)*10     Set up a large defense in front of your flag
>(-)*10     Set up another one with different polarity
(>+>-)*3    Create some small decoys
(>[-]       Move on and set the next cell to zero
.           Wait one round, in case it is the enemy's flag
)*21        Repeat this 21 times

FastClearBot는 작은 디코이를 피할 수는 있지만 큰 디코이를 피할 수 없기 때문에 DecoyBot는 테이프 길이가 10보다 큰 모든 매치에서 승리합니다. FastClearBot이 DecoyBot에 대해 이길 수있는 유일한 상황은 상대방이 큰 미끼를 만들기 전에 적의 깃발에 닿을 수있을 정도로 빠를 때입니다.


5
오리지널, 나는 그것을 좋아한다. 나는 이것이 충분한 전략적 깊이를 허용하지 않을까 두려워하지만, 그것은 저일 수도 있습니다.
ɐɔıʇǝɥʇuʎs

11
Befunge를 사용하면 더 재미있을 것입니다 .
IchBinKeinBaum

6
마상 시합 을 실행하고 시각화 할 수 있는 BF 마상 웹 페이지 를 찾았 습니다.
PhiNotPi

4
이 KOTH, Cipher를 호스팅 해 주셔서 감사합니다. 너무 많은 제출물로 많은 작업을해야합니다.
AndoDaan

3
참여 해주신 모든 분들께 감사드립니다 ^^
Cipher

답변:


18

뉴 로키 매지컬 판타지

BF Joust 프로그램을 더 쉽게 작성하기 위해 컴파일러를 완성하여 약간의 HLL을 완성했습니다. 이것으로 무언가를 만들려는 첫 번째 진지한 시도였습니다. 봇의 개념은 매우 간단합니다. 그것은 다양한 극성의 몇 가지 미끼를 설정 한 다음 중간에 반전 오프셋이있는 큰 흔들림이 분명합니다.

어쨌든, 예상 점수는 마지막 라운드의 언덕에 대해 대략 577 점입니다. 93 %의 승리 율입니다. <3

컴파일 | 소스 코드

Nyuroki Magical Fantasy by Lymia Aluysia
Released under the terms of MIT license

>>>>>>>>++<--<+<--<++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+<-------------------------------------------------------------<---------------
----------------------------------------------<++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++<(-)*19(>)*8(>[-[-[-[(+)*3+[+[+[(-)*6-[-[-[-[-[-[-
[-[-[-[(+)*16+[+[+[+[+[+[+[+[(-)*24-[-[-[-[-[-[-[-[-[-[-[-[-[-[-[-[-[(+)*41+[+[
+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[(+)*82[[+.].]--(>[-[-[-[(+)*3+[+[+[(-)*6-
[-[-[-[-[-[-[-[-[-[(+)*16+[+[+[+[+[+[+[+[(-)*24-[-[-[-[-[-[-[-[-[-[-[-[-[-[-[-[
-[(+)*41+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[(+)*82[[+.].]--(>[-[-[-[(+)*3
+[+[+[(-)*6-[-[-[-[-[-[-[-[-[-[(+)*16+[+[+[+[+[+[+[+[(-)*24-[-[-[-[-[-[-[-[-[-[
-[-[-[-[-[-[-[(+)*41+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[(+)*82[[+.].]--(>
[-[-[-[(+)*3+[+[+[(-)*6-[-[-[-[-[-[-[-[-[-[(+)*16+[+[+[+[+[+[+[+[(-)*24-[-[-[-[
-[-[-[-[-[-[-[-[-[-[-[-[-[(+)*41+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[(+)*
82[[+.].]--(>[-[-[-[(+)*3+[+[+[(-)*6-[-[-[-[-[-[-[-[-[-[(+)*16+[+[+[+[+[+[+[+[(
-)*24-[-[-[-[-[-[-[-[-[-[-[-[-[-[-[-[-[(+)*41+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[
+[+[+[+[(+)*82[[+.].]--(>[-[-[-[(+)*3+[+[+[(-)*6-[-[-[-[-[-[-[-[-[-[(+)*16+[+[+
[+[+[+[+[+[(-)*24-[-[-[-[-[-[-[-[-[-[-[-[-[-[-[-[-[(+)*41+[+[+[+[+[+[+[+[+[+[+[
+[+[+[+[+[+[+[+[+[+[(+)*82[[+.].]--(>[-[-[-[(+)*3+[+[+[(-)*6-[-[-[-[-[-[-[-[-[-
[(+)*16+[+[+[+[+[+[+[+[(-)*24-[-[-[-[-[-[-[-[-[-[-[-[-[-[-[-[-[(+)*41+[+[+[+[+[
+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[(+)*82[[+.].]--(>[-[-[-[(+)*3+[+[+[(-)*6-[-[-[-
[-[-[-[-[-[-[(+)*16+[+[+[+[+[+[+[+[(-)*24-[-[-[-[-[-[-[-[-[-[-[-[-[-[-[-[-[(+)*
41+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[(+)*82[[+.].]--(>[-[-[-[(+)*3+[+[+[
(-)*6-[-[-[-[-[-[-[-[-[-[(+)*16+[+[+[+[+[+[+[+[(-)*24-[-[-[-[-[-[-[-[-[-[-[-[-[
-[-[-[-[(+)*41+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[(+)*82[[+.].]--(>[-[-[-
[(+)*3+[+[+[(-)*6-[-[-[-[-[-[-[-[-[-[(+)*16+[+[+[+[+[+[+[+[(-)*24-[-[-[-[-[-[-[
-[-[-[-[-[-[-[-[-[-[(+)*41+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[(+)*82[[+.]
.]--(>[-[-[-[(+)*3+[+[+[(-)*6-[-[-[-[-[-[-[-[-[-[(+)*16+[+[+[+[+[+[+[+[(-)*24-[
-[-[-[-[-[-[-[-[-[-[-[-[-[-[-[-[(+)*41+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+
[(+)*82[[+.].]--(>[-[-[-[(+)*3+[+[+[(-)*6-[-[-[-[-[-[-[-[-[-[(+)*16+[+[+[+[+[+[
+[+[(-)*24-[-[-[-[-[-[-[-[-[-[-[-[-[-[-[-[-[(+)*41+[+[+[+[+[+[+[+[+[+[+[+[+[+[+
[+[+[+[+[+[+[(+)*82[[+.].]--(>[-[-[-[(+)*3+[+[+[(-)*6-[-[-[-[-[-[-[-[-[-[(+)*16
+[+[+[+[+[+[+[+[(-)*24-[-[-[-[-[-[-[-[-[-[-[-[-[-[-[-[-[(+)*41+[+[+[+[+[+[+[+[+
[+[+[+[+[+[+[+[+[+[+[+[+[(+)*82[[+.].]--(>[-[-[-[(+)*3+[+[+[(-)*6-[-[-[-[-[-[-[
-[-[-[(+)*16+[+[+[+[+[+[+[+[(-)*24-[-[-[-[-[-[-[-[-[-[-[-[-[-[-[-[-[(+)*41+[+[+
[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[(+)*82[[+.].]--(>[-[-[-[(+)*3+[+[+[(-)*6-[
-[-[-[-[-[-[-[-[-[(+)*16+[+[+[+[+[+[+[+[(-)*24-[-[-[-[-[-[-[-[-[-[-[-[-[-[-[-[-
[(+)*41+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[(+)*82[[+.].]--(>[-[-[-[(+)*3+
[+[+[(-)*6-[-[-[-[-[-[-[-[-[-[(+)*16+[+[+[+[+[+[+[+[(-)*24-[-[-[-[-[-[-[-[-[-[-
[-[-[-[-[-[-[(+)*41+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[(+)*82[[+.].]--(>[
-[-[-[(+)*3+[+[+[(-)*6-[-[-[-[-[-[-[-[-[-[(+)*16+[+[+[+[+[+[+[+[(-)*24-[-[-[-[-
[-[-[-[-[-[-[-[-[-[-[-[-[(+)*41+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[(+)*82
[[+.].]--(>[-[-[-[(+)*3+[+[+[(-)*6-[-[-[-[-[-[-[-[-[-[(+)*16+[+[+[+[+[+[+[+[(-)
*24-[-[-[-[-[-[-[-[-[-[-[-[-[-[-[-[-[(+)*41+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[
+[+[+[(+)*82[[+.].]--(>[-[-[-[(+)*3+[+[+[(-)*6-[-[-[-[-[-[-[-[-[-[(+)*16+[+[+[+
[+[+[+[+[(-)*24-[-[-[-[-[-[-[-[-[-[-[-[-[-[-[-[-[(+)*41+[+[+[+[+[+[+[+[+[+[+[+[
+[+[+[+[+[+[+[+[+[(+)*82[[+.].]--(>[-[-[-[(+)*3+[+[+[(-)*6-[-[-[-[-[-[-[-[-[-[(
+)*16+[+[+[+[+[+[+[+[(-)*24-[-[-[-[-[-[-[-[-[-[-[-[-[-[-[-[-[(+)*41+[+[+[+[+[+[
+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[(+)*82[[+.].]-->[-[-[-[(+)*3+[+[+[(-)*6-[-[-[-[-[
-[-[-[-[-[(+)*16+[+[+[+[+[+[+[+[(-)*24-[-[-[-[-[-[-[-[-[-[-[-[-[-[-[-[-[(+)*41+
[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[(+)*82[[+.].]--]]]]]]]]]]]]]]]]]]]]]]]
]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]--]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
]]]]]]]]]]]]]]]]]]]]]]]]]]--)*2]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
]]]]]]]]]]]]]]]--)*3]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
]]]]--)*4]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]--)*5]]
]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]--)*6]]]]]]]]]]]]]
]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]--)*7]]]]]]]]]]]]]]]]]]]]]]]]
]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]--)*8]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
]]]]]]]]]]]]]]]]]]]]]]]]]]]]--)*9]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
]]]]]]]]]]]]]]]]]--)*10]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
]]]]]]]--)*11]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]--)
*12]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]--)*13]]]]]]]
]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]--)*14]]]]]]]]]]]]]]]]]
]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]--)*15]]]]]]]]]]]]]]]]]]]]]]]]]]]
]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]--)*16]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
]]]]]]]]]]]]]]]]]]]]]]]]]]--)*17]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
]]]]]]]]]]]]]]]]--)*18]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
]]]]]]--)*19]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]--)*
20]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]--)*21

편집 : Nyuroki에서 몇 번 더 승리했습니다.

편집 2 : 야, 봐, 나는 다시했다!

편집 3 : Arena.py에서 어리석은 파싱 버그로 잠시 동안 레슬링 한 후 마침내 또 다른 개선이 이루어졌습니다. 이것이 "심각해질 시간"이라는 의미입니다. <3


Loke가 약간의 조정이 필요한 것 같습니다 :-) 언어를 사랑하십시오. 당신이 사이에 공백을 한 것으로 Arena.py에서 버그 되었습니까 )*나 사이 *와 수는?
Sylwester

@Sylwester 훨씬 더 나쁘다. 그들이해서는 안되는 곳으로가는 루프 : github.com/redevined/brainfuck/pull/6
Lymia Aluysia

# 1을 축하합니다. 92,5 %의 승률이 맞지 않을 것입니다.
Sylwester

잘했지만이 속기 남용이 아닙니까? 중첩 루프는 사실상 21 계승 = 5 * 10 ^ 19입니다. 다른 말로하면 기본적으로 쉽게 확장 할 수 없습니다.
weston

1
@weston 예. 그리고 가장 개발 된 BF Joust hill ( codu.org/eso/bfjoust/in_egobot-smartlock을 살펴보십시오) 에있는 대부분의 프로그램 은 훨씬 더 나쁩니다. 이것은 속기의 일종이기 때문에 특히 큰 문제는 아닙니다. 그것은 길이가 너무 길어서 실행 불가능한 전략을 실행 가능하게 만듭니다. :)
Lymia Aluysia

43

클로킹 장치 봇

이 봇은 기본적으로베이스를 숨기려고 시도하여 다른 봇이 테이프를 지나서 바로 이동할 수 있도록합니다.

(-)*127(-+--+-++)*12500

4
매우 영리하며 이것을 설명하기 위해 봇을 조정해야했습니다.
Moop

2
이것은 내 의견으로는 여기에서 가장 영리한 것 중 하나입니다.
Almo

첫 번째 클로 커의 경우 + f 나는 Ràn을 만든 후 전에 이것을 알지 못했지만 비슷한 아이디어, 다른 응용 프로그램입니다.
Sylwester

19

벌리 볼더 v3

Burly Balder는 중간 느리게 돌진합니다. 러시 모드로 들어가기 전에 두 개의 큰 미끼를 만듭니다. 서두 모드에서는 0 셀마다 4 단계 만 사용하는 루프가 있으며 0이 아닌 셀일 경우 [-.]. 그는 242 단계에서 변경되지 않은 플래그를 지우고, 114 개는 불확실 -*128 하고 14 개는 순진 [-]하지 않습니다. 세포가 제거되면 그는 -2 디코이 흔적을 남깁니다. 그는 크기 9 게임의 일부 단계를 저장하기 위해 인덱스 9에만 특별한 경우가 있으며 셀에 1 미끼가 남습니다.

>((-)*18>)*2                                  Make two minus seventeen decoys
(->)*6                                        Move to cell nine

[                                             special case for ten cell game 
   +[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[       if not minus one to minus eighteen 
   (-)*18                                     decrease by eighteen
   -[-[-[-[-[-[-[-[-[-[-[-[-[-[-[-[-[-[       if not plus one to plus eighteen
       (-)*107                                decrease by hundred and seven
       [-.]                                   slow clear
   ]]]]]]]]]]]]]]]]]]                         end plus conditionals
   ]]]]]]]]]]]]]]]]]]                         end minus conditionals
]                                             end special case
+
([>                                           while true go right
  [                                           start clear cell 
   +[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[+[       if not minus one to minus eighteen 
   (-)*18                                     decrease by eighteen
   -[-[-[-[-[-[-[-[-[-[-[-[-[-[-[-[-[-[       if not plus one to plus eighteen
       (-)*107                                decrease by hundred and seven
       [-.]                                   slow clear
   ]]]]]]]]]]]]]]]]]]                         end plus conditionals
   ]]]]]]]]]]]]]]]]]]                         end minus conditionals
  ]                                           end clear cell
  --                                          set to minus two 
 ]                                            while true end
 -                                           decrease and loop
)*5                                          In case of clash or initial column minus seven is zero

퀴즈 : Balder는 오딘의 북유럽 신이며 아들입니다. 그는 대부분 자신의 죽음 에 대한 이야기로 유명합니다 . 그는 그의 안전이 무서웠 기 때문에 다른 신들은 모든 위협을 예측하고 차단하려고했습니다. 그는 로키에 의해 살해당했습니다. 그들은 칼과 화살로부터 그를 보호했지만 미 슬레로부터 그를 보호하는 것을 잊었습니다.


2
당신의 미끼가 나를 죽이고 있습니다. 잘 했어.
AndoDaan

1
@AndoDaan 감사합니다. 당신 BeatYouMate은 영리했습니다. 나는 대부분의 봇에 대한 미끼가 페널티를 줄 때까지 다음 라운드에서 더 커질 까 두려워합니다. 그렇다면 우리는 아마도 더 멋진 전략이
나오게

2
디코이 크기를 늘리는 문제는 빠른 공격 봇에 비해 짧은 테이프의 성능과 균형을 이룰 수 있다는 것입니다. 랜덤 라운드 10 회를하면 다른 참가작의 공격 속도에 따라 변화하는 스윗 스팟이있을 가능성이 높습니다.
Comintern

2
그래, 당신은 여전히 ​​이길 사람입니다.
AndoDaan

4
@AndoDaan 나를 지원하기 위해 너무 많은 북유럽 신들과 함께 임의의 경기장 크기를 선호하는 것 같습니다 :-)
Sylwester

13

에보 봇 1

이것은 유전자 알고리즘을 통해 생성 된 간단한 봇입니다. 나는 템플릿으로 시작했고, 프로그램은 더 나은 전사 로봇을 만들기 위해 천천히 숫자를 조정했습니다. 아래 코드는 가독성을 높이기 위해 편집되었습니다.

>+>---(>)*6(>[+++[-]])*30

나는 다른 후보자들의 건강을 측정하기 위해 경쟁에서 다른 항목을 사용했습니다.

이것이 evobot에서 처음 시도한 이후 간단한 템플릿으로 시작했습니다.

>(+)*n>(-)*n(>)*n(>[(+)*n[-]])*30  #template

이 봇은 50 대에서 60 대 사이의 점수를받을 것으로 예상합니다.

현재 리버스 디코이 템플릿을 작업 중입니다.

에보 봇 2

이것은 동일한 유전자 알고리즘으로 생성 된 봇이지만 다음 템플릿을 사용합니다.

>>>>(-)*n<(+)*n<(-)*n<(+)*n(>)*8(>[+++[-]])*30  #template

이 봇은 역 디코이 전략을 사용하여 다양한 높이의 4 디코이를 설정합니다. 결과 봇은 다음과 같습니다.

>>>>(-)*4<(+)*6<(-)*7<(+)*8(>)*8(>[+++[-]])*30

나는이 새로운 봇이 이전 봇보다 더 나은 요금을 지불 할 것으로 예상하고, 아마도 70 년대에 새로운 점수를 얻었을 것입니다.


2
유전자 알고리즘의 경우 +1 나는 그들에게 큰 믿음을 가지고 있습니다. 나는 당신의 봇이 잘되기를 바랍니다.
AndoDaan

12

교류기

대부분의 사람들이 셀을 더하거나 빼서 셀을 제로로 가정하므로 평균적으로 모든 셀은 128 턴을 0으로 만듭니다.

(>+>-)*4>+(>[-][.])*21

주석이 달린 버전

(>+>-)*4       Move eight squares alternating polarity    
>+             Move one more
(
    >          Move to the next square
    [-]        Zero it
    [.]        Wait while it is zero
)*21           Repeat

젠장, 최신 변경 사항은 Geronimo에 대한 발전기의 승률을 ~ 60 %에서 ~ 90 %로 향상시킵니다. 좋은.
Ingo Bürk

예, (> +>-) * 9를했을 때 나는 18 번 움직 였으므로 테이프에서 떨어질 것입니다. 바보 같은 실수.
Moop

셀을 0에 교대로 추가 / 감소하여 Geronimo를 보호하더라도 내 승률이 전혀 바뀌지 않습니다. 발전기가 여기에서 승자로 나올 수도 있습니다. 크랙을 거의 어렵게 설정하기 위해 몇 번의 사이클을 사용합니다.
Ingo Bürk

이봐, 내가 틀렸다면 수정하지만 보드가 10 길면이 봇이 보드에서 자동으로 이동하지 않습니까? 아무것도 제로로 설정하기 전에 10 개의 사각형을 움직입니다.
보쉬 맨

11

그래서 다른 누군가가 유전자 알고리즘을 사용하여 여기에서 프로그램을 시도하고 만듭니다. 글쎄 ... 오래 전에, 나는 IRC 채널에서 진행중인 언덕을위한 BF Joust 진화기를 썼습니다. 이 콘테스트에도 참가하기로 결정했습니다 ~

그리고 ... 진화자를 가진 다른 사람과는 달리, 나의 진화자는 실제로 반복 횟수보다 더 많은 프로그램을 바꿀 수 있습니다. :)

NestDarwin (309 세대)

이것이 지금까지 진화론자가 생각 해낸 최고의 결과입니다. 이 경우 중첩 구조가 얼마나 도움이되는지 잘 모르겠지만 이와 같은 구조는 진화자가 할 수있는 것이 었습니다. 27.08.2014 언덕의 예상 성능은 474 점입니다. (21 테이프 길이에서 전투를 실행하고 10/21을 곱하여 계산됩니다.이 언덕에 추가 프로그램이 하나 있다는 사실에 대해서는 정규화되지 않았습니다.)

(-)*5(>[(-)*4----[.+]]--((-)*5(>[(-)*4----[.+]]--((-)*5(>[(-)*4----[.+]]--((-)*5(>[(-)*4----[.+]]--)*10000)*10000)*10000)*10000)*10000)*10000)*10000

편집 :이 언덕에 들어가고 싶은 프로그램 목록이 변경되었습니다. 밤새 진화기를 달렸다. :)


편집 2 : 나는 진화 자의 출력을 수동으로 분석했습니다. 매우 다르게 보이지만 NestDarwin은 기본적으로 TinyDarwin의 최적화 된 버전입니다. 수동으로 최소화하고 (동일한 기능으로) 다음과 같이 분석합니다.

(-)*5                     Break stuff that assumes flag size.
(>[(-)*8[.+]](-)*7)*3     Make a few larger decoys next to our flag. 
                          The clear loop is basically dead code here.
                          Few things are going to approach so fast, so.
(>[(-)*8[.+]](-)*2)*10000 And go on an rampage with an offset clear!
                          I presume the slow clear is to beat tripwires.

거의 동일한 프로그램은 다음과 같습니다. 기본적으로 TinyDarwin의 최적화 된 버전입니다.

(-)*5(>.(-)*7)*3(>[(-)*8[.+]](-)*2)*10000

TinyDarwin은 다음과 같습니다. 크게 다르지 않습니까? 난 그냥 언덕에서 그것을 철수하려고합니다. 나는 그것이 별개라고 생각했지만 ... 글쎄, 나는 틀렸다.

((-)*5>[(-)*4.[+.]].)*10000

현재의 언덕은 훨씬 더 복잡한 것들을 진화시킬 수있을만큼 강하지 않다는 것이 명백해졌습니다. :(


1
처음부터 축하합니다. 유전자 알고리즘 프로그램이 현재 버전을 템플릿으로 사용하고 새 버전을 계속 사용하여 더욱 향상시킬 수 있습니까?
Sylwester

처음부터 훌륭합니다. 나는 유전자 알고리즘 (그것의 산란)이 그것을 만들어서 너무 기쁩니다!
AndoDaan

이제 우리가 모든 게임의 결과를 얻을 수 있고, 더 진화하고, 기계 학습을 추가 할 수 있다면 ... 불쌍한 인간은 더 이상 기회를 갖지 못할 것입니다 : P
Sp3000

@ 실 웨스터 종류? 내 내부 표현은 (불완전하게 생각한) 유전자 활성화 시스템을 사용합니다.이 시스템은 상부 구조를 진화시킬 수 있습니다 (실제로는 그렇지 않습니다). 최종 프로그램을 되돌릴 수없고 내부 표현을 회복 할 수는 없지만 지시 사항을 단일 유전자에 넣고 계속 진화시킬 수는 있습니다 (그러나 도움이 될만한 것은 많음).
Lymia Aluysia

@ Sp3000 불행히도 내 알고리즘은 잘 개발 된 #esoteric hill에서 간신히 발전 할 수 있습니다. 내가 그런 일을 할 수 있다면 좋겠지 만, 아쉽게도 유전자 알고리즘에 대한 나의 기술은 충분하지 않습니다. 추한 해킹을 모두 정리하면 언젠가 진화기를 풀 수있을 것입니다.
Lymia Aluysia

10

북극곰 Mk II

북극곰에는 두 가지 종류가 있습니다 : 갇힌 사람들과 다른 사람들을 갇는 사람들.

상대의 극성을 추측 한 다음 해당 정보를 사용하여 상대를 무한 루프에 고정시킵니다. 간단한 정리 전략에 반대하고 다른 전략에 대해서는 다소 무작위로 작동합니다. 트랩을 쉽게 피할 수 있으므로 나중에 백업 전략을 추가 할 수 있습니다.

>++>- create polar bear traps
[[]]<
[][
[[]]<
(+)*290 (>)*9  (+)*120 (.+)*16 (<)*9
(+)*112 (>)*10 (+)*120 (.+)*16 (<)*10
(+)*112 (>)*11 (+)*120 (.+)*16 (<)*11
(+)*112 (>)*12 (+)*120 (.+)*16 (<)*12
(+)*111 (>)*13 (+)*120 (.+)*16 (<)*13
(+)*111 (>)*14 (+)*120 (.+)*16 (<)*14
(+)*111 (>)*15 (+)*120 (.+)*16 (<)*15
(+)*110 (>)*16 (+)*120 (.+)*16 (<)*16
(+)*110 (>)*17 (+)*120 (.+)*16 (<)*17
(+)*110 (>)*18 (+)*120 (.+)*16 (<)*18
(+)*109 (>)*19 (+)*120 (.+)*16 (<)*19
(+)*109 (>)*20 (+)*120 (.+)*16 (<)*20
(+)*109 (>)*21 (+)*120 (.+)*16 (<)*21
(+)*108 (>)*22 (+)*120 (.+)*16 (<)*22
(+)*108 (>)*23 (+)*120 (.+)*16 (<)*23
(+)*108 (>)*24 (+)*120 (.+)*16 (<)*24
(+)*107 (>)*25 (+)*120 (.+)*16 (<)*25
(+)*107 (>)*26 (+)*120 (.+)*16 (<)*26
(+)*107 (>)*27 (+)*120 (.+)*16 (<)*27
(+)*106 (>)*28 (+)*120 (.+)*16 (<)*28
(+)*106 (>)*29 (+)*120 (.+)*16 (<)*29
(+)*106 (>)*29 [-]
]<
(-)*290 (>)*9  (+)*120 (.+)*16 (<)*9
(-)*112 (>)*10 (+)*120 (.+)*16 (<)*10
(-)*112 (>)*11 (+)*120 (.+)*16 (<)*11
(-)*112 (>)*12 (+)*120 (.+)*16 (<)*12
(-)*111 (>)*13 (+)*120 (.+)*16 (<)*13
(-)*111 (>)*14 (+)*120 (.+)*16 (<)*14
(-)*111 (>)*15 (+)*120 (.+)*16 (<)*15
(-)*110 (>)*16 (+)*120 (.+)*16 (<)*16
(-)*110 (>)*17 (+)*120 (.+)*16 (<)*17
(-)*110 (>)*18 (+)*120 (.+)*16 (<)*18
(-)*109 (>)*19 (+)*120 (.+)*16 (<)*19
(-)*109 (>)*20 (+)*120 (.+)*16 (<)*20
(-)*109 (>)*21 (+)*120 (.+)*16 (<)*21
(-)*108 (>)*22 (+)*120 (.+)*16 (<)*22
(-)*108 (>)*23 (+)*120 (.+)*16 (<)*23
(-)*108 (>)*24 (+)*120 (.+)*16 (<)*24
(-)*107 (>)*25 (+)*120 (.+)*16 (<)*25
(-)*107 (>)*26 (+)*120 (.+)*16 (<)*26
(-)*107 (>)*27 (+)*120 (.+)*16 (<)*27
(-)*106 (>)*28 (+)*120 (.+)*16 (<)*28
(-)*106 (>)*29 (+)*120 (.+)*16 (<)*29
(-)*106 (>)*29 [-]

(]< (+)*290 (>)*9 ... [-])*2?로 코드 크기를 반으로 줄일 수 있습니다 .
Sylwester

@Sylwester 다른 절반은 사용 +하고 다른 절반은을 사용하기 때문에 할 수 없습니다 -.
Mika Lammi

북극곰은 오프셋 클리어와 잘
어울리지

@ Sp3000 확실합니까? 나는 (같은 여러 오프셋 및 극성 시도 [(+)*3[-]], [(-)*6[+]]) 그리고 (적어도 아주 작은 오프셋을) 잘 작동합니다.
Mika Lammi

오, 나는 무엇이 잘못되었는지 안다 : / 나는 >>>>>>>>>((-)*4[+][--.]>)*21셀을 두 번 점검하는 것과 같은 프로그램을 시도하고 있었고 두 (+/-)*290번째 오프 싱크 루프가 트리거되도록했다. 오프셋 클리어 결함이 아닙니다.
Sp3000

10

평화 주의자 봇

내 봇은 폭력이 답이 아니라고 믿고 모든 비용으로 전투를 피하려고 노력할 것입니다.

(.)*8       Since it takes at least 9 turns for a bot to come to mine, remain idle for 8
>           Skedaddle over one spot
([(>)*8     If a bot has approached, RUN
[(<)*8      If you accidentally ran into a bot, run the other way this time
]].         If it's safe here, chill out
)*6249      keep running until the end of battle, or until tired

8
나는 Brainfuck 코드로 계산되어 봇을 필요보다 약간 느리게 만들기 때문에 귀하의 의견에서 '.'를 제거하는 자유를 취했습니다. 점들이 고의적이라면, 저를 바로 고쳐주세요!
Cipher

아 맞다.. 's를 제거해 주셔서 감사합니다. p
mmphilips

9

누구 있어요?

적군이 미끼를 언제 청소하기 시작했는지 결정하기 위해 주기적으로 뒤를 돌아 본다.

잘하는 것 같지만 전략 때문인지 또는 지우기 전에 모든 셀에 10을 추가하고 있는지 확실하지 않습니다.

편집 : 논리 문제를 수정했습니다. 처음으로 brainfuck 프로그램을 작성하십시오. 그것은 그 이름에 달려 있습니다.

>>>+<(+)*5<(-)*5>>             Initial defense
[                              While he hasn't passed us yet
  (>[([(+)*10[-]]>)*29])*4     Jump ahead four, checking for enemy
  +                            Front marker
  <<<<                         Check behind
  [                            If he hasn't passed us yet
    >>>
    (+)*5<(-)*5                Set decoys in reverse
    <<[-]                  
  ]
  >>>>                         Check ahead
]                              
([-[(+)*10[-]]]>)*29           Clear to the end

+1 : 이것은 내가 처음 9 개 셀을 넘어서 끈으로 묶는 끈 (+/- 1 이외)을 보았던 첫 번째 봇입니다. 더 긴 테이프에서는 킬러입니다. Lightfoot Plodder 개조 이제 좀 더 ...
DLosc

9

월 -E 2.0

상대가 초기 깃발 값을 변경하지 않은 경우 위치 9로 돌진하여 128을 추가하여 크기 10 경기장에서 빠르게 승리합니다. 더 큰 경기장에서 이것은 큰 미끼로 작동합니다. 그런 다음 위치 9와 자체 플래그 사이의 공간을 큰 디코이로 채 웁니다. 미끼를 배치하면 비어 있지 않은 위치를 검색하여 빠르게 정리합니다.

버전 2.0 은 더 큰 디코이를 구축하고 초기 플래그 값 변경에 대해 약간의 허용 오차를 갖습니다. 사물이 털이 보이면 백업 전략으로 전환 할 수도 있습니다.

(>)*9
(+)*128 <
< [ (<)*7 ((-+-)*256)*15 ] > [ (<)*8 ((+-+)*256)*15 ]
(-)*47 < (+)*63 < (-)*72 < (+)*69 <
(-)*84 < (+)*66 < (-)*76 < (+)*66 <
++++ (>)*9 +.+.+.----.-.-. (>[-[++[(+)*124.+.+.+.+.+.+.+.+.>]]])*21

이 봇의 효과는 두 가지 사실을 기반으로합니다.

  1. 대부분의 봇은 플래그의 초기 값을 변경하지 않습니다.
  2. 큰 미끼를 만드는 것이 지우는 것보다 빠릅니다.

이 벽들은 나를 죽이고 있습니다
Sp3000

9

치명적인 로크 V2.1 (미 슬레와 함께)

이것은 물론 치명적인 봇이며 그는 아름다운 Burly Balder a를 미 슬 토로 죽일뿐만 아니라 다른 봇과도 거의 항상 이깁니다. 그것은 매체와 빠른 돌진입니다. 시험에서 567 점을 받았습니다

전투 용 BFJ 파일 컴파일 , 라켓 BFJ 생성기 소스 :

#lang racket
;; bare minimum bfj support
(define (bf . args)
  (apply string-append 
         (map (lambda (x) 
                (if (number? x)
                    (number->string x)
                    x))
              args)))

(define (dup x num)  
  (let loop ((n num) (lst '()))
    (cond ((< n 0) (error "Negative n"))
          ((zero? n) (apply bf lst))
          (else (loop (sub1 n) (cons x lst))))))


;; Useful procedures
(define (wiggle amount default-zero n)
  (let rec ((n n))
    (if (zero? n)
        ""
        (bf "["
            (dup "-[" amount)
            (bf "(+)*" amount)
            (dup "+[" amount)
            default-zero
            ">"
            (rec (sub1 n))
            (dup "]" (* amount 2))
            "]"))))

(define (goto from to)
  (let* ((dst (- to from))
         (op (if (> dst 0) ">" "<"))
         (abs (if (> dst 0) dst (- dst))))
    (if (= from to) 
        ""
        (bf "(" op ")*" abs))))

(define max-position 30)
(define initial-decoy  "(-)*17")
(define small-decoy "(+)*10")
(define large-decoy "(-)*32")
(define flag-position 7)
(define decoy-phase-end-position 14)
(define wiggle-amount 8)
(define plodd-clear "..(+)*120(+.)*27>")
(define plodd-inner-clear (bf "(+)*" 
                              (- 78 wiggle-amount) 
                              "..(+)*42(+.)*27"))
;; Main body of Loke V2
(define (generate-loke2)
  (bf ">" 
      initial-decoy
      ">->+>->+>->"
      (let gen-rec ((n flag-position) (p #t))
        (if (> n decoy-phase-end-position)
            (bf (medium-slow n))
            (bf "[" 
                (medium-slow n)
                "]" 
                (if p small-decoy large-decoy)
                ">"
                (gen-rec (+ n 1) (not p)))))))

;; Retreat goes back to home
;; leaving a trail of flags
;; from flag position
(define (medium-slow last-index)
  (bf (goto last-index 2)
      (let medium-rec ((n 2) (p #f))
        (if (= n flag-position)
                (fast-rush n last-index)
            (bf (if p "-" "+")
                "[" (fast-rush n (max 9 last-index)) "]" 
                (if p small-decoy large-decoy)
                ">"
                (medium-rec (+ n 1) (not p)))))))

(define (fast-rush cur-position last-known)
  (bf (goto cur-position last-known)      
      "([" plodd-clear 
      "("
      (wiggle wiggle-amount
              plodd-inner-clear 
              (- max-position last-known 1))
      ">)*" (- max-position last-known)
      "]>)*" (- max-position last-known)))

(display (generate-loke2))

상식 : 로크 (Loki)는 북유럽 신화의 신으로 모든 사람과 놀고 놀아주기를 좋아합니다. 그는 (동물과 사람에게) 모양을 바꾸는 사람이며 대개 자신의 길을갑니다. 이야기에서 그는 종종 다른 신들과 함께 여행하고 도와주고 작은 속임수를 쓰고 일을 저어줍니다. Balder를 죽이는 것 외에도 그는 Hel (Hell / Helvete의 여신), 야수 Fenrir 및 Ragnarok (북 아마겟돈)을 시작하는 Midgard Serpent를 아버지의 아버지로 임명했습니다.

작동 원리

처음에는 큰 (-17) 디코이를 만들고 +-인덱스 7까지 패턴 을 만듭니다 . 그는 (+ 10, -32) + 디코이의 흔적을 남기고 13에서 앞으로 스캔하지만 세트를 감지하면 중단됩니다. 중간 * 1 러시 모드를 시작하십시오. 셀을 설정하지 않으면 slow * 3 rush 모드도 시작됩니다.

* 1 중간 돌진 모드에서 그는 인덱스 7-13 중 하나에서 상대 활동을 감지했으며 인덱스 2에서 시작합니다. 일부 상대는 0을 남기고 다른 값은 다른 값을 남겨두고 미끼를 만들기 전에 상대 활동을 감지하는 수단을 갖습니다. 지수 2-6 (-32, + 10) +. 셀이 예상 값 (-1, 1)이 아니거나 모든 미끼를 완성한 경우 빠른 * 2 러시 모드로 전환됩니다.

* 2 그가 감지 한 빠른 러시 모드는 미끼가 작동하지 않을 것으로 예상됩니다. 우리가 이미 설정 한 것이 상대를 멈추고 상대 미끼를 통한 달리기에 집중하기를 바랍니다. 그는 이전 스캔 [9,14] 또는 그보다 일찍 만들어진 인덱스 9를 기반으로 가장 먼 지점에서 돌진하기 시작합니다. 그는 함정 인 경우 0 이하로 값을 낮추고 싶지 않기 때문에 120과 plodd 27을 추가하는 첫 번째 미끼에 대한 특별한 경우를 가지고 있지만, 우리가 증가하기 전에 [-8,8]에서 흔들리면 모든 미끼에 대해 다음 셀로 계속하기 전에 120 단계 및 플로팅 27 단계.

느린 돌진 모드는 현재 언덕의 점수에 영향을 미치지 않기 때문에 제거되었으며 내 봇을 조금 작게 만들었습니다.


3
이제 우리는 광기를보기 시작했습니다. 나는 그것을 좋아한다.
Sp3000

@ Sp3000 YandereBotv2는 미끼와 스윙 값을 높이는 것 외에도 새로운 것을 생각해야했습니다. 지난 라운드의 모든 봇보다 허드에 대한 승리 백분위 수가 높았 기 때문에 경기장 크기가 좋지 않습니다.
Sylwester

Ahaha 어쩌면 - 나는 계속 증가하는 미끼 크기에 대한 대한 대책이 필요하다고 생각 : / 나는 정말 당신이 비록 다른 모드를 얼마나 좋아
SP3000

한숨 . BF Joust의 HLL을 개선하여 진화자가 다시 기회를 잡을 수 있도록해야합니다. # 1 ~
Lymia Aluysia

@LymiaAluysia 감사합니다. 나는 Balder에 더 놀랐다. 새 버전의 NestDarwin, YandereBot 및 Mickey :-)
Sylwester

8

제로니모

Kaine의 BestOffense 봇보다 더 공격적입니다. 여기서 전략은 : 다른 사람들은 영리 해 지려고 노력하지만 영리 해지기 위해서는 순환이 필요합니다. 따라서 적군이 알고있는 부분으로 건너 뛰고 찾은 모든 것을 지우십시오.

(>)*9(>[-])*21

OP의 예제 봇과 kaine의 봇에 대해 대부분의 경기에서 승리하는 것 같습니다.


7

스턴 봇

일이 시작된 실제 절반 심각한 봇. 이러한 봇 중 일부의 유사한 특성을 해결합니다.

(>->+>)*3(>[+]>[-])*21

1
SternBot은 패리티 문제를 제공합니다 :(
Sp3000

7

하지마

최선의 방어 (...)는 무지입니다.

.

아무것도하지 않습니다.

편집 : 와우, 그것이 모든 봇의 최소 20 % 이상보다 더 나은 일을한다는 것을 알게되어 놀랐습니다 =) (이것은 우수한 전략을 사용하거나 ....?


2
다른 봇 중 일부는 작은 경기장에서 자살을합니다. 예. Gambler 는 20 번째 셀로 직접 이동하며 10-19 번째 게임의 경우 게임에 대해 느슨해집니다DoNothingBot
Sylwester

2
호기심을 피하기 위해 다른 항목에 대해 테스터를 통해이 작업을 수행했습니다 (모든 테이프 길이 재생). 부끄러운 벽을 보라 ... +1
Comintern

하하, 공유 주셔서 감사합니다-나는 하나 또는 두 개의 검은 양이있을 것으로 예상했지만 너무 많은 봇을 '패배'할 것으로 기대하지 않았다 =)
flawr

7

카운터 펀치-편집

강력한 방어력 구축과 공격의 균형 잡힌 조합.

(+)*6>(-)*12(>)*7(<(-)*12<(+)*12)*3(>)*7(([-([(-)*6[+.]])*5])*4>)*21

주석 달기 :

(+)*6                             Switch polarity of the flag
>(-)*12                           Build a quick decoy in front of the flag
(>)*7(<(-)*12<(+)*12)*3           Hop out and start building decoys backward
(>)*7                             Tally ho!
(([-([(-)*6[+.]])*5])*4>)*21      Clear toward the opposite end

@ Geobit 's Backtracker 와 유사 하지만 먼저 깃발 앞에 빠른 미끼를 두어 빠른 공격자를 방어합니다.

작은 값으로 미끼를 빠르게 제거하기 위해 공격은 반대 극성으로 제거됩니다. 최악의 시나리오는 64의 디코이 여야합니다 (양극성).

편집 1 : 미끼에 대한 공격 효율을 향상시킵니다 (극성 전환에 논리 오류가 있음).

편집 2 : 테스트는 가장 안쪽 루프에서 일시 중지가 약간 더 우수하다는 것을 나타냅니다.


6

역 추적기

역 미끼 전략. 앞뒤에서 미끼를 내려 놓으십시오. 따라서 나머지를 건너 뛰는 사람은 없습니다.

보드의 크기가 20 이하인 경우, 빠른 공격 봇에는 효과가 없습니다. 디코 잉을 시작하기 전에 서로를 통과하기 때문입니다.

(>)*9((-)*4<+<-<(+)*4<)*2(>)*8(>[-])*21

(>)*9                   Jump ahead 9
((-)*4<+<-<(+)*4<)*2    Lay down alternating polarity/size decoys for 8 spots behind
(>)*8                   Jump back forward
(>[-])*21               Clear until flag

참고 : 나는 BF는 아니지만 이것이 내가 원하는 것을합니다. 그렇지 않다면 지금 알려주세요.


6

만질 수 없어

이것은 상대방이 어떻게 세포를 제거 하는지를 결정하고 적절한 크기의 미끼를 만드는 방어 지향 프로그램입니다.

>---    create 1st decoy
>+      decoy for timing
>+      decoy for waiting
[]<     tripwire activated!
[<-->]  increase size of 1st decoy while opponent clears 2nd decoy
(>)*8   attack!
[+(<)*9(+)*20(>)*9]    slowly clear, while going back to stop enemy progress
>[+(<)*10(+)*22(>)*10]
>[+(<)*11(+)*24(>)*11]
>[+(<)*12(+)*26(>)*12]
>[+(<)*13(+)*28(>)*13]
>[+(<)*14(+)*30(>)*14]
>[+(<)*15(+)*32(>)*15]
>[+(<)*16(+)*34(>)*16]
>[+(<)*17(+)*36(>)*17]
>[+(<)*18(+)*38(>)*18]
>[+(<)*19(+)*40(>)*19]
>[+(<)*20(+)*42(>)*20]
>[+(<)*21(+)*44(>)*21]
>[+(<)*22(+)*46(>)*22]
>[+(<)*23(+)*48(>)*23]
>[+(<)*24(+)*50(>)*24]
>[+(<)*25(+)*52(>)*25]
>[+(<)*26(+)*54(>)*26]
>[+(<)*27(+)*56(>)*27]
>[+(<)*28(+)*58(>)*28]

나는 현재 두 극성에 맞서 이길 수있는 버전을 연구하고 있습니다.


6

ImpatientTripwire (일명 YandereBot)

트립 와이어로 시도하여 (대부분) 해당 극성의 미끼를 배치 할 수 있지만 너무 오래 걸리면 포기하고 대신 반대 패리티라고 가정합니다. 소형 보드에 대한 역 트립 와이어가 있습니다.

(+)*5                                     Toggles the base
>-                                        Sets up reverse tripwire
>>++>-->                                  Sets up basic decoys    
(+)*20                                    Makes a massive antioffset tripwire
(([)*150                                  Waits for a while
    <<<<                                  Goes to check on the other tripwire
    +[
      <                                   Bot found you and is furious
      ((+)*128 (>)*9 (+.)*55 (<)*9)*5     Tries to tie you up
      ((+)*128 (>)*10 (+.)*54 (<)*10)*5   And torture you
      ((+)*128 (>)*11 (+.)*53 (<)*11)*5   As it destroys the world
      ((+)*128 (>)*12 (+.)*52 (<)*12)*5
      ((+)*128 (>)*13 (+.)*51 (<)*13)*6
      ((+)*128 (>)*14 (+.)*50 (<)*14)*6
      ((+)*128 (>)*15 (+.)*49 (<)*15)*6
      ((+)*128 (>)*16 (+.)*48 (<)*16)*6
      ((+)*128 (>)*17 (+.)*47 (<)*17)*6
      ((+)*128 (>)*18 (+.)*46 (<)*18)*6
      ((+)*128 (>)*19 (+.)*45 (<)*19)*6
      ((+)*128 (>)*20 (+.)*44 (<)*20)*6
      ((+)*128 (>)*21 (+.)*43 (<)*21)*6
      ((+)*128 (>)*22 (+.)*42 (<)*22)*7
      ((+)*128 (>)*23 (+.)*41 (<)*23)*7
      ((+)*128 (>)*24 (+.)*40 (<)*24)*7
      ((+)*128 (>)*25 (+.)*39 (<)*25)*7
      ((+)*128 (>)*26 (+.)*38 (<)*26)*7
      ((+)*128 (>)*27 (+.)*37 (<)*27)*7
      ((+)*128 (>)*28 (+.)*36 (<)*28)*8
      ((+)*128 (>)*29 (+.)*35 (<)*29)*8      
    ]-
    >>>>)*2                                 Waits again
      <(+)*20                               Bot got stood up, is sad
      <(+)*20                               Sets up some decoys
      <(+)*20                               Grabs a knife
      <(-)*20                               Licks the blade
      <(-)*5                                Locks the house
      >>>>>>>>                              Goes to hunt you down
     (
       >                                    Start searching
       [
         +[+[+[                             Search from minus three
         ---
         -[-[-[                             To plus three
         (-)*17                             If that's no good, do an offset
         [+]                                Clear by adding
         [-.--]                             Just in case
         ]]]]]]                             I would duplicate the program to skip these like at
       ]                                    the bottom but the file would get too large
       [--.---]                             Also just in case
       -                                    Leave a small trail
     )*22
(
  ]                                         Skip the bracket closing
  <(-)*20                                   Bot found you and is happy
  <(-)*20                                   Has just the perfect presents for you
  <(-)*20                                   You like decoys right?
  <(+)*20                                   Here's a plus one in case you are sneaky
  <(-)*5
  >>>>>>>>                                  Time to hunt you down

  (>[+[+[+[----[-[-[(-)*17[+][-.--]]]]]]]][--.---]-)*22
)*300

현재 버전 : 1.3- 트립 와이어 검사 중에 과거에 몰래 지나간 적으로 인해 게임을 잃는 대신 작은 보드에서 더 잘 작동하도록 편집

지난 버전 : 1.2.1

(더 나은 명확한 알고리즘이 필요합니다 : /)


1
OMG 411k는 완전히 확장되고 제거되었습니다 : -O Chiper의 코드가 이것에 달려 있습니다.
Sylwester

암호의 일부를 변경하여 Cipher의 새로운 코드와 작동하도록하였습니다
Sp3000

최신 편집 이후, 루프 논리가 약어 논리와 충돌하기 때문에 괄호 안의 대괄호 안의 대괄호가 이상하게 동작합니다. ([)*300다시 같은 구성을 변경할 수 [[[ and so on있습니까?
Cipher

@Cipher 그래, 가자-pastebin 버전은 정확히
그래야

1
3rd는 좋은 곳입니다. 잘 했어.
AndoDaan

5

가벼운 발바닥-편집

Plodder 에 기반을 둔 이 빠른 거수 는 0이 아닌 값에 도달 할 때까지 연속 0을 빠르게 "빨리 감기"할 수 있습니다 (이 시점에서 예상대로 플로팅이 시작됩니다).

이제 더 강력한 스키밍 알고리즘으로 개선되어 작은 디코이와 더 큰 디코이를 통해 빠르게 전달할 수 있습니다.

편집 # 2 : 더 많은 제로 포켓을 찾으면 이제 스키밍으로 돌아갈 수 있습니다.

>(-)*4
>(-)*7
>(-)*4
>(+)*7
>(-)*17
>(+)*3
> -
>(-)*10
>(+)*16[-]<-
([
[>>
 [+
  [--
   [+++
    [<+>(+)*14[-]]
   ]
  ]
 ]<-
]>>
[(+)*126(+.)*4>]
<]+)*10

멋진 "편리한"크기 변경 :)
Lily Chung

@IstvanChung 매우 편리합니다. ;) 더 이상 나를 너무 느려서 여러 다른 봇에 대한 점수를 잃었습니다. 당신이 더 크게 만들면, 나는 보조를 맞추려고 노력하지 않을 것입니다.
DLosc

글쎄, 나는 그것이 어떻게 작동하는지 알기 위해 크기를 조금 부딪쳤다. 나는 Bigger가 더 큰 크기를 끌어낼 수 있다고 생각하지만 철저히 테스트 할 시간이 없습니다. 행운을 빕니다!
Lily Chung

Cloacking 봇에 대한 대응책과 이것이 실제로 BF 프로그래밍처럼 보인다는 사실을 좋아하십시오 :)
Sylwester

5

꺼리는 란 v2

전략은 쉽습니다. 상대방에게 자신의 깃발이 미끼라고 생각하고 보드를 지나서 느슨하게 (트립 와이어 / 진동기) 풀어보십시오. 풀 라운드 10 회를 포기한 후 포기하고 상대가 자신의 깃발에 있는지 확인하고 그렇지 않은 경우 세트 셀에 닿을 때까지 -17 디코이를 만듭니다. 그녀가 사용하는 청산 방법은 [-12,12]의 특별한 경우이며 Loke와 유사한 플로팅을 시작합니다.

>>-<<                                  set a flag
(.)*11                                 wait for sixteenth step
((-)*256)*10                           reduce by ten rounds
                                       We give up check flags
> [(>)*7                               detected fast rush mode
    (-[>[
        -[-[-[-[-[-[-[-[-[-[-[-[       from plus one to twelve
        (+)*12                         reduce by twelwe
        +[+[+[+[+[+[+[+[+[+[+[+[       from minus one to twelve
          (+)*66..(+)*41(+.)*17>       increase and plod
        ]]]]]]]]]]]]]]]]]]]]]]]]]-])*3 
  ](-)*31
>+[(>)*6                               detected fast rush mode
    (-[>[
        -[-[-[-[-[-[-[-[-[-[-[-[       from plus one to twelve
        (+)*12                         reduce by twelwe
        +[+[+[+[+[+[+[+[+[+[+[+[       from minus one to twelve
          (+)*66..(+)*41(+.)*17>       increase and plod
        ]]]]]]]]]]]]]]]]]]]]]]]]]-])*3 
  ](-)*21
[>[                                    propably a trapper so we move slow
    ..+..-(+)*119(+.)*17               plodd the first cell so we dont go to zero on low positive
    ([>[
        -[-[-[-[-[-[-[-[-[-[-[-[       from plus one to twelve
        (+)*12                         reduce by twelwe
        +[+[+[+[+[+[+[+[+[+[+[+[       from minus one to twelve
          (+)*66..(+)*41(+.)*17>       increase and plod
        ]]]]]]]]]]]]]]]]]]]]]]]]]-]-)*3 
  ](-)*17
]

퀴즈 : 란은 바다에서 죽기 전에 선원들을 데리고가는 북유럽 신화의 바다 여신입니다.


5

미키 V4

V4의 경우 업데이트 된 봇에 대해 V3과 동일한 방법을 사용했지만 동시 인구가 더 많았습니다 (10이 아니라 30).

를 포함한 모든 60 봇에 대한 개발 BurlyBalderV3LethalLoke(하지만 내 엄격한 구현 uncompilable입니다 2botsonecup 제외).

다른 임의의 씨앗으로 시작하면 매우 다른 봇과 성공률을 발견했습니다. 그래서 저는이 다른 출발점을 인구로 나누고 때로는 교차 수분을하기로 결정했습니다.

1400 년대에 30 명의 동시 발전 인구가이 프로그램을 만들었습니다.

++>------>->---<<<------------->------>->
---->------------->>--->------<----------
------<------<-<<--<------------->-------
-<-->------>------->----------->---------
----->-------->------->----------------[>
[--[-[+]]]>[--[+]]-]-------[>[--[-[+]]]>[
--[+]]-]<--<------>------->--------------
--[>[--[-[+]]]>[--[+]]-]<--<-------------
--------->------>->-<-----

이 봇의 승률 은 현재 작물에 대해 90.0 %로 계산 됩니다. (1135/125/0 테이프 길이 원 / 손실 / 그리기).

V3 정보

89.2 %의 계산 된 승률 (테이프 길이 1124/62/74 원 / 손실 / 당김).

V2 정보

생성 프로그램은 이제 프로그램 끝의 어느 부분이 사용되지 않았는지 알아 내고 다음 세대를 생성하기 전에 잘라냅니다. 이것은 무작위 돌연변이가 프로그램의 사용 된 부분에서만 발생하므로 진화가 더 빠름을 의미합니다.

당시 현재 작물에 대해 72 %. (892/204/143 테이프 길이 원 / 손실 / 그리기).

V1 정보

31500 세대, 12 개의 봇만 직면했습니다. 65 % (165/80/7 테이프 길이 / 원 / 손실). 21 개의 테이프 길이를 모두 사용합니다.

잠재적 봇의 순위는 다음과 같습니다.

  • 대부분의 승리;
  • 대부분의 무승부;
  • 그때 가장 빠른 시간;
  • 가장 빠른 시간 승리

하찮은 일

  • 미키는 내 고양이의 이름을 따서 명명되었습니다.
  • TS 엘리어트를 역으로 바꾸려면 : The Naming of Cats is a difficult matter, It isn't just one of your brainfuck bots
  • 내 Java bf vm 및 유전자 알고리즘은 github 입니다.
  • vm은 i7의 단일 코어에서 4 초 이내에 완전한 토너먼트를 실행할 수 있습니다 (주의 – 결과는 토너먼트 엔진과 항상 동일하지는 않습니다).

60 개의 봇을 모두 사용하는 것이 낫지 않습니까?
Sylwester

@Sylwester 어쩌면 주로 느리지 않기 때문에 주로하지 않았습니다. 이것을하기 위해 2 시간 걸렸다. 또한 더 느리게 진화했지만 대처해야 할 봇 수가 많았습니다. 나는 그것이 최고의 사람들을 이길 것이라고 생각했다. 파이썬 문제를 확인하기 위해 실제 토너먼트를 실행할 수 없었습니다. 내가 방금 게시하고
보겠다고

@weston 어쩌면 파이썬 문제를 도울 수 있을까요?
Cipher

@Cipher 덕분에, 내가 github의의에 문제를 열었다 github.com/redevined/brainfuck/issues/2
웨스턴

@Sylwester 제 생성기가 훨씬 빠르며 멀티 스레드되어 있으므로 대부분의 봇을 사용합니다.
weston

4

노름꾼

이것은 Geronimo 봇과 밀접한 관련이 있습니다. 그러나 Geronimo가 확실한 일을하는 곳에서 Gambler는 가장 좋은 일을함으로써 더 빨리하려고합니다. 도박 : 20 번째 셀로 이동하여 거기서부터 시작합니다.

그것은 경기장이 그렇게 크지 않기 때문에 쉽게 잃을 수도 있음을 의미합니다. 그러나 그렇다면 몇 사이클이 될 수 있습니다.

(>)*19(>[-])*11

재미있는 사실 : 저는 (>)*X(>[-])*Y어디에서나 닮은 봇을 많이 고려 X in 9..29하고 Y = 30 - X있었습니다. 그러나 나는 20 개의 봇을 입력하는 것이 조금 너무 클 [+]것이라고 생각합니다 [-].)


13 또는 14와 같은 숫자가 20보다 나은 승률을 제공하지 않습니까?
Moop

예, 아마도 요 나는 단지 중간을 원한다. 흥미롭게도 내가 오른쪽 대신 왼쪽으로 가면 내 승률이 많이 떨어집니다. 그 반대를 예상했을 것입니다.
Ingo Bürk

각 봇 싸움 후 다른 로봇에 대해 일치하기 때문에, 이들의도 (40)는 기회를 해제하지 않을 것을 많이 - 나는 복사 및 붙여 넣기의 힘든 시간을 보냈습니다 : D
암호

4

덤봇

환경을 어지럽히고 봇과 싸우는 봇이 모두 테이프에서 사라지기를 바라고있는 멍청한 봇.

(+)*50(>-)*7(([.])*50(+)*50>)*7([-])*256

(이것도 작동하는지 확실하지 않습니다-그래도 오류가 발생하지 않습니다!)

주석이 달린 (내 생각에 따라) :

(+)*50      Increase home cell by 50
(>-)*7      For next 7 cells, decrement once
(           Open loop
([.])*50    If cell is non-zero, do nothing. If cell is zero... Still do nothing? I'unno.
(+)*50      Now let's increment it fifty times for some reason.
>)*7        And let's do the above two instructions ten times more, in the next 7 cells
([-])*256    If the cell we're on is non-zero, decrement it continuously and hope it's the enemy.

(이것이 단일 전투에서 이기면 나는 비틀 거릴 것입니다)


1
두 번째 줄은 실제로 더하여 셀을 0으로 만든 다음 한 번에 7 번 뺍니다.
자랑스런 Haskeller

1
@proudhaskeller 당신 말이 맞아요. 그게 내가 작은 수면으로 Brainfuck 일을하려고하는 것입니다. 실제로 올바르게 수행하는 방법을 대신하여 방금 간단하게 만들었습니다.
Sellyme

4

크롭 서클 봇

[>>[+][-]-<[-][+]+][>[+][-]<[-][+]++]

이 봇은 지구상에 놓인 미스터리 서클을 통해 외계인이 전송 한 고급 알고리즘을 사용합니다. 인류를 변화시키고 엄청난 기술 발전을 제공하며 많은 환경 문제를 해결할 것입니다.


] []을 절대 사용해서는 안된다는 것을 알고 있습니까?
CalculatorFeline

나는 왜 그런지 설명 할 수 없습니까?
flawr

루프를 떠날 때 현재 셀은 0입니다. 그런 다음 포인터의 셀이 여전히 0이므로 다음 루프를 건너 뜁니다.
CalculatorFeline

오, 항상 루프 끝에서 검사가 발생한다고 생각 했습니까?
flawr

또한 처음에 발생합니다. 일부 구현에서는 [아무것도하지 않지만 그것은 완전히 다른 언어입니다 (esolang wiki의 newbiefuck)
CalculatorFeline

4

BeatYouMate

모든 사람이 자신이 게시 한 첫 번째 봇을 이길 수있는 봇을 게시해야하므로 5 개 이상의 미끼 봇이 있습니다.

(>------>+++++++)*4>([(+)*6[-]]>)*21

4

영리하고 결정된

>+>-(>+++[-])*21

작은 함정 몇 개를 설정 한 다음 반대편으로 달려가 0보다 위 또는 아래의 모든 항목을 지우려고합니다. 에 실패합니다 ----.


+++전에 [-]간단한 함정을 피하기 위해 참으로 똑똑!
Ingo Bürk

타의 추종을 불허하는 예외 (는 코멘트처럼 취급 할 수 있습니까?
Cipher

@Cipher 문제를 해결하겠습니다. 죄송합니다.
isaacg

4

메타 JSRandomBot

+[[>-[->+]>>[-]>-<<[>][+]<]+<]->

이 봇의 아이디어는 너무 쓸모없는 여전히 유효한 js 코드 인 총 랜덤을 만드는 것입니다. 그것을 생성하기 위해 다음 코드 ( JSFiddle link )를 작성했습니다. 얼마나 잘하는지 보자 =)

var nchars = 30;
var nbrack = 10;
var alphab = "+ - < >".split(' ');
var s = [];
for(var i=0;i<nchars;i++){
    s.push(alphab[(Math.random()*alphab.length)|0]);
}
var ind1,ind2;
for(var i=0;i<nbrack;i++){
    ind1 = (s.length*Math.random())|0;
    s.splice(ind1,0,'[');
    ind2 = ((s.length-ind1-1)*Math.random())|0 + ind1;
    s.splice(ind2,0,']');
}
s = s.join('')
for(var i=0;i<Math.max(nchars,nbrack);i++){//remove useless stuff
    s=s.replace('[]','');
    s=s.replace('+-','+');
    s=s.replace('-+','-');
    s=s.replace('<>','');
    s=s.replace('><','');
}
alert(s);

4

프 러시안 룰렛

러시안 룰렛은 친구 프 러시안과 베팅을했고 이제는 차례입니다.

>(+)*5(-.[>.[>(-)*10]]>>)*1000

메인 루프에서 2 개의 포인터 감소와 1 개의 증가 만 있습니다. 이것은 테이프의 끝에서 벗어나게합니다.
Comintern

2
이것은 여전히 ​​스스로를 버릴 것입니다.
자랑스런 Haskeller

처음에는 플러스와 마이너스가 있습니다. 2 번의 낭비 사이클.
weston

4

더 큰

무기 경주가 시작됩니다 !!

둘 다 대부분의 경쟁사보다 더 큰 높이 16 18의 벽을 만들고 파괴 합니다. 또한 손길이 닿지 않은 깃발을 취하는 클로 커, 깃발 수비수, 대치 자 및 봇을 이길 수있는 약간의 논리가 있습니다.

+>->+>+>-(>(-)*18>(+)*18)*2(>([(+)*18[-][-[+]]])*2)*21

주석이 달린 버전

Off by one
==========
Adjust own flag a little for fun
-

Decoy stage
===========
Build decoys

>->+>+>-        Add four quick walls to deter rushers
                Also throw off bots depending on the alternation
(>(-)*18
 >(+)*18)*2     Build four large decoys

Clear stage
===========
(               Repeat the following forever:
  >             Move forward
  ([            Skip if the space is zeroed already
      (+)*18    Bust negative decoys smaller than 18
      [-]       Clear
      [-[+]]    Check that the wall is actually cleared; if it isn't,
                clear in the opposite direction to defeat bots that try
                to sense our clear direction and defend the flag
  ])*2          Repeat the "non-zero" check to guard against the cloaker
)*21

3

환자 봇

부분적으로 심각한 봇. 이 봇은 100000 사이클 제한으로 승리를 시도합니다. 적의 깃발로 가면서 함정 몇 개를 막고 조금 줄이고, 돌아가서 깃발을 방어합니다.

>++>->->+>+>->->+(>+[-[-[(<)*9--[<--](+)*10000]]])*20

1보다 크거나 -1보다 작은 모든 것을 플래그로 가정하고, 플래그를 만나면 되돌아갑니다. 단순히 지속적으로 증가시켜 방어합니다. 이것은 대부분의 프로그램이 []를 사용하여 플래그가 0이되었는지 확인한다고 가정하므로 (+) * 100000이 훨씬 빠릅니다.

편집 : BF Joust 인터프리터에서 작동하지 않습니다. 나는 포기하고있다. 어쩌면 내 코드를 개선하는 방법을 알려 주어야합니다.

편집 : 이제 봇은 플래그 2 바로 앞에 자리를 만들고 플래그를 약간 줄인 후 2를 검색합니다. 깃발.


당신의 봇은 처음에 10 '>'가 있기 때문에 길이가 10 인 (정말 드문, 인정합니다) 테이프로 스스로를 죽이는 것처럼 보입니다. 그 외에는 [<]포인터 아래의 셀 이 0이 될 때까지 거꾸로 되풀이되므로 반복하지 않기 때문에 플래그 앞의 셀 중 하나이거나 포인터가 플래그에 도달하면 단순히 자살합니다 (플래그 때문에 희망적으로 0아닙니다 ).
Cipher

@Cipher 봇은 깃발 바로 앞에 덫을 놓지 않습니다. 제 생각은 봇이 방어를 구축 할 수 있도록이 지점을 표시하는 것이 었습니다. 더 좋은 방법이 있습니까? bfjoust에서 때때로 적은 함정을 비운 다음 봇이 멈추기 전에 멈 춥니 다.
자랑스런 Haskeller
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.