PowerShell:145 103
オリジナルからの変更
asker からのコメントごとにエラークエリを削除しました。
コード:
"$([array]::IndexOf(($s=(read-host)-split''|?{$_}),($x=$s|?{$_%2-eq0}|?{$_-gt0}|sort|select -f 1))),$x"
チュートリアル:
"... "引用符内のすべてが出力に含まれます。
$(... )カッコ内のすべてがコマンドとして扱われ、コマンド自体の代わりにそのコードの出力が含まれます。
[array]::IndexOf(... )これは、配列を持つ要素のインデックスを取得するために使用されます。最初のパラメーターは、検索する配列オブジェクトです。2番目のパラメーターは、検出されるオブジェクトです。これは、最初に一致した要素のインデックスのみを出力します。私は単にIndexOfメソッドを直接使用してみました$s(例:$s.IndexOf($x)、しかし、これは私がまだ理解していない何らかの理由で失敗します-メソッドがそのオブジェクトに存在しないと主張しています。
(... )括弧内の式はの最初のパラメーターになりIndexOfます。
$s= $ sは、ユーザー入力を保存する変数になります。
(read-host)-split'' ユーザー入力を取得し、それを文字の配列に分割します。
|?{$_}によって生成される余分な空の配列要素を除外し-split''ます。
,(... )括弧内の式は、の2番目のパラメーターになりIndexOfます。
$x= $ sは、ユーザー入力からの最も低い偶数を格納する変数です。
$s|?{$_%2-eq0} $ sから偶数を引き出します。
|?{$_-gt0} ゼロを無効にします。
|sort 残りのオブジェクトをソートします。デフォルトの順序は昇順です。
|select -f 1 最初のオブジェクトを選択します。これは今では最も低い偶数桁になります。
,$x上記のコードは、最も低い偶数桁のインデックスを出力します。これにより、カンマが追加され、数字自体が出力されます。
ノート:
これは、おそらくルール4を少し引き伸ばしていることでしょう。偶数がない場合、出力には2番目の数字は含まれません。
また、入力に数値以外の要素が含まれている場合、これは終了しないエラーをスローします。スクリプトは引き続き実行され、適切な出力が提供されますが、実行$ErrorActionPreferenceする'SilentlyContinue'前に設定することをお勧めします。