プログラミングのお題スレ Part15

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん2019/07/28(日) 19:39:57.54ID:832c/ukY
プログラミングのお題スレです。

【出題と回答例】
1 名前:デフォルトの名無しさん
  お題:お題本文

2 名前:デフォルトの名無しさん
  >>1 使用言語
  回答本文
  結果がある場合はそれも

【ソースコードが長くなったら】 (オンラインでコードを実行できる)
https://ideone.com/
http://codepad.org/
http://compileonline.com/
http://rextester.com/runcode
https://runnable.com/
https://code.hackerearth.com/
http://melpon.org/wandbox
https://paiza.io/

宿題は宿題スレがあるのでそちらへ。

※前スレ
プログラミングのお題スレ Part14
http://mevius.5ch.net/test/read.cgi/tech/1558168409/

0952デフォルトの名無しさん2019/11/13(水) 20:48:13.08ID:CMaH4qd1
>>941
C++ならSTLのequal_rangeを使えば、二分探索のコードを自前で書かずに済む。
https://ideone.com/KJ134u

この例の条件でしか判定しないなら、5つの定数値との比較にするのが一番簡単で
速そうだな。
https://ideone.com/ef553N

0953デフォルトの名無しさん2019/11/13(水) 21:39:03.09ID:Fqkv69gY
なんで順番に5回も比較してんの?

0954デフォルトの名無しさん2019/11/13(水) 21:47:59.14ID:kE3A4AyF
10回比較するわけにはいかないからでしょ

0955デフォルトの名無しさん2019/11/13(水) 21:53:11.46ID:RzCRvdkP
まずは199との比較では?
あとは範囲を絞ったテーブルとか

int全てをカバーするテーブルも
intが32bitな64bit環境なら一応は可能

0956蟻人間 ◆T6xkBnTXz7B0 2019/11/13(水) 22:09:59.79ID:SHPlbPC2
お題: 自動塗り絵。

白地に黒い線で図形が描かれているモノクロ画像が与えられる。
白い領域をそれぞれ適当な単色で塗りつぶせ。可能ならOpenCVを使ってもいい。

0957デフォルトの名無しさん2019/11/13(水) 22:51:59.05ID:RzCRvdkP
ペイントブラシ + スクリプト
で出来そう

0958デフォルトの名無しさん2019/11/13(水) 23:03:48.70ID:CMaH4qd1
>>955
「一番速い」ではなく「一番簡単で速い」だからね。可読性とかバグの
混入しにくさとかも考えると、順番に5回比較するのが一番良いだろ。
特に https://mevius.2ch.net/test/read.cgi/tech/1573214616/3 への
回答としては、最も適している。

0959デフォルトの名無しさん2019/11/13(水) 23:40:49.81ID:RzCRvdkP
一番速くもないし一番簡単でもない

一番「簡単で速い」?
簡単と速いは相反するので一番なんて無い

0960デフォルトの名無しさん2019/11/13(水) 23:42:10.65ID:RzCRvdkP
凡人が安易に「一番」とか言わない方が良いよ

0961デフォルトの名無しさん2019/11/14(木) 01:06:49.29ID:4AhPUV/Y
俺が一番

0962デフォルトの名無しさん2019/11/14(木) 06:15:22.98ID:BnXMw1SX
>>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

0963デフォルトの名無しさん2019/11/14(木) 09:31:40.70ID:baSi3t2K
一番簡単で速いってなんだよ
一番簡単かつ一番速いなら一番速いって言えばいいだけだろ
ってC++の人かよ

0964デフォルトの名無しさん2019/11/14(木) 12:32:18.21ID:WVE0j82D
一番に過剰反応してるみなさんwww

0965デフォルトの名無しさん2019/11/14(木) 13:14:51.59ID:/NpdgKVA
一番とか最も適しているとか
頭が悪いやつが良く言うセリフ

0966デフォルトの名無しさん2019/11/14(木) 13:27:39.39ID:isT1FYJS
それな
あと「頭悪いやつがよく言う」ってのも頭悪いやつよく言うセリフだわ

0967デフォルトの名無しさん2019/11/14(木) 15:14:06.76ID:1CVvHcAw

0968デフォルトの名無しさん2019/11/14(木) 16:23:41.28ID:bZ2yXVXr
>>963
俺、よくmakehoge書いてる人だけど、その二分探査書いた人は別人。
偶に、俺じゃない人がC++書いてくことがある。
まぁ、俺も貢献度が高いかというと解らんけど。

0969デフォルトの名無しさん2019/11/14(木) 22:16:17.11ID:ya/1xYDt
>>963
「一番簡単で速い」は「一番簡単」かつ「速い」という意味だよ。
一番簡単なコードを書いてみて充分に速ければ、さらに手を加える必要はないってこと。
昨今はCPUが速いので、簡単なコードをささっと書いて終わりにできる場合が多いし、
Cを使うまでもなくRやPythonなどでも実用に耐える。処理条件が変わって速度に
不満が生じたときだけ、書き直せば良い。

0970デフォルトの名無しさん2019/11/14(木) 22:21:25.20ID:KjmBL3+S
配列をキャッシュに乗せるだけで早くなる
配列にするだけで早くなる

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

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

0972デフォルトの名無しさん2019/11/15(金) 06:08:37.20ID:/dDy1LQy
>>969
なぜ
一番簡単
だと思ったのか

0973デフォルトの名無しさん2019/11/15(金) 06:11:01.44ID:/dDy1LQy
中途半端に最適化するくらいなら
意味通りをそのまま記述した方が良いよ

トリッキーなマクロとか使わないで普通にループでいいし

0974デフォルトの名無しさん2019/11/15(金) 07:24:03.38ID:YlbiRAmO
>>941 J

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

a =: 98 100 198 200 250 298
a f 199
198

0975デフォルトの名無しさん2019/11/15(金) 08:39:52.88ID:zGnI3whh
>>491 python
整数の範囲を 1000000000 にして、リストのサイズをその1/10の 100000000 にしてやった物

https://ideone.com/JL4ZtG

0976デフォルトの名無しさん2019/11/15(金) 08:46:57.30ID:pd2oXw5y
お題はどれ?

0977デフォルトの名無しさん2019/11/15(金) 10:34:11.71ID:zGnI3whh
>>975 は、>>941 のお題の間違い。

0978デフォルトの名無しさん2019/11/15(金) 10:34:39.11ID:kGxI2dsU
>>972
もっと簡単なのがあると言うなら提示すりゃいいだけ

0979デフォルトの名無しさん2019/11/15(金) 10:37:36.49ID:Dg2kwGpJ
そんなら一番簡単なんて言ったもん勝ちやんアホクサ

0980デフォルトの名無しさん2019/11/15(金) 11:19:40.93ID:y6ix6SXf
>>979
どういうこと?

0981デフォルトの名無しさん2019/11/15(金) 13:20:35.16ID:pd2oXw5y
発言者に証明責任がある
当たり前

0982デフォルトの名無しさん2019/11/15(金) 13:22:00.36ID:pd2oXw5y
簡単じゃない部分は書いたけどね

0983デフォルトの名無しさん2019/11/15(金) 13:25:38.61ID:pd2oXw5y
本当に一番簡単だと思ってるなら
非常に頭が弱い
というしかない

0984デフォルトの名無しさん2019/11/15(金) 16:04:20.43ID:y6ix6SXf
証明責任が

0985デフォルトの名無しさん2019/11/15(金) 18:45:17.65ID:YlbiRAmO
>>941 Ruby

def f(a,x)
a.min_by{|v|(v-x).abs}
end

0986デフォルトの名無しさん2019/11/15(金) 22:18:10.52ID:1XAUh39O
>>982
ひょっとして>>973か?
頓珍漢な指摘でドヤられても困るw

0987デフォルトの名無しさん2019/11/16(土) 07:59:12.18ID:PKd8UO5d
お前ちょっとしつこいよ
二人ともどっか行ってくれ

0988デフォルトの名無しさん2019/11/16(土) 09:38:56.12ID:R3eXoa4h
お題: 標準入力から読み取った文字列に対して変換候補の単語を表示するスクリプトを作れ
変換候補は https://www.cs.cmu.edu/~rgs/alice-table.html のテキストを元にし、英文のみの対応とする

例:
in < on
out > ['on', 'once', 'one', 'only']
in < we
out > ['well', 'went', 'were']

0989デフォルトの名無しさん2019/11/16(土) 09:39:44.99ID:R3eXoa4h
>>988
URL訂正: https://www.cs.cmu.edu/~rgs/alice-I.html

099010-112019/11/16(土) 11:43:03.30ID:nyexrMnj
Mathematica
ビットテーブル使ったからいまいち

f[x_]:=Round[Exp[x*49/2^9]*10]+Mod[BitShiftRight[8518656,x],2]

f[Range[0,23]]
{10,11,12,13,15,16,18,20,22,24,27,30,33,36,39,43,47,51,56,62,68,75,82,91}

0991デフォルトの名無しさん2019/11/16(土) 13:01:44.00ID:9Ne+J8hx
>>988-989 PowerShell
$Words = ([RegEx]"\w+").Matches((Invoke-WebRequest 'https://www.cs.cmu.edu/~rgs/alice-I.html').Content) | Select-Object -ExpandProperty 'Value' | Sort-Object -Unique
'on', 'we' | %{ "'$_' => ['$($Words -cmatch "^$_.*$" -join ''', ''')']" }
--
'on' => ['on', 'once', 'one', 'only']
'we' => ['well', 'went', 'were']

0992蟻人間 ◆T6xkBnTXz7B0 2019/11/16(土) 14:12:37.63ID:wI2tFyzM
そろそろ次スレ

0993デフォルトの名無しさん2019/11/16(土) 20:00:42.94ID:ycfnvugG
>>987
誤解がないように一応言っておくが、同一人物なのは943, 952, 958, 969, 971, 993だけで、
978や986は別人ね。

0994デフォルトの名無しさん2019/11/16(土) 20:11:13.21ID:SjIOWxyj
どうでもいい
匿名掲示板

0995デフォルトの名無しさん2019/11/16(土) 22:09:51.31ID:ByTTIV4m

0996デフォルトの名無しさん2019/11/17(日) 09:01:36.94ID:xqEdXdr6
次スレ

プログラミングのお題スレ Part16
http://mevius.5ch.net/test/read.cgi/tech/1573948822/

09979902019/11/17(日) 15:37:45.58ID:WMPUR+bY
BitGet使うんだった(Mathematicaに慣れてないのばればれ)
(* 49/2^9 = 0.095703125 *)
f[x_]:=Round[Exp[x*0.095703125]*10]+BitGet[8518656,x]

もう少し頑張っても16ビット以内にビットテーブルは縮小出来ず…。
(* 785/2^13 = 0.0958251953125 *)
f[x_]:=Round[Exp[x*0.0958251953125]*10]+BitGet[130048,x]

0998デフォルトの名無しさん2019/11/21(木) 12:06:42.30ID:p+kY48sO
>>941 julia
a=[98,100,198,200,250,298]
f(a,x)=a[argmin(map(abs ,a.-x))]
f(a,50)

0999デフォルトの名無しさん2019/11/21(木) 17:12:54.10ID:x85mexbT
>>988-989 Squeak Smalltalk。関数で。

| contents words fn |
contents := (HTTPClient httpGet: 'https://www.cs.cmu.edu/~rgs/alice-I.html') contents.
words := (contents replaceAll: Character lf with: Character space; asTextFromHtml) asString subStrings: ' !"''()*,-.:;?`'.
words := words asSet asSortedArray.

fn := [:in | words select: [:word | word beginsWith: in]].
fn value: 'on'. "=> #('on' 'once' 'one' 'only') "
fn value: 'we'. "=> #('well' 'went' 'were') "

"for Pharo => http://ws.stfx.eu/DK48GF5ZH8SF "

1000蟻人間 ◆T6xkBnTXz7B0 2019/11/21(木) 20:01:07.49ID:KAM+noJg
はかい
こうせん
せんもんがっこう

10011001Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 116日 0時間 21分 10秒

10021002Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php

レス数が1000を超えています。これ以上書き込みはできません。