プログラミングのお題スレ Part22 (884レス)
上下前次1-新
613: 2025/02/15(土)01:01 ID:qzrI3kKZ(1) AAS
>>608 Rust
fn f(input: &str) -> String {
let mut output = String::new();
let mut pre_uppercase = None;
for char in input.chars() {
if Some(char) == pre_uppercase {
output.push(char.to_ascii_lowercase());
}
output.push(char);
pre_uppercase = char.is_ascii_uppercase().then_some(char);
省7
614(1): 2025/02/15(土)09:21 ID:XILc/8JX(1) AAS
>>608 ruby
外部リンク:ideone.com
>>608 dart
外部リンク:ideone.com
615(1): 614 2025/02/15(土)10:02 ID:UI50KRFJ(1) AAS
>>608 dart
外部リンク:ideone.com
616(2): 9 2025/02/15(土)10:36 ID:1WENuqRv(1/2) AAS
>>608 Perl5、肯定先読みと置換の小文字変換
s/([A-Z])(?=\1)/\1\l\1/g, print for <DATA>;
__DATA__
abcDDefGG
abcDDDefGGG
実行結果
C:\Home>perl 22_608_ins_l.pl
abcDdDefGgG
abcDdDdDefGgGgG
617: 9 2025/02/15(土)10:39 ID:1WENuqRv(2/2) AAS
AA省
618: 2025/02/15(土)10:40 ID:+yYMeR0h(1) AAS
>>594 >>608 lisp
外部リンク:ideone.com
619: 615 2025/02/15(土)13:20 ID:eC3jFbuY(1) AAS
>>608 java
外部リンク:ideone.com
>>616
_人人人人人人人人人人人人_
> 置換の小文字変換!? <
 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^ ̄
勉強になりました
620: 2025/02/15(土)21:05 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 ID:rssRTGdz(3/9) AAS
>>561
C++
外部リンク:ideone.com
C#のヌル許容型と同じ挙動のnullable型を自作し、>>593のC#のmin2関数をジェネリック化、
ポインタ参照化して移植した。
外部リンク:ideone.com
593のC++のmin2関数と実行速度を比較する¹と30%ほど遅い。文字列型や可変長数値型と
違って最大値が存在する固定長数値型では、それを利用するf593の方が良い。
──
¹ Microsoft C++では100回繰り返しテストが最適化され1回しか実行されない
622(1): 2025/02/15(土)21:52 ID:qa0m30Tb(1/4) AAS
>>621
最大値をundefined代わりに使ってはいけないと指摘があったのにまだ使っているのかいな
そのコードで入力数列がこうだった場合
vector<int> a = {IntMax - 1, IntMax};
2番目に小さい数として正解のintMaxを返さなければならない
623(1): 2025/02/15(土)22:00 ID:rssRTGdz(4/9) AAS
>>622
>>593のC++プログラムの実行結果を参照。入力数列にINT_MAXが含まれる場合でも問題ない。
624(1): 2025/02/15(土)22:09 ID:qa0m30Tb(2/4) AAS
>>623
それはm1とm2を間接にポインタで持つために遅くなっているf593()
m1とm2を直接に整数で持つため速いf3()はIntMaxに対応できていない
625(2): 2025/02/15(土)22:24 ID:rssRTGdz(5/9) AAS
>>624
>>621の速度比較テストに>>570のf3も追加
外部リンク:ideone.com
ポインタで持つf593との比で、整数で持つf570は6%速いだけ。一方、null許容型のf621は29%も遅い。
最大値が存在する型ではそれを利用する方が良いという結論に変わりはない。
626(1): 2025/02/15(土)22:29 ID:rssRTGdz(6/9) AAS
まあ、同じ値の要素が大量に存在する入力データではf570は遅くなるが、平均的な速度はf570の方が速い。
627: 2025/02/15(土)22:31 ID:rssRTGdz(7/9) AAS
>>626はf570じゃなくてf593だった。
628(1): 2025/02/15(土)22:42 ID:v2QOLp/q(1) AAS
f593でローカル変数へのポインタを返し得るのは如何かと
629: 2025/02/15(土)23:34 ID:rssRTGdz(8/9) AAS
>>628
返しえないでしょ。
630(1): 2025/02/15(土)23:46 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となり
両者を区別できない
631: 2025/02/15(土)23:47 ID:qa0m30Tb(4/4) AAS
>>625
あとvector扱うコードは倫理的に際どいかな
長さ0でないことを調べずに
いきなりint *m1 = &a[0], m2 = &y;
今回は長さ0の時に*m1をアクセスしないから論理的にギリセーフだけど際どい
そのへんのトリッキーさも含めて
(もしあれば)最小値も返す場合
(もしあれば)3番目の最小値も返す場合など
このIntMax方式は破綻すると思う
632: 2025/02/15(土)23:52 ID:rssRTGdz(9/9) AAS
>>630
>>621に書いた通り、C#のヌル許容型T? (Nullable<T>のエイリアス) の挙動に従っただけだから。
文句があるならMicrosoftに言ってくれ。
上下前次1-新書関写板覧索設栞歴
あと 252 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.034s