บอททั้งหมดในเวทีการต่อสู้จู่ ๆ ก็ถูกสมองเบ็คและไม่มีใครสามารถอธิบายได้ว่าทำไม แต่ใครจะเป็นห่วงตราบใดที่พวกเขายังสามารถต่อสู้ได้แม้ว่า 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 ได้คือเมื่อมันเร็วพอที่จะไปถึงธงของศัตรูก่อนที่คู่ต่อสู้ของเขาจะสร้างตัวล่อขนาดใหญ่ขึ้น