Savaş sahasındaki tüm botlar birdenbire şaşırıp kaldı ve kimse nedenini açıklayamıyor. Fakat hala savaşabildikleri sürece kimin umurunda olduğu - Brainfuck artık anladıkları tek dil olmasına rağmen.
Son gönderimden bu yana bir süre geçti ve sonunda BrainFuckedBotsForBattling'in kazananını ödüllendireceğim: NyurokiMagicalFantasy ile kazandığı için LymiaAluysia'ya tebrikler!
sayı tahtası
| 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 tarihinden itibaren final puanları
EDIT6 : Aşırı boyut ve çalışma süresi nedeniyle atılan günlükler. Satırları yorumlayarak onları kendiniz oluşturabilirsiniz RunThisTournament.py
.
EDIT5 : Denetleyiciye kısaltma işlemi uygulandı , artık büyük çalışma süreleri yok. Bunun, sayıların ve parantezlerin artık yorum olarak değerlendirilmemesi yan etkisidir. Açıklamalı bir sürüm sağlamak istiyorsanız yine de bunları kullanabilirsiniz, ancak kodunuzun açıklanmamış bir sürümü de olsa çok yararlı olur , bu nedenle yorumları el ile kaldırmam gerekmez. Teşekkürler!
EDIT4 : Başlığı değiştirdi, çünkü turnuva sıcak ağ sorularından kaldırıldı. Bunu işaret ettiği için @ Geobits'e teşekkürler!
EDIT3 : Beklenmeyen bir sonuç nedeniyle bf programlarındaki kaldırılan yorumlar şimdi düzeltilmelidir. Birisinin yorumlarını kaldırma konusunda bir sorunu varsa, lütfen bildir.
EDIT2 : Oldukça yavaş bilgisayarımda bir arkans çalışma zamanına neden olduğu için zaman aşımı sınırını 100000 devirden 10000 devirlere düşürdüm. Kimsenin, bu oyunun sonucunu yine de bu noktadan daha ileri götürdüğü değil.
EDIT1 : Dönüştürme komut dosyasında, yorumlayıcının yorumlanan programlardaki sayıları yoksaymamasına neden olan bir hata düzeltildi.
Açıklama
Bu, BF Joust'tan ilham alan bir Brainfuck turnuvasıdır . İki bot (Brainfuck programları), bir hafıza bandı ile temsil edilen bir arenada birbirleriyle savaşıyor. Her hücre -127'den 128'e kadar değerleri tutabilir ve sınırlarına kadar sarılabilir (yani 128 + 1 = -127).
Geçerli talimatlar normal Brainfuck'a benzer, yani:
+ : 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
Arena, her savaşta sahte olarak seçilen 10 ila 30 hücreli bir boyuta sahip. Her iki uçta da, başlangıç değeri 128 olan ve diğer tüm hücreler sıfırlanan bir 'bayrak' bulunur. Botunuzun hedefi, düşmanı bayrağını kendi bayrağını sıfırlamadan önce üst üste 2 döngü boyunca sıfırlamak.
Her bot kendi bayrağıyla başlar, hücre [0] 'dır, kendi bakış açısıyla. Rakip kasetin diğer tarafında bulunur.
[ 128 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 128 ]
^ ^
my bot other bot
Her iki bot da eylemlerini aynı anda yürütür, bu bir döngü olarak kabul edilir. Oyun 10000 devirden sonra veya kazanma koşullarından birine ulaşır ulaşmaz biter. Eğer programlardan biri sonuna ulaşırsa, oyunun sonuna kadar anthingi durdurur, ancak yine de kazanabilir.
Kazanma koşulları
Botunuz aşağıdaki şartlardan biri altında kazanır:
- Düşmanının bayrağı seninkinden önce sıfırlanır
- Düşmanınız imlecini banttan çıkarır (
>
bayrağınıza veya<
kendi başına hareket eder) - Bayrağın değeri, 10000 devirden sonra rakibinizin bayrağının değerinden 0'dan daha uzakta
kurallar
Gönderiniz, botunuz ve kodunun adını içermelidir.
- Kodunuzu daha okunabilir hale getirmek için aşağıdaki kısaltma sözdizimini kullanabilirsiniz:
- örn.
(+)*4
, aynısıdır , döngü mantığı kısaltma mantığıyla çarpıştığından parantez içindeki eşleşmemiş parantezler dışındaki++++
herhangi bir komut için geçerlidir . Lütfen yerine kullanın[-[-[-
([-)*3
- örn.
- Her diğer karakter
+-><[].
bir yorumdur ve bu nedenle()*
kısaltmalar dışında ihmal edilir.
Kurallara uymayan botlar turnuvadan hariç tutulur.
- Sadece temel Brainfuck'a izin verilir, prosedürleri veya aritmetik işlemleri destekleyen başka değişken yoktur
- Botunuzun kaynak kodu benzersiz parantez içermemelidir
Sen hakkında bilgi edinin olabilir temel stratejiler ama yok değil kendi bot için başka kişinin kodu kullanabilirsiniz.
puanlama
Bir botun puanı, diğer tüm botlara karşı galibiyet sayısına göre belirlenir. 2 bot arasındaki bir karşılaşma, farklı hafıza bandı uzunluklarına sahip 10 maçtan oluşuyor ve bu da her karşılaşmaya en fazla 10 puan kazandırıyor. Bir beraberlik, bu maç için hiçbir puanla sonuçlanmaz.
Kontrol programı
Kontrol programını github'da, savaşların tam kayıtlarıyla birlikte bulabilirsiniz . Büyük afiş oluşturulduktan sonra buraya gönderilecektir.
Depoyu klonlamaktan çekinmeyin ve botunuzu kendi başınıza diğerlerine karşı deneyin. python Arena.py yourbot.bf otherbot.bf
Bir eşleşme çalıştırmak için kullanın . Koşulları komut satırı bayrakları -m
ve ile değiştirebilirsiniz -t
. Terminaliniz ANSI çıkış dizilerini desteklemiyorsa, --no-color
renkli çıkışı devre dışı bırakmak için bayrağı kullanın.
Örnek botlar
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 küçük dekoltelerden kaçınabildiğinden, onlardan daha büyük bir bant uzunluğuyla her maçı kazanır. FastClearBot’un DecoyBot’a karşı kazanabileceği tek durum, rakibi büyük tuzaklar kurmadan önce düşmanın bayrağına ulaşmaya yetecek kadar hızlı olması.