Console.WriteLine("ターゲット名");
で攻撃。
標準入力からのデータを
Console.ReadLine().Split(' ') で取ってくる部分などは、最初から組み込まれている。そこで得られた次の変数をどう使うかがキーポイントになります。
String enemy //敵の名前 int dist // 距離
毎回、最も近い敵に対して攻撃をしないと負けです。よって複数いる敵のうち、最も近いものを検索するコードを書かないといけません。
回答例
using System;
using System.Linq;
using System.IO;
using System.Text;
using System.Collections;
using System.Collections.Generic;
class Player
{
static void Main(String[] args)
{
string[] inputs;
// game loop
while (true)
{
int count = int.Parse(Console.ReadLine()); // The number of current enemy ships within range
int minDist = 0; //最短距離。とりあえず仮でゼロ
string target = ""; // 攻撃対象の敵の名前
for (int i = 0; i < count; i++)
{
inputs = Console.ReadLine().Split(' ');
String enemy = inputs[0]; // 敵の名前
int dist = int.Parse(inputs[1]); // 敵までの距離
if(minDist == 0 || minDist > dist){ // 最短距離を求める。配列の一番目の場合と、いままでの距離より短い場合は更新する
minDist = dist; //最短距離を更新
target = enemy; //攻撃対象の敵の名前
}
Console.Error.WriteLine("enemy:" + enemy + " dist:" + dist + " minDist:" + minDist); //デバッグ用
}
Console.WriteLine(target); //攻撃実行
}
}
}
所感
変数、型(int, String)、if、条件式を理解していれば解ける問題です。
0 件のコメント:
コメントを投稿