コードボット
私はプライベート変数とプロテクト変数が嫌いです。何でもアクセスしたい!
あなたが私のようであれば、この挑戦はあなたのためです!
他のボットと調和して連携して動作するボットを作成し、他のボットに必要なことをさせます。あなたはプログラマであり、物事がどのように機能するかを知っています。あなたの仕事は、できるだけ多くの他のボットをあなたのやり方に変換することです。
コード
ボットを作成するための24行のコードがあります。各ターン、すべてのボットは1行を順番に実行します。
各ボットはをA
介して5つの変数を保存しますE
。 A
そしてB
個人的な使用のためであり、C
実行する次の行を記憶し、D
現在の方向を記憶し、E
乱数です。変数は0から始まりますが、を除きD
、ランダムな値から始まります。すべての変数には、0〜23のみが格納されます。大きいまたは小さい数値は24で変調されます。
この投稿では、対戦相手を使用して、あなたが直面している隣接するボットになります
各行には、次の5つのコマンドのいずれかを含める必要があります。
Flag
何もしません。それが勝つ方法を除いてMove
ボットをD
th方向に移動します。ボットがすでにスペースを占有している場合、移動は発生しませんCopy Var1 Var2
Var1の内容をVar2にコピーしますIf Condition Line1 Line2
条件が真の場合、Line1を実行し、そうでない場合はLine2Block Var1
変数への次の書き込みをブロックします
変数は次のように使用できます。
#Var
変数を行番号として使用します。A
17の場合、Copy #8 #A
8行目の内容を17行目にコピーし
*Var
ます。相手の変数を使用します。 Copy 5 *C
対戦相手のC
変数を設定して5
Var+Var
、2つの変数を追加します。 Copy D+1 D
ボットを右に回転させます
D
が方向として使用される場合、使用され[North, East, South, West][D%4]
ます
これらの修飾子は連鎖できCopy *#*C #9
ます。対戦者が実行する次の行を、9行目の独自のコードにコピー **D
します。対戦者の対戦相手のD
変数を参照します。
条件は次のように評価されます。
- 場合
Var
:- Varが
A
throughのC
場合、Varがゼロ以外の場合はtrueを返し、そうでない場合はfalseを返します。 - Varがの場合
D
、D
th方向にボットがある場合はtrueを返し、そうでない場合はfalseを返します。 - Varがの
E
場合、Eが奇数であればtrueを返し、そうでなければfalseを返します - Varがラインの場合、フラグラインの場合はtrueを返します
- Varが
- 場合
Var1=Var2
:- 両方が
A-E
で、同じ数に等しい場合にtrueを返します - 両方がラインで、ラインタイプが等しい場合にtrueを返します
- 両方が
- 場合
Var1==Var2
:- 両方が
A-E
で、同じ数に等しい場合にtrueを返します - 両方がラインであり、同一である場合にtrueを返します(異なるボットのフラグは等しくありません)
- 両方が
各タイプの50個のボットは、次のパターンでトロイダルワールドに配置されます。
B...B...B...B...
..B...B...B...B.
B...B...B...B...
..B...B...B...B.
5,000ターンの各ゲームの後、各ボットのフラグがカウントされます。ボットに他のどのタイプのフラグよりも多くのフラグがある場合、ポイントを獲得します。N
ボットが同点の場合、ポイントは与えられません。
10ゲームがあり、スコアは最後に蓄積されます。
サイドノート
行末コメントが許可されており、 //
行に追加するなど、意味をなさないことをしようとしても何もしません
存在しないボットで何かをしようとしても何もしません
の無限再帰は、If
実行される行なしで終了します
If
の値を変更しません C
A Block
は誰かが書き込みを試みるまで期限切れになりません
複数の変数と行を一度にブロックできます
Block
変数を複数回入力すると、2番目のブロックステートメントが最初のステートメントとは異なるコード行にある限り、複数回ブロックされます。
引数の間(およびコマンドの後)にのみスペースを使用できます
ボットが24行より短い場合、Flagは残りの行になります。
サンプルプログラム
Copy 2 C //Skip to the If line
Flag //Where I'm storing my flag
Move //Move in the D'th direction
If D #5 #2 //If there's a bot, copy code, otherwise, move!
Copy #1 *#E //Copy my flag onto a random spot in my bot's code
Copy 2 C //Skip back to the If line
このプログラムは、ここで Pythonコントローラーによって実行されます。
Javaコントローラーはここ にあります。高速で、Python コントローラーよりもずっと良く見えます。
スコアボード:
- 6837 $コピー
- 3355 ロッキード
- 1695 マインドコントロール
- 967 ビザンチン
- 959 AttackOrElse
- 743 カドミリオン
- 367 インフルエンザ
- 251 TheCommonCold
- 226 メイガス
- 137 HideBlockAttack
- 129 RowBot
- 123 FastMoveCloneDodge
- 112 FastForwardClone
- 96 クイックフリーズ
- 71 RepairAndProtect
- 96 スーパーフリーズ
- 93 RovingVirus
- 80 ForwardClone
- 77 FreezeTag
- 68 パリンプセッテ
- 62 BlockFreezeAttack
- 51 ラッシュ攻撃ダッジ
- 46 ブロッカー
- 40 タレットメーカー
- 37 コピーキャット
- 37 神風
- 35 FlagInjector
- 33 RandomCopier
- 31 sidな
- 29 HappyAsAClam
- 25ナノウイルス
- 21 無効化
- 19 ナノビリス
- 17 BoringCopybot
- 16 Movebot
- 14 フラッグボット
- 13 中和剤
- 12 がん
- 9 DNAbot
- 9 寄生虫
- 8 メタインシディアス
- 8 ブランド変更
- 8 AdaptiveBot
- 8 ReproductionBot
- 8 KungFuBot
- 5 QuickFreezerbot
- 4 攻撃者