プログラミングのお題スレ Part22 (854レス)
上下前次1-新
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん
612(1): デフォルトの名無しさん [] 2025/02/15(土) 00:39:27.81 ID:rssRTGdz(1/9) AAS
>>608608(10): デフォルトの名無しさん [sage] 2025/02/14(金) 23:42:29.57 ID:PVqLPxMJ(1) AAS
お題:ランダムな英文字列が与えられる。隣り合う英文字が同じ大文字だった場合、その間にその大文字の小文字を挿入せよ
In < abcDDefGG
Out > abcDdDefGgG
PowerShell
function f($s)
{
-join $(
foreach ($i in 0..($s.length - 2)) {
$s[$i]
if ($s[$i] -ne $s[$i + 1]) {continue}
if ($s[$i] -lt [char]"A" -or $s[$i] -gt [char]"Z") {continue}
([string]$s[$i]).ToLower()
}
$s[$i + 1]
)
}
"abcDDefGG", "abcDDDfGG" |% {"$_ → $(f $_)"}
[実行結果]
abcDDefGG → abcDdDefGgG
abcDDDfGG → abcDdDdDfGgG
620: デフォルトの名無しさん [] 2025/02/15(土) 21:05:44.70 ID:rssRTGdz(2/9) AAS
>>612は文字列長が1文字の場合にバクがあった。PowerShellの0..-1は空(から)ではなく0, -1になるのが
原因 (Rの0:-1も同様)。修正するには、fの最初に if ($s.length -lt 2) {return $s} を挿入する。
621(3): デフォルトの名無しさん [] 2025/02/15(土) 21:06:37.89 ID:rssRTGdz(3/9) AAS
>>561561(15): デフォルトの名無しさん [] 2025/02/11(火) 10:54:21.93 ID:E5oVpL7o(1/5) AAS
お題
数列が入力されます
ニ番目に小さい数を出力してください
入力:4, 5, 1, 7, 1, 2, 8, 9, 2, 7
出力:2
C++
外部リンク:ideone.com
C#のヌル許容型と同じ挙動のnullable型を自作し、>>593のC#のmin2関数をジェネリック化、
ポインタ参照化して移植した。
外部リンク:ideone.com
593のC++のmin2関数と実行速度を比較する¹と30%ほど遅い。文字列型や可変長数値型と
違って最大値が存在する固定長数値型では、それを利用するf593の方が良い。
──
¹ Microsoft C++では100回繰り返しテストが最適化され1回しか実行されない
623(1): デフォルトの名無しさん [] 2025/02/15(土) 22:00:12.34 ID:rssRTGdz(4/9) AAS
>>622622(1): デフォルトの名無しさん [sage] 2025/02/15(土) 21:52:48.39 ID:qa0m30Tb(1/4) AAS
>>621
最大値をundefined代わりに使ってはいけないと指摘があったのにまだ使っているのかいな
そのコードで入力数列がこうだった場合
vector<int> a = {IntMax - 1, IntMax};
2番目に小さい数として正解のintMaxを返さなければならない
>>593のC++プログラムの実行結果を参照。入力数列にINT_MAXが含まれる場合でも問題ない。
625(2): デフォルトの名無しさん [] 2025/02/15(土) 22:24:28.09 ID:rssRTGdz(5/9) AAS
>>624624(1): デフォルトの名無しさん [sage] 2025/02/15(土) 22:09:09.66 ID:qa0m30Tb(2/4) AAS
>>623
それはm1とm2を間接にポインタで持つために遅くなっているf593()
m1とm2を直接に整数で持つため速いf3()はIntMaxに対応できていない
>>621の速度比較テストに>>570のf3も追加
外部リンク:ideone.com
ポインタで持つf593との比で、整数で持つf570は6%速いだけ。一方、null許容型のf621は29%も遅い。
最大値が存在する型ではそれを利用する方が良いという結論に変わりはない。
626(1): デフォルトの名無しさん [] 2025/02/15(土) 22:29:41.23 ID:rssRTGdz(6/9) AAS
まあ、同じ値の要素が大量に存在する入力データではf570は遅くなるが、平均的な速度はf570の方が速い。
627: デフォルトの名無しさん [] 2025/02/15(土) 22:31:16.05 ID:rssRTGdz(7/9) AAS
>>626はf570じゃなくてf593だった。
629: デフォルトの名無しさん [] 2025/02/15(土) 23:34:59.77 ID:rssRTGdz(8/9) AAS
>>628返しえないでしょ。
632: デフォルトの名無しさん [] 2025/02/15(土) 23:52:31.08 ID:rssRTGdz(9/9) AAS
>>630630(1): デフォルトの名無しさん [sage] 2025/02/15(土) 23:46:12.83 ID:qa0m30Tb(3/4) AAS
>>625
まずnullableのコードがおかしい
例えばoverload(op)のこれ
if (y.isNull) return false; \
return x op y.value; \
Nullだとfals eとなり
opの計算結果次第でもfal seとなり
両者を区別できない
>>621に書いた通り、C#のヌル許容型T? (Nullable<T>のエイリアス) の挙動に従っただけだから。
文句があるならMicrosoftに言ってくれ。
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 1.505s*