BrainF *** edBotsForBattling - Giải đấu Brainf ***


88

Tất cả các bot tại chiến trường đột nhiên bị tẩy não và không ai có thể giải thích tại sao. Nhưng ai quan tâm miễn là họ vẫn có thể chiến đấu - mặc dù Brainfuck là ngôn ngữ duy nhất họ hiểu được nữa.


Đã được một thời gian kể từ lần gửi cuối cùng, vì vậy cuối cùng tôi sẽ thông báo người chiến thắng BrainFuckedBotsForBattling: Xin chúc mừng LymiaAluysia đã chiến thắng với NyurokiMagicalFantasy!


Bảng điểm

|       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    |

Điểm cuối cùng từ ngày 09.10.2014

EDIT6 : Các bản ghi bị loại bỏ do kích thước cực lớn và thời gian chạy. Bạn có thể tự tạo chúng bằng cách bỏ qua các dòng trong RunThisTournament.py.

EDIT5 : Đã thực hiện xử lý Viết tắt vào bộ điều khiển, không còn thời gian chạy lớn nữa. Điều này có tác dụng phụ là số và dấu ngoặc đơn không được coi là nhận xét nữa. Bạn vẫn có thể sử dụng chúng nếu bạn muốn cung cấp một phiên bản có chú thích, nhưng sẽ rất hữu ích nếu đó cũng là một phiên bản mã không bị lỗi , vì vậy tôi không cần phải xóa các nhận xét theo cách thủ công. Cảm ơn!

EDIT4 : Thay đổi tiêu đề, bởi vì giải đấu đã bị xóa khỏi các câu hỏi mạng nóng. Cảm ơn @Geobits đã chỉ ra điều này!

EDIT3 : Đã xóa các nhận xét trong các chương trình bf, do kết quả không mong muốn, nên được khắc phục ngay bây giờ. Nếu bất cứ ai có vấn đề với việc loại bỏ ý kiến ​​của mình, xin vui lòng báo cáo.

EDIT2 : Vì nó gây ra thời gian chạy phức tạp trên máy tính khá chậm của tôi, tôi đã giảm giới hạn thời gian chờ từ 100000 chu kỳ xuống 10000 chu kỳ. Không phải là bất cứ ai đã biến kết quả của một trò chơi đang chạy vượt quá điểm này.

EDIT1 : Đã sửa lỗi trong tập lệnh chuyển đổi khiến trình thông dịch không bỏ qua các số trong các chương trình nhận xét.


Sự miêu tả

Đây là một giải đấu Brainfuck lấy cảm hứng từ BF Joust . Hai bot (chương trình Brainfuck) đang chiến đấu với nhau trong một đấu trường được thể hiện bằng một băng nhớ. Mỗi ô có thể giữ các giá trị từ -127 đến 128 và bao bọc ở giới hạn của chúng (vì vậy 128 + 1 = -127).

Các hướng dẫn hợp lệ tương tự như Brainfuck thông thường, có nghĩa là:

+ : 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

Đấu trường có kích thước từ 10 đến 30 ô, được chọn giả trong mỗi trận chiến. Ở cả hai đầu là một 'cờ' có giá trị ban đầu là 128, trong khi tất cả các ô khác đều bằng không. Mục tiêu của bot của bạn là không cờ của kẻ thù trong 2 chu kỳ liên tiếp trước khi anh ta thay đổi cờ của bạn.

Mỗi bot bắt đầu từ cờ riêng của mình, đó là ô [0] theo quan điểm riêng của mình. Đối thủ nằm ở phía bên kia của băng.

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

Cả hai bot thực hiện hành động của họ đồng thời, đây được coi là một chu kỳ. Trò chơi kết thúc sau 10000 chu kỳ hoặc ngay khi đạt được một trong những điều kiện chiến thắng. Nếu một trong những chương trình kết thúc, đơn giản là nó sẽ ngừng hoạt động cho đến khi kết thúc trò chơi, nhưng vẫn có thể giành chiến thắng.


Điều kiện chiến thắng

Bot của bạn thắng theo một trong các điều kiện sau:

  • Cờ của kẻ thù của bạn là 0 trước bạn
  • Kẻ thù của bạn di chuyển con trỏ ra khỏi băng (thực hiện >trên cờ của bạn hoặc <của chính mình)
  • Giá trị cờ của bạn cách xa 0 so với giá trị cờ của đối thủ sau 10000 chu kỳ

Quy tắc

Bài viết của bạn nên chứa tên cho bot của bạn và mã của nó.

  • Bạn có thể sử dụng cú pháp viết tắt sau đây để làm cho mã của bạn dễ đọc hơn:
    • ví dụ (+)*4giống như ++++, điều này hợp lệ cho bất kỳ lệnh nào ngoại trừ dấu ngoặc không khớp trong ngoặc đơn vì logic vòng lặp va chạm với logic viết tắt. Vui lòng sử dụng [-[-[-thay vì([-)*3
  • Mỗi ký tự khác không phải +-><[].là một nhận xét và do đó bị bỏ qua, ngoại trừ ()*chữ viết tắt

Bots không tuân theo các quy tắc sẽ loại trừ khỏi giải đấu.

  • Chỉ cho phép Brainfuck cơ bản, không có biến thể nào khác hỗ trợ các quy trình hoặc hoạt động số học
  • Mã nguồn bot của bạn không được chứa dấu ngoặc chưa từng có

Bạn có thể thông báo cho mình về các chiến lược cơ bản nhưng không sử dụng mã của người khác cho bot của riêng bạn.


Chấm điểm

Điểm của bot được xác định bởi số lần thắng so với tất cả các bot khác. Cuộc chạm trán giữa 2 bot bao gồm 10 trận đấu với độ dài băng nhớ khác nhau, dẫn đến số điểm tối đa là 10 điểm cho mỗi lần gặp. Một kết quả hòa không có điểm cho trận đấu này.


Chương trình điều khiển

Bạn có thể tìm thấy chương trình điều khiển trên github, cùng với nhật ký đầy đủ từ các trận chiến. Bảng xếp hạng sẽ được đăng ở đây khi nó được tạo.

Hãy tự sao chép kho lưu trữ và thử bot của bạn chống lại những người khác. Sử dụng python Arena.py yourbot.bf otherbot.bfđể chạy một trận đấu. Bạn có thể sửa đổi các điều kiện với các cờ dòng lệnh -m-t. Nếu thiết bị đầu cuối của bạn không hỗ trợ các chuỗi thoát ANSI, hãy sử dụng --no-colorcờ để tắt đầu ra màu.


Ví dụ bot

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

DecoyBot sẽ thắng mọi trận đấu với độ dài băng lớn hơn mười, vì FastClearBot có thể tránh được các mồi nhử nhỏ, nhưng không phải là những cái lớn hơn. Tình huống duy nhất mà FastClearBot có thể giành chiến thắng trước DecoyBot, là khi nó đủ nhanh để chạm tới cờ của kẻ thù trước khi đối thủ của anh ta tạo ra những mồi nhử lớn.


5
Bản gốc, tôi thích nó. Tôi chỉ sợ rằng điều này sẽ không cho phép đủ chiều sâu chiến lược, nhưng đó có thể chỉ là tôi.
ɐɔıʇǝɥʇuʎs

11
Điều này sẽ còn vui hơn nữa với Befunge .
IchBinKeinBaum

6
Tôi tìm thấy một trang web BF Jousting có thể chạy và trực quan hóa các trận đấu jousting.
PhiNotPi

4
Cảm ơn bạn đã lưu trữ KOTH, Mật mã này. Phải là rất nhiều công việc với rất nhiều đệ trình.
AndoDaan

3
Tôi muốn nói lời cảm ơn đến mọi người vì vẫn tham gia ^^
Mật mã

Câu trả lời:


18

Ảo thuật Nyuroki

Tôi nghĩ rằng đã đến lúc phải nghiêm túc ~ Tôi đã hoàn thành trình biên dịch của mình cho một chút HLL để làm cho việc viết chương trình BF Joust dễ dàng hơn. Đây là nỗ lực nghiêm túc đầu tiên của tôi để làm một cái gì đó với nó. Khái niệm của bot khá đơn giản. Nó thiết lập một vài mồi nhử có cực tính khác nhau, sau đó phát điên với một cái lắc lư lớn rõ ràng với một bù ngược rõ ràng ở giữa.

Ồ, nhân tiện, điểm số dự kiến ​​là khoảng 577 điểm so với ngọn đồi cuối cùng. Đó là tỷ lệ thắng 93%. <3

Biên soạn | Mã nguồn

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

Chỉnh sửa : Tôi đã siết thêm một vài chiến thắng từ Nyuroki.

Chỉnh sửa 2 : Này, nhìn này, tôi đã làm lại!

Chỉnh sửa 3 : Sau khi vật lộn một lúc với một lỗi phân tích cú pháp ngu ngốc trong Arena.py, cuối cùng tôi đã có một cải tiến khác trong ~ Đây là điều tôi muốn nói là "thời gian để nghiêm túc", bạn biết đấy. <3


Có vẻ như Loke cần một số điều chỉnh :-) Yêu ngôn ngữ của bạn. Có phải lỗi trong Arena.py là bạn có khoảng trắng giữa )*giữa *và số?
Sylwester

@Sylwester Tệ hơn nhiều. Vòng lặp đi đến nơi họ không nên đến: github.com/redevined/brainfuck/pull/6
Lymia Aluysia

Chúc mừng # 1. Tỷ lệ thắng 92,5% sẽ khó có thể sánh được.
Sylwester

Làm tốt lắm, nhưng đây không phải là lạm dụng tốc ký? Các vòng lặp lồng nhau có hiệu quả 21 giai thừa = 5 * 10 ^ 19. Nói cách khác, nó thực sự không thể mở rộng thành brainfuck cơ bản.
weston

1
@ miền tây Có. Và hầu hết các chương trình trên đồi BF Joust phát triển nhất ( codu.org/eso/bfjoust/in_egobot - ví dụ, hãy xem smartlock ) thậm chí còn tệ hơn. Đó không phải là một vấn đề đặc biệt lớn, vì đây là loại điểm tốc ký. Nó làm cho các chiến lược có thể không khả thi nếu không do chiều dài tuyệt đối khả thi. :)
Lymia Aluysia

43

Thiết bị che giấu Bot

Bot này về cơ bản cố gắng che giấu cơ sở của nó, làm cho nó để các bot khác sẽ di chuyển ngay qua nó và ra khỏi băng.

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

4
Rất thông minh, đã phải điều chỉnh bot của tôi để giải thích cho việc này.
Moop

2
Đây là một trong những người thông minh nhất ở đây, theo ý kiến ​​của tôi.
Almo

+ f cho thợ làm đầu tiên. Tôi đã không nhận thấy điều này trước khi tôi tạo Ràn nhưng đó là ý tưởng tương tự, ứng dụng khác nhau.
Sylwester

19

Burly Balder v3

Burly Balder là một cơn sốt chậm vừa. Nó làm cho hai mồi nhử lớn trước khi đi vào chế độ vội vàng. Trong chế độ vội vàng, nó có một vòng lặp chỉ sử dụng 4 bước cho mỗi ô 0 và khi một ô khác không, nó có phân tích trường hợp cho [-18,18] trước khi giảm một cách mù quáng với 107 trước khi xóa [-.]. Anh ta xóa một lá cờ không thay đổi trong 242 bước, nhiều hơn 114 không chắc chắn -*128 và 14 ít hơn một [-]rõ ràng ngây thơ . Khi một tế bào bị xóa, anh ta tiếp tục để lại dấu vết của -2 mồi nhử. Anh ta có một trường hợp đặc biệt chỉ dành cho chỉ số 9 để lưu một số bước cho các trò chơi cỡ 10 và nó rời khỏi phòng giam với 1 mồi nhử.

>((-)*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

Câu đố: Balder là một vị thần nordic và con trai của Odin. Anh ta được biết đến chủ yếu vì câu chuyện về cái chết của anh ta : Anh ta sợ sự an toàn của mình nên các vị thần khác đã cố gắng dự đoán và che chắn trước mọi mối đe dọa. Cuối cùng anh ta đã bị Loki giết chết trong khi họ bảo vệ anh ta trước những thanh kiếm và mũi tên mà họ quên để bảo vệ anh ta trước Mistletoe.


2
Mồi nhử của bạn đang giết tôi Làm tốt.
AndoDaan

1
@AndoDaan Cảm ơn. Bạn BeatYouMatethật thông minh. Tôi sợ những trò giải mã trên hầu hết các bot sẽ còn lớn hơn nữa vào vòng tiếp theo cho đến khi nó bị phạt. Sau đó, có lẽ chúng ta sẽ có một số chiến lược thú vị hơn đang xuất hiện :)
Sylwester

2
Vấn đề với việc tăng kích thước mồi nhử là nó giao dịch với hiệu suất trên các băng ngắn hơn chống lại các bot tấn công nhanh. Với 10 vòng ngẫu nhiên, nhiều khả năng một điểm ngọt sẽ thay đổi tùy thuộc vào tốc độ tấn công của các mục khác.
Comitern

2
Đúng, bạn vẫn là người đánh bại.
AndoDaan

4
@AndoDaan Với rất nhiều vị thần Bắc Âu hỗ trợ tôi, kích thước đấu trường ngẫu nhiên dường như có lợi cho tôi :-)
Sylwester

13

EvoBot 1

Đây là một bot đơn giản được tạo ra thông qua thuật toán di truyền. Tôi bắt đầu với một mẫu và chương trình của tôi từ từ điều chỉnh các con số để tạo ra một chiến binh-bot tốt hơn. Mã dưới đây đã được chỉnh sửa để tăng khả năng đọc.

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

Tôi đã sử dụng các mục khác trong cuộc thi để đo thể lực của các ứng cử viên khác nhau.

Vì đây là lần thử đầu tiên của tôi tại một evobot, tôi đã bắt đầu với một mẫu đơn giản:

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

Tôi dự đoán rằng bot này sẽ nhận được điểm trong khoảng từ 50 đến 60.

Tôi hiện đang làm việc trên một mẫu decoy ngược.

EvoBot 2

Đây là một bot được tạo bởi cùng một thuật toán di truyền, nhưng với mẫu sau:

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

Bot này sử dụng chiến lược giải mã ngược để đặt 4 mồi nhử có chiều cao khác nhau. Bot kết quả là:

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

Tôi hy vọng bot mới này có giá tốt hơn các bot trước đó, có thể kiếm được điểm trong thập niên 70 (có thể cao hơn nhiều so với vì có nhiều mục mới).


2
+1 cho các thuật toán di truyền. Tôi có niềm tin lớn vào họ. Tôi hy vọng bot của bạn làm tốt.
AndoDaan

12

Máy phát điện

Nó giả định rằng hầu hết mọi người sẽ bằng không một ô bằng cách thêm hoặc bớt vào ô đó, vì vậy trung bình mỗi ô sẽ mất 128 lượt về 0.

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

Phiên bản chú thích

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

Chết tiệt, những thay đổi mới nhất của bạn cải thiện tỷ lệ thắng cho Alternator trước Geronimo từ ~ 60% đến ~ 90%. Đẹp.
Ingo Bürk

vâng, tôi đã di chuyển 18 lần khi tôi làm (> +> -) * 9, vì vậy nó sẽ rơi ra khỏi băng. Lỗi lầm ngớ ngẩn.
Moop

Ngay cả việc bảo vệ Geronimo bằng cách xen kẽ thêm / bớt về 0, ô không thay đổi tỷ lệ thắng của tôi. Alternator có thể trở thành người chiến thắng ở đây - nó sử dụng vài trụ để đặt bẫy khá khó để bẻ khóa.
Ingo Bürk

Này, sửa tôi nếu tôi sai nhưng bot này không tự động rời khỏi bảng nếu bảng dài 10? Nó di chuyển 10 ô vuông trước khi cố gắng đặt bất cứ thứ gì về không.
Một Boschman

11

Vì vậy, một người khác ở đây sử dụng một thuật toán di truyền để thử và tạo các chương trình ở đây. Chà ... cách đây rất lâu, tôi đã viết một evolver BF Joust cho một ngọn đồi đang diễn ra trong một kênh IRC. Tôi cũng quyết định cho nó một vòng quay cho cuộc thi này ~

Và ... không giống như người khác có evolver, evolver của tôi thực sự có thể thay đổi nhiều chương trình hơn số lần lặp lại. :)

NestDarwin (Thế hệ 309)

Đây là kết quả tốt nhất mà evolver của tôi đã đưa ra cho đến nay. Tôi không chắc cấu trúc lồng nhau sẽ giúp được bao nhiêu trong trường hợp này, nhưng, các cấu trúc như thế này là những gì mà evolver có nghĩa là có thể làm được. Hiệu suất dự kiến ​​trên đồi 27,08/2014 là 474 điểm. (Được tính bằng cách chạy trận chiến trên tất cả 21 độ dài băng và nhân với 10/21. Lưu ý rằng điều này không được chuẩn hóa vì thực tế là ngọn đồi này có thêm một chương trình trên đó)

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

EDIT : Thay đổi danh sách các chương trình tôi muốn vào ngọn đồi này. Ran tiến hóa qua đêm. :)


EDIT 2 : Tôi đã đi và phân tích thủ công đầu ra của evolver. Mặc dù trông rất khác biệt, NestDarwin về cơ bản là một phiên bản tối ưu hóa của TinyDarwin ... Thu nhỏ thủ công (với chức năng giống hệt nhau) và được phân tích:

(-)*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.

Vì vậy, một chương trình gần như giống hệt nhau sẽ như sau ... về cơ bản là một phiên bản siêu tối ưu của TinyDarwin.

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

TinyDarwin như sau. Không khác lắm hả? Tôi sẽ rút nó ra khỏi ngọn đồi. Tôi nghĩ nó khác biệt, nhưng ... chà, tôi đã sai.

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

Rõ ràng là ngọn đồi hiện tại không đủ mạnh để cho phép nó phát triển những thứ phức tạp hơn nhiều. :


1
Chúc mừng với vị trí đầu tiên. Chương trình thuật toán di truyền có thể sử dụng phiên bản hiện tại của bạn làm mẫu và tiếp tục với các phiên bản mới để cải thiện hơn nữa không?
Sylwester

Công việc tuyệt vời với vị trí đầu tiên. Tôi rất vui vì một thuật toán di truyền (tốt, nó sinh ra) đã tạo ra nó ở đó!
AndoDaan

Bây giờ nếu chúng ta có thể lấy kết quả của tất cả các trò chơi, phát triển thêm, thêm một số máy học ... thì con người đáng thương của chúng ta sẽ không còn cơ hội nào nữa: P
Sp3000

@Sylwester Sắp xếp của? Đại diện bên trong của tôi sử dụng một hệ thống kích hoạt gen (được suy nghĩ kém) được cho là để cho nó phát triển cấu trúc thượng tầng (và trong thực tế, không thực sự). Tôi không thể đưa chương trình cuối cùng trở lại và khôi phục biểu diễn bên trong, nhưng tôi có thể đặt các hướng dẫn vào một gen duy nhất và để nó tiếp tục phát triển (tuy nhiên điều đó sẽ giúp ích rất nhiều).
Lymia Aluysia

@ Sp3000 Thật không may, thuật toán của tôi hầu như không thể đạt được tiến bộ trên ngọn đồi #esoteric được phát triển tốt. Thật tuyệt nếu tôi có thể làm một việc như vậy, nhưng, than ôi, kỹ năng của tôi về thuật toán di truyền chỉ là không đủ tốt. Có lẽ tôi sẽ giải phóng evolver của mình một ngày nào đó khi tôi dọn dẹp tất cả các bản hack xấu xí của mình.
Lymia Aluysia

10

Gấu Bắc cực Mk II

Có hai loại gấu bắc cực : những người bị mắc kẹt và những người bẫy người khác.

Thử đoán tính phân cực của đối thủ và sau đó sử dụng thông tin đó để khóa đối thủ vào vòng lặp vô hạn. Hoạt động tốt chống lại các chiến lược thanh toán đơn giản và hơi ngẫu nhiên so với các chiến lược khác. Bẫy có thể dễ dàng tránh được vì vậy tôi có thể thêm một số chiến lược sao lưu sau.

>++>- 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 [-]

Bạn có thể giảm một nửa kích thước mã với (]< (+)*290 (>)*9 ... [-])*2?
Sylwester

@Sylwester Tôi không thể vì nửa kia sử dụng +và nửa kia sử dụng -.
Mika Lammi

Polar Bear không làm tốt lắm với phần bù trừ ... mặc dù vậy, ý tưởng tuyệt vời
Sp3000

@ Sp3000 Bạn có chắc không? Tôi đã thử với một vài độ lệch và cực (như [(+)*3[-]], [(-)*6[+]]) và nó hoạt động rất tốt (ít nhất là đối với các độ lệch khá nhỏ).
Mika Lammi

Ồ, tôi biết có gì không ổn: / Tôi đã thử các chương trình như >>>>>>>>>((-)*4[+][--.]>)*21kiểm tra lại ô và bạn (+/-)*290đã khiến vòng lặp không đồng bộ thứ hai được kích hoạt. Không phải lỗi bù trừ rõ ràng.
Sp3000

10

Bot Pacifist

Bot của tôi tin rằng bạo lực không bao giờ là câu trả lời và sẽ cố gắng tránh chiến đấu bằng mọi giá.

(.)*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
Tôi đã tự do loại bỏ '. Trong các bình luận của bạn vì chúng sẽ được tính là mã Brainfuck và làm cho bot của bạn chậm hơn một chút so với mức cần thiết. Nếu các dấu chấm là cố ý, hãy sửa tôi!
Mật mã

Ồ đúng rồi. Tôi khá ngốc nghếch, cảm ơn vì đã xóa chúng: p
mmphilips

9

Ai có?

Định kỳ nhìn phía sau để xác định khi nào kẻ thù đã bắt đầu dọn dẹp các mồi nhử của nó, sau đó lao về phía trước.

Có vẻ làm tốt, nhưng tôi không chắc đó là vì chiến lược hay chỉ vì tôi thêm 10 vào mỗi ô trước khi xóa.

Chỉnh sửa: Đã sửa lỗi logic. Lần đầu tiên viết một chương trình brainfuck. Nó sống theo tên của nó.

>>>+<(+)*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: Đây là bot đầu tiên tôi thấy rằng các bộ giải mã chuỗi (trừ +/- 1) ngoài 9 ô đầu tiên. Trên băng dài hơn, đó là một kẻ giết người. Trang bị thêm Light Plodder bây giờ ...
DLosc

9

TƯỜNG-E 2.0

Lao tới vị trí 9 và thêm 128 vào đó, chiến thắng nhanh chóng ở đấu trường cỡ 10 nếu đối thủ không thay đổi giá trị cờ ban đầu. Trên các đấu trường lớn hơn, điều này hoạt động như một mồi nhử lớn. Sau đó, nó lấp đầy khoảng trống giữa vị trí 9 và cờ riêng với các mồi nhử lớn. Khi mồi nhử được đặt, nó sẽ quét các vị trí không trống và cố gắng xóa chúng nhanh chóng.

Phiên bản 2.0 xây dựng các bộ giải mã lớn hơn và có một số dung sai chống lại việc thay đổi giá trị cờ ban đầu. Nó cũng có thể chuyển sang chiến lược sao lưu nếu mọi thứ bắt đầu có lông.

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

Hiệu quả của bot này dựa trên hai sự thật:

  1. Hầu hết các bot không thay đổi giá trị ban đầu của cờ của chúng.
  2. Xây dựng mồi nhử lớn nhanh hơn làm sạch chúng.

Những bức tường này đang giết chết tôi
Sp3000

9

Lethal Loke V2.1 (với cây tầm gửi)

Đây tất nhiên là một bot chết người và anh ta không chỉ giết chết Burly Balder xinh đẹp bằng cây tầm gửi, mà còn chiến thắng gần như mọi lúc trước các bot khác. Đó là một sự kết hợp trung bình và nhanh chóng. Bài kiểm tra của tôi cho tôi điểm 567

Biên dịch tập tin BFJ cho trận chiến , nguồn máy tạo vợt 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))

Trivia : Loke (Loki) là một vị thần trong thần thoại Bắc Âu thích chơi với mọi người và lừa họ. Anh ta là một shifter hình dạng (thành động vật và con người) và thường đi theo cách riêng của mình. Trong những câu chuyện, anh ta thường đi du lịch và giúp đỡ các vị thần khác và thực hiện những thủ thuật nhỏ và khuấy động mọi thứ. Bên cạnh việc giết Balder, anh ta còn là cha của Hel (nữ thần địa ngục / Helvete), quái thú Fenrir và Midgard Serpent bắt đầu Ragnarok (norse armageddon).

Làm thế nào nó hoạt động

Lúc đầu, anh ta tạo ra một mồi nhử (-17) lớn, sau đó tạo +-mẫu cho đến chỉ số 7. Anh ta quét về phía trước từ 13 để lại dấu vết (+ 10, -32) + khi anh ta phát hiện ra một bộ, anh ta sẽ hủy bỏ và bắt đầu chế độ vội vàng trung bình * 1. Nếu không có ô nào được đặt, anh ta cũng sẽ bắt đầu chế độ vội vàng * 3.

* 1 Ở chế độ vội vàng trung bình, anh ta đã phát hiện ra hoạt động của đối thủ ở một trong các chỉ số 7-13 và anh ta bắt đầu từ chỉ số 2. Một số đối thủ để lại số 0 và số khác để lại một giá trị khác và giờ anh ta có phương tiện để phát hiện hoạt động của đối thủ trong khi trước khi thực hiện giải mã chỉ số 2-6 (-32, + 10) +. Nếu ô không có giá trị mong đợi (-1, 1) hoặc anh ta đã hoàn thành tất cả các bộ giải mã, anh ta sẽ chuyển sang chế độ vội vàng * 2.

* 2 Chế độ vội vàng nhanh mà anh ta hy vọng mình đã bị phát hiện nên mồi nhử sẽ không hoạt động. Chúng tôi hy vọng những người mà chúng tôi đã thiết lập là ngăn chặn đối thủ và tập trung vào việc chạy qua những trò giải mã của đối thủ. Anh ta bắt đầu gấp rút ở điểm xa nhất mà chúng ta biết dựa trên lần quét trước [9,14] hoặc chỉ số 9 nếu chúng ta được thực hiện sớm hơn thế. Anh ta có trường hợp đặc biệt cho mồi nhử đầu tiên, trong đó chúng tôi chỉ cần thêm 120 và mã 27 vì anh ta không muốn giảm giá trị xuống dưới 0, đó là một cái bẫy, nhưng với mỗi mồi nhử sau khi chúng tôi lắc lư rõ ràng ở [-8,8] trước khi tăng 120 và sắp xếp 27 bước để tìm hiểu về tế bào tiếp theo.

Chế độ vội vàng chậm đã bị xóa vì nó không ảnh hưởng đến điểm số với ngọn đồi hiện tại và nó làm cho bot của tôi nhỏ hơn một chút (nhưng không nhiều).


3
Bây giờ chúng ta bắt đầu thấy điên rồ. Tôi thích nó.
Sp3000

@ Sp3000 YandereBotv2 là lý do tôi cần nghĩ mới bên cạnh việc chỉ tăng giá trị decoy và swing. Nó có tỷ lệ phần trăm chiến thắng cao hơn so với cơn bão so với tất cả các bot vòng trước, do đó bạn không may mắn với kích thước đấu trường.
Sylwester

Ahaha có lẽ - Tôi nghĩ rằng tôi cần một kế hoạch chống lại kích thước mồi nhử ngày càng tăng: / Tôi thực sự thích cách bạn có các chế độ khác nhau
Sp3000

thở dài . Tôi sẽ phải làm cho HLL của mình cho BF Joust hoạt động tốt hơn để người phát triển của tôi có thể có cơ hội một lần nữa. Xin chúc mừng # 1 ~
Lymia Aluysia

@LymiaAluysia Cảm ơn. Tôi ngạc nhiên hơn về Balder. Tôi đang tin tưởng vào một phiên bản mới của NestDarwin, YandereBot và Mickey :-)
Sylwester

8

Geronimo

Thậm chí còn gây khó chịu hơn bot Best Offerense của kaine vì nó không xây dựng bất kỳ sự phòng thủ nào. Chiến lược ở đây là: Những người khác sẽ cố gắng tỏ ra thông minh, nhưng thông minh cần có chu kỳ. Vì vậy, hãy bỏ qua phần chúng ta biết kẻ thù đang ở và xóa mọi thứ chúng ta tìm thấy.

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

Có vẻ như để giành chiến thắng trong hầu hết các trận đấu với bot mẫu của OP và bot của kaine.


7

SternBot

Một bot thực sự nghiêm túc một nửa bây giờ rằng mọi thứ được bắt đầu. Giải quyết tính chất mô phỏng của một số các bot này.

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

1
SternBot mang đến cho tôi các vấn đề tương đương :(
Sp3000

7

DoNothBot

Cách phòng thủ tốt nhất (...) là sự thiếu hiểu biết.

.

Nó không làm gì cả.

EDIT: Wow, tôi đã rất ngạc nhiên khi thấy rằng nó đã làm tốt hơn so với ít nhất 20% của tất cả các bot =) (Điều này có nghĩa là nó sử dụng một chiến lược ưu việt hay ....?)


2
Một số bot khác tự sát trên các đấu trường nhỏ. ví dụ.Người đánh bạc trực tiếp đến ô thứ 20 và trong các trò chơi từ ngày 10 đến 19, nó sẽ lỏng lẻo, thậm chí là chống lạiDoNothingBot
Sylwester

2
Vì tò mò, tôi đã chạy nó qua người thử nghiệm của tôi (phát tất cả độ dài băng) so với các mục khác. Kìa bức tường xấu hổ ... +1
Comitern

Haha, Cảm ơn bạn đã chia sẻ - Tôi đã dự đoán rằng có thể có một hoặc hai con cừu đen nhưng tôi không ngờ rằng nó 'đánh bại' rất nhiều bot =)
flawr

7

CounterPunch - Đã chỉnh sửa

Kết hợp cân bằng giữa xây dựng phòng thủ vững chắc và sau đó tấn công.

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

Chú thích:

(+)*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

Bảo vệ tương tự như Backtracker của @ Geobit , nhưng bảo vệ chống lại những kẻ tấn công nhanh bằng cách đặt một mồi nhử nhanh ra trước cờ.

Tấn công được lồng vào nhau với sự phân cực ngược lại để nhanh chóng dọn sạch các mồi nhử với các giá trị nhỏ. Trường hợp xấu nhất phải là một mồi nhử 64 (hoặc là cực tính).

Chỉnh sửa 1: Cải thiện hiệu quả tấn công chống lại mồi nhử (có lỗi logic trong chuyển mạch phân cực).

Chỉnh sửa 2: Kiểm tra chỉ ra rằng tạm dừng thực hiện tốt hơn một chút trong vòng lặp bên trong nhất.


6

Quay lui

Một chiến lược giải mã ngược. Bắt đầu đặt mồi nhử từ phía trước trở lại, vì vậy không ai bỏ qua phần còn lại khi tôi đang xây dựng chúng.

Nếu bảng nhỏ hơn cỡ 20 hoặc hơn, thì bảng này không hoạt động chống lại các bot tấn công nhanh, vì chúng ta sẽ vượt qua nhau trước khi tôi bắt đầu giải mã.

(>)*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

Lưu ý: Tôi không BF, nhưng điều này giống như nó làm những gì tôi muốn với tôi. Nếu không, xin vui lòng cho tôi bây giờ.


6

Không thể chạm vào cái này

Đây là một chương trình định hướng phòng thủ, cố gắng xác định cách đối thủ dọn sạch các tế bào và xây dựng một mồi nhử có kích thước phù hợp.

>---    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]

Tôi hiện đang làm việc trên một phiên bản có thể giành chiến thắng trước cả hai thái cực.


6

ImpatientTripwire (còn gọi là YandereBot)

Cố gắng trở thành một tripwire để nó có thể đặt các mồi nhử của (phần lớn) cực tính tương ứng, nhưng sẽ bỏ cuộc nếu bạn mất quá nhiều thời gian và giả sử bạn là người ngang hàng thay thế. Có một tripwire ngược cho bảng nhỏ.

(+)*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

Phiên bản hiện tại: 1.3 - được chỉnh sửa để làm tốt hơn trên các bảng nhỏ hơn, với chi phí thua trò chơi do kẻ thù lẻn qua trong quá trình kiểm tra tripwire

Các phiên bản trước: 1.2.1

(Tôi cần một thuật toán rõ ràng tốt hơn: /)


1
OMG 411k được mở rộng và loại bỏ hoàn toàn: -O Mã của Chiper chỉ bị treo trên này.
Sylwester

Chỉ cần thay đổi một vài trong số các nhận xét để giờ đây nó hoạt động với mã mới của
Crypt

kể từ lần chỉnh sửa mới nhất, dấu ngoặc đơn trong ngoặc đơn hành xử kỳ lạ vì logic vòng lặp va chạm với logic viết tắt. Tôi có thể thay đổi cấu trúc như ([)*300quay lại [[[ and so onkhông?
Mật mã

@ Mã hóa Vâng, hãy dùng nó - mặc dù phiên bản pastebin chính xác là như vậy
Sp3000

1
Thứ 3 là một nơi tốt đẹp để đi vào Làm tốt.
AndoDaan

5

Plodder Lightfoot - EDITED

Dựa trên Plodder , người khổng lồ tốc độ này có thể "chuyển tiếp nhanh" qua 0 liên tiếp cho đến khi nó đạt được thứ gì đó khác (tại thời điểm nó bắt đầu lập kế hoạch như mong đợi).

Bây giờ được cải tiến với một thuật toán lướt mạnh mẽ hơn, cũng cho phép chuyển tiếp nhanh thông qua các bộ giải mã nhỏ và các bộ giải mã lớn hơn của chính nó.

Chỉnh sửa # 2 : Bây giờ có thể quay lại sk sk nếu nó tìm thấy nhiều túi số không hơn.

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

Thay đổi kích thước "tiện lợi" đẹp đấy :)
Lily Chung

@IstvanChung Rất tiện lợi. ;) Bất kỳ điều gì nữa sẽ làm tôi chậm lại quá nhiều, mất điểm cho một số bot khác. Nếu bạn làm cho Bigger lớn hơn, tôi không nghĩ mình sẽ cố gắng bắt kịp.
DLosc

Chà, tôi đã tăng kích thước chỉ một chút để xem nó hoạt động như thế nào. Tôi nghĩ rằng Bigger có thể có thể tạo ra một kích thước thậm chí còn lớn hơn, nhưng không có thời gian để kiểm tra kỹ lưỡng. Chúc may mắn!
Lily Chung

Yêu các biện pháp chống lại các bot Cloacking và thực tế là nó thực sự giống như lập trình BF :)
Sylwester

5

Bất đắc dĩ Rán v2

Chiến lược rất dễ dàng. Cố gắng làm cho đối thủ nghĩ rằng cờ của cô ấy là một mồi nhử và đi trước bảng và lỏng lẻo (một loại tripwire / rung). Sau 10 vòng đầy đủ, cô bỏ cuộc và cố gắng xác định xem đối thủ có ở cờ của mình không và nếu không, cô sẽ thực hiện -17 mồi nhử cho đến khi cô chạm vào một ô đã đặt. Phương pháp bù trừ mà cô ấy sử dụng là trường hợp đặc biệt cho [-12,12] và bắt đầu vẽ giống như 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
]

Thông tin bên lề: Rán là một nữ thần biển Thần thoại Bắc Âu đưa các thủy thủ trước khi họ chết trên biển.


5

Mickey V4

Đối với V4, tôi đã sử dụng phương pháp tương tự như V3, chống lại các bot được cập nhật nhưng với dân số đồng thời hơn (30 chứ không phải 10).

Được phát triển dựa trên tất cả 60 bot, bao gồm BurlyBalderV3LethalLoke (nhưng không bao gồm 2botsonecup, không thể hoàn thành bởi việc triển khai nghiêm ngặt của tôi).

Tôi phát hiện ra các bot cực kỳ khác nhau và tỷ lệ thành công nếu tôi bắt đầu với các hạt ngẫu nhiên khác nhau. Vì vậy, tôi quyết định tách những điểm bắt đầu khác nhau này thành quần thể và thỉnh thoảng cho chúng thụ phấn chéo.

Trong 1400 thế hệ, 30 quần thể phát triển đồng thời đã tạo ra chương trình này:

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

Tôi tính tỷ lệ thắng của bot này là 90,0% so với vụ mùa hiện tại. (1135/125/0 độ dài băng thắng / thua / rút).

Thông tin V3

Tỷ lệ thắng được tính là 89,2% (1124/62/74 độ dài băng thắng / thua / rút).

Thông tin V2

Chương trình thế hệ hiện có phân tích để cho biết phần nào của phần cuối của chương trình không được sử dụng và cắt xén nó trước khi tạo ra các thế hệ tiếp theo từ nó. Điều này có nghĩa là các đột biến ngẫu nhiên chỉ xảy ra trong các phần được sử dụng của chương trình và do đó quá trình tiến hóa diễn ra nhanh hơn.

72% so với vụ mùa hiện tại vào thời điểm đó. (892/204/143 độ dài băng thắng / thua / rút).

Thông tin về V1

31500 thế hệ, chỉ có 12 bot phải đối mặt. 65% (165/80/7 độ dài băng thắng / thua / rút). Tôi sử dụng tất cả 21 độ dài băng.

Các bot tiềm năng được xếp hạng theo:

  • hầu hết chiến thắng sau đó;
  • hầu hết rút ra sau đó;
  • thời gian nhanh nhất rút ra sau đó;
  • thời gian nhanh nhất giành được

Câu đố

  • Mickey được đặt theo tên con mèo của tôi và;
  • Để diễn giải TS Elliot: The Naming of Cats is a difficult matter, It isn't just one of your brainfuck bots
  • Java bf vm và thuật toán di truyền của tôi là trên github .
  • Vm có khả năng chạy một giải đấu hoàn chỉnh trong vòng dưới 4 giây trên một lõi của i7 (thận trọng - kết quả không phải lúc nào cũng giống với công cụ giải đấu).

Sẽ không tốt hơn nếu sử dụng tất cả 60 bot?
Sylwester

@Sylwester Có lẽ, tôi chủ yếu là không vì nó quá chậm. Mất hai giờ để làm điều này. Ngoài ra, mặc dù nó phát triển chậm hơn, càng nhiều bot phải đối phó. Tôi hình dung nếu nó đánh bại những kẻ đứng đầu, nó sẽ làm tốt. Tôi đã không thể chạy giải đấu thực tế để xác nhận, rắc rối trăn. Vì vậy, tôi nghĩ rằng tôi chỉ cần đăng nó và xem ...
weston

@weston Có lẽ chúng tôi có thể giúp bạn với những rắc rối trăn của bạn?
Mật mã

@Codes cảm ơn, tôi đã mở một vấn đề trên github github.com/redevined/brainfuck/issues/2
weston

@Sylwester Tôi sử dụng hầu hết các bot bây giờ vì trình tạo của tôi nhanh hơn và đa luồng.
weston

4

Con bạc

Điều này có liên quan chặt chẽ với bot Geronimo của tôi. Nhưng nơi Geronimo đang chơi một điều chắc chắn, Người đánh bạc cố gắng nhanh hơn bằng cách làm những gì tốt nhất - cờ bạc: Nó đi đến phòng giam thứ 20 và bắt đầu từ đó.

Điều đó có nghĩa là nó có thể dễ dàng thua chỉ vì đấu trường không lớn như vậy. Nhưng nếu có, nó có thể là một vài chu kỳ được tính.

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

Sự thật thú vị: Tôi đã thực sự xem xét việc nhập vào một loạt các bot trông giống như (>)*X(>[-])*Yở đâu X in 9..29Y = 30 - X. Nhưng tôi nghĩ rằng việc nhập hai mươi bot sẽ là quá nhiều :) Hoặc thậm chí bốn mươi nếu tôi có hai phiên bản, một phiên bản không có [+]và một phiên bản có [-].


Không phải là một số như 13, hoặc 14 sẽ cho bạn tỷ lệ thắng tốt hơn 20?
Moop

Có lẽ. Tôi chỉ muốn cho giữa. Thật thú vị nếu tôi chỉ đi bên trái thay vì bên phải cơ hội chiến thắng của tôi đi xuống rất nhiều. Sẽ mong đợi điều ngược lại.
Ingo Bürk

Vì mỗi bot chiến đấu sau đó khớp với bất kỳ bot nào khác, thậm chí 40 trong số đó sẽ không nâng cao cơ hội của bạn đến mức đó - và tôi đã có một thời gian khó khăn để sao chép và dán: D
Mật mã

4

Đồ ngốc

Một con bot cực kỳ ngu ngốc, chỉ gây rối với môi trường và hy vọng rằng những con bot mà nó chiến đấu sẽ thoát khỏi băng.

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

(Tôi không chắc liệu điều này có hoạt động hay không - mặc dù nó không có lỗi!)

Chú thích (với những gì tôi nghĩ nó làm):

(+)*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.

(Tôi sẽ loạng choạng nếu chiến thắng trong một trận chiến)


1
dòng thứ hai của bạn sẽ thực sự bằng không ô bằng cách thêm vào, và sau đó trừ đi bảy lần liên tiếp.
tự hào

1
@proudhaskeller Bạn nói đúng ... Đó là những gì tôi nhận được khi cố gắng làm những thứ Brainfuck với giấc ngủ ngắn. Đã làm cho nó đơn giản hơn thay vì thực sự tìm ra cách làm thế nào cho đúng.
Sellyme

4

CropCircleBot

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

Bot này sử dụng các thuật toán tiên tiến được truyền đi bởi các vòng tròn cắt xén người ngoài hành tinh họ đặt trên trái đất. Nó sẽ thay đổi nhân loại và cung cấp những tiến bộ công nghệ lớn và thậm chí giải quyết nhiều vấn đề môi trường.


Bạn có biết bạn không bao giờ nên sử dụng] [, phải không?
Máy

Tôi không, bạn có thể giải thích tại sao?
flawr

Khi bạn rời khỏi một vòng lặp, ô hiện tại là 0. Sau đó, bạn bỏ qua vòng lặp tiếp theo vì ô ở con trỏ vẫn là 0.
CalculatorFeline

Oh, tôi luôn nghĩ rằng kiểm tra xảy ra ở cuối vòng lặp?
flawr

Nó cũng xảy ra lúc đầu. Trong một số triển khai, [không làm gì cả, nhưng đó là một ngôn ngữ hoàn toàn khác (newbiefuck trên wiki esolang)
CalculatorFeline

4

BeatYouMate

Và bởi vì mọi người nên đăng một bot sẽ đánh bại bot đầu tiên mà họ đăng, đây là 5+ bot đặt mồi nhử:

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

4

Thông minh

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

Đặt một vài bẫy nhỏ, sau đó chạy sang phía bên kia và cố gắng xóa mọi thứ, trên hoặc dưới không. Thất bại trên ----.


+++trước đây [-]là thực sự thông minh để tránh bẫy đơn giản!
Ingo Bürk

Đã ném ngoại lệ do không (thể so sánh được , tôi có thể coi nó như một bình luận không?
Mật mã

@Codes Tôi sẽ sửa nó, xin lỗi.
isaacg

4

MetaJSRandomBot

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

Ý tưởng đằng sau bot này là tạo ra một cái gì đó hoàn toàn ngẫu nhiên mà vẫn là mã js hợp lệ mà không có quá nhiều sự vô dụng. Tôi đã viết mã sau đây ( liên kết JSFiddle ) để tạo nó. Hãy xem nó hoạt động tốt như thế nào =)

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

Roulette Phổ

Russian Roulette đã đặt cược với người bạn Phổ của mình, và giờ đến lượt anh ta chơi.

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

Bạn có 2 lần giảm con trỏ và chỉ tăng 1 lần trong vòng lặp chính của bạn - điều này sẽ giúp bạn thoát khỏi đoạn băng của chính mình.
Comitern

2
Điều này vẫn sẽ chỉ ném ra.
tự hào

Ngay từ đầu bạn có một điểm cộng theo sau là một điểm trừ. 2 chu kỳ lãng phí.
tây

4

To hơn

Cuộc chạy đua vũ trang bắt đầu !!

Cả hai xây dựng và phá hủy các bức tường chiều cao 16 18, lớn hơn hầu hết các đối thủ cạnh tranh. Cũng có một chút logic để đánh bại kẻ lừa đảo, người bảo vệ cờ, người chống thay thế và bot giả định một lá cờ chưa được chạm tới

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

Phiên bản chú thích

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

Bệnh nhân

Một bot nghiêm trọng một phần. bot này sẽ cố gắng giành chiến thắng trong giới hạn 100000 chu kỳ. nó sẽ đi đến cờ địch trong khi đặt một vài cái bẫy trên đường đi, giảm nó xuống một chút, quay trở lại và bảo vệ lá cờ.

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

nó sẽ cho rằng mọi thứ lớn hơn 1 hoặc nhỏ hơn -1 là cờ và khi gặp phải một, nó sẽ quay trở lại. nó bảo vệ bằng cách đơn giản tăng liên tục. điều này giả sử hầu hết các chương trình sẽ sử dụng [] để kiểm tra xem cờ có trở thành 0 hay không và vì vậy (+) * 100000 sẽ nhanh hơn nhiều

Chỉnh sửa: không thể làm cho nó hoạt động trên trình thông dịch BF Joust. tôi đang từ bỏ có lẽ bạn nên cho tôi biết làm thế nào để cải thiện mã của tôi

Chỉnh sửa: bây giờ bot tạo điểm ngay trước cờ 2 và sau khi giảm cờ một chút, nó tìm kiếm một 2. điều này có nghĩa là hủy bỏ kịch bản trong đó bot sẽ tìm thấy một ô 0 khác với ô trước cờ.


Bot của bạn dường như tự giết mình trên một cuộn băng (khá hiếm, tôi thừa nhận) với độ dài 10 vì có 10 '>' lúc đầu. Ngoài ra, đó [<]không phải là một ý tưởng hay, vì nó lặp đi lặp lại cho đến khi ô bên dưới con trỏ của bạn bằng 0 , là một trong các ô phía trước cờ của bạn hoặc đơn giản là tự sát nếu con trỏ của bạn chạm tới cờ (vì cờ của bạn hy vọng không phải là không ).
Mật mã

@ Mã hóa Thông báo bot không đặt bẫy ở vị trí ngay trước cờ - ý tưởng của tôi là đánh dấu vị trí này để bot sẽ xây dựng phòng thủ ở đó. Có cách nào tốt hơn? Trong bfjoust đôi khi kẻ thù xóa sạch bẫy và sau đó bot dừng lại trước khi cần.
tự hào
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.