BrainF *** edBotsForBattling - A Brainf *** Tournament

88

Semua bot di arena pertempuran tiba-tiba mendapatkan brainfucked dan tidak ada yang bisa menjelaskan alasannya. Tapi siapa yang peduli selama mereka masih bisa bertarung - walaupun Brainfuck adalah satu-satunya bahasa yang mereka pahami lagi.


Sudah lama sejak pengiriman terakhir jadi saya akhirnya akan mengumumkan pemenang BrainFuckedBotsForBattling: Selamat kepada LymiaAluysia karena telah menang bersama NyurokiMagicalFantasy!


Papan angka

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

Skor Akhir dari 09.10.2014

EDIT6 : Log yang dibuang karena ukuran dan waktu proses yang ekstrem. Anda dapat membuatnya sendiri dengan menghapus komentar pada baris RunThisTournament.py.

EDIT5 : Penerapan Singkatan diterapkan ke controller, tidak ada runtimes besar lagi. Ini memiliki efek samping bahwa angka dan tanda kurung tidak diperlakukan sebagai komentar lagi. Anda masih dapat menggunakannya jika Anda ingin memberikan versi beranotasi, tetapi akan sangat membantu jika akan ada juga versi yang tidak diomentari dari kode Anda , jadi saya tidak perlu menghapus komentar secara manual. Terima kasih!

EDIT4 : Mengubah judul, karena turnamen dihapus dari pertanyaan jaringan panas. Terima kasih kepada @Geobits karena menunjukkan ini!

EDIT3 : Komentar yang dihapus dalam program bf, karena hasil yang tidak terduga, harus diperbaiki sekarang. Jika ada yang punya masalah dengan menghapus komentarnya, tolong laporkan.

EDIT2 : Karena itu menyebabkan runtime misterius pada komputer saya yang cukup lambat, saya mengurangi batas waktu habis dari 100.000 siklus menjadi 10.000 siklus. Bukan berarti siapa pun yang membalikkan hasil permainan yang berjalan di luar titik ini.

EDIT1 : Memperbaiki bug dalam skrip konversi yang menyebabkan penerjemah tidak mengabaikan angka dalam program yang dikomentari.


Deskripsi

Ini adalah turnamen Brainfuck yang terinspirasi oleh BF Joust . Dua bot (program Brainfuck) saling bertarung di arena yang diwakili oleh pita memori. Setiap sel dapat menyimpan nilai dari -127 hingga 128 dan membungkus pada batasnya (jadi 128 + 1 = -127).

Instruksi yang valid mirip dengan Brainfuck biasa, yang berarti:

+ : 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 memiliki ukuran 10 hingga 30 sel yang dipilih secara acak setiap pertempuran. Di kedua ujungnya terdapat 'bendera' yang terletak yang memiliki nilai awal 128, sementara semua sel lainnya di-nolkan. Tujuan bot Anda adalah untuk nolkan bendera musuh selama 2 siklus berturut-turut sebelum ia nolkan bendera Anda sendiri.

Setiap bot dimulai dari benderanya sendiri, yang merupakan sel [0] dari sudut pandangnya sendiri. Lawan terletak di sisi lain dari rekaman itu.

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

Kedua bot melakukan aksinya secara bersamaan, ini dianggap satu siklus. Permainan berakhir setelah 10.000 siklus atau segera setelah salah satu syarat kemenangan tercapai. Jika salah satu program mencapai akhirnya, ia hanya berhenti melakukan anthing sampai akhir permainan, tetapi masih bisa menang.


Kondisi menang

Bot Anda menang di bawah salah satu kondisi berikut:

  • Bendera musuh Anda diunggulkan sebelum bendera Anda
  • Musuh Anda memindahkan penunjuknya keluar dari kaset (dieksekusi >pada bendera Anda atau <sendiri)
  • Nilai bendera Anda lebih jauh dari 0 daripada nilai bendera lawan Anda setelah 10.000 siklus

Aturan

Posting Anda harus berisi nama untuk bot Anda dan kodenya.

  • Anda dapat menggunakan sintaks singkatan berikut untuk membuat kode Anda lebih mudah dibaca:
    • misalnya (+)*4sama dengan ++++, ini berlaku untuk instruksi apa pun kecuali tanda kurung yang tidak cocok dalam tanda kurung karena logika loop bertabrakan dengan logika singkatan. Silakan gunakan [-[-[-sebagai ganti([-)*3
  • Setiap karakter selain dari +-><[].komentar dan karenanya diabaikan, kecuali ()*untuk singkatan

Bot yang tidak mengikuti aturan akan dikeluarkan dari turnamen.

  • Hanya Brainfuck dasar yang diizinkan, tidak ada varian lain yang mendukung prosedur atau operasi aritmatika
  • Kode sumber bot Anda tidak boleh mengandung tanda kurung yang tidak cocok

Anda dapat memberi tahu diri sendiri tentang strategi dasar tetapi tidak menggunakan kode orang lain untuk bot Anda sendiri.


Mencetak gol

Skor bot ditentukan oleh jumlah kemenangan melawan semua bot lainnya. Pertemuan antara 2 bot terdiri dari 10 pertandingan dengan panjang pita memori yang berbeda, yang menghasilkan skor maksimum 10 poin per pertemuan. Hasil seri tidak menghasilkan poin untuk pertandingan ini.


Program kontrol

Anda dapat menemukan program kontrol di github, bersama dengan log lengkap dari pertempuran. Papan peringkat akan diposting di sini setelah dibuat.

Jangan ragu untuk mengkloning repositori dan mencoba bot Anda sendiri melawan yang lain. Gunakan python Arena.py yourbot.bf otherbot.bfuntuk menjalankan pertandingan. Anda dapat memodifikasi kondisi dengan bendera baris perintah -mdan -t. Jika terminal Anda tidak mendukung urutan pelarian ANSI, gunakan --no-colorbendera untuk menonaktifkan keluaran berwarna.


Bot contoh

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 akan memenangkan setiap pertandingan dengan panjang pita lebih dari sepuluh, karena FastClearBot dapat menghindari umpan kecil, tetapi tidak yang lebih besar. Satu-satunya situasi di mana FastClearBot dapat menang melawan DecoyBot, adalah ketika itu cukup cepat untuk mencapai bendera musuh sebelum lawannya membangun umpan besar.

Sandi
sumber
5
Asli, aku suka itu. Saya hanya takut bahwa ini tidak akan memungkinkan kedalaman strategis yang cukup, tetapi itu mungkin hanya saya.
ɐɔıʇǝɥʇuʎ
11
Ini akan lebih menyenangkan dengan Befunge .
IchBinKeinBaum
6
Saya menemukan halaman web BF Jousting yang dapat menjalankan dan memvisualisasikan pertandingan jousting.
PhiNotPi
4
Terima kasih telah meng-hosting KOTH ini, Cipher. Pasti banyak pekerjaan dengan begitu banyak kiriman.
AndoDaan
3
Saya lebih suka mengucapkan terima kasih kepada semua orang karena masih berpartisipasi ^^
Sandi

Jawaban:

18

Nyuroki Magical Fantasy

Saya pikir ini saatnya untuk serius ~ Saya menyelesaikan kompiler saya untuk HLL kecil untuk membuat menulis program BF Joust lebih mudah. Ini adalah upaya serius pertama saya untuk membuat sesuatu dengannya. Konsep bot cukup sederhana. Ini membuat beberapa umpan dari berbagai polaritas, kemudian menjadi gila dengan gerakan besar yang jelas dengan reverse offset yang jelas di tengah.

Oh, omong-omong, skor yang diharapkan adalah sekitar 577 poin melawan bukit babak terakhir. Itu tingkat kemenangan 93%. <3

Disusun | Kode sumber

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

Sunting : Saya memeras beberapa kemenangan lagi dari Nyuroki.

Sunting 2 : Hei, lihat, saya melakukannya lagi!

Sunting 3 : Setelah bergulat sebentar dengan bug parsing bodoh di Arena.py, akhirnya saya mendapatkan peningkatan lagi ~ Inilah yang saya maksud dengan "waktu untuk menjadi serius", Anda tahu. <3

Lymia Aluysia
sumber
Sepertinya Loke perlu beberapa penyesuaian :-) Sukai bahasa Anda. Apakah bug di Arena.py bahwa Anda memiliki spasi putih antara )dan *atau antara *dan angka?
Sylwester
@Sylwester Jauh lebih buruk. Loop menuju tempat yang seharusnya tidak dituju
Lymia Aluysia
Selamat dengan # 1. Tingkat kemenangan 92,5% akan sulit ditandingi.
Sylwester
Bagus sekali, tapi bukankah ini istilah singkat? Loop bersarang secara efektif 21 faktorial = 5 * 10 ^ 19. Dengan kata lain, ini secara efektif tidak dapat diperluas menjadi brainfuck dasar.
barat
1
@ Barat Ya. Dan sebagian besar program di bukit Joust BF yang paling maju ( codu.org/eso/bfjoust/in_egobot - misalnya , lihat smartlock) bahkan lebih buruk. Ini bukan masalah besar, karena ini adalah semacam steno. Itu membuat strategi yang tidak mungkin tidak dapat dilakukan karena panjangnya yang layak. :)
Lymia Aluysia
43

Bot Perangkat Cloaking

Bot ini pada dasarnya mencoba untuk menyembunyikan basisnya, membuatnya sehingga bot lain akan bergerak melewatinya dan mematikan kaset.

(-)*127(-+--+-++)*12500
PhiNotPi
sumber
4
Sangat pintar, harus menyesuaikan bot saya untuk akun ini.
Moop
2
Ini adalah salah satu yang paling pintar di sini, menurut saya.
Almo
+ f untuk cloaker pertama. Saya tidak melihat yang ini sebelumnya setelah saya membuat Ràn tapi itu ide yang sama, aplikasi yang berbeda.
Sylwester
19

Burly Balder v3

Burly Balder adalah demam sedang-sedang saja. Itu membuat dua umpan besar sebelum masuk ke mode buru-buru. Dalam mode terburu-buru ia memiliki loop yang hanya menggunakan 4 langkah setiap sel nol dan ketika sel non nol itu memiliki analisis kasus untuk [-18,18] sebelum mengurangi secara membuta dengan 107 sebelum membersihkan dengan [-.]. Dia membersihkan bendera yang tidak berubah dalam 242 langkah, 114 lebih dari yang tidak pasti -*128 dan 14 kurang dari yang naif [-]. Ketika sel dibersihkan, dia terus meninggalkan jejak umpan -2. Dia memiliki kasus khusus hanya untuk indeks 9 untuk menyimpan beberapa langkah untuk permainan ukuran 10 dan ia meninggalkan sel dengan umpan 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

Trivia: Balder adalah dewa dan putra Odin. Dia dikenal terutama karena kisah kematiannya : Dia takut keselamatannya sehingga dewa-dewa lain mencoba untuk memprediksi dan melindungi dari setiap ancaman. Dia akhirnya dibunuh oleh Loki karena ketika mereka melindunginya terhadap pedang dan panah, mereka lupa melindunginya terhadap Mistletoe.

Sylwester
sumber
2
Umpan Anda membunuh saya. Sudah selesai dilakukan dengan baik.
AndoDaan
1
@AndoDaan Terima kasih. Kamu BeatYouMatepintar. Saya khawatir umpan pada sebagian besar bot akan mendapatkan putaran berikutnya lebih besar sampai memberikan penalti. Maka mungkin kita akan memiliki beberapa strategi keren yang muncul :)
Sylwester
2
Masalah dengan meningkatkan ukuran umpan adalah bahwa itu diperdagangkan dengan kinerja pada kaset pendek terhadap bot serangan cepat. Dengan 10 putaran acak, ada kemungkinan sweet spot yang berubah tergantung seberapa cepat entri lainnya menyerang.
Comintern
2
Yap, kamu masih yang harus dikalahkan.
AndoDaan
4
@AndoDaan Dengan begitu banyak dewa nordic yang mendukung saya, ukuran arena acak sepertinya menguntungkan saya :-)
Sylwester
13

EvoBot 1

Ini adalah bot sederhana yang dibuat melalui algoritma genetika. Saya mulai dengan sebuah template, dan program saya perlahan menyesuaikan angka untuk membuat bot prajurit yang lebih baik. Kode di bawah ini telah diedit untuk meningkatkan keterbacaan.

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

Saya menggunakan entri lain dalam kompetisi untuk mengukur kebugaran kandidat yang berbeda.

Karena ini adalah upaya pertama saya di sebuah evobot, saya mulai dengan templat sederhana:

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

Saya memperkirakan bahwa bot ini akan menerima skor di kisaran 50 hingga 60-an.

Saat ini saya sedang mengerjakan template umpan balik.

EvoBot 2

Ini adalah bot yang dibuat oleh algoritma genetika yang sama, tetapi dengan templat berikut:

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

Bot ini menggunakan strategi umpan balik untuk menetapkan 4 umpan dengan ketinggian berbeda-beda. Bot yang dihasilkan adalah:

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

Saya berharap bot baru ini lebih baik dari bot sebelumnya, mungkin mendapatkan skor di tahun 70-an (mungkin jauh lebih tinggi dari itu karena ada banyak entri baru).

PhiNotPi
sumber
2
+1 untuk algoritma genetika. Saya memiliki keyakinan besar pada mereka. Saya harap bot Anda baik-baik saja.
AndoDaan
12

Alternator

Ini mengasumsikan sebagian besar orang akan nol sel dengan menambahkan atau mengurangi itu, sehingga rata-rata setiap sel akan mengambil 128 berubah menjadi nol.

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

Versi beranotasi

(>+>-)*4       Move eight squares alternating polarity    
>+             Move one more
(
    >          Move to the next square
    [-]        Zero it
    [.]        Wait while it is zero
)*21           Repeat
Moop
sumber
Sial, perubahan terbaru Anda meningkatkan tingkat kemenangan untuk Alternator melawan Geronimo dari ~ 60% menjadi ~ 90%. Bagus.
Ingo Bürk
ya, saya bergerak 18 kali ketika saya melakukannya (> +> -) * 9, jadi itu akan jatuh dari kaset. Kesalahan konyol.
Moop
Bahkan melindungi Geronimo dengan menambahkan / mengurangi secara bergantian sel tidak mengubah tingkat kemenangan saya sama sekali. Alternator mungkin keluar sebagai pemenang di sini - ia menggunakan beberapa silinder untuk mengatur jebakan yang cukup sulit untuk ditembus.
Ingo Bürk
Hei, koreksi saya jika saya salah tetapi bukankah bot ini otomatis keluar dari papan jika papannya panjang 10? Ini memindahkan 10 kotak sebelum mencoba mengatur apa pun menjadi nol.
A Boschman
11

Jadi, orang lain di sini menggunakan algoritma genetika untuk mencoba dan membuat program di sini. Yah ... dahulu kala, saya menulis sebuah evolver BF Joust untuk bukit yang sedang berlangsung di saluran IRC. Saya memutuskan untuk memberikan putaran untuk kontes ini juga ~

Dan ... tidak seperti orang lain yang menggunakan evolver, evolver saya sebenarnya dapat mengubah lebih banyak program daripada jumlah yang berulang. :)

NestDarwin (Generasi 309)

Ini adalah hasil terbaik yang dikembangkan oleh evolver saya sejauh ini. Saya tidak yakin berapa banyak struktur bersarang membantu dalam kasus ini, tetapi, struktur seperti ini adalah apa yang dimaksudkan oleh evolver untuk dapat dilakukan. Performa yang diharapkan pada bukit 27.08.2014 adalah 474 poin. (Dihitung dengan menjalankan pertempuran pada semua 21 panjang pita, dan mengalikannya dengan 10/21. Perhatikan bahwa ini tidak dinormalkan dengan fakta bahwa bukit ini memiliki satu program tambahan di atasnya)

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

EDIT : Mengubah daftar program yang ingin saya masukkan ke bukit ini. Berlari berevolusi semalam. :)


EDIT 2 : Saya pergi dan secara manual menganalisis output evolver. Meskipun terlihat sangat berbeda, NestDarwin pada dasarnya adalah versi TinyDarwin yang dioptimalkan ... Secara manual diperkecil (dengan fungsi yang identik) dan dianalisis:

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

Jadi, program yang hampir identik adalah sebagai berikut ... yang pada dasarnya merupakan versi TinyDarwin yang dioptimalkan secara super.

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

TinyDarwin adalah sebagai berikut. Tidak jauh berbeda, hun? Saya hanya akan menariknya dari bukit. Saya pikir itu berbeda, tapi ... yah, saya salah.

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

Menjadi jelas bahwa bukit saat ini tidak cukup kuat untuk memungkinkannya mengembangkan banyak hal yang lebih kompleks. :(

Lymia Aluysia
sumber
1
Selamat dengan tempat pertama. Apakah program algo genetik dapat menggunakan versi Anda saat ini sebagai templat dan melanjutkan dengan versi baru untuk meningkatkannya lebih jauh?
Sylwester
Pekerjaan bagus dengan posisi pertama. Saya sangat senang algoritma genetika (well, spawn-nya) berhasil di sana!
AndoDaan
Sekarang jika kita dapat mengambil hasil dari semua game, berevolusi lebih banyak, menambahkan beberapa pembelajaran mesin ... maka kita manusia yang menyedihkan tidak akan lagi memiliki kesempatan: P
Sp3000
@Sylwester Semacam itu? Representasi internal saya menggunakan sistem aktivasi gen (yang dipikirkan dengan buruk) yang seharusnya membiarkannya berevolusi superstruktur (dan dalam praktiknya, tidak benar-benar). Saya tidak bisa mengembalikan program terakhir dan memulihkan representasi internal, tetapi saya bisa memasukkan instruksi ke dalam gen tunggal dan membiarkannya terus berkembang (betapapun banyak yang akan membantu).
Lymia Aluysia
@ Sp3000 Sayangnya algoritma saya hampir tidak dapat membuat kemajuan di bukit #esoteric yang berkembang dengan baik. Akan lebih baik jika saya bisa melakukan hal seperti itu, tetapi, sayangnya, keahlian saya dalam algoritma genetika tidak cukup baik. Saya mungkin akan melepaskan evolver saya suatu hari nanti ketika semua peretasan jelek saya dibersihkan.
Lymia Aluysia
10

Beruang kutub Mk II

Ada dua jenis beruang kutub : mereka yang terjebak dan mereka yang menjebak orang lain.

Mencoba menebak polaritas lawan dan kemudian menggunakan informasi itu untuk mengunci lawan menjadi loop tak terbatas. Bekerja dengan baik melawan strategi kliring sederhana dan agak secara acak terhadap yang lain. Perangkap dapat dengan mudah dihindari sehingga saya dapat menambahkan beberapa strategi cadangan nanti.

>++>- 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 [-]
Mika Lammi
sumber
Anda dapat membagi dua ukuran kode dengan (]< (+)*290 (>)*9 ... [-])*2?
Sylwester
@Sylwester Saya tidak bisa karena yang lain menggunakan +dan yang lainnya menggunakan -.
Mika Lammi
Beruang Kutub tidak melakukannya dengan sangat baik dengan offset
clear
@ Sp3000 Anda yakin? Saya mencoba dengan beberapa offset dan polaritas (seperti [(+)*3[-]], [(-)*6[+]]) dan ini bekerja dengan baik (setidaknya untuk offset yang cukup kecil).
Mika Lammi
Oh, saya tahu apa yang salah: / Saya sedang mencoba program seperti >>>>>>>>>((-)*4[+][--.]>)*21yang memeriksa sel dan Anda (+/-)*290menyebabkan loop off-sync kedua dipicu. Bukan kesalahan offset itu.
Sp3000
10

Bot pasifis

Bot saya percaya kekerasan tidak pernah menjadi jawaban dan akan berusaha menghindari pertempuran dengan segala cara.

(.)*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
mmphilips
sumber
8
Saya mengambil kebebasan untuk menghapus '.' Di komentar Anda karena mereka akan dihitung sebagai kode Brainfuck dan membuat bot Anda sedikit lebih lambat dari yang diperlukan. Jika titik-titik itu disengaja, jangan ragu untuk mengoreksi saya!
Cipher
Oh, benar. Itu agak konyol bagi saya, terima kasih telah menghapusnya: p
mmphilips
9

Adakah orang di sana?

Secara berkala melihat ke belakang untuk menentukan kapan musuh mulai membersihkan umpannya, lalu bergegas maju.

Tampaknya berhasil dengan baik, tetapi saya tidak yakin apakah itu karena strategi atau hanya karena saya menambahkan 10 untuk setiap sel sebelum membersihkan.

Sunting: Memperbaiki masalah logika. Pertama kali menulis program brainfuck. Sesuai dengan namanya.

>>>+<(+)*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
ccarton
sumber
+1: Ini adalah bot pertama yang saya lihat bahwa string umpan (selain +/- 1) melampaui 9 sel pertama. Pada kaset yang lebih panjang, itu adalah pembunuh. Retrofitting Lightfoot Plodder lagi sekarang ...
DLosc
9

WALL-E 2.0

Bergegas ke lokasi 9 dan menambahkan 128 ke sana, menang dengan cepat di arena ukuran 10 jika lawan belum mengubah nilai bendera awal. Di arena yang lebih besar, ini berfungsi sebagai umpan besar. Setelah itu mengisi ruang antara lokasi 9 dan bendera sendiri dengan umpan besar. Ketika umpan ditempatkan, ia memindai lokasi yang tidak kosong dan mencoba membersihkannya dengan cepat.

Versi 2.0 membangun umpan yang lebih besar dan memiliki toleransi terhadap perubahan nilai flag awal. Itu juga dapat beralih ke strategi cadangan jika semuanya mulai terlihat berbulu.

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

Efektivitas bot ini didasarkan pada dua fakta:

  1. Kebanyakan bot tidak mengubah nilai awal dari benderanya.
  2. Membangun umpan besar lebih cepat daripada membersihkannya.
Mika Lammi
sumber
Tembok ini membunuhku
Sp3000
9

Lethal Loke V2.1 (dengan Mistletoe)

Ini tentu saja bot yang mematikan dan dia membunuh tidak hanya Burly Balder yang cantik dengan mistletoe, tetapi menang hampir setiap waktu melawan bot lainnya juga. Ini adalah kombinasi medium dan fast rush. Tes saya memberi saya skor 567

File BFJ yang dikompilasi untuk pertempuran , sumber generator Racket BFJ:

#lang racket
;; bare minimum bfj support
(define (bf . args)
  (apply string-append 
         (map (lambda (x) 
                (if (number? x)
                    (number->string x)
                    x))
              args)))

(define (dup x num)  
  (let loop ((n num) (lst '()))
    (cond ((< n 0) (error "Negative n"))
          ((zero? n) (apply bf lst))
          (else (loop (sub1 n) (cons x lst))))))


;; Useful procedures
(define (wiggle amount default-zero n)
  (let rec ((n n))
    (if (zero? n)
        ""
        (bf "["
            (dup "-[" amount)
            (bf "(+)*" amount)
            (dup "+[" amount)
            default-zero
            ">"
            (rec (sub1 n))
            (dup "]" (* amount 2))
            "]"))))

(define (goto from to)
  (let* ((dst (- to from))
         (op (if (> dst 0) ">" "<"))
         (abs (if (> dst 0) dst (- dst))))
    (if (= from to) 
        ""
        (bf "(" op ")*" abs))))

(define max-position 30)
(define initial-decoy  "(-)*17")
(define small-decoy "(+)*10")
(define large-decoy "(-)*32")
(define flag-position 7)
(define decoy-phase-end-position 14)
(define wiggle-amount 8)
(define plodd-clear "..(+)*120(+.)*27>")
(define plodd-inner-clear (bf "(+)*" 
                              (- 78 wiggle-amount) 
                              "..(+)*42(+.)*27"))
;; Main body of Loke V2
(define (generate-loke2)
  (bf ">" 
      initial-decoy
      ">->+>->+>->"
      (let gen-rec ((n flag-position) (p #t))
        (if (> n decoy-phase-end-position)
            (bf (medium-slow n))
            (bf "[" 
                (medium-slow n)
                "]" 
                (if p small-decoy large-decoy)
                ">"
                (gen-rec (+ n 1) (not p)))))))

;; Retreat goes back to home
;; leaving a trail of flags
;; from flag position
(define (medium-slow last-index)
  (bf (goto last-index 2)
      (let medium-rec ((n 2) (p #f))
        (if (= n flag-position)
                (fast-rush n last-index)
            (bf (if p "-" "+")
                "[" (fast-rush n (max 9 last-index)) "]" 
                (if p small-decoy large-decoy)
                ">"
                (medium-rec (+ n 1) (not p)))))))

(define (fast-rush cur-position last-known)
  (bf (goto cur-position last-known)      
      "([" plodd-clear 
      "("
      (wiggle wiggle-amount
              plodd-inner-clear 
              (- max-position last-known 1))
      ">)*" (- max-position last-known)
      "]>)*" (- max-position last-known)))

(display (generate-loke2))

Trivia : Loke (Loki) adalah dewa dalam mitologi Nordik yang suka bermain dengan semua orang dan menipu mereka. Dia adalah seorang shifter bentuk (menjadi binatang dan manusia) dan biasanya berjalan dengan caranya sendiri. Dalam cerita-cerita itu ia sering bepergian dengan dan membantu para dewa lain dan melakukan trik-trik kecil dan menggerakkan berbagai hal. Selain membunuh Balder dia ayah Hel (dewi Neraka / Helvete), binatang Fenrir, dan Ular Midgard yang memulai Ragnarok (tragedi norse armageddon).

Bagaimana itu bekerja

Pada awalnya ia membuat umpan besar (-17) kemudian membuat +-pola sampai indeks 7. Ia memindai ke depan dari ke 13 meninggalkan jejak umpan (+10, -32) + tetapi ketika ia mendeteksi suatu set ia akan membatalkan dan mulai mode sedang * 1 terburu-buru. Jika tidak ada sel yang ditetapkan, ia juga akan memulai mode terburu-buru * 3 lambat.

* 1 Dalam mode rush sedang, ia telah mendeteksi aktivitas lawan di salah satu indeks 7-13 dan ia mulai dari indeks 2. Beberapa lawan meninggalkan nol dan lainnya meninggalkan nilai yang berbeda dan ia sekarang memiliki sarana untuk mendeteksi aktivitas lawan saat sebelum membuat umpan di indeks 2-6 (-32, + 10) +. Jika sel bukan nilai yang diharapkan (-1, 1) atau dia selesai membuat semua umpan dia pergi dalam mode rush * 2 cepat.

* 2 Mode fast rush yang dia harapkan telah terdeteksi sehingga umpan tidak akan berfungsi. Kami berharap yang sudah kami atur adalah menghentikan lawan dan fokus berlari melalui umpan lawan. Dia mulai bergegas pada titik terjauh yang kita tahu berdasarkan pemindaian sebelumnya [9,14] atau indeks 9 jika kita dibuat lebih awal dari itu. Dia memiliki kasus khusus untuk umpan pertama di mana kita hanya menambahkan 120 dan plodd 27 karena dia tidak ingin mengurangi nilai di bawah nol jika itu adalah jebakan, tetapi untuk setiap umpan setelah kita bergerak jelas di [-8,8] sebelum meningkat sebesar 120 dan lamban 27 langkah sebelum melanjutkan ke sel berikutnya.

Mode rush lambat dihapus karena itu tidak mempengaruhi skor dengan bukit saat ini dan itu membuat bot saya sedikit lebih kecil (tapi tidak banyak).

Sylwester
sumber
3
Sekarang kita mulai melihat kegilaan. Saya suka itu.
Sp3000
@ Sp3000 YandereBotv2 adalah alasan saya perlu berpikir baru selain hanya meningkatkan umpan dan nilai ayunan. Itu memiliki persentil kemenangan yang lebih tinggi melawan rintangan daripada semua bot terakhir sehingga Anda hanya beruntung dengan ukuran arena.
Sylwester
Ahaha mungkin - saya pikir saya perlu counterplan terhadap ukuran umpan yang terus meningkat: / Saya sangat suka bagaimana Anda memiliki mode yang berbeda
Sp3000
desah . Saya harus membuat HLL agar BF Joust bekerja lebih baik sehingga evolver saya dapat bertahan lagi. Selamat atas # 1 ~
Lymia Aluysia
@LymiaAluysia Terima kasih. Saya lebih terkejut dengan Balder. Saya mengandalkan versi baru NestDarwin, YandereBot dan Mickey :-)
Sylwester
8

Geronimo

Bahkan lebih ofensif daripada Besteffense bot kaine karena tidak membangun pertahanan apa pun. Strateginya di sini adalah: Orang lain akan mencoba menjadi pintar, tetapi menjadi pintar membutuhkan siklus. Jadi mari kita lompat ke bagian yang kita tahu ada musuh dan bersihkan semua yang kita temukan.

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

Tampaknya memenangkan sebagian besar pertandingan melawan bot contoh dan bot kaine.

Ingo Bürk
sumber
7

SternBot

Sebenarnya bot setengah serius sekarang setelah semuanya dimulai. Mengatasi sifat simular dari beberapa bot ini.

(>->+>)*3(>[+]>[-])*21
kaine
sumber
1
SternBot memberi saya masalah paritas :(
Sp3000
7

DoNothingBot

Pertahanan terbaik (...) adalah ketidaktahuan.

.

Tidak melakukan apa-apa.

EDIT: Wow, saya heran melihat bahwa ia melakukan pekerjaan yang lebih baik daripada lebih dari 20% dari semua bot =) (Apakah ini berarti ia menggunakan strategi yang unggul atau ....?)

cacat
sumber
2
Beberapa bot lain bunuh diri di arena kecil. misalnya. Gambler langsung menuju sel ke-20 dan untuk game dengan 10-19 itu akan hilang, bahkan terhadapDoNothingBot
Sylwester
2
Hanya karena penasaran, saya menjalankan ini melalui tester saya (memainkan semua rekaman panjang) terhadap entri lainnya. Lihatlah tembok rasa malu ... +1
Comintern
Haha, Terima kasih telah berbagi - Saya berharap bahwa mungkin ada satu atau dua domba hitam tapi saya tidak berharap itu 'mengalahkan' begitu banyak bot =)
flawr
7

CounterPunch - Diedit

Kombinasi seimbang membangun pertahanan yang kuat dan kemudian menyerang.

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

Beranotasi:

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

Membela mirip dengan Backtracker @ Geobit , tetapi bertahan melawan penyerang cepat dengan menempatkan umpan cepat di depan bendera terlebih dahulu.

Attack bersarang kliring dengan polaritas berlawanan untuk dengan cepat membersihkan umpan dengan nilai yang lebih kecil. Skenario kasus terburuk harus menjadi umpan 64 (salah satu polaritas).

Sunting 1: Tingkatkan efisiensi serangan terhadap umpan (memiliki kesalahan logika dalam pengalihan polaritas).

Sunting 2: Pengujian menunjukkan bahwa jeda berkinerja lebih baik di loop paling dalam.

Komintern
sumber
6

Backtracker

Strategi umpan balik terbalik. Mulai meletakkan umpan dari depan belakang, jadi tidak ada yang melompati sisanya ketika saya sedang membangun mereka.

Jika papan kurang dari ukuran 20 atau lebih, ini tidak bekerja melawan bot serangan cepat, karena kita hanya akan melewati satu sama lain sebelum saya mulai umpan.

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

Catatan: Saya tidak BF, tapi ini seperti apa yang saya inginkan. Jika tidak, tolong beri tahu saya sekarang.

Geobit
sumber
6

Tidak bisa menyentuh ini

Ini adalah program berorientasi pertahanan yang mencoba menentukan bagaimana lawan membersihkan sel, dan membangun umpan dari ukuran yang sesuai.

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

Saat ini saya sedang mengerjakan versi yang dapat menang melawan kedua polaritas.

PhiNotPi
sumber
6

ImpatientTripwire (alias YandereBot)

Berusaha menjadi tripwire sehingga dapat meletakkan umpan (kebanyakan) polaritas yang sesuai, tetapi menyerah jika Anda terlalu lama dan menganggap Anda sebaliknya. Memiliki tripwire terbalik untuk papan kecil.

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

Versi saat ini: 1.3 - diedit untuk berbuat lebih baik di papan yang lebih kecil, dengan mengorbankan kekalahan karena musuh menyelinap melewati selama tripwire memeriksa

Versi sebelumnya: 1.2.1

(Saya perlu algoritma yang lebih jelas: /)

Sp3000
sumber
1
OMG 411k sepenuhnya diperluas dan dilucuti: -Kode Chiper hanya hang ini.
Sylwester
Baru saja mengubah beberapa komentar sehingga sekarang berfungsi dengan kode baru Cipher
Sp3000
sejak hasil edit terakhir, tanda kurung yang tidak tertandingi dalam tanda kurung berperilaku aneh karena logika loop bertabrakan dengan logika singkatan. dapatkah saya mengubah konstruksi seperti ([)*300kembali ke [[[ and so on?
Cipher
@Cipher Ya, lakukan itu - meskipun versi pastebin harus persis seperti itu
Sp3000
1
3 adalah tempat yang bagus untuk datang. Sudah selesai dilakukan dengan baik.
AndoDaan
5

Lightfoot Plodder - Diedit

Berdasarkan pada Plodder , raksasa cepat ini mampu "memajukan" melalui 0 berturut-turut dengan cepat sampai mencapai sesuatu yang tidak nol (pada saat itu ia mulai lamban seperti yang diharapkan).

Sekarang ditingkatkan dengan algoritma skimming yang lebih kuat, yang juga memungkinkan fast-forwarding melalui umpan kecil, dan umpan besar sendiri.

Sunting # 2 : Sekarang dapat kembali membaca sekilas jika menemukan lebih banyak kantong nol.

>(-)*4
>(-)*7
>(-)*4
>(+)*7
>(-)*17
>(+)*3
> -
>(-)*10
>(+)*16[-]<-
([
[>>
 [+
  [--
   [+++
    [<+>(+)*14[-]]
   ]
  ]
 ]<-
]>>
[(+)*126(+.)*4>]
<]+)*10
DLosc
sumber
Perubahan ukuran "nyaman" yang bagus di sana :)
Lily Chung
@IstvanChung Sangat nyaman. ;) Lagi akan memperlambat saya terlalu banyak, kehilangan poin ke beberapa bot lainnya. Jika Anda membuat lebih besar, saya tidak berpikir saya akan mencoba mengimbangi.
DLosc
Yah, saya sudah sedikit menabrak ukuran untuk melihat cara kerjanya. Saya pikir Bigger mungkin bisa melakukan ukuran yang lebih besar, tetapi tidak punya waktu untuk mengujinya secara menyeluruh. Semoga berhasil!
Lily Chung
Sukai tindakan balasan terhadap bot Cloacking dan fakta bahwa ini benar-benar terlihat seperti pemrograman BF :)
Sylwester
5

Enggan Rán v2

Strateginya mudah. Cobalah untuk membuat lawan berpikir bahwa benderanya adalah umpan dan mendahului melewati papan dan longgar (semacam tripwire / vibrator). Setelah 10 putaran penuh dia menyerah dan mencoba untuk menentukan apakah lawan ada di benderanya dan jika tidak dia akan membuat umpan -17 sampai dia memukul sel yang ditetapkan. Metode kliring yang dia gunakan adalah kasus khusus untuk [-12,12] dan mulai lamban mirip dengan 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
]

Trivia: Rán adalah dewi laut Mitologi Nordik yang membawa pelaut sebelum mati di laut.

Sylwester
sumber
5

Mickey V4

Untuk V4 saya menggunakan metode yang sama dengan V3, melawan bot yang diperbarui tetapi dengan populasi yang lebih bersamaan (30 bukan 10).

Dikembangkan melawan semua 60 bot, termasuk BurlyBalderV3dan LethalLoke(tetapi tidak termasuk 2botsonecup yang tidak dapat dikompilasi oleh implementasi ketat saya).

Saya menemukan bot yang sangat berbeda dan tingkat keberhasilan jika saya mulai dengan benih acak yang berbeda. Jadi saya memutuskan untuk memisahkan titik awal yang berbeda ini ke dalam populasi dan membiarkannya sesekali menyerbuki silang.

Dalam 1400 generasi, 30 populasi yang berkembang secara bersamaan menciptakan program ini:

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

Saya menghitung tingkat kemenangan bot ini menjadi 90,0% terhadap tanaman saat ini. (1135/125/0 panjang tape menang / kalah / seri).

Info V3

Tingkat kemenangan yang dihitung sebesar 89,2% (panjang pita 1124/62/74 menang / kalah / seri).

Info V2

Program generasi sekarang memiliki analisis untuk mengetahui bagian mana dari akhir program yang tidak digunakan dan memotongnya sebelum menghasilkan generasi berikutnya. Ini berarti bahwa mutasi acak terjadi hanya di bagian-bagian program yang digunakan dan karenanya evolusi lebih cepat.

72% terhadap panen saat ini. (892/204/143 panjang tape menang / kalah / seri).

Info V1

31500 generasi, hanya 12 bot yang dihadapi. 65% (panjang kaset 165/80/7 menang / kalah / seri). Saya menggunakan semua 21 rekaman panjang.

Potensi bot diberi peringkat berdasarkan:

  • kebanyakan menang saat itu;
  • sebagian besar seri kemudian;
  • waktu tercepat yang ditarik kemudian;
  • waktu tercepat yang dimenangkan

Hal sepele

  • Mickey dinamai kucing saya dan;
  • Mengutip TS Elliot: The Naming of Cats is a difficult matter, It isn't just one of your brainfuck bots
  • Java bf vm dan algoritma genetis saya ada di github .
  • Vm mampu menjalankan turnamen lengkap dalam waktu kurang dari 4 detik pada satu inti i7 (hati-hati - hasilnya tidak selalu identik dengan mesin turnamen).
Weston
sumber
Bukankah lebih baik menggunakan semua 60 bot?
Sylwester
@Sylwester Mungkin, saya terutama tidak melakukannya karena sangat lambat. Butuh dua jam untuk melakukan ini. Meskipun berkembang lebih lambat, lebih banyak bot yang harus diatasi. Saya pikir jika itu mengalahkan orang-orang top, itu akan baik-baik saja. Saya belum bisa menjalankan turnamen yang sebenarnya untuk mengonfirmasi, masalah python. Jadi saya pikir saya baru saja mempostingnya dan lihat ...
weston pada
@weston Mungkin kami bisa membantu Anda dengan masalah python Anda?
Cipher
@Cipher terima kasih, saya membuka masalah di github github.com/redevined/brainfuck/issues/2
weston
@Sylwester Saya menggunakan sebagian besar bot sekarang karena generator saya jauh lebih cepat dan multithreaded.
weston pada
4

Penjudi

Ini terkait erat dengan bot Geronimo saya. Tetapi di mana Geronimo memainkan hal yang pasti, Penjudi mencoba untuk lebih cepat dengan melakukan yang terbaik - judi: Ini pergi ke sel ke-20 dan mulai nol-ing dari sana.

Itu berarti bahwa itu mungkin dengan mudah kehilangan hanya karena arena tidak sebesar itu. Tetapi jika ya, mungkin beberapa siklus yang diperhitungkan.

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

Fakta Menarik: Saya benar-benar mempertimbangkan untuk memasukkan banyak bot yang semuanya terlihat seperti di (>)*X(>[-])*Ymana X in 9..29dan Y = 30 - X. Tapi saya pikir memasukkan dua puluh bot akan menjadi sedikit terlalu banyak :) Atau bahkan empat puluh jika saya memiliki dua versi, yang nol-s dengan [+]dan yang melakukannya [-].

Ingo Bürk
sumber
Bukankah angka seperti 13, atau 14 memberi Anda persentase kemenangan yang lebih baik daripada 20?
Moop
Ya mungkin. Saya hanya ingin untuk yang di tengah. Menariknya jika saya hanya belok ke kanan dan bukan ke kanan peluang menang saya turun banyak. Akan mengharapkan yang sebaliknya.
Ingo Bürk
Karena setiap perkelahian bot maka pertandingan melawan setiap bot lain, bahkan 40 dari mereka tidak akan mengangkat peluang yang banyak - dan saya memiliki waktu yang sulit dari copy dan paste: D
Cipher
4

Dumbot

Bot yang sangat bodoh yang hanya mengacaukan lingkungan dan berharap bahwa bot yang bertarung semuanya akan terlepas dari rekaman.

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

(Saya tidak yakin apakah ini bisa berfungsi - meskipun tidak salah!)

Beranotasi (dengan apa yang saya pikirkan ):

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

(Saya akan terhuyung-huyung jika ini memenangkan satu pertempuran)

Sellyme
sumber
1
baris kedua Anda benar-benar akan nol sel dengan tambahan, dan kemudian kurangi satu tujuh kali berturut-turut.
haskeller bangga
1
@proudhaskeller Anda benar ... Itulah yang saya dapat karena mencoba melakukan hal-hal Brainfuck dengan sedikit tidur. Baru saja membuatnya lebih sederhana daripada benar-benar bekerja bagaimana melakukannya dengan benar.
Sellyme
4

CropCircleBot

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

Bot ini menggunakan algoritma canggih yang ditransmisikan oleh alien melalui lingkaran tanaman yang mereka tempatkan di bumi. Ini akan mengubah umat manusia dan memberikan kemajuan teknologi yang sangat besar dan bahkan memecahkan banyak masalah lingkungan.

cacat
sumber
Anda tahu Anda seharusnya tidak pernah menggunakan] [, bukan?
CalculatorFeline
Saya tidak, bisakah Anda menjelaskan mengapa?
flawr
Ketika Anda meninggalkan satu loop, sel saat ini adalah 0. Kemudian, Anda melewatkan loop berikutnya karena sel pada pointer masih 0.
CalculatorFeline
Oh, saya selalu berpikir cek terjadi di akhir perulangan?
flawr
Itu juga terjadi di awal. Dalam beberapa implementasi, [tidak melakukan apa-apa, tetapi itu adalah bahasa yang sama sekali berbeda (newbiefuck di esolang wiki)
CalculatorFeline
4

BeatYouMate

Dan karena semua orang harus memposting bot yang akan mengalahkan bot pertama yang mereka posting, inilah bot meletakkan umpan 5+:

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

CleverDanDitentukan

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

Atur beberapa perangkap kecil, lalu balapan ke sisi yang lain, dan cobalah untuk membersihkan semuanya, di atas atau di bawah nol. Gagal aktif ----.

isaacg
sumber
+++sebelumnya [-]memang pintar untuk menghindari jebakan sederhana!
Ingo Bürk
Melempar pengecualian karena tidak cocok (, bisakah saya memperlakukannya seperti komentar?
Cipher
@Cipher Saya akan memperbaikinya, maaf.
isaacg
4

MetaJSRandomBot

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

Gagasan di balik bot ini adalah membuat sesuatu yang acak total yang masih merupakan kode js yang valid tanpa terlalu banyak kesia-siaan. Saya menulis kode berikut ( tautan JSFiddle ) untuk membuatnya. Mari kita lihat seberapa baik itu =)

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);
cacat
sumber
4

Roulette Prusia

Roulette Rusia bertaruh dengan temannya Prusia, dan sekarang giliran bermain.

>(+)*5(-.[>.[>(-)*10]]>>)*1000
Peluruhan Beta
sumber
Anda memiliki 2 pengurangan pointer dan hanya 1 peningkatan di loop utama Anda - ini akan membuat Anda keluar dari pita Anda sendiri.
Comintern
2
Ini masih akan membuang dirinya sendiri.
haskeller bangga
Tepat di awal Anda memiliki plus diikuti oleh minus. 2 siklus terbuang.
weston
4

Lebih besar

Perlombaan senjata dimulai !!

Keduanya membangun dan menghancurkan dinding dengan tinggi 16 18, lebih besar dari kebanyakan pesaing. Juga memiliki sedikit logika untuk mengalahkan cloaker, pembela bendera, anti-alternator, dan bot yang menganggap bendera tidak tersentuh

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

Versi beranotasi

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
Lily Chung
sumber
3

PatientBot

Bot yang sebagian serius. bot ini akan berusaha menang dengan batas siklus 100000. itu akan pergi ke bendera musuh sambil meletakkan beberapa jebakan di jalan, mengurangi sedikit, kembali dan mempertahankan bendera.

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

ia akan menganggap semua yang lebih besar dari 1 atau lebih kecil dari -1 adalah benderanya, dan ketika itu akan bertemu satu, itu akan kembali. ia bertahan hanya dengan menambah secara konstan. ini mengasumsikan sebagian besar program akan menggunakan [] untuk memeriksa apakah bendera menjadi 0, dan (+) * 100000 akan jauh lebih cepat

Sunting: tidak dapat membuatnya berfungsi pada penerjemah BF Joust. saya menyerah. mungkin Anda harus memberi tahu saya cara meningkatkan kode saya.

Sunting: sekarang bot membuat tempat tepat sebelum bendera 2, dan setelah itu menurunkan bendera sedikit, itu mencari 2. ini dimaksudkan untuk membatalkan skenario di mana bot akan menemukan 0 sel selain yang sebelum bendera.

haskeller bangga
sumber
Bot Anda tampaknya membunuh dirinya sendiri pada pita (agak jarang, saya akui) dengan panjang 10 karena ada 10 '>' pada awalnya. Selain itu, [<]itu bukan ide yang baik, karena itu berulang kembali sampai sel di bawah pointer Anda sama dengan nol , yang merupakan salah satu sel di depan bendera Anda atau hanya bunuh diri jika pointer Anda mencapai bendera (karena bendera Anda semoga bukan nol ).
Cipher
@Cipher Perhatikan bot tidak menempatkan jebakan di tempat tepat di depan bendera - ide saya adalah untuk menandai tempat ini sehingga bot akan membangun pertahanannya di sana. Apakah ada cara yang lebih baik? Dalam bfjoust kadang-kadang musuh membersihkan jebakan dan kemudian bot berhenti sebelum itu.
haskeller bangga