電脳少女プログラミング2088
今回は、こちらのプログラミングゲームの解答コードを投稿しよう!の公式イベントの記事になります。
具体的にはpaizaの新作プログラミングゲーム「電脳少女プログラミング2088 ─壊レタ君を再構築─」の
「自然の残る公園」
という問題をPowerShell 5.1で解いてみたいと思います。
問題
答え
# ビーコンの数、現在地x座標、現在地y座標の入力
Write-Host "ビーコンの数、現在地x座標、現在地y座標を入力してください:"
$inputData = Read-Host
$inputArray = $inputData.Split(" ")
$beacon_num = [int]$inputArray[0]
$now_x = [int]$inputArray[1]
$now_y = [int]$inputArray[2]
# 最終的な答えを入れる変数を作成して初期化
$answer = 0
$min_distance = [double]::PositiveInfinity
# ビーコンの数分ループ(iはビーコンの番号として使う)
for ($i = 0; $i -lt $beacon_num; $i++) {
# ビーコンのx座標、y座標を取得
Write-Host "ビーコンのx座標、y座標を入力してください:"
$beaconData = Read-Host
$beaconArray = $beaconData.Split(" ")
$x = [int]$beaconArray[0]
$y = [int]$beaconArray[1]
# 距離計算してresultへ格納
$result = [Math]::Pow($now_x - $x, 2) + [Math]::Pow($now_y - $y, 2)
# resultとmin_distanceを比較する
if ($result -lt $min_distance) {
$min_distance = $result
$answer = $i + 1 # indexは0からスタートするためビーコンの番号として機能するように+1をする
}
}
# 最終結果を出力
Write-Host $answer
PowerShellではテスト入力がツライ
処理は単純にビーコンとの距離を計算して、最も近いビーコン番号を出力するだけです。
評価
この「電脳少女プログラミング2088 ─壊レタ君を再構築─」では問題を解くとAIのパートナーが解答をコードレビューしてくれます。コードレビューしてもらったことがないので新鮮でした(評価はPythonの解答をしてもらいました)
最後に
このようなイベントをPowerShellでやる人は珍しいと思います。
PowerShellに興味を持った方は応援してね
下のリンク先でも記事を書いています