[過去ログ] プログラミングのお題スレ Part15 (1002レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
941
(13): 2019/11/12(火)05:31 ID:oeG9wEYf(1) AAS
お題

スレ立てるまでもない質問はここで 152匹目
2chスレ:tech
の3番の問題を勝手に解く
943: 2019/11/12(火)21:37 ID:+gLjUv3x(1) AAS
>>941
処理データ量が少なく計算効率を考慮しなくて良いなら、Rで簡潔に書ける。
外部リンク:ideone.com

効率が求められるなら、Cで二分探索の変形版だな。
外部リンク:ideone.com
945: 2019/11/13(水)04:07 ID:eXHRJefh(1) AAS
>>941 Pharo/Squeak Smalltalk

| fn |

fn := [:m |
| table |
table := #(98 100 198 200 250 298).
table detectMin: [:x | (x - m) abs]
].

fn value: 50. "=> 98 "
fn value: 195. "=> 198 "
946: 2019/11/13(水)14:07 ID:9sxFrKBI(1) AAS
>>941
外部リンク:ideone.com
C++。多分動いてるけど、境界線系のエラーハンドリングは適当。
948: 2019/11/13(水)18:24 ID:utJBi2wY(1) AAS
>>941 Lua
function f(a, x)
local res = a[1]
for i = 2, #a do
if math.abs(res - x) > math.abs(a[i] - x) then
res = a[i]
end
end
return res
end
950: 2019/11/13(水)20:28 ID:6mLuLK4e(1) AAS
>>941 octave
外部リンク:ideone.com
952: 2019/11/13(水)20:48 ID:CMaH4qd1(1/2) AAS
>>941
C++ならSTLのequal_rangeを使えば、二分探索のコードを自前で書かずに済む。
外部リンク:ideone.com

この例の条件でしか判定しないなら、5つの定数値との比較にするのが一番簡単で
速そうだな。
外部リンク:ideone.com
962: 2019/11/14(木)06:15 ID:BnXMw1SX(1) AAS
>>941 Io
f:=method(a,x,
a map(v,list((v-x)abs,v))min last
)
d:=list(98,100,198,200,298)
f(d,120) println
実行結果
100
967: 2019/11/14(木)15:14 ID:1CVvHcAw(1) AAS
>>941 python

外部リンク:ideone.com
971: 2019/11/14(木)23:43 ID:ya/1xYDt(2/2) AAS
>>970
>>941の最も近い値を求める処理(Aと呼ぶ)だけを複数回連続して行う場合はそうだが、
間に別の処理(Bと呼ぶ)がたくさん入る場合はキャッシュから外れるかも知れないし、
AよりもBの方で相対的にだいぶ長い時間がかかっているならば、Aを高速化する
意味はない。

Aを簡単に書き終え、Bを書き進めてプログラム全体を完成させ、各部分の実行時間を
デバッガで分析し、Aを高速化する必要があるか判定するのが効率的な開発方法。
必要なときだけAを書き直してみて、元のAと実行時間を比較し、顕著に速い場合だけ
採用する。あまり変わらない場合は元の簡単な方に戻す。
974: 2019/11/15(金)07:24 ID:YlbiRAmO(1/2) AAS
>>941 J

f =: 4 : 0
{. x /: | x - y
)

a =: 98 100 198 200 250 298
a f 199
198
977: 2019/11/15(金)10:34 ID:zGnI3whh(2/2) AAS
>>975 は、>>941 のお題の間違い。
985: 2019/11/15(金)18:45 ID:YlbiRAmO(2/2) AAS
>>941 Ruby

def f(a,x)
a.min_by{|v|(v-x).abs}
end
998: 2019/11/21(木)12:06 ID:p+kY48sO(1) AAS
>>941 julia
a=[98,100,198,200,250,298]
f(a,x)=a[argmin(map(abs ,a.-x))]
f(a,50)
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.033s