プログラミングのお題スレ Part22 (858レス)
上下前次1-新
抽出解除 レス栞
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
644(1): デフォルトの名無しさん [] 2025/02/17(月) 20:48:16.10 ID:2enU2rA/(2/2) AAS
正規表現置換なら、
function f($s)
{
$s -replace "[02468](?=[02468])", "$&0" -replace "[13579](?=[13579])", "$&1"
}
1回で済ますなら、
function f($s)
{
[RegEx]::Replace($s, "[02468](?=[02468])|[13579](?=[13579])", {$_ = $args[0].value[0]; "$_$($_ % 2)"})
}
648: デフォルトの名無しさん [] 2025/02/19(水) 21:30:14.30 ID:LKzHskwz(1) AAS
>>640640(10): デフォルトの名無しさん [sage] 2025/02/17(月) 13:08:08.60 ID:lz3iaMcC(1) AAS
お題:ランダムな数列が与えられる。隣り合う数字が偶数同士の時、あいだに0を。奇数同士の時は1を挿入し、それ以外は何も挿入しない
In < 123346
Out > 12313406
>>643-644の3つのfを上から順にf1, f2, f3とし、長い文字列を引数として呼び出したときの
実行時間を比較すると、
$s = -join (1..10000)
$t = 1..3 |% {(iex "measure-command {f$_ $s}").ticks}
$tmin = ($t | measure -min).minimum
1..3 |% {"f$_`: {0:0.00}倍" -f ($t[$_ - 1] / $tmin)}
[実行結果の一例]
f1: 34.78倍
f2: 1.00倍
f3: 14.93倍
大差でf2 < f3 < f1となった。インタプリタ言語のコード実行は遅いので、処理を自分で
書くほど遅くなり、ライブラリ関数等に丸投げすれば速くなることによる。
外部リンク:ideone.com
コンパイラ言語のC#で同様の比較をすると (PowerShellより速いので文字列を長くし、
f1の改良版としてStringBuilder使用のf4を追加した)、当然f4< f1 < f2 < f3になった。
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.037s