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

■ このスレッドは過去ログ倉庫に格納されています
2018/01/01(月) 11:15:04.40ID:2Vr1CPKy
プログラミングのお題スレです。

前スレ
プログラミングのお題スレ Part9
https://mevius.5ch.net/test/read.cgi/tech/1480579110/

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

2 名前:デフォルトの名無しさん
  >>1 使用言語
  回答本文

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

宿題は宿題スレがあるのでそちらへ。
161111
垢版 |
2018/01/30(火) 13:56:11.56ID:Hqo+QOWq
>>160
問題の意味がわからない。
162デフォルトの名無しさん
垢版 |
2018/01/30(火) 14:25:08.29ID:KYTb3auw
XY平面上に適当なサイズの円をおいたとき、
その円周上でX座標、Y座標もともに整数となる点の個数が定まる。
たとえば、中心(0,0)で半径1の円ならば、整数点は4のはず。(1,0) (-1,0) (0,1) (0-,1)
163デフォルトの名無しさん
垢版 |
2018/01/30(火) 14:43:14.34ID:KYTb3auw
しかし、x^2 + y^2 = 1
が4点の最小半径ではなく、

(x-0.5)^2 + (y-0.5)^2 = 0.5 
は、(0,0) (1,0) (0,1) (1,1)で成り立つのでこっちのほうが小さい半径。
2018/01/30(火) 17:06:36.99ID:4rQPa5qI
その条件だとN=1の時の正しい答えが分からないので俺には無理だ
2018/01/30(火) 18:24:23.70ID:BKgDyTE/
1はさすがに除外だろ
適当な3点で円作って、交点の座標調べていくくらいしか思いつかんわ
166愛知人
垢版 |
2018/01/30(火) 18:40:10.88
お題:IPアドレスのリスト(改行区切り)をホスト名のリストに変換せよ
167愛知人
垢版 |
2018/01/30(火) 19:02:43.92ID:nQQmpnBb
ネットつながるのパいざだけでワロタ
168111
垢版 |
2018/01/31(水) 01:37:53.83ID:Mw3vWzBx
>>166
Java
https://paiza.io/projects/gmdnr--vMsOdJg4mgYPVWg
2018/01/31(水) 02:49:17.63ID:Mw3vWzBx
>>166
Perl
https://paiza.io/projects/i-FzOG_EexLNXTX2_QYEpA
2018/01/31(水) 03:29:20.85ID:6DbHoJ9J
C++
2018/01/31(水) 03:30:11.21ID:6DbHoJ9J
う。C++には標準ネットワークライブラリが無いので環境依存になる。
そして俺はLINUXしらない。
2018/01/31(水) 04:17:16.49ID:/WNIOTt0
nodejs
var odai = `
216.58.197.14
98.139.180.180
`;
var out = [];
odai.trim().split`\n`.forEach(ip => dns.reverse(ip, (err, hostnames) => {
out.push(hostnames[0]);
}));
out.join`\n`;
2018/01/31(水) 13:04:01.66ID:tcQ8gYGT
名前の解決には DNS NIS WINS hostsファイルの4種類で行うこと
という条件付けたらどの言語使うのが簡単なんだろう
2018/01/31(水) 14:12:55.10ID:OaylDx9I
>>160
昔やってた(コード貼らずに計算結果だけスレに貼ってた)よ。
2年半くらい前の書き散らしたコード、見てもよーわからんくなってる。
175デフォルトの名無しさん
垢版 |
2018/02/02(金) 00:14:41.12ID:1WRiv4Qn
>>147
Rubyで。
N=11が限界みたいだ。

N = 11
org_ary = (1..N).to_a
wrk_ary = org_ary.dup

cnt = 0
while (wrk_ary = wrk_ary.shuffle) != org_ary
cnt += 1
end
p cnt

# 実行結果
# ruby odai-10-147.rb 17.10s user 0.15s system 96% cpu 17.906 total
# 22093802
# ruby odai-10-147.rb 35.19s user 0.27s system 98% cpu 35.950 total
# 6677838
# ruby odai-10-147.rb 10.64s user 0.11s system 96% cpu 11.170 total
# 26014838
2018/02/02(金) 07:34:54.92ID:/o1efu5t
>>147 ruby
1分以内ならN=12が限度かと

N=ARGV.first.to_i
m=(1..N).reduce(:*)
p (1..1.0/0).each{|i|rand(m).zero?&&(break i)}
2018/02/02(金) 11:55:37.20ID:yvAhkhAB
>>175-176
どちら様も参加してくれてありがとう。サンキュー。

>>175 の試行回数は参考になるな。
N=12位が現実的か。ふーん。
ベンチマーク的に言って結構できるなーって感想だけど、実用には程遠いな。
コンピュータもまだまだやな。

面白いね。
178111
垢版 |
2018/02/06(火) 18:09:43.58ID:f/L9N2Qc
お題:数独を解くプログラム

問題の入力は凝ってもいいけどテキストをファイルや標準入力から読んでもよい。
テキストファイルで数が分かっている所はその数字、分かっていない所は*にして9桁9行で入れとくとかね。

これもほんのちょっと難しいだけの初心者向けお題かな。
2018/02/06(火) 19:36:44.66ID:HIHjrXQm
NP完全問題って回答が似たり寄ったりになるよね
2018/02/06(火) 19:38:56.97ID:CbvV7VOe
うーん、SMTソルバ!w
2018/02/06(火) 23:49:05.88ID:SGfj8ZmY
>>178
過去ログに俺の書いたやつあるよ。
2018/02/07(水) 10:41:58.75ID:XQxF/gRF
数独は、各マスに候補となる数字のテーブル作って、縦横に重複してる数字を消して行き、残った一つを確定するって作業を繰り返すだけの処理で完成さ。
2018/02/07(水) 11:03:49.05ID:Fs+ewjw+
>>182
それで済むのは初級問題だけ
2018/02/07(水) 11:12:34.29ID:XZkgmMto
https://ideone.com/mtcLac
昔書いたやつ。発掘してきた。もう覚えてないからバグあっても治せん。
2018/02/07(水) 17:52:17.81ID:9l0mg5Zf
>>178 Ruby
https://ideone.com/YRslIS
2018/02/07(水) 21:06:46.20ID:bBRbF5k8
>>185ってめっちゃ短いけどどういうアルゴリズムなん?
2018/02/07(水) 21:08:13.86ID:4MElfpHe
buruto fosu
2018/02/07(水) 22:16:04.98ID:XQxF/gRF
>>183
上級問題対応するなら、仮盤面作って総当たり戦で解が出るまで繰り返してあげればいいんじゃね?
当然、あるマス目に入る数字は幾つかに絞られてるから無駄にはならない。
2018/02/07(水) 22:19:58.39ID:XQxF/gRF
>>186
3×3のマス目には1から9の値は一つしか入らないからってのと、
縦横全体も数字は重複しないってルールだけでぶん回してる感じ?
190111
垢版 |
2018/02/08(木) 03:00:07.95ID:FQ2Hecmn
>>178
自分で作ってみた。Kotlin。
https://paiza.io/projects/xnR6_Wgd7gKcC1jW__QBxw
やり方は同じだな。再帰で総当たりしてるだけ。

というか、これに関して他にもっと良い方法あるのかな?
191111
垢版 |
2018/02/08(木) 03:10:18.15ID:FQ2Hecmn
編集ミスして消し忘れた部分を修正したりほんのちょっと記述を変えて無駄をなくした。
2018/02/08(木) 12:00:24.59ID:LqQGT0cW
>>186
すでに指摘されてるけど、縦横3*3で重複無しルールにのみ基づき全探索
ttps://gigazine.net/news/20100822_hardest_sudoku/
上にある世界一難しい(らしい)数独も3秒くらいで解けるし余計な枝刈りは不要かなと
2018/02/08(木) 14:18:21.56ID:NgH9M/Tg
>>184 つかって >>192 解いてみた。
i6700のスカイレークでリリースビルドで2秒くらいやった。
解法がバックトラックで十分だからバリエーションでないね。
2018/02/09(金) 12:41:19.10ID:TwjeAAZ1
find!!
145327698
839654127
672918543
496185372
218473956
753296481
367542819
984761235
521839764

答えこれのやつでしょ?

core2のノートで>>184の使って0.154秒だったけど
6年前に自分が書いたやつでもやってみたら0.011秒だった
それ遅すぎるような気がするけどこっちが何か間違ってるのかな
2018/02/09(金) 16:11:55.97ID:5reHnMoL
>>194
さぁ、>>184が色々余計なことしてる可能性はなくもない。
答え出ればいいだけだだから余計な枝狩りやってるかも。
2018/02/09(金) 16:15:21.82ID:5reHnMoL
あ、ちがうわ。

>>194
VS上でやってるから余計なプロセス動いてたかも。ファントム関係ってことはないと思うけど。
2018/02/09(金) 16:29:04.59ID:5reHnMoL
https://ideone.com/NqxATw
これ見る限りうちがおかしいな。なんでだろ。
198111
垢版 |
2018/02/09(金) 21:22:00.28ID:2uCfWfAn
やっぱ数独はここの常連には簡単すぎたかな。
じゃあ枢動の問題作るプログラムはどうかな?
もちろんちゃんと解ける問題じゃないとだめだよw
2018/02/09(金) 21:23:02.19ID:2uCfWfAn
ごめん。変換ミス。数独の問題な。
2018/02/09(金) 21:24:13.83ID:5reHnMoL
>>198
適当に数字置いてソルバーに解かせて歯抜けにすればいい。
201111
垢版 |
2018/02/09(金) 21:29:08.23ID:2uCfWfAn
>>200
まあそうなんだよな
2018/02/09(金) 21:42:40.35ID:oBTDEK03
解が複数あるかどうかまで調べなあかんやろ?
2018/02/09(金) 21:47:43.12ID:5reHnMoL
>>202
自分のソルバーは重解対応。
2018/02/09(金) 23:29:19.09ID:vnftmyZB
理詰めで解ける難易度の高い問題を作るのは難しいんじゃないかな?
2018/02/09(金) 23:34:37.03ID:4MNBrsaS
理詰めっていってもよくある解放は特殊な場合の背理法に過ぎないからなぁ
背理法アリなら何でも解けちゃうしね
2018/02/10(土) 01:03:55.15ID:7RdjB5XB
https://ideone.com/4gJj7c
C++。やっつけで作ってみた。
ソルバー指向の出題システム。答え合わせ付き。
なんか若干バグってる気がする。
ユニークしてないのになんか答えの数が合わない。
2018/02/10(土) 01:14:04.93ID:7RdjB5XB
あ、修正した。
2018/02/10(土) 01:15:50.01ID:7RdjB5XB
あれ?二度手間してるか?
2018/02/10(土) 01:26:03.91ID:7RdjB5XB
バージョンアップ。これで完成。
2018/02/10(土) 01:51:14.02ID:7RdjB5XB
https://ideone.com/A2t0QO
C++。出題部を複雑化したバージョン。
もう手を入れるところないやろ。
2018/02/10(土) 02:20:45.32ID:7RdjB5XB
長くなっちゃった。。。そーりー。
2018/02/10(土) 17:24:55.37ID:7RdjB5XB
>>198
>>210 みたいなのはおkなの?
反応なくて寂しい・・・。
2018/02/10(土) 17:53:13.03ID:be1wK+Hh
難易度とか、手で解いたときの楽しさみたいな設定
2018/02/10(土) 17:54:30.37ID:7RdjB5XB
>>213
それは、俺自力で数独解いたことないから手加減がわからない。
2018/02/10(土) 18:15:22.72ID:7RdjB5XB
っていうかさ、評価聞きたいのにさらに欲求出されたらやる気なくなる。
守銭奴か。
2018/02/10(土) 18:52:43.33ID:ub6WaAtI
つ強リンク弱リンク
2018/02/10(土) 19:09:24.36ID:7RdjB5XB
ん?
2018/02/10(土) 19:12:44.97ID:7RdjB5XB
難易度で言うなら、数字消すときに何個消すかで対応できると思う。
初心者用に5個消すとか。楽しさとかは俺が理解してない。
2018/02/10(土) 19:17:06.37ID:be1wK+Hh
守銭奴の意味くらい調べて使えよ
あと、解いたこともないパズルを作るときに難易度とかなんの疑問もわかなかったのか
2018/02/10(土) 19:18:52.78ID:be1wK+Hh
あと評価は、難易度設定機能がないから低評価だ
2018/02/10(土) 19:21:18.78ID:7RdjB5XB
>>220
そこまで言うなら見本見せて。
おれはプログラムのお題を解いただけだからな。
2018/02/10(土) 19:33:36.98ID:7RdjB5XB
もしくは難易度というものを俺がわかるように説明して。
2018/02/10(土) 20:31:11.58ID:7RdjB5XB
遅い。待ちくたびれた。待ちくたびれた。
224111
垢版 |
2018/02/10(土) 20:44:37.27ID:l9ZzjyKP
>>212
え?いいんじゃないの?ていうか、これといった制限もないし、基本的に自分でこれで良いと思えばそれで良い。
自分で気に入らないならまた作り直せば良いじゃない。誰かに依頼されてやてる仕事じゃないんだし誰かと競っているわけでもないし。
自己満足を徹底的に追及すれば良い。
2018/02/10(土) 20:48:42.43ID:7RdjB5XB
>>224
ほい。了解。サンキュー。
2018/02/10(土) 20:52:13.46ID:7RdjB5XB
後は、>>220が自己評価マックスの製品を見せてくれるだけだな!
2018/02/10(土) 21:04:40.26ID:BVqOrgag
難度設定するとなると一般的な解法を実装して逆算的に作っていくしかないのかな
構成的に問題作るのは無理だと思うので
2018/02/10(土) 21:28:50.36ID:7RdjB5XB
>>227
難易度とは何ぞやってところがまず曖昧だからね。
自分のソルバーはまず正解を作って数字を消してるんだけど、消す数を調整しても難易度には寄与するし。
2018/02/10(土) 21:31:17.41ID:7RdjB5XB
40個くらい消したあたりが一番やりがいあるとおもう。
230恥人
垢版 |
2018/02/10(土) 21:52:20.78
顔真っ赤 w
231111
垢版 |
2018/02/10(土) 22:09:29.40ID:l9ZzjyKP
よくわからんのだが数独の初期配置の最小個数は17個と書いてある。
https://ja.wikipedia.org/wiki/%E6%95%B0%E7%8B%AC#%E6%9C%80%E5%B0%91%E5%80%8B%E6%95%B0
ということで17個残したやつは難易度が最も高いってことにしていいんじゃないかな。
2018/02/10(土) 22:14:17.65ID:BVqOrgag
手元の難度が五段階に分かれている数独の問題3万問を解析してみた
必ずしも初期配置の数字が少ない程難しいわけではない

0~1:基本ルールのみで解ける
2~3:各マスに候補となる数字をすべて書き上げればあとは簡単な推論で解ける
4 :より高度な解法(知らないけど)、または唯一解の仮定、背理法が必要
2018/02/10(土) 22:16:39.20ID:7RdjB5XB
>>230
何この人。
2018/02/10(土) 22:17:42.88ID:7RdjB5XB
>>231
それで解が一つしかないとかだと地獄だな。

>>232
おもしろいね。
2018/02/10(土) 22:22:09.39ID:BVqOrgag
>>234
>>231は解が一つの場合でしょ
複数解ありなら初期配置の下限は0個だよ
2018/02/10(土) 22:22:37.52ID:7RdjB5XB
暇なので数字が17個で解が1個しかないやつ検索中。
モンテカルロだから、滅茶苦茶時間かかる。
2018/02/10(土) 22:23:19.70ID:7RdjB5XB
>>235
なるほど。
2018/02/10(土) 22:36:25.38ID:7RdjB5XB
なんかやけにメモリ使うなぁと思ったら、重解ありすぎて帰ってこない。
これはちょっと大変だ。やめようそうしよう。
239デフォルトの名無しさん
垢版 |
2018/02/10(土) 22:37:25.32ID:GUL3HAPz
恥ずかしいからって連投するなよ〜
2018/02/10(土) 22:39:06.49ID:7RdjB5XB
908400015
000500302
070009060
007030100
800100000
040000200
300906000
000052000
000800070

25こならすぐできた。けどまぐれだったようだ。
2018/02/10(土) 22:41:41.77ID:7RdjB5XB
100000089
000000540
000200100
080000430
007060200
902000050
000380010
700009300
800015000

25個。
今日はこの辺にしておくかな。
2018/02/10(土) 22:45:36.55ID:7RdjB5XB
>>239
恥ずかしいとかそういう感情がプログラマに必要だと思うか?
2018/02/10(土) 23:37:33.83ID:1m6B/QOJ
何がプログラマだよ
おめー職業マじゃねえだろどう見ても
244デフォルトの名無しさん
垢版 |
2018/02/10(土) 23:53:44.05ID:awPCTv2/
日記帳かよ。
2018/02/11(日) 00:26:02.85ID:bT0HWvJB
>>233
ID消す人だから、そのへんを察してあげて
246恥人!id:ignore
垢版 |
2018/02/11(日) 00:29:38.89ID:/hLQhQLG
またおまえか。
ビットコイン払わなくてすまんな。
247デフォルトの名無しさん
垢版 |
2018/02/11(日) 00:38:54.77ID:FGqSn0+i
>>242
なにいってんだこいつ。
248デフォルトの名無しさん
垢版 |
2018/02/11(日) 00:47:15.75ID:8sAB3GY2
◆QZaw55cn4c は乞食だから察してあげて!
249デフォルトの名無しさん
垢版 |
2018/02/11(日) 00:50:54.48ID:wricZJSd
乞食とは?
250デフォルトの名無しさん
垢版 |
2018/02/11(日) 01:00:03.59ID:ZMqERLQD
あのスレもう落ちてるんだな
251デフォルトの名無しさん
垢版 |
2018/02/11(日) 01:00:49.06ID:ZMqERLQD
普通にまだあったわ
2018/02/11(日) 01:03:51.43ID:ucUF/ExX
>>243
アマチュアでプログラマを名乗ってはいけない決まりがあったとは初めて知った。
ソースくれ。
2018/02/11(日) 01:05:26.55ID:ucUF/ExX
暇だったので、マルチスレッド化した。
ポンコツ具合が増えただけだった。

しかしまぁ、欲もこのタイミングでこんなに沸いたものだな。
自演乙。
2018/02/11(日) 01:05:49.94ID:bT0HWvJB
>>252
アマチュアとプロとの差は天と地ほどもあるのだから
アマの私は、自分のことをプログラマとは自称しませんね
2018/02/11(日) 01:07:57.05ID:ucUF/ExX
>>254
プログラマのプロってハイセンスって意味なの?
2018/02/11(日) 01:17:28.81ID:bT0HWvJB
>>255
いやいや、単にプログラマといったら(プロ〜アマの)大きな範囲全体を指すでしょう?
でも自分の実力はアマで、経験値などはプロからみたらどうしようもなく低いことは、自分自身がよくわかっている
だとすると、広い全体を指す「プログラマー」を、自分がアマであることを明示せずに、自分に使うのは躊躇します
「アマチュアプログラマ」はあり得ますが、所詮アマチュア、「プログラマ」と呼べるほどに専門性に特化しているわけではありません

囲碁・将棋でも「アマ初段」とわざわざアマであることを明示します、それがたしなみというものではないかと考えているのです
皆がそう考えているかどうかはわかりませんが
2018/02/11(日) 01:22:02.85ID:ucUF/ExX
>>256
プログラマはプログラムする人。
技量はそこには入ってない。今は技量の話してる?
技量がうえの人間を見つけたらそういう対応するけど。

それに俺の技量より上の人間がこのスレにわんさかいるんだったら、
普段のお題もにぎわってるんじゃないですかね。
2018/02/11(日) 01:22:19.46ID:7HNp9q+o
>>252
名乗って良いから名乗り続けろよ
職業マでもねえのにプログラマを自称したいんならな
さっぱりわからんわ動機が
2018/02/11(日) 01:25:03.27ID:ucUF/ExX
>>258
理解してくれと頼んだ覚えはないけど。
人の趣味趣向にケチ付けた代償はちゃんと払えよ。
2018/02/11(日) 01:36:08.30ID:bT0HWvJB
>>257
「プログラマ」は「プログラムを書く人」のこと、それはそのとおりですが、
プロのプログラマもいるのだから、プロでないプログラマは、最低でも「アマチュアプログラマ」と名乗るべきですね
単に「プログラマ」という言う場合は、職業プログラマかそうでないかがわからない
単に「プログラマ」というと、職業プログラマのことだと取る人もいる
プロとアマチュアの差は歴然としているのだから、プロでもないのに、「プログラマ」と名乗るわけにはいかないでしょうね

辞書どおりの定義であればいい、というのは一理あるとしても、自分のことを正確に表現する努力・姿勢がみられないのは、どうかと思いますね

プログラマといえば高い専門性を暗黙に示唆していますしね
(今は廃止されましたが26種の特定派遣業種のひとつに「ソフトウェア開発」が入っていました)
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況