BrainF *** edBotsForBattling - การแข่งขัน Brainf ***


88

บอททั้งหมดในเวทีการต่อสู้จู่ ๆ ก็ถูกสมองเบ็คและไม่มีใครสามารถอธิบายได้ว่าทำไม แต่ใครจะเป็นห่วงตราบใดที่พวกเขายังสามารถต่อสู้ได้แม้ว่า Brainfuck เป็นภาษาเดียวที่พวกเขาเข้าใจอีกต่อไป


เป็นเวลานานแล้วที่การส่งครั้งสุดท้ายดังนั้นในที่สุดฉันก็จะประกาศผู้ชนะของ BrainFuckedBotsForBattling: ขอแสดงความยินดีกับ LymiaAluysia ที่ชนะ NyurokiMagicalFantasy!


ป้ายบอกคะแนน

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

คะแนนสุดท้ายจาก 09.10.2014

EDIT6 : บันทึกที่ถูกทิ้งเนื่องจากมีขนาดและรันไทม์มาก คุณสามารถสร้างได้ด้วยตนเองโดย uncommenting RunThisTournament.pyสายใน

EDIT5 : ดำเนินการจัดการตัวย่อในตัวควบคุมไม่มีรันไทม์ขนาดใหญ่อีกต่อไป สิ่งนี้มีผลข้างเคียงที่ตัวเลขและวงเล็บจะไม่ถูกถือว่าเป็นความคิดเห็นอีกต่อไป คุณยังคงสามารถใช้งานได้หากคุณต้องการให้รุ่นที่มีคำอธิบายประกอบ แต่มันจะมีประโยชน์มากหากจะมีรหัสของคุณที่ไม่มีเวอร์ชันที่ไม่มีข้อคิดเห็นดังนั้นฉันไม่จำเป็นต้องลบความคิดเห็นด้วยตนเอง ขอบคุณ!

EDIT4 : เปลี่ยนชื่อเนื่องจากการแข่งขันถูกลบออกจากคำถามเครือข่ายร้อนแรง ขอบคุณ @Geobits ที่ชี้เรื่องนี้ออกมา!

EDIT3 : ลบความคิดเห็นในโปรแกรม BF เนื่องจากผลที่ไม่คาดคิดควรได้รับการแก้ไขในขณะนี้ หากใครมีปัญหาในการลบความคิดเห็นของเขาโปรดรายงาน

EDIT2 : เนื่องจากมันทำให้เกิด arcane runtime บนคอมพิวเตอร์ที่ค่อนข้างช้าของฉันฉันจึงลดการ จำกัด การหมดเวลาจาก 100,000 รอบเป็น 10,000 รอบ ไม่ใช่ว่าทุกคนได้หันผลลัพธ์ของเกมวิ่งออกไปจากจุดนี้แล้ว

EDIT1 : แก้ไขข้อผิดพลาดในสคริปต์แปลงทำให้ตัวแปลไม่ต้องสนใจตัวเลขในโปรแกรมที่ถูกคอมเม้นต์


ลักษณะ

นี่คือbrainfuckทัวร์นาเมนต์แรงบันดาลใจจาก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 ในขณะที่เซลล์อื่น ๆ ทั้งหมดเป็นศูนย์ เป้าหมายของบอทของคุณคือการทำให้ธงของศัตรูติดศูนย์เป็นเวลา 2 รอบติดต่อกันก่อนที่เขาจะกำหนดธงของคุณเอง

แต่ละบอทเริ่มที่ธงของเขาเองซึ่งเป็นเซลล์ [0] จากมุมมองของเขาเอง ฝ่ายตรงข้ามตั้งอยู่อีกด้านหนึ่งของเทป

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

บอททั้งสองดำเนินการกระทำของพวกเขาพร้อมกันซึ่งถือเป็นหนึ่งรอบ เกมจะจบลงหลังจาก 10,000 รอบหรือเร็วที่สุดเมื่อถึงหนึ่งในเงื่อนไขการชนะ หากหนึ่งในโปรแกรมถึงจุดสิ้นสุดโปรแกรมก็จะหยุดทำ anthing จนกระทั่งจบเกม แต่ก็ยังสามารถชนะได้


เงื่อนไขการชนะ

บอทของคุณชนะภายใต้เงื่อนไขข้อใดข้อหนึ่งต่อไปนี้:

  • ธงศัตรูของคุณเป็นศูนย์ต่อหน้าคุณ
  • ศัตรูของคุณย้ายตัวชี้ของเขาออกจากเทป (ดำเนินการ>ในธงของคุณหรือ<ด้วยตัวเขาเอง)
  • ค่าสถานะของคุณอยู่ไกลจาก 0 มากกว่าค่าสถานะของคู่ต่อสู้ของคุณหลังจาก 10,000 รอบ

กฎระเบียบ

โพสต์ของคุณควรมีชื่อบอตและรหัสของคุณ

  • คุณสามารถใช้ไวยากรณ์ตัวย่อต่อไปนี้เพื่อทำให้โค้ดของคุณอ่านง่ายขึ้น:
    • เช่น(+)*4เดียวกับ++++สิ่งนี้เป็นสิ่งที่ถูกต้องสำหรับการเรียนการสอนใด ๆยกเว้นวงเล็บที่ไม่ตรงกันในวงเล็บตั้งแต่ตรรกะตรรกะชนกับตรรกะตัวย่อ กรุณาใช้[-[-[-แทน([-)*3
  • อักขระอื่น ๆ ทั้งหมดที่นอกเหนือไป+-><[].จากความคิดเห็นนั้นจะถูกละเว้นยกเว้น()*ตัวย่อ

บอตที่ไม่ปฏิบัติตามกฎจะถูกแยกออกจากการแข่งขัน

  • อนุญาตให้ใช้ Brainfuck พื้นฐานเท่านั้นไม่มีตัวแปรอื่น ๆ ที่รองรับขั้นตอนหรือการดำเนินการทางคณิตศาสตร์
  • ซอร์สโค้ดของ bot ของคุณไม่ควรมีวงเล็บเหลี่ยมที่ไม่ตรงกัน

คุณอาจจะแจ้งให้ตัวเองเกี่ยวกับกลยุทธ์พื้นฐานแต่ไม่ได้ใช้รหัสอีกคนหนึ่งสำหรับบอทของคุณเอง


เกณฑ์การให้คะแนน

บอทของคะแนนจะถูกกำหนดโดยจำนวนชนะต่อบอทอื่น ๆ ทั้งหมด การเผชิญหน้าระหว่าง 2 บอทประกอบด้วยการจับคู่ 10 คู่กับความยาวเทปหน่วยความจำที่แตกต่างกันซึ่งส่งผลให้คะแนนสูงสุด 10 คะแนนต่อการเผชิญหน้า ผลเสมอในการจับคู่นี้


โปรแกรมควบคุม

คุณสามารถค้นหาโปรแกรมควบคุมบน GitHub พร้อมกับบันทึกการแข่งขันเต็มรูปแบบ กระดานแต้มนำจะถูกโพสต์ที่นี่เมื่อมีการสร้าง

รู้สึกอิสระที่จะโคลนที่เก็บและลองบอทของคุณกับคนอื่นด้วยตัวคุณเอง ใช้python Arena.py yourbot.bf otherbot.bfเพื่อรันการแข่งขัน คุณสามารถปรับเปลี่ยนเงื่อนไขที่มีธงบรรทัดคำสั่งและ-m -tหากเทอร์มินัลของคุณไม่รองรับ ANSI escape sequences ให้ใช้--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

DecoyBot จะชนะการแข่งขันทุกครั้งด้วยความยาวเทปมากกว่าสิบเนื่องจาก FastClearBot สามารถหลีกเลี่ยงการล่อขนาดเล็ก แต่ไม่ใช่ตัวที่ใหญ่กว่า สถานการณ์เดียวที่ FastClearBot สามารถเอาชนะ DecoyBot ได้คือเมื่อมันเร็วพอที่จะไปถึงธงของศัตรูก่อนที่คู่ต่อสู้ของเขาจะสร้างตัวล่อขนาดใหญ่ขึ้น


5
ดั้งเดิมฉันชอบมัน ฉันแค่กลัวว่าสิ่งนี้จะไม่อนุญาตให้มีความลึกเชิงกลยุทธ์มากพอ แต่นั่นอาจเป็นเพียงฉัน
ɐɔıʇǝɥʇuʎs

11
นี้จะสนุกมากขึ้นด้วยBefunge
IchBinKeinBaum

6
ฉันพบเว็บเพจ BF Jousting ซึ่งสามารถเรียกใช้และเห็นภาพการแข่งขันการแข่งขันได้
PhiNotPi

4
ขอบคุณสำหรับการโฮสต์ KOTH รหัสนี้ จะต้องทำงานมากกับการส่งจำนวนมาก
AndoDaan

3
ฉันอยากจะกล่าวขอบคุณทุกคนสำหรับการเข้าร่วมโครงการยังคง ^^
Cipher

คำตอบ:


18

Nyuroki Magical Fantasy

ฉันคิดว่าถึงเวลาที่จะต้องจริงจังแล้ว ~ ฉันจะรวบรวมคอมไพเลอร์ของฉันให้พร้อมสำหรับ HLL เล็กน้อยเพื่อให้การเขียนโปรแกรม BF Joust ง่ายขึ้น นี่เป็นความพยายามครั้งแรกของฉันที่จะทำบางสิ่งบางอย่างกับมัน แนวคิดของบอทนั้นค่อนข้างเรียบง่าย มันตั้งค่าล่อของขั้วที่แตกต่างกันไม่กี่จากนั้นก็บ้าไปกับกระดิกขนาดใหญ่ที่มีความชัดเจนตรงข้ามย้อนกลับตรงกลาง

โอ้อย่างไรก็ตามคะแนนคาดว่าจะอยู่ที่ประมาณ 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 กล่าวอีกนัยหนึ่งมันไม่สามารถขยายได้อย่างมีประสิทธิภาพใน brainfuck ขั้นพื้นฐาน
weston

1
@weston ใช่ และโปรแกรมส่วนใหญ่บนเนินเขา BF Joust ที่พัฒนาแล้วส่วนใหญ่ ( codu.org/eso/bfjoust/in_egobot - ดู smartlock เป็นต้น) ยิ่งแย่ลง มันไม่ใช่เรื่องใหญ่โดยเฉพาะอย่างยิ่งเนื่องจากนี่เป็นจุดชวเลข มันทำให้กลยุทธ์ที่จะไม่น่าไว้วางใจเป็นอย่างอื่นเนื่องจากความยาวได้จริง :)
Lymia Aluysia

43

บอทอุปกรณ์ปิดบัง

บอทนี้พยายามซ่อนฐานของมันโดยทั่วไปเพื่อให้บอทคนอื่น ๆ เคลื่อนผ่านมันไปและปิดเทป

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

4
ฉลาดมากต้องปรับบอทของฉันให้เหมาะกับสิ่งนี้
Moop

2
นี่เป็นหนึ่งในสิ่งที่ฉลาดที่สุดในที่นี้ในความคิดของฉัน
Almo

+ f สำหรับเสื้อคลุมแรก ฉันไม่ได้สังเกตสิ่งนี้มาก่อนหลังจากฉันทำRàn แต่มันเป็นความคิดที่คล้ายกันแอปพลิเคชันที่แตกต่าง
Sylwester

19

Burly Balder v3

Burly Balder เป็นนักวิ่งช้าปานกลาง มันทำให้ล่อขนาดใหญ่สองตัวก่อนเข้าสู่โหมดเร่งด่วน ในโหมดเร่งด่วนก็มีวงที่ใช้เพียง 4 ขั้นตอนแต่ละเซลล์ศูนย์และเมื่อไม่ใช่ศูนย์มือถือก็มีการวิเคราะห์กรณี [-18,18] ก่อนสุ่มสี่สุ่มห้าลด 107 [-.]ก่อนที่จะล้างด้วย เขาล้างธงไม่เปลี่ยนแปลงใน 242 ขั้นตอน 114 มากกว่าความไม่แน่นอน-*128 และ 14 น้อยกว่าไร้เดียงสา[-]ชัดเจน เมื่อเซลล์ถูกล้างเขายังคงทิ้งร่องรอยของล่อ -2 เขามีกรณีพิเศษเฉพาะสำหรับดัชนี 9 เพื่อบันทึกขั้นตอนบางอย่างสำหรับเกมขนาด 10 และมันออกจากห้องขังด้วยล่อ 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เป็นคนฉลาด ฉันกลัวว่าล่อบนบอทส่วนใหญ่จะยิ่งใหญ่ขึ้นในรอบต่อไปจนกว่าจะมีการลงโทษ จากนั้นเราอาจจะมีกลยุทธ์ที่เจ๋ง ๆ ออกมาอีก :) :)
Sylwester

2
ปัญหาเกี่ยวกับการเพิ่มขนาดของล่อคือการค้าขายกับประสิทธิภาพการทำงานบนเทปสั้นกับบอทโจมตีอย่างรวดเร็ว ด้วยการสุ่ม 10 รอบมีแนวโน้มที่จะเป็นจุดเปลี่ยนที่ขึ้นอยู่กับความเร็วของการโจมตีอื่น ๆ
องค์การคอมมิวนิสต์สากล

2
ใช่คุณยังคงเป็นคนที่จะต้องเอาชนะ
AndoDaan

4
@AndoDaan กับเทพเจ้านอร์ดิกมากมายที่จะสนับสนุนฉันขนาดเวทีแบบสุ่มดูเหมือนจะอยู่ในความโปรดปรานของฉัน :-)
Sylwester

13

EvoBot 1

นี่คือบอทธรรมดาที่สร้างขึ้นโดยใช้อัลกอริทึมทางพันธุกรรม ฉันเริ่มต้นด้วยแม่แบบและโปรแกรมของฉันปรับตัวเลขช้าๆเพื่อสร้างบอตนักรบที่ดีขึ้น แก้ไขโค้ดด้านล่างเพื่อเพิ่มความสามารถในการอ่าน

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

ฉันใช้รายการอื่นในการแข่งขันเพื่อวัดความเหมาะสมของผู้สมัครที่แตกต่างกัน

ตั้งแต่นี้เป็นความพยายามครั้งแรกของฉันที่ evobot ฉันเริ่มต้นด้วยแม่แบบที่เรียบง่าย:

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

ฉันคาดการณ์ว่าบ็อตนี้จะได้รับคะแนนในช่วง 50 ถึง 60

ขณะนี้ฉันกำลังทำงานกับแม่แบบลวงย้อนกลับ

EvoBot 2

นี่คือบอทที่สร้างขึ้นโดยอัลกอริทึมทางพันธุกรรมเดียวกัน แต่มีเทมเพลตต่อไปนี้:

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

บอทนี้ใช้กลยุทธ์ลวงย้อนกลับเพื่อตั้งค่าล่อ 4 อันของความสูงที่แตกต่างกัน บอทที่ได้คือ:

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

ฉันคาดว่าบ็อตใหม่นี้จะดีกว่าบอทก่อนหน้านี้และอาจได้รับคะแนนใน 70s (อาจสูงกว่านั้นมากเนื่องจากมีรายการใหม่มากมาย)


2
+1 สำหรับอัลกอริทึมทางพันธุกรรม ฉันมีศรัทธาในตัวพวกเขาอย่างมาก ฉันหวังว่าบอทของคุณจะทำได้ดี
AndoDaan

12

เครื่องกำเนิดไฟฟ้ากระแสสลับ

ถือว่าคนส่วนใหญ่จะเป็นศูนย์เซลล์โดยการเพิ่มหรือลบมันดังนั้นโดยเฉลี่ยทุกเซลล์จะใช้เวลา 128 เปลี่ยนเป็นศูนย์

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

การเปลี่ยนแปลงล่าสุดของคุณปรับปรุงอัตราการชนะสำหรับ Alternator เทียบกับ Geronimo จาก ~ 60% ถึง ~ 90% ดี
Ingo Bürk

ใช่ฉันเคลื่อนไหว 18 ครั้งเมื่อฉันทำ (> +> -) * 9 ดังนั้นมันจะหลุดออกจากเทป ความผิดพลาดโง่ ๆ
Moop

แม้แต่การปกป้อง Geronimo ด้วยการเพิ่ม / ลดการสลับเป็นศูนย์เซลล์จะไม่เปลี่ยนแปลงอัตราการชนะของฉันเลย อัลเทอร์เนเตอร์อาจออกมาเป็นผู้ชนะที่นี่ - มันใช้กระบอกสูบไม่กี่กระบอกในการสร้างกับดักที่ยากต่อการแตก
Ingo Bürk

เฮ้แก้ไขฉันถ้าฉันผิด แต่บอทนี้ไม่ย้ายออกจากกระดานโดยอัตโนมัติถ้ากระดานยาว 10 ใช่ไหม มันกำลังเคลื่อนที่ 10 กำลังสองก่อนที่จะพยายามตั้งอะไรเป็นศูนย์
Boschman

11

ดังนั้นคนอื่นที่นี่ใช้อัลกอริทึมทางพันธุกรรมเพื่อลองและสร้างโปรแกรมที่นี่ นานมาแล้วฉันได้เขียนนักวิวัฒนาการ BF Joust สำหรับเนินเขาต่อเนื่องในช่อง IRC ฉันตัดสินใจปั่นมันสำหรับการแข่งขันครั้งนี้เช่นกัน ~

และ ... ไม่เหมือนกับคนอื่น ๆ ที่มีนักวิวัฒนาการนักวิวัฒนาการของฉันสามารถเปลี่ยนโปรแกรมได้มากกว่าการนับซ้ำ :)

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 : ฉันไปและวิเคราะห์เอาท์พุทของ evolver ด้วยตนเอง แม้จะดูแตกต่างกันมาก 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
ขอแสดงความยินดีกับสถานที่แรก โปรแกรม algo ทางพันธุกรรมสามารถใช้เวอร์ชันปัจจุบันของคุณเป็นแม่แบบและดำเนินการกับเวอร์ชันใหม่เพื่อปรับปรุงให้ดียิ่งขึ้นไปอีกหรือไม่
Sylwester

งานที่ยอดเยี่ยมกับสถานที่แรก ฉันมีความสุขมากที่อัลกอริทึมทางพันธุกรรม (ดีวางไข่) ทำขึ้นที่นั่น!
AndoDaan

ตอนนี้ถ้าเราสามารถนำผลของเกมทั้งหมดพัฒนามากขึ้นเพิ่มการเรียนรู้ของเครื่อง ... เราก็ไม่น่าจะมีมนุษย์ที่น่าสงสารอีกต่อไป: P
Sp3000

@Sylwester เรียงจาก? การเป็นตัวแทนภายในของฉันใช้ระบบกระตุ้นยีน (ที่คิดไม่ดี) ที่ควรปล่อยให้มันพัฒนาโครงสร้างส่วนเกิน (และในทางปฏิบัติจริง ๆ ) ฉันไม่สามารถนำโปรแกรมสุดท้ายกลับมาและกู้คืนการเป็นตัวแทนภายในได้ แต่ฉันสามารถใส่คำสั่งลงในยีนเดี่ยวและปล่อยให้มันพัฒนาต่อไปได้
Lymia Aluysia

@ Sp3000 น่าเสียดายที่อัลกอริทึมของฉันแทบจะไม่สามารถก้าวหน้าไปได้บนเนินเขา #esoteric ที่ได้รับการพัฒนามาอย่างดี มันคงจะดีถ้าฉันสามารถทำสิ่งนั้นได้ แต่อนิจจาความสามารถของฉันในขั้นตอนวิธีเชิงพันธุกรรมไม่ดีพอ ฉันอาจจะปล่อยนักวิวัฒนาการของฉันบางวันเมื่อฉันได้แฮ็กที่น่าเกลียดหมดไป
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

@ Sp3000 คุณแน่ใจหรือไม่ ฉันพยายามชดเชยด้วยหลายขั้ว (เช่น[(+)*3[-]], [(-)*6[+]]) และการทำงานที่ดี (อย่างน้อยสำหรับการชดเชยขนาดเล็กมาก)
Mika Lammi

โอ้ฉันรู้ว่ามีอะไรผิดปกติ: / ฉันลองโปรแกรมเช่น>>>>>>>>>((-)*4[+][--.]>)*21ที่ตรวจสอบเซลล์อีกครั้งและคุณ(+/-)*290ทำให้เกิดลูปซิงค์ครั้งที่สองถูกเรียกขึ้นมา ไม่ใช่ความผิดของออฟเซ็ตที่ชัดเจน
Sp3000

10

Bot Pacist

บอทของฉันเชื่อว่าความรุนแรงไม่ได้เป็นคำตอบและจะพยายามหลีกเลี่ยงการต่อสู้ในทุกด้าน

(.)*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 และทำให้บอทของคุณช้ากว่าที่จำเป็นเล็กน้อย หากจุดต่างๆมีเจตนาจงอย่าลังเลที่จะแก้ไขฉัน!
ลับ

โอ้ถูกต้องแล้วมันค่อนข้างงี่เง่าของฉันขอบคุณสำหรับการลบ: p
mmphilips

9

AnybodyThere?

ดูด้านหลังเป็นระยะเพื่อตรวจสอบว่าศัตรูเริ่มล้างของล่อต่อจากนั้นรีบไปข้างหน้า

ดูเหมือนว่าจะทำได้ดี แต่ฉันไม่แน่ใจว่าเป็นเพราะกลยุทธ์หรือเพียงเพราะฉันเพิ่ม 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: นี่เป็นบอตแรกที่ฉันเห็นว่าสายล่อ (นอกเหนือจาก +/- 1) เกินกว่า 9 เซลล์แรก บนเทปที่ยาวขึ้นนั่นคือนักฆ่า เดิน Lightfoot เพียรบางมากขึ้นในขณะนี้ ...
DLosc

9

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

Lethal Loke V2.1 (พร้อม Mistletoe)

แน่นอนว่ามันเป็นบอทที่อันตรายถึงตายและเขาไม่เพียง แต่จะฆ่า Burly Balder a ที่มีมิสเซิลโทที่สวยงามเท่านั้น แต่ยังชนะเกือบทุกครั้งเมื่อเทียบกับบอทอื่น มันเป็นสื่อกลางที่รวมเข้าด้วยกันและรวดเร็ว การทดสอบของฉันให้คะแนน 567

รวบรวมไฟล์ BFJ สำหรับการต่อสู้ Racket BFJ generator กำเนิด:

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

เรื่องไม่สำคัญ : Loke (Loki) เป็นเทพเจ้าในตำนานนอร์ดิกที่ชอบเล่นกับทุกคนและหลอกพวกเขา เขาเป็นคนเปลี่ยนรูปร่าง (เป็นสัตว์และผู้คน) และมักจะไปตามวิธีของเขาเอง ในเรื่องราวที่เขามักจะเดินทางไปด้วยและช่วยเหลือเหล่าทวยเทพอื่น ๆ และใช้กลอุบายเล็ก ๆ และกวนสิ่งต่าง ๆ นอกจากการฆ่าบัลเดอร์แล้วเขายังเป็นพ่อของเฮล (เทพแห่งนรก / เฮลเว็ท) สัตว์เฟนเรียร์และงูมิดการ์ดที่เริ่ม Ragnarok (นอร์สอาร์มาเก็ดดอน)

มันทำงานอย่างไร

ในตอนแรกเขาสร้างตัวล่อขนาดใหญ่ (-17) จากนั้นทำ+-แพทเทิร์นไปจนถึงดัชนี 7 เขาสแกนไปข้างหน้าจากไปที่ 13 โดยทิ้งร่องรอยของ (+10, -32) + ล่อ แต่เมื่อเขาตรวจจับชุดเขาจะยกเลิก และเริ่มโหมดเร่งด่วนปานกลาง * 1 หากไม่มีการตั้งค่าเซลล์เขาจะเริ่มโหมดเร่งด่วน * 3 ด้วย

* 1 ในโหมดเร่งด่วนปานกลางเขาตรวจพบกิจกรรมของฝ่ายตรงข้ามในดัชนีหนึ่ง 7-13 และเขาเริ่มจากดัชนี 2 ฝ่ายตรงข้ามบางคนออกจากศูนย์และอื่น ๆ ปล่อยให้ค่าที่แตกต่างกันและตอนนี้เขามีวิธีในการตรวจจับกิจกรรมของฝ่ายตรงข้าม ดัชนี 2-6 (-32, + 10) + หากเซลล์ไม่ได้คาดหวังค่า (-1, 1) หรือเขาเสร็จสิ้นการล่อทั้งหมดเขาจะเข้าสู่โหมดเร่งด่วน * 2

* 2 โหมดเร่งด่วนที่เขาคาดหวังว่าเขาได้รับการตรวจพบเพื่อล่อไม่ทำงาน เราหวังว่าสิ่งที่เราได้ตั้งไว้แล้วจะหยุดฝ่ายตรงข้ามและมุ่งเน้นไปที่การวิ่งผ่านเหยื่อล่อ เขาเริ่มวิ่งไปที่จุดที่ไกลที่สุดที่เรารู้จากการสแกนครั้งก่อน [9,14] หรือดัชนี 9 ถ้าเราทำเร็วกว่านั้น เขามีเคสพิเศษสำหรับล่อแรกที่เราเพิ่ม 120 และ 27 จ๊าดเพราะเขาไม่ต้องการลดค่า tha ให้ต่ำกว่าศูนย์เพราะมันเป็นกับดัก แต่สำหรับล่อทุกตัวหลังจากเราคลุกเคล้าที่ [-8,8] ก่อนที่จะเพิ่มขึ้นด้วย 120 และการเดินขบวน 27 ขั้นตอนก่อนที่จะต่อไปยังเซลล์ถัดไป

โหมดเร่งด่วนช้าถูกลบออกเนื่องจากไม่ส่งผลกระทบต่อคะแนนของเนินเขาปัจจุบันและทำให้บอทของฉันเล็กลงเล็กน้อย (แต่ไม่มาก)


3
ตอนนี้เราเริ่มเห็นความวิกลจริต ฉันชอบมัน.
Sp3000

@ Sp3000 YandereBotv2 เป็นเหตุผลที่ฉันต้องการคิดใหม่นอกเหนือจากการเพิ่มค่าการล่อและการแกว่ง มันชนะเปอร์เซ็นไทล์ที่สูงกว่าเมื่อเทียบกับบ็อตทั้งหมดในรอบสุดท้ายดังนั้นคุณจึงโชคไม่ดีกับขนาดเวที
Sylwester

อาฮาฮาบางที - ฉันคิดว่าฉันต้องการ counterplan เทียบกับขนาดล่อที่เพิ่มมากขึ้น: / ฉันชอบวิธีที่คุณมีโหมดที่แตกต่างกันมาก
Sp3000

ถอนหายใจ ฉันจะต้องทำให้ HLL ของฉันทำงานกับ BF Joust ให้ดีขึ้นเพื่อที่นักวิวัฒนาการของฉันจะได้มีโอกาสอีกครั้ง ขอแสดงความยินดีกับ # 1 ~
Lymia Aluysia

@LymiaAluysia ขอบคุณ ฉันรู้สึกประหลาดใจมากกับบอลเดอร์ ฉันกำลังนับรุ่นใหม่ของ NestDarwin, YandereBot และ Mickey :-)
Sylwester

8

Geronimo

เป็นที่น่ารังเกียจยิ่งกว่าบ็อต BestOffense ของเคนเพราะมันไม่ได้สร้างการป้องกันใด ๆ กลยุทธ์ที่นี่คือ: คนอื่น ๆ จะพยายามฉลาด แต่การมีไหวพริบต้องใช้รอบ ดังนั้นเราจะข้ามไปยังส่วนที่เรารู้ว่าศัตรูอยู่และล้างทุกอย่างที่เราพบ

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

ดูเหมือนว่าจะชนะมากที่สุดเทียบกับบอทตัวอย่างของบอทและบอทของเคน


7

SternBot

บอทครึ่งจริงที่แท้จริงตอนนี้สิ่งต่าง ๆ เริ่มขึ้นแล้ว จัดการกับลักษณะที่เป็นเอกเทศของบอทเหล่านี้

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

1
SternBot ให้ปัญหาเรื่องพาริตี้กับฉัน :(
Sp3000

7

DoNothingBot

การป้องกันที่ดีที่สุด (... ) คือความไม่รู้

.

มันไม่ทำอะไรเลย

แก้ไข: ว้าวฉันประหลาดใจที่เห็นว่ามันทำงานได้ดีกว่าบอตทั้งหมดอย่างน้อย 20% =) (นี่แปลว่ามันใช้กลยุทธ์ที่เหนือกว่าหรือ .... ?)


2
บ็อตอื่น ๆ บางคนฆ่าตัวตายโดยสิ้นเชิง เช่น. นักพนันไปที่เซลล์ที่ 20 โดยตรงและสำหรับเกมที่ 10-19 มันจะหลวมแม้กับDoNothingBot
Sylwester

2
เพียงแค่อยากรู้อยากเห็นฉันวิ่งผ่านผู้ทดสอบของฉัน (เล่นความยาวเทปทั้งหมด) กับรายการอื่น ๆ ดูกำแพงแห่งความอัปยศ ... +1
Comintern

ฮ่าฮ่าขอบคุณสำหรับการแบ่งปัน - ฉันคาดหวังว่าอาจจะมีหนึ่งหรือสองตัวสีดำแกะ แต่ฉันไม่ได้คาดหวังว่ามัน 'เอาชนะ' บอทจำนวนมาก =)
ข้อผิดพลาด

7

CounterPunch - แก้ไขแล้ว

การผสมผสานที่สมดุลระหว่างการสร้างการป้องกันที่แข็งแกร่งและการโจมตี

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

Backtracker

กลยุทธ์ลวงย้อนกลับ เริ่มวางล่อลงมาจากด้านหน้าไปด้านหลังดังนั้นไม่มีใครข้ามส่วนที่เหลือขณะที่ฉันกำลังสร้างพวกเขา

หากบอร์ดมีขนาดน้อยกว่า 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 (aka YandereBot)

พยายามเป็นทริปไวร์เพื่อให้สามารถวางล่อ (ส่วนใหญ่) ขั้วที่สอดคล้องกันได้ แต่ยอมแพ้ถ้าคุณใช้เวลานานเกินไปและสมมติว่าคุณเป็นคู่ที่ตรงกันข้ามกัน มี tripwire ย้อนกลับสำหรับบอร์ดขนาดเล็ก

(+)*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 - แก้ไขให้ดีขึ้นบนกระดานขนาดเล็กโดยเสียค่าใช้จ่ายในการแพ้เกมเนื่องจากศัตรูที่ด้อมในอดีตในระหว่างการตรวจสอบ tripwire

รุ่นที่ผ่านมา: 1.2.1

(ฉันต้องการอัลกอริทึมที่ชัดเจนดีกว่า: /)


1
OMG 411k มีการขยายและถอดได้อย่างเต็มที่: -O Chiper ของรหัสนี้ค้างไว้
Sylwester

เพิ่งเปลี่ยนความเห็นบางส่วนเพื่อให้สามารถใช้งานได้กับรหัสใหม่ของ Cipher
Sp3000

ตั้งแต่การแก้ไขล่าสุดวงเล็บเหลี่ยมที่ไม่ตรงกันในวงเล็บจะมีพฤติกรรมแปลก ๆ เนื่องจากลอจิกตรรกะชนกับลอจิกตัวย่อ ฉันสามารถเปลี่ยนโครงสร้างเหมือน([)*300กลับมาได้[[[ and so onไหม
Cipher

@ เข้ารหัสใช่ไปเลย - ถึงแม้ว่ารุ่น pastebin ควรจะตรงนั้น
Sp3000

1
ที่ 3 เป็นสถานที่ที่ดีที่จะเข้ามา ทำได้ดี.
AndoDaan

5

Lightfoot Plodder - แก้ไข

จากPlodder พฤติกรรมที่รวดเร็วนี้สามารถ "กรอไปข้างหน้า" ผ่าน 0 ต่อเนื่องได้อย่างรวดเร็วจนกว่าจะถึงสิ่งที่ไม่ใช่ศูนย์

ตอนนี้ปรับปรุงด้วยอัลกอริทึมการ skimming ที่แข็งแกร่งยิ่งขึ้นซึ่งช่วยให้การส่งต่ออย่างรวดเร็วผ่านตัวล่อขนาดเล็กและตัวล่อที่ใหญ่กว่าของมันเอง

แก้ไข # 2 : ตอนนี้สามารถย้อนกลับไปอ่าน skimming ได้หากพบจำนวนศูนย์เพิ่ม

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

นีซ "สะดวก" การเปลี่ยนแปลงขนาดมี :)
ลิลีชอง

@IstvanChung สะดวกมาก ;) อีกต่อไปจะชะลอฉันลงมากเกินไปเสียคะแนนไปบอทอื่น ๆ ถ้าคุณทำใหญ่ขึ้นฉันไม่คิดว่าฉันจะพยายามให้ทัน
DLosc

ดีฉันได้ขนาดชนเพียงเล็กน้อยเพื่อดูว่ามันทำงานอย่างไร ฉันคิดว่าใหญ่กว่าอาจดึงขนาดที่ใหญ่ขึ้นได้ แต่ไม่มีเวลาทดสอบอย่างละเอียด โชคดี!
Lily Chung

รักตัวชี้วัดที่เคาน์เตอร์กับบอท Cloacking และความจริงที่ว่านี้จริงดูเหมือนการเขียนโปรแกรม BF :)
Sylwester

5

ลังเลRán v2

กลยุทธ์เป็นเรื่องง่าย พยายามให้คู่ต่อสู้คิดว่าธงของเธอเป็นตัวล่อและนำหน้าผ่านกระดานและหลุดออกไป (แบบ tripwire / vibrator) หลังจากครบ 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
]

เกร็ดเล็กเกร็ดน้อย: Ránเป็นเทพีทะเลแห่งนอร์ดิกที่พาลูกเรือมาก่อนที่จะตายในทะเล


5

มิกกี้ V4

สำหรับ V4 ฉันใช้วิธีเดียวกับ V3 กับบอทที่อัปเดต แต่มีจำนวนประชากรพร้อมกันมากขึ้น (30 ไม่ใช่ 10)

พัฒนาเทียบกับบ็อตทั้งหมด 60 รวมถึงBurlyBalderV3และLethalLoke(แต่ไม่รวม 2botsonecup ซึ่งไม่สามารถใช้งานได้โดยการใช้งานที่เข้มงวดของฉัน)

ฉันค้นพบบ็อตและอัตราความสำเร็จที่แตกต่างกันอย่างดุเดือดถ้าฉันเริ่มต้นด้วยการสุ่มเมล็ดที่แตกต่างกัน ดังนั้นฉันจึงตัดสินใจที่จะแยกจุดเริ่มต้นที่แตกต่างกันเหล่านี้ออกเป็นกลุ่มประชากรและปล่อยให้ผสมข้ามบางครั้ง

ใน 1,400 ชั่วอายุคน, 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 Elliot: The Naming of Cats is a difficult matter, It isn't just one of your brainfuck bots
  • ฉัน VM Java BF และขั้นตอนวิธีพันธุกรรมอยู่บนGitHub
  • vm สามารถเรียกใช้ทัวร์นาเมนต์ที่สมบูรณ์ภายในเวลาไม่เกิน 4 วินาทีบนแกนเดียวของ i7 (ข้อควรระวัง - ผลลัพธ์ไม่เหมือนกันกับเอ็นจิ้นทัวร์นาเมนต์)

จะดีกว่าไหมถ้าใช้ทั้ง 60 บอท?
Sylwester

@Sylwester บางทีฉันไม่ได้เพราะมันช้ามาก ใช้เวลาสองชั่วโมงในการทำสิ่งนี้ แม้ว่ามันจะวิวัฒนาการช้าลงบอทมากก็ต้องรับมือกับ ฉันคิดว่าถ้ามันเป็นคนอันดับต้น ๆ มันจะทำได้ดี ฉันไม่สามารถเรียกใช้ทัวร์นาเมนต์จริงเพื่อยืนยันปัญหางูหลามได้ ดังนั้นคิดว่าฉันต้องการเพียงแค่โพสต์มันและดู ...
เวสตัน

@weston บางทีเราสามารถช่วยคุณแก้ปัญหาเรื่องงูหลาม?
Cipher

@ เข้ารหัสขอบคุณฉันเปิดปัญหาบน github github.com/redevined/brainfuck/issues/2
weston

@Sylwester ฉันใช้บอทส่วนใหญ่ในขณะนี้เนื่องจากตัวสร้างของฉันเร็วกว่าและมีหลายเธรด
weston

4

นักการพนัน

สิ่งนี้เกี่ยวข้องกับบอท Geronimo ของฉันอย่างใกล้ชิด แต่ที่ Geronimo กำลังเล่นสิ่งที่แน่นอนนักการพนันพยายามที่จะเร็วขึ้นด้วยการทำสิ่งที่ดีที่สุด - การพนัน: มันไปที่เซลล์ที่ 20 และเริ่มที่ศูนย์จากที่นั่น

นั่นหมายความว่ามันอาจสูญเสียได้ง่ายเพียงเพราะสังเวียนนั้นไม่ใหญ่ แต่ถ้าเป็นเช่นนั้นก็อาจเป็นรอบไม่กี่รอบที่นับ

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

ที่น่าสนใจ: ฉันถูกจริงๆพิจารณาการเข้าสู่พวงของบอทที่ทุกคนมีลักษณะเหมือน(>)*X(>[-])*Yที่และX in 9..29 Y = 30 - Xแต่ผมคิดว่าการป้อนยี่สิบบอทจะน้อยมากเกินไป :) หรือแม้กระทั่งสี่สิบถ้าผมมีสองรุ่นหนึ่งซึ่งเป็นศูนย์ s พร้อมด้วยและคนที่ไม่ได้กับ[+][-]


ตัวเลขเช่น 13 หรือ 14 จะไม่ให้คุณชนะเปอร์เซ็นต์ที่ดีกว่า 20 หรือไม่
Moop

ใช่อาจจะ. ฉันแค่ต้องการตรงกลาง น่าสนใจถ้าฉันเพิ่งออกไปแทนที่จะถูกโอกาสฉันชนะลงมาก คาดว่าจะตรงกันข้าม
Ingo Bürk

เนื่องจากแต่ละต่อสู้บอทแล้วตรงกับบอทอื่น ๆ แม้กระทั่ง 40 ของผู้ที่จะไม่ยกโอกาสของคุณที่มาก - และผมก็มีช่วงเวลาที่ยากของการคัดลอกและวาง: D
Cipher

4

Dumbot

บอทโง่อย่างน่าทึ่งที่เพิ่งยุ่งกับสภาพแวดล้อมและหวังว่าบอทมันต่อสู้ทั้งหมดไปปิดเทป

(+)*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
บรรทัดที่สองของคุณจะเติมเซลล์เป็นศูนย์โดยการบวกแล้วลบหนึ่งครั้งเจ็ดครั้งในแถว
ภูมิใจ haskeller

1
@proudhaskeller คุณพูดถูก ... นั่นคือสิ่งที่ฉันได้รับจากการพยายามทำสิ่งที่ Brainfuck ด้วยการนอนน้อย เพิ่งทำให้มันง่ายขึ้นแทนที่จะใช้วิธีการที่ถูกต้อง
Sellyme

4

CropCircleBot

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

บอทนี้ใช้อัลกอริธึมขั้นสูงที่ส่งโดยมนุษย์ต่างดาวตัดผ่านวงกลมที่วางไว้บนโลก มันจะเปลี่ยนมนุษยชาติและนำเสนอความก้าวหน้าทางเทคโนโลยีครั้งใหญ่และแม้กระทั่งแก้ปัญหาสิ่งแวดล้อมมากมาย


คุณรู้หรือไม่ว่าไม่ควรใช้] [ใช่มั้ย
CalculatorFeline

ฉันไม่สามารถอธิบายได้ว่าทำไม
ข้อบกพร่อง

เมื่อคุณออกจากลูปเซลล์ปัจจุบันคือ 0 จากนั้นคุณข้ามลูปถัดไปเนื่องจากเซลล์ที่ตัวชี้ยังคงเป็น 0
CalculatorFeline

โอ้ฉันคิดเสมอว่าการตรวจสอบจะเกิดขึ้นที่ส่วนท้ายของลูปหรือไม่
ข้อบกพร่อง

มันยังเกิดขึ้นที่จุดเริ่มต้น ในการใช้งานบางอย่าง [ไม่ทำอะไรเลย แต่นั่นเป็นภาษาที่แตกต่างกันโดยสิ้นเชิง (newbiefuck บน esolang wiki)
เครื่องคิดเลข

4

BeatYouMate

และเนื่องจากทุกคนควรโพสต์บอทที่จะเอาชนะบอตแรกที่โพสต์นี่คือบอทล่อ 5+ ตัว:

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

4

CleverAndDetermined

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

วางกับดักเล็ก ๆ สองสามตัวแล้วแข่งข้ามไปที่อีกด้านหนึ่งและพยายามที่จะล้างทุกอย่างให้สูงหรือต่ำกว่าศูนย์ ----ล้มเหลวใน


+++ก่อนหน้า[-]นั้นฉลาดจริง ๆ เพื่อหลีกเลี่ยงกับดักง่าย ๆ !
Ingo Bürk

มีข้อยกเว้นเกิดขึ้นเนื่องจากไม่มีผู้ใดที่ตรงกัน(ฉันสามารถจัดการกับมันเช่นความคิดเห็นได้หรือไม่?
ลับ

@ เข้ารหัสฉันจะแก้ไขมันขอโทษ
isaacg

4

MetaJSRandomBot

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

แนวคิดเบื้องหลังบอทนี้กำลังทำสิ่งที่สุ่มทั้งหมดซึ่งยังคงเป็นรหัส js ที่ถูกต้องโดยไร้ประโยชน์มากเกินไป ฉันเขียนโค้ดต่อไปนี้ ( ลิงก์ JSFiddle ) เพื่อสร้างมัน ให้ดูว่ามันทำได้ดีแค่ไหน =)

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

ปรัสเซียนรูเล็ต

Russian Roulette ทำเดิมพันกับปรัสเซียนเพื่อนของเขาและตอนนี้ถึงคราวที่เขาจะเล่น

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

PatientBot

บอทที่รุนแรงบางส่วน บอทนี้จะพยายามที่จะชนะด้วยวงเงิน 100,000 รอบ มันจะไปที่ธงศัตรูในขณะที่วางกับดักไม่กี่ทางลดลงเล็กน้อยกลับไปและปกป้องธง

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

มันจะถือว่าทุกอย่างที่ใหญ่กว่า 1 หรือเล็กกว่า -1 คือธงและเมื่อมันพบหนึ่งมันจะกลับไป มันปกป้องโดยเพียงเพิ่มขึ้นอย่างต่อเนื่อง สิ่งนี้ถือว่าโปรแกรมส่วนใหญ่จะใช้ [] เพื่อตรวจสอบว่าการตั้งค่าสถานะกลายเป็น 0 หรือไม่ (+) * 100000 จะเร็วขึ้นมาก

แก้ไข:ไม่สามารถใช้งานล่าม BF Joust ได้ ฉันยอมแพ้. บางทีคุณควรบอกวิธีปรับปรุงรหัสของฉัน

แก้ไข:ตอนนี้บอทสร้างจุดก่อนที่แฟล็ก 2 และหลังจากที่ทำให้แฟลกลดลงเล็กน้อยจะค้นหา 2. นี่คือเพื่อยกเลิกสถานการณ์ที่บอทจะหา 0 เซลล์อื่นที่ไม่ใช่เซลล์ก่อน ธง.


บอทของคุณดูเหมือนจะฆ่าตัวเองในเทป (หายากฉันยอมรับ) ที่มีความยาว 10 เนื่องจากมี 10 '>' ในตอนแรก นอกจากนั้น[<]ไม่ใช่ความคิดที่ดีเพราะมันจะย้อนกลับไปเรื่อย ๆ จนกว่าเซลล์ภายใต้ตัวชี้ของคุณจะเท่ากับศูนย์ซึ่งเป็นหนึ่งในเซลล์ที่อยู่ด้านหน้าของธงของคุณหรือฆ่าตัวตายถ้าตัวชี้ของคุณไปถึงธง หวังว่าจะไม่เป็นศูนย์ )
ลับ

@ เข้ารหัสสังเกตว่าบอทไม่ได้วางกับดักไว้ตรงหน้าธง - ความคิดของฉันคือทำเครื่องหมายจุดนี้เพื่อให้บอทสร้างมันขึ้นมาป้องกัน มีวิธีที่ดีกว่า? ใน bfjoust บางครั้งศัตรูล้างกับดักและบอทหยุดก่อนที่มันควรจะเป็น
ภูมิใจ haskeller
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.