プログラミングのお題スレ Part22 (854レス)
上下前次1-新
抽出解除 レス栞
561(15): デフォルトの名無しさん [] 2025/02/11(火) 10:54:21.93 ID:E5oVpL7o(1/5) AAS
お題
数列が入力されます
ニ番目に小さい数を出力してください
入力:4, 5, 1, 7, 1, 2, 8, 9, 2, 7
出力:2
563: 9 [sage] 2025/02/11(火) 14:53:15.78 ID:mMj2PIa8(1) AAS
>>561 Perl5
$h{$_} = $_ for 4, 5, 1, 7, 1, 2, 8, 9, 2, 7;
@s = sort keys %h;
print "$s[1]\n";
実行結果
~ $ perl 22_561_second.pl
2
Perl5.26以降に付属のList::Utilにはuniq関数があるのでそれを使えば:
use List::Util qw(uniq);
@s = uniq sort 4, 5, 1, 7, 1, 2, 8, 9, 2, 7;
print "$s[1]\n";
565(1): デフォルトの名無しさん [sage] 2025/02/11(火) 16:37:12.05 ID:WPoAkGuN(1) AAS
>>561 ruby
外部リンク:ideone.com
>>561 octave
外部リンク:ideone.com
>>561 c
外部リンク:ideone.com
566: デフォルトの名無しさん [sage] 2025/02/11(火) 16:40:21.13 ID:gFwXvlnz(1) AAS
>>561
#!ruby
puts $stdin.gets.chomp.split(",").map{|e| e.to_i}.uniq.sort[1]
568(1): デフォルトの名無しさん [sage] 2025/02/11(火) 17:48:30.95 ID:7RexIvi8(2/3) AAS
>>561 lisp
外部リンク:ideone.com
570(2): デフォルトの名無しさん [] 2025/02/11(火) 20:45:09.89 ID:hMHygfcC(1) AAS
>>561
R
外部リンク:ideone.com
C++
外部リンク:ideone.com
それぞれ3通りの方法で、大きなデータでの実行時間を比較
572: 565 [sage] 2025/02/11(火) 23:28:05.14 ID:qmej6t15(1) AAS
>>561 ocaml
外部リンク:ideone.com
>>561 java
外部リンク:ideone.com
591: デフォルトの名無しさん [sage] 2025/02/12(水) 19:12:16.26 ID:FZJ50oR3(1) AAS
>>561 lisp (sbcl)
外部リンク:ideone.com
>>561 lisp (clisp)
外部リンク:ideone.com
clispだと何故かsort版の方が速い
592: デフォルトの名無しさん [sage] 2025/02/12(水) 20:45:54.96 ID:JML0DDov(1) AAS
>>561 ruby
外部リンク:ideone.com
>>561 sqlite
外部リンク:ideone.com
593(2): デフォルトの名無しさん [] 2025/02/12(水) 22:44:39.40 ID:Qtl/TEf6(2/2) AAS
>>561 571
>>570のC++のf3をint型の最大値を含むデータにも対応させた。
C#にはint?型があるのですっきり書けるが、
外部リンク:ideone.com
C++ではまあまあすっきり書くにはintへのポインタを返すしかないか。
外部リンク:ideone.com
(該当値が複数の位置に存在する場合にそれらのうちのどれへのポインタを返すかについては
こだわらないものとする)
601: デフォルトの名無しさん [sage] 2025/02/13(木) 20:45:01.39 ID:KiG3F5Wd(1) AAS
>>561 c
外部リンク:ideone.com
>>594594(7): デフォルトの名無しさん [sage] 2025/02/13(木) 12:04:43.08 ID:KGk2Z9bM(1) AAS
お題:ランダムな数列から任意の並んでいる二つの数同士を足して、その二つの数の間に挿入せよ。
その新しい数が一桁ならそのまま挿入し二桁なら桁同士を足してその二桁の間に挿入せよ。
< 123456789 3 4
> 1237456789
(3+4=7)
< 123456789 6 7
> 123456143789
(6+7=13 1+3=4)
ruby
外部リンク:ideone.com
604: デフォルトの名無しさん [sage] 2025/02/13(木) 23:47:12.83 ID:bC7pFAVH(2/2) AAS
>>561 Rust
fn second_smallest<T: Copy + Ord>(input: &[T]) -> Option<T> {
use std::cmp::Ordering::{Equal, Greater, Less};
input
.iter()
.copied()
.fold(None, |state, t| match state {
Some((_t0, Some(t1))) if t >= t1 => state,
Some((t0, _)) => match Ord::cmp(&t, &t0) {
Less => Some((t, Some(t0))),
Equal => state,
Greater => Some((t0, Some(t))),
},
None => Some((t, None)),
})
.and_then(|(_t0, t1option)| t1option)
}
fn main() {
assert_eq!(second_smallest(&[4, 5, 1, 7, 1, 2, 8, 9, 2, 7, 1]), Some(2));
assert_eq!(second_smallest(&[1, 1, 1]), None);
assert_eq!(second_smallest(&[] as &[i32]), None);
}
621(3): デフォルトの名無しさん [] 2025/02/15(土) 21:06:37.89 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回しか実行されない
832(1): デフォルトの名無しさん [sage] 2025/09/06(土) 23:05:19.87 ID:Z/aFZPi6(1) AAS
>>561 scheme (chicken 4.13)
外部リンク:ideone.com
833(1): 832 [sage] 2025/09/07(日) 12:29:41.48 ID:O1zDlKW9(1/2) AAS
>>561 scheme (chicken 4.13)
外部リンク:ideone.com
・m1m2を不必要にリストにしてたのを廃止
834: 833 [sage] 2025/09/07(日) 14:22:59.56 ID:O1zDlKW9(2/2) AAS
>>561 scheme (chicken 4.13)
外部リンク:ideone.com
・letを自然な位置に移動
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 1.471s*