BrainF *** edBotsForBattling - Bir Brainf *** Turnuvası


88

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
  • 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.bfBir eşleşme çalıştırmak için kullanın . Koşulları komut satırı bayrakları -mve ile değiştirebilirsiniz -t. Terminaliniz ANSI çıkış dizilerini desteklemiyorsa, --no-colorrenkli çı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ı.


5
Original, hoşuma gitti. Sadece bunun yeterince stratejik derinliğe izin vermeyeceğinden korkuyorum, ama bu sadece ben olabilirim.
54'te

11
Bu Befunge ile daha da eğlenceli olurdu .
IchBinKeinBaum,

6
Kuraldışı maçları çalıştırabilen ve görselleştirebilen bir BF yayınlayan web sayfası buldum .
PhiNotPi

4
Bu KOTH'a ev sahipliği yaptığın için teşekkürler, Şifre. Çok fazla başvuru yapan çok iş olmalı.
AndoDaan

3
Hala katılmakta olan herkese teşekkür ederim. ^^
Cipher

Yanıtlar:


18

Nyuroki Büyülü Fantezi

Ciddileşmenin zamanı geldiğini düşünüyorum ~ BF Joust programlarını yazmayı kolaylaştırmak için derleyicimi küçük bir HLL için bitirdim. Bu benim onunla bir şey yapmak için ilk ciddi girişimi oldu. Bot kavramı oldukça basittir. Değişen kutupluluklara sahip birkaç tuzak süngeri kurar, sonra ortada net bir ters kayması olan büyük bir kıpırdama ile delirir.

Oh, bu arada, beklenen puan son turun tepesine göre yaklaşık 577 puan. Bu% 93 kazanma oranı. <3

Derlendi | Kaynak kodu

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

Düzenle : Nyuroki'den bir kaç tane daha kazandım.

Düzenle 2 : Hey, bak, yine yaptım!

Düzenleme 3 : Arena.py'de aptal bir ayrıştırma hatasıyla bir süre güreşi yaptıktan sonra, nihayet başka bir düzelme elde ettim. <3


Görünüşe göre Loke'nin ayarlanması gerekiyor :-) Dilini sev. Eğer aralarında boşluk olduğunu Arena.py bulunan böcek miydi )ve *ya arasındaki *ve sayı?
Sylwester

@Sylwester Çok daha kötü. Gitmemeleri
Lymia Aluysia 6:14

# 1 ile tebrikler. % 92,5'lik kazanma oranının eşleşmesi zor olacak.
Sylwester

Aferin, ama bu kestirme suistimal değil mi? Yuvalanmış döngüler etkilidir 21 faktorial = 5 * 10 ^ 19. Başka bir deyişle, temel beyin fırtınasına etkili bir şekilde genişletilemez.
weston

1
@weston Evet. Ve en gelişmiş BF Joust tepesindeki programların çoğu ( örneğin, codu.org/eso/bfjoust/in_egobot - örneğin smartlock'a bakınız) daha da kötüdür. Bu çok büyük bir mesele değil, çünkü bu bir stenografi noktası. Aksi halde, uzunluğunun makul olması nedeniyle telafi edilemez olacak stratejiler yapar. :)
Lymia Aluysia

43

Gizleme Cihazı Botu

Bu bot temel olarak tabanını gizlemeye çalışır, böylece diğer botlar hemen ilerler ve banttan çıkarlar.

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

4
Çok zekice, bunu hesaba katacak botumu ayarlamak zorunda kaldı.
Ağustos'ta

2
Bu bence en zeki olanlardan biri, bence.
Almo

İlk müşteri için + f. Ben Ràn yaptıktan sonra bunu farketmedim ama benzer bir fikir, farklı bir uygulama.
Sylwester

19

İriyarı Balder v3

İriyarı Balder orta yavaş acele. Acele moduna geçmeden önce iki büyük decoys yapar. Rush modunda, her sıfır hücrede yalnızca 4 adım kullanan bir döngü vardır ve sıfır olmayan bir hücreyle temizlemeden önce 107 ile kör bir şekilde azaltmadan önce [-18,18] için bir vaka analizine sahiptir [-.]. 242 adımda değişmeyen bir bayrağı temizliyor, 114 belirsizden -*128 fazla ve saf bir [-]netlikten 14 daha az . Bir hücre temizlendiğinde -2 tuzak izi bırakmaya devam eder. Sadece 10 beden oyunlar için bazı adımları kaydetmesi için endeks 9 için özel bir vakası var ve hücreyi 1 yemlikle terk ediyor.

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

Diğer bilgiler: Balder, İskandinav tanrısı ve Odin'in oğlu. Çoğunlukla ölümünün hikayesiyle tanınır : Güvenliğinden korkuyordu, bu yüzden diğer tanrılar her tehdide karşı öngörüde bulunmaya ve korunmaya çalıştı. Sonunda Loki tarafından öldürüldü, çünkü onu kılıçlara ve oklara karşı korurken onu Ökseotu'na karşı korumayı unuttular.


2
Kanıtların beni öldürüyor. Aferin.
AndoDaan

1
@AndoDaan Teşekkürler. Sizin BeatYouMatezekiydi. Çoğu bottaki tuzakların, ceza verilinceye kadar bir sonraki turda daha da büyüyeceğinden korkuyorum. O zaman ortaya
çıkacak

2
Kan yem büyüklüğünün arttırılmasındaki sorun, hızlı saldırı botlarına karşı daha kısa bantlarda performans göstermesidir. 10 rasgele rauntta, diğer girdilerin ne kadar hızlı saldırdığına bağlı olarak değişen daha tatlı bir nokta vardır.
Komintern

2
Evet, hala yenen sensin.
AndoDaan

4
@AndoDaan Beni desteklemek için pek çok nordic tanrı ile rastgele arena boyutları benim lehimde gibi görünüyor :-)
Sylwester

13

EvoBot 1

Bu genetik algoritma ile oluşturulan basit bir bot. Bir şablonla başladım ve programım yavaşça daha iyi bir savaşçı botu oluşturmak için sayıları ayarladı. Okunabilirliği artırmak için aşağıdaki kod düzenlenmiştir.

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

Farklı adayların uygunluğunu ölçmek için yarışmadaki diğer girişleri kullandım.

Bu bir evobottaki ilk girişimim olduğundan, basit bir şablonla başladım:

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

Bu botun 50'den 60'a kadar bir puan alacağını tahmin ediyorum.

Şu anda ters bir yemyeşil şablon üzerinde çalışıyorum.

EvoBot 2

Bu aynı genetik algoritma tarafından yaratılmış bir bottur, fakat aşağıdaki şablon ile:

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

Bu bot, değişken yükseklikte 4 kod çözücüyü ayarlamak için ters tuzak stratejisini kullanır. Elde edilen bot:

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

Bu botun önceki botlardan daha iyi ücret almasını bekliyorum, muhtemelen 70'lerde bir puan kazandım (muhtemelen birçok yeni giriş olduğundan daha yüksek).


2
Genetik algoritmalar için +1. Onlara büyük bir inancım var. Umarım botların iyidir.
AndoDaan

12

Alternatör

Çoğu insanın bir hücreyi ekleyerek veya çıkararak bir hücreyi sıfırlayacağı varsayılmaktadır, bu nedenle ortalama olarak her hücre sıfıra 128 tur alacaktır.

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

Açıklamalı sürüm

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

Kahretsin, son değişikliklerin, Alternatör için Geronimo karşısında kazanma oranını ~% 60'dan -% 90'a çıkardı. Güzel.
Ingo Bürk,

evet, (> +> -) * 9 yaptığım zaman 18 kez hareket ediyordum, bu yüzden banttan düşecekti. Aptalca hata.
20'de Moop

Sırasıyla sıfıra ekleyerek / çıkararak Geronimo'yu korumak bile, kazanma oranımı hiç değiştirmiyor. Alternatör burada kazanan olarak ortaya çıkabilir - çatlama tuzağını zorlaştırmak için birkaç silindir kullanır.
Ingo Bürk,

Hey, yanlış yaparsam düzelt beni ama bu bot 10'lu süre zarfında otomatik olarak tahtadan kalkmıyor mu? Bir şeyi sıfıra ayarlamaya çalışmadan önce 10 kare hareket ediyor.
Bir Boschman

11

Yani, burada başkaları burada programları denemek ve yapmak için genetik bir algoritma kullanarak. Şey ... uzun zaman önce, bir IRC kanalında devam eden bir tepe için BF Joust geliştiricisi yazdım. Ben de bu yarışma için bir dönüş yapmaya karar verdim.

Ve ... evrimi olan diğer insanın aksine, evrimi aslında programı tekrarlamaktan daha fazlasını değiştirebilir. :)

NestDarwin (Nesil 309)

Bu, evrimcimin şimdiye kadar elde ettiği en iyi sonuçtur. İç içe geçmiş yapının bu durumda ne kadar yardım ettiğinden emin değilim, ancak bunun gibi yapılar, evrimcinin yapabileceği şeydi. 27.08.2014 tepesinde beklenen performans 474 puandır. (21 bantın tümünde savaş yaparak ve 10/21 ile çarparak hesaplanır. Bu tepenin üzerinde bir ekstra program olması nedeniyle bunun normalize olmadığını unutmayın.)

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

EDIT : Bu tepeye girmek istediğim programların listesi değişti. Bir gecede evrimciyi koştum. :)


EDIT 2 : Gittim ve geliştiricinin çıktısını elle analiz ettim. Çok farklı görünmesine rağmen, NestDarwin temel olarak TinyDarwin'in optimize edilmiş bir versiyonudur ... Elle küçültülmüş (aynı fonksiyonelliğe sahip) ve analiz edilmiştir:

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

Yani, neredeyse özdeş bir program aşağıdaki gibi olacaktı ... temel olarak TinyDarwin'in süper optimize edilmiş bir versiyonu.

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

TinyDarwin aşağıdaki gibiydi. Çok farklı değil, hun? Sadece tepeden çekeceğim. Farklı olduğunu düşünmüştüm ama ... yanılmışım.

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

Mevcut tepenin çok daha karmaşık şeyleri geliştirmesine izin verecek kadar güçlü olmadığı ortaya çıktı. :(


1
İlk etapta tebrikler. Genetik algo programı mevcut sürümünüzü şablon olarak kullanabiliyor mu ve daha da iyileştirmek için yeni sürümlere devam edebiliyor mu?
Sylwester,

İlk sırada yer alan harika bir iş. Ben çok mutluyum genetik bir algoritma (iyi, onun spawn) orada yaptım!
AndoDaan

Şimdi, tüm oyunların sonuçlarını alabilirsek, daha fazla gelişir, biraz makine öğrenmesi ekleriz ... o zaman bize acınacak insanların artık şansı
kalmaz

@Sylwester Sırala? Benim içsel temsilim, üstyapının gelişmesine izin vermesi beklenen (ve pratikte gerçekten değil) bir (zayıf düşünülmüş) gen aktivasyon sistemini kullanır. Nihai programı geri koyamıyorum ve iç gösterimi geri alamıyorum, ancak talimatları tek bir gene ekleyebilir ve gelişmeye devam etmesine izin verebilirim (bununla birlikte yardımcı olabilir).
Lymia Aluysia

@ Sp3000 Maalesef algoritmam, iyi gelişmiş # ezoterik tepede zar zor ilerleyebiliyor. Böyle bir şeyi yapabilseydim iyi olurdu, ama ne yazık ki, genetik algoritmalardaki yeteneğim yetmiyor. Muhtemelen bütün çirkin hack'larımı temizlediğimde evrimcimi serbest bırakacağım.
Lymia Aluysia

10

Kutup ayısı Mk II

İki tür kutup ayısı vardır : tuzağa düşenler ve diğer insanları tuzağa düşürenler.

Rakibin kutupsallığını tahmin etmeye çalışır ve daha sonra bu bilgiyi rakibi sonsuz döngüye kilitlemek için kullanır. Basit temizleme stratejilerine ve biraz diğerlerine göre rastgele çalışır. Tuzaklar kolayca önlenebilir, böylece daha sonra bazı yedekleme stratejileri ekleyebilirim.

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

Kod boyutunu yarıya indirebilir (]< (+)*290 (>)*9 ... [-])*2misiniz?
Sylwester

@Sylwester Yapamam çünkü diğer yarı kullanır +ve diğeri kullanır -.
Mika Lammi

Kutup Ayısı ofset
temizliği

@ Sp3000 Emin misiniz? Ben (gibi çeşitli uzaklıklar ve kutuplarla çalıştı [(+)*3[-]], [(-)*6[+]]) ve (en azından oldukça küçük uzaklıklar için) iyi çalışıyor.
Mika Lammi

Oh, neyin yanlış olduğunu biliyorum: / >>>>>>>>>((-)*4[+][--.]>)*21Hücreyi iki kez kontrol eden ve (+/-)*290ikinci senkronizasyon döngüsünün tetiklenmesine neden olan programları deniyordum. Offset Clear'ın hatası değil.
Sp3000,

10

Pasifist Bot

Botum şiddete asla cevap olmadığına ve her ne pahasına olursa olsun mücadele etmekten kaçınmaya çalışacağına inanıyor.

(.)*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 kodu olarak saydıkları ve botunuzu gereğinden biraz daha yavaş hale getireceği için yorumlarınızdaki notları kaldırma özgürlüğümü aldım. Noktalar kasıtlı ise, beni düzeltmekten çekinmeyin!
Cipher

Tabii ki, benim için çok saçma, onları kaldırdığın için teşekkürler: p
mmphilips

9

Kimse varmı?

Düşmanın ne zaman temize çıkmaya başladığını belirlemek için periyodik olarak geriye bakar, daha sonra hızla ilerler.

İyi gibi görünüyor, ancak stratejiden dolayı mı yoksa temizlemeden önce her hücreye 10 eklediğimden emin değilim.

Düzenleme: Bir mantık sorunu düzeltildi. Brainfuck programını ilk kez yazıyorum. Adına kadar yaşıyor.

>>>+<(+)*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: Bu, ilk 9 hücrenin ötesinde dizelerin çözüldüğünü (+/- 1 dışında) gördüğüm ilk bot. Uzun kasetlerde bu bir katil. Biraz daha ışıklandırma Lightfoot Plodder biraz daha ...
DLosc

9

DUVAR-E 2.0

9 numaralı bölgeye koşuyor ve kendisine 128 sayı ekliyor, rakip ilk bayrak değerini değiştirmediyse hızlıca 10 arenada kazanıyor. Daha büyük arenalarda, bu büyük bir tuzak gibi çalışır. Bundan sonra konum 9 ile büyük bayraklarla kendi bayrağı arasındaki boşluğu doldurur. Kanıtlar yerleştirildiğinde boş olmayan yerleri tarar ve bunları hızlıca temizlemeye çalışır.

Sürüm 2.0 , daha büyük kod çözücüler oluşturur ve başlangıçtaki bayrak değerinin değişmesine karşı bazı toleranslara sahiptir. İşler kıllı görünmeye başlarsa, yedekleme stratejisine de geçebilir.

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

Bu botun etkinliği iki gerçeğe dayanmaktadır:

  1. Çoğu bot kendi bayrağının başlangıç ​​değerini değiştirmez.
  2. Büyük tuzaklar oluşturmak, onları temizlemekten daha hızlıdır.

Bu duvarlar beni öldürüyor
Sp3000

9

Öldürücü Loke V2.1 (Ökseotu ile)

Bu elbette ölümcül bir bot ve sadece güzel Burly Balder'ı ökseotu ile öldürmekle kalmıyor, aynı zamanda hemen hemen her seferinde diğer botlara karşı kazanıyor. Kombine orta ve hızlı bir koşuşturma. Testim bana 567 puan veriyor.

Savaş için derlenmiş BFJ dosyası , Raket BFJ üreteci kaynak:

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

Diğer bilgiler : Loke (Loki), İskandinav mitolojisinde herkesle oynamayı ve kandırmayı seven bir tanrıdır. Şekil değiştiren (hayvanlara ve insanlara) ve genellikle kendi yollarına gider. Öykülerinde sık sık diğer tanrılarla birlikte seyahat eder ve onlara yardım eder, küçük numaralar yapar ve işleri karıştırır. Balder'ı öldürmenin yanı sıra, Hel (Hell / Helvete tanrıçası), canavar Fenrir ve Ragnarok'u başlatan Midgard Yılanı'nı (norma armageddon) babası yaptı.

Nasıl çalışır

Başlangıçta büyük (-17) bir yemyeşillik yapar, sonra +-indeks 7'ye kadar desen yapar . 13'ten ileri doğru tarayarak (+10, -32) + çözücüler izini bırakır, ancak bir küme tespit ettiğinde iptal eder. ve bir orta * 1 acele modu başlatın. Eğer hiçbir hücre ayarlanmadıysa, yavaş * 3 hücum moduna da başlayacaktır.

* 1 Orta hücum modunda, 7-13 indeksinden birinde rakip aktivite tespit etti ve indeks 2'den başlıyor. Bazı rakipler sıfır bırakıyor ve diğerleri farklı bir değer bırakıyor ve şimdi tuzak çözme işlemi yapmadan önce rakip aktiviteyi tespit etmek için araçları var indeks 2-6 (-32, + 10) +. Eğer hücrenin değeri beklenmiyorsa (-1, 1) ya da tüm decoys işlemlerini tamamladıysa hızlı * 2 acele moduna geçer.

* 2 Tespit edilmesini beklediği hızlı hücum modu böylece dekolte çalışmaz. Şimdiden belirlediklerimizin rakibi durdurmak ve rakiplerin tuzaklarından kaçmaya odaklanmak olduğunu umuyoruz. Önceki taramayı [9,14] veya daha önce yapmamız halinde indeks 9'u temel alarak bildiğimiz en uzak noktada acele etmeye başlar. Sadece 120 eklediğimiz ve 27'yi yağmaladığımız ilk tuzak için özel bir davası var, çünkü tuzak değerini sıfır tuzağın altına düşürmek istemiyor çünkü bu bir tuzak, ancak [-8,8] 120 ve bir sonraki hücreye ilerlemeden önce 27 basamak yağma.

Yavaş acele modu kaldırıldı, çünkü o anki tepenin skorunu etkilemedi ve botumu biraz daha küçük yapıyor (ama fazla değil).


3
Şimdi deliliği görmeye başlıyoruz. Bunu sevdim.
Sp3000

@ Sp3000 YandereBotv2 sadece decoys ve salıncak değerlerini arttırmanın yanı sıra yeni düşünmek için gerekli neden oldu. Son turdaki botlardan daha fazla galibiyet oranına göre daha yüksek bir galibiyete sahipti, bu yüzden arena boyutlarıyla şanssızsınız.
Sylwester

Ahaha belki - ben sürekli artan yem boyutları karşı karşı planı gerektiğini düşünüyorum: / Gerçekten olsa farklı modlar var nasıl gibi
SP3000

nefes . BF Joust için HLL'imin daha iyi çalışmasını sağlamak zorunda kalacağım ki evrimci tekrar bir şansa sahip olacak. # 1 ~ için tebrikler
Lymia Aluysia 5:14

@LymiaAluysia Teşekkürler. Balder’a daha çok şaşırdım. Ben NestDarwin, YandereBot ve Mickey :-) yeni sürümleri güveniyorum
Sylwester

8

Geronimo

Herhangi bir savunma oluşturmadığından, kainin BestOffense botundan daha saldırgandır. Buradaki strateji: Diğerleri zeki olmaya çalışacak, fakat zeki olmak döngüleri sürecek. Öyleyse düşmanın içinde olduğunu bildiğimiz kısma geçelim ve bulduğumuz her şeyi temizleyelim.

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

OP'nin örnek botlarına ve kaine botuna karşı en çok maçı kazanıyor gibi görünüyor.


7

SternBot

Gerçek bir yarı ciddi şimdi botlar şeyler başladı. Bu botların bazılarının simüler doğasına değiniyor.

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

1
SternBot bana parite sorunları veriyor :(
Sp3000

7

DoNothingBot

En iyi savunma (...) cehalettir.

.

Hiçbir şey yapmaz.

EDIT: Vay, tüm botların en az% 20'sinden daha iyi bir iş çıkardığını görmek beni şaşırttı =) (Bu, üstün bir strateji kullandığı anlamına mı geliyor ya da ....?)


2
Diğer botlardan bazıları küçük arenalarda intihar ediyor. Örneğin. Kumarbaz doğrudan 20. hücreye gider ve 10-19 arasındaki oyunlar için, hatta karşı bile kaybederDoNothingBot
Sylwester

2
Merakım bitmedi, bunu test cihazımdan geçirdim (tüm teyp uzunluklarını oynatıyor) diğer girişlere karşı. Bakın utanç duvarını ... 1
Komintern

Haha, paylaşım için teşekkürler - Ben bir veya iki siyah koyunlar olabileceğini tahmin ama bu o yenilgiler 'bu kadar çok botlar =) beklemiyorduk
flawr

7

CounterPunch - Düzenlendi

Dengeli bir yapı kurma kombinasyonu ile güçlü bir savunma ve saldırı.

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

Açıklamalı:

(+)*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'in Backtracker'ına benzer şekilde savunur, ancak önce bayrakların önüne hızlıca bir tuzak koyarak hızlı saldırganlara karşı savunur.

Saldırı, ufacık değerlere sahip decoys'ları hızlı bir şekilde temizlemek için zıt kutuplara sahip yuvalara yerleştirilmiştir. En kötü durum senaryosu, 64'lük bir yemlik olmalıdır (her iki kutupta da).

Düzenleme 1: Dekoltelere karşı atak verimini arttırın (kutupsal anahtarlamada mantık hatası vardı).

Düzenleme 2: Test etme, duraklamanın en iç döngüde biraz daha iyi performans gösterdiğini gösterir.


6

Backtracker

Ters bir tuzak stratejisi. Önden arkaya decoys döşemeye başlayın, böylece ben onları inşa ederken kimse geri kalanı atlar.

Eğer tahta büyüklüğü 20 ya da daha küçükse, bu hızlı atak botlarına karşı işe yaramaz, çünkü süslemeye başlamadan önce birbirimizi geçeceğiz.

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

Not: BF bilmiyorum, ama bu benim istediğim şeyi yapıyor. Değilse, lütfen şimdi izin ver.


6

Buna Dokunamam

Bu, rakibin hücreleri nasıl temizlediğini belirlemeye çalışan ve uygun büyüklükte bir tuzak oluşturan, savunma odaklı bir programdır.

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

Şu anda her iki polariteye karşı kazanabilecek bir sürüm üzerinde çalışıyorum.


6

ImpatientTripwire (YandereBot)

Tripwire olmaya çalışır, böylece karşılık gelen kutupsallığın (çoğunlukla) tuzaklarını koyabilir, ancak çok uzun sürerse pes edersiniz ve bunun yerine zıt parite olduğunuzu varsayar. Küçük panolar için ters tripwire sahiptir.

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

Mevcut sürüm: 1.3 - tripwire kontrolü sırasında geçmişe gizlice giren düşmanlar yüzünden oyunları kaybetmek pahasına, küçük panolarda daha iyisini yapmak için düzenlendi

Eski versiyonlar: 1.2.1

(Daha iyi bir açık algoritmaya ihtiyacım var: /)


1
OMG 411k tamamen genişledi ve soyuldu: -O Chiper'in kodu sadece buna bağlı.
Sylwester

Yorumların bir kısmını yeni değiştirdim, böylece şimdi
Cipher'in

son düzenlemeden bu yana, parantez içindeki benzersiz parantezler döngü mantığı kısaltma mantığıyla çarpıştığından beri garip davranır. ben gibi yapıları değiştirebilir ([)*300için arka [[[ and so on?
Cipher

@Cipher Evet, bunun için gidin - pastebin sürümü tam olarak bu olsa da
Sp3000

1
3. gelmek için güzel bir yer. Aferin.
AndoDaan

5

Lightfoot Plodder - EDITED

Plodder'a dayanarak , bu hızlı behemoth, sıfır olmayan bir şeye ulaşana kadar art arda 0'lar arasında "hızlı ileri" yapabiliyor (bu noktada beklendiği gibi akmaya başlıyor).

Şimdi, daha küçük bir dekolte ve kendi başına daha büyük dekolte ile hızlı ileri sarma sağlayan daha sağlam bir kayma algoritması ile geliştirilmiştir.

Düzenleme # 2 : Sıfırdan daha fazla cep bulursa, şimdi kaymaya geri dönebilir.

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

Orada güzel "uygun" boyut değişikliği :)
Lily Chung 4

@IstvanChung Çok uygun. ;) Daha fazlası beni çok yavaşlatırdı, diğer birkaç bottan puan kaybederdi. Daha büyük hale getirdiyseniz, ayak uydurmaya çalışacağımı sanmıyorum.
DLosc

Peki, nasıl çalıştığını görmek için boyutu biraz çarptım. Daha büyük bir boyutu daha büyük bir boyuttan çekebileceğini düşünüyorum, ancak bunu tam olarak test etmek için zamanınız yok. İyi şanslar!
Lily Chung,

Cloacking botlarına karşı karşı önlemi ve bunun aslında BF programlaması gibi göründüğünü görün :)
Sylwester

5

İsteksiz Rán v2

Strateji kolay. Rakibinin bayrağının bir tuzak olduğunu ve tahtanın önünden ve gevşemiş olduğunu düşünmesini sağlayın (bir tür tripwire / vibratör). 10 tam turdan sonra pes eder ve rakibinin bayrağında olup olmadığını belirlemeye çalışır ve eğer ayarlanmamış bir hücreye ulaşana kadar -17 çözer. Kullandığı temizleme yöntemi [-12,12] için özel bir durumdur ve Loke'ye benzer şekilde akmaya başlar.

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

Diğer bilgiler: Rán, denizcileri denizde ölmeden önce alan bir İskandinav Mitolojisi deniz tanrıçasıdır.


5

Mickey V4

V4 için V3 ile aynı yöntemi kullandım, güncellenmiş botlara karşı ama daha fazla eşzamanlı popülasyonla (30 10 değil).

Tüm 60 botlara karşı geliştirilen dahil BurlyBalderV3veLethalLoke botun (ancak sıkı uygulamamın getiremediği 2botsonecup hariç).

Farklı rastgele tohumlarla başlarsam çılgınca farklı botlar ve başarı oranları keşfettim. Bu yüzden, bu farklı başlangıç ​​noktalarını popülasyonlara ayırmaya ve ara sıra çapraz döllenmelerine izin verdim.

1400 nesilde, aynı anda gelişen 30 nüfus, bu programı yarattı:

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

Bu botun galibiyet oranını mevcut ürüne göre % 90,0 olarak hesaplıyorum . (1135/125/0 teyp uzunlukları kazandı / kaybetildi / çekildi).

V3 bilgisi

Hesaplanan kazanma oranı% 89,2 (1124/62/74 bant uzunlukları kazandı / kaybedildi / çekildi).

V2 bilgisi

Kuşak programı, programın sonunun hangi bölümünün kullanılmadığını ve bundan sonraki kuşakları oluşturmadan önce düzelttiğini belirten bir analize sahiptir. Bu, rastgele mutasyonların yalnızca programın kullanılmış kısımlarında gerçekleştiği ve dolayısıyla evrimin daha hızlı olduğu anlamına gelir.

Mevcut ürüne karşı% 72 oranında. (892/204/143 bant uzunlukları kazandı / kayboldu / çekildi).

V1 bilgisi

31500 nesiller, sadece 12 botla karşı karşıya kaldı. % 65 (165/80/7 bant uzunlukları kazandı / kaybetti / çizildi). Tüm 21 bant uzunluğunu kullanıyorum.

Potansiyel botlar aşağıdakilere göre sıralanır:

  • çoğu o zaman kazanır;
  • çoğu sonra çizer;
  • sonra çizilen en hızlı zaman;
  • kazanılan en hızlı zaman

önemsiz şeyler

  • Mickey benim kedimden sonra adlandırılmış ve;
  • TS Elliot'ı felç etmek için: The Naming of Cats is a difficult matter, It isn't just one of your brainfuck bots
  • Java bf vm ve genetik algoritmam github'da .
  • Vm, bir i7'nin tek bir çekirdeğinde 4 saniyeden kısa sürede tam bir turnuva düzenleyebilir (dikkat - sonuçlar her zaman turnuva motoruyla aynı değildir).

60 botun hepsini kullanmak daha iyi olmaz mıydı?
Sylwester

@Sylwester Belki de çok yavaş olduğu için genelde yapmadım. Bunu yapmak iki saat sürdü. Ayrıca daha yavaş geliştiği halde, başa çıkması gereken daha fazla bot vardı. En iyi adamları yenerse iyi olacağına karar verdim. Python sıkıntılarını doğrulamak için gerçek turnuvayı yönetemedim. Yani ... Ben sadece post it ve görmek düşündüm
weston

@weston Belki piton problemlerinizle ilgili size yardımcı olabiliriz?
Cipher


@Sylwester Jeneratörüm çok daha hızlı ve okuyuculu olduğu için şimdi botların çoğunu kullanıyorum.
weston

4

Kumarbaz

Bu Geronimo botumla yakından alakalı. Fakat Geronimo'nun kesin bir şey çaldığı yerde, Kumarbaz en iyisini yapar ve daha iyisini yapar. Kumar: 20. hücreye gider ve oradan sıfırlamaya başlar.

Bu, arena o kadar büyük olmadığı için kolayca kaybedebileceği anlamına geliyor. Ama eğer öyleyse, önemli olan birkaç döngü olabilir.

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

Eğlenceli Gerçek: Gerçekten hepsi ve (>)*X(>[-])*Ynerede gibi görünen bir sürü bot girmeyi düşünüyordum . Ama yirmi botlara girmenin biraz fazla olacağını düşünüyorum :) Ya da biri sıfır olan ve biri olan iki versiyonum olsa kırk bile .X in 9..29Y = 30 - X[+][-]


13 veya 14 gibi bir sayı size 20'den daha iyi kazanma yüzdeleri vermez mi?
Ağustos'ta

Evet belki. Sadece ortayı istiyorum. İlginçtir ki, sağ yerine sadece sola gidersem, kazanma şansım çok azalır. Tersini umardım.
Ingo Bürk

Her bir bot savaş yaptıktan sonra başka bir botla eşleştiğinden, bunlardan 40 tanesi bile şansınızı o kadar arttırmaz - ve kopyalama ve yapıştırma konusunda çok zorlandım: D
Cipher

4

Dumbot

Sadece çevre ile uğraşan ve savaşan botların kasetten çıkmasını umut eden son derece aptal bir bot.

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

(Bunun bile işe yarayıp yaramadığından emin değilim - yine de hata vermiyor!)

Açıklamalı ( düşündüğüm şey ile):

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

(Bu tek bir savaşı kazanırsa, sahtekâr olacağım)


1
ikinci satırınız aslında ekleyerek hücreyi sıfırlar ve ardından bir satırda yedi kez çıkartır.
Gurur haskeller

1
@proudhaskeller Haklısın ... Brainfuck şeylerini küçük uyku ile yapmaya çalışmak için elde ettiğim şey bu. Sadece nasıl doğru bir şekilde yapılacağına karar vermek yerine onu daha basit hale getirdim.
Sellyme

4

CropCircleBot

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

Bu Bot, dünyaya yerleştirdikleri ekin çemberlerinde yabancılar tarafından iletilen gelişmiş algoritmalar kullanıyor. İnsanlığı değiştirecek ve büyük teknolojik ilerlemeler sağlayacak ve hatta birçok çevre sorununu çözecektir.


Asla kullanmamalısın biliyorsun] [, değil mi?
Hesap MakinesiFeline

Bilmiyorum, nedenini açıklayabilir misin?
kusur

Bir döngüden ayrıldığınızda, geçerli hücre 0 olur. Ardından, bir sonraki döngüyü atlarsınız, çünkü işaretçideki hücre hala 0'dır.
CalculatorFeline

Her zaman kontrolün döngünün sonunda gerçekleştiğini düşündüm.
kusur

Aynı zamanda başlangıçta ortaya çıkar. Bazı uygulamalarda, [hiçbir şey yapmaz, ancak bu tamamen farklı bir dildir (esolang wiki'de yeni başlayanlar)
CalculatorFeline

4

BeatYouMate

Ve herkes gönderdiği ilk botu geçecek bir bot göndermesi gerektiğinden, işte 5 + yemlik bir döşeme botu:

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

4

CleverAndDetermined

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

Birkaç küçük tuzak kurar, sonra diğer tarafa doğru ilerler ve sıfırın altındaki ya da altındaki her şeyi temizlemeye çalışır. Başarısız ----.


+++önce [-]basit tuzaklardan kaçınmak için akıllıca!
Ingo Bürk

Eşleşmediği için istisna attı (, yorum gibi davranabilir miyim?
Cipher

@Cipher Bunu düzelteceğim, üzgünüm.
isaacg

4

MetaJSRandomBot

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

Bu botun arkasındaki fikir, çok fazla işe yaramaz olmadan hala geçerli bir js kodu olan tamamen rastgele bir şey yapmaktır. Oluşturmak için aşağıdaki kodu ( JSFiddle linki ) yazdım . Ne kadar iyi olduğunu görelim

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

Prusya Ruleti

Russian Roulette, arkadaşı Prusyalı ile bahis yaptı ve şimdi oynama sırası.

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

Ana döngüde 2 işaretçi azalması ve sadece 1 artışınız var - bu sizi kasetin sonundan atlayacak.
Comintern

2
Bu hala sadece kendini dışarı atacak.
Gurur haskeller

Sağ başlangıçta bir artı ardından bir eksi var. 2 israf döngüsü.
weston

4

Daha büyük

Silahlanma yarışı başlıyor !!

Her ikisi de, çoğu rakipten daha büyük olan, 16 18 yüksekliğindeki duvarları inşa eder ve tahrip eder . Ayrıca, pelerin, bayrak savunucuları, alternatörleri ve el değmemiş bir bayrağa bürünmüş botları yenmek için küçük bir mantık var

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

Açıklamalı sürüm

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

Kısmen ciddi bir bot. bu bot 100000 devir limiti ile kazanmaya çalışacak. yoluna birkaç tuzak koyarken düşman bayrağına gider, biraz düşürür, geri döner ve bayrağını savunur.

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

1'den büyük veya -1'den küçük olan her şeyin bayrak olduğunu varsayar ve biriyle karşılaştığında geri döner. sadece sürekli olarak artırarak savunur. Bu, çoğu programın ya bayrağın 0 olup olmadığını kontrol etmek için [] kullanacağını ve böylece (+) * 100000'in çok daha hızlı olacağını varsayar.

Düzenleme: BF Joust tercüman üzerinde çalışmak için alınamıyor. vazgeçiyorum. belki bana kodumu nasıl geliştireceğimi söylemelisin.

Düzenleme: şimdi bot bayrak 2 hemen önce nokta yapar ve bayrak biraz düşürdükten sonra, bir 2 arar. Bu bot daha önce bir 0 hücre bulmak senaryoyu iptal etmek içindir bayrağı.


Botunuz, başlangıçta 10 '>' olduğundan 10 uzunluğunda (oldukça nadir, kabul ediyorum) bir kaset üzerinde kendini öldürüyor gibi görünüyor. Bunun dışında, [<]iyi bir fikir değildir, çünkü işaretçinizin altındaki hücre sıfıra eşit olana kadar tekrar eder çünkü bu , bayrağınızın önündeki hücrelerden biri veya işaretçiniz bayrağa ulaştığında (ingilizcenizden bu yana intihar) intihar eder. umarım sıfır değildir ).
Cipher

@Cipher Botun sadece bayrağın önündeki yere tuzak koymadığına dikkat edin - benim fikrim bu noktayı işaretlemek, böylece botun orada savunma yapmasıydı. Daha iyi bir yolu var mı? Şimşek bazen düşman tuzakları temizler ve sonra bot olması gerektiği önce durur.
Gurur haskeller
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.