プログラミングのお題スレ Part22 (831レス)
上下前次1-新
抽出解除 レス栞
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
561(12): 02/11(火)10:54 ID:E5oVpL7o(1/5) AAS
お題
数列が入力されます
ニ番目に小さい数を出力してください
入力:4, 5, 1, 7, 1, 2, 8, 9, 2, 7
出力:2
563: 9 02/11(火)14:53 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;
省1
565(1): 02/11(火)16:37 ID:WPoAkGuN(1) AAS
>>561 ruby
外部リンク:ideone.com
>>561 octave
外部リンク:ideone.com
>>561 c
外部リンク:ideone.com
566: 02/11(火)16:40 ID:gFwXvlnz(1) AAS
>>561
#!ruby
puts $stdin.gets.chomp.split(",").map{|e| e.to_i}.uniq.sort[1]
568(1): 02/11(火)17:48 ID:7RexIvi8(2/3) AAS
>>561 lisp
外部リンク:ideone.com
570(2): 02/11(火)20:45 ID:hMHygfcC(1) AAS
>>561
R
外部リンク:ideone.com
C++
外部リンク:ideone.com
それぞれ3通りの方法で、大きなデータでの実行時間を比較
572: 565 02/11(火)23:28 ID:qmej6t15(1) AAS
>>561 ocaml
外部リンク:ideone.com
>>561 java
外部リンク:ideone.com
591: 02/12(水)19:12 ID:FZJ50oR3(1) AAS
>>561 lisp (sbcl)
外部リンク:ideone.com
>>561 lisp (clisp)
外部リンク:ideone.com
clispだと何故かsort版の方が速い
592: 02/12(水)20:45 ID:JML0DDov(1) AAS
>>561 ruby
外部リンク:ideone.com
>>561 sqlite
外部リンク:ideone.com
593(2): 02/12(水)22:44 ID:Qtl/TEf6(2/2) AAS
>>561 571
>>570のC++のf3をint型の最大値を含むデータにも対応させた。
C#にはint?型があるのですっきり書けるが、
外部リンク:ideone.com
C++ではまあまあすっきり書くにはintへのポインタを返すしかないか。
外部リンク:ideone.com
(該当値が複数の位置に存在する場合にそれらのうちのどれへのポインタを返すかについては
こだわらないものとする)
601: 02/13(木)20:45 ID:KiG3F5Wd(1) AAS
>>561 c
外部リンク:ideone.com
>>594 ruby
外部リンク:ideone.com
604: 02/13(木)23:47 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))),
省12
621(3): 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回しか実行されない
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.046s