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

■ このスレッドは過去ログ倉庫に格納されています
2020/07/14(火) 13:53:46.47ID:jW5p6F/e
プログラミングのお題スレです。

【出題と回答例】
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/

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

※前スレ
プログラミングのお題スレ Part17
https://mevius.5ch.net/test/read.cgi/tech/1584031367/
2020/07/14(火) 21:06:03.54ID:5wYEuLp1
%W[> > 1 \ o t s u].each(&:display)

# => >>1 otsu
2020/07/16(木) 06:35:35.70ID:Tv2xtriA
前スレ996の三次元タートルグラフィックス。
懸賞WebMoney5000円です。早い者勝ち。
2020/07/16(木) 07:00:51.32ID:Rw1l0Cvs
>>3
スレチ
消えろ
2020/07/16(木) 07:12:16.72ID:Tv2xtriA
宿題ではありません。
6デフォルトの名無しさん
垢版 |
2020/07/16(木) 11:35:02.71ID:6HbDCmR4
普通にドン引き
なんか作って欲しいツールの作成依頼スレになりそう
出題者は解答を持ち合わせておくべきだな
7デフォルトの名無しさん
垢版 |
2020/07/16(木) 12:31:42.58ID:II7vBdwc
短期間に複数の出題をするのはいかがなものか
前の出題を締め切ってからするべきだろう

中には解答に数ヶ月を要するものもあるので

http://itest.5ch.net/mevius/test/read.cgi/tech/1584031367/10
>0010 蟻人間 ◆T6xkBnTXz7B0 2020/03/15 04:20:
>10
>お題: 一辺2000メートルの正方形の平面上にランダムに動く物体5個がある。

http://itest.5ch.net/mevius/test/read.cgi/tech/1584031367/801
>0801 デフォルトの名無しさん 2020/06/03 15:52:13
>10 js
>能力低すぎて3か月もかかってしまった
>https://codepen.io/as124680/full/Bajapro





出題者はちゃんと評価と解答の解説を責任持って投稿下さい
2020/07/16(木) 17:15:09.36ID:Tv2xtriA
【防衛システムに関する解説】
この出題は平面上の幾何学的な事象として論じられる。よって数学のベクトルの知識が必須である。
自機は中央にあり動かないのであるから、これを原点としてもよい。レーダー電波は放射状の電磁波であり、明らかに光速で直進する。
レーダーの直線の方程式は角度thetaのときr*(cos(theta), sin(theta))と書ける。すなわちレーダー角に触れれば探知される。
敵機はアニメーションの原理で動く。よってタイマーを使って一定時間ごとに位置を変化させれば動いているように見える。
位置や速度に特に指定はない。よって乱数などで決めることになる。
続く。
2020/07/16(木) 17:24:04.86ID:Tv2xtriA
それぞれの敵機の位置ベクトルと速度ベクトルがあり、それらは時間の変数によって変化する。敵機の速度ベクトルを推定するために、位置ベクトルを記録せねばならない。
レーダーは360度回るのであるから、隠れ場所がなければ特定の角度となり、必ず見つかる。位置は一定時間ごとに必ずわかるはずである。
位置の変位を経過時間で割れば速度ベクトルが推定できる。位置がわかれば3平方の定理で距離がわかる。距離が近ければミサイルを
発射せねばなるまい。ミサイルを撃つ方向はatan2関数を使用すれば求められる。
【解説終わり】
2020/07/16(木) 17:36:30.92ID:Tv2xtriA
これでいいか?
2020/07/16(木) 18:19:03.86ID:Tv2xtriA
【SQLサイン関数出題の解説】
ウェブや深層学習などの進展につれて、今や巨大データの扱いは、ありふれた作業となってきている。巨大データを扱う場合、データベースを使うとアクセス能力や利便性を向上できる。中でも特に一般的なSQLについて出題することにした。

しかし、SQLは方言が多くて、細かい調整はマニュアルを読まないとわからないことが多い。さらに、アクセス方法やインターフェイスが多様すぎて、こちらで解析するのは困難である。

よって採点は行わない。各自で自ら結果を確認して採点してほしい。SQLを始めるなら、まず入門書から入って、次に使用するデータベースのマニュアルを読んでもらいたい。
続く。
2020/07/16(木) 18:37:28.47ID:Tv2xtriA
「精度は構わない」といったはずだ。最悪でもnearest neighborhoodを選んでも正解にした。サイン関数は波形のグラフをとる代表的な三角関数だから、高校生以上なら知ってるはずだ、知名度は高いと判断した。 周期性があるので有限のテーブル(表)で近似できる。

「SQLのみを使う」とも言っていない。SQLの外部でサイン関数の数値を計算しても正解とする。しかしテーブルは作成しなければならない。すでに作成済みの場合に備えてまず「DROP TABLE ...」する。

次にテーブルの仕様を設計して「CREATE TABLE ...」する。細かいことは...で省略するが、わからないときは入門書かマニュアルを参照して下さいな。

テーブルの行を追加するには「INSERT INTO ...」する。テーブルからサイン関数の値を問い合わせる場合は「SELECT ... FROM ... WHERE ...」する。これが実際のサイン関数の値に常識的に近ければ正解とする。
【解説終わり】
2020/07/16(木) 18:53:35.79ID:CQUy/8Mn
解説と解説に沿った解答例のコードを貼れ
14デフォルトの名無しさん
垢版 |
2020/07/16(木) 20:27:21.79ID:6HbDCmR4
>>12
-πから+πまでのsin関数表を元に-∞から+∞までのsin関数をNN法を使って完成させろという意味だったのか
2020/07/16(木) 20:37:51.51ID:Zj8FcZKn
精度は構わないなら
0, 1, -1 の3択でも正解か
2020/07/16(木) 21:05:05.23ID:Tv2xtriA
>>8
訂正。
(誤) 方程式はr*(cos(theta), sin(theta))と書ける。
(正) 方程式は(x, y) == r*(cos(theta), sin(theta))と書ける。
17デフォルトの名無しさん
垢版 |
2020/07/16(木) 21:10:19.03ID:6HbDCmR4
提出済みのコードに
x_hat%(2*π)-π
を加えれば絶対値が大きな任意の数にも対応出来る
18デフォルトの名無しさん
垢版 |
2020/07/16(木) 21:11:26.01ID:6HbDCmR4
>>17
はsin関数の問題の話ね
2020/07/16(木) 21:27:56.16ID:Zj8FcZKn
>>8
敵機?
ランダムに動く物体でしょ
慣性が働くとも書いてないし連続で動くとも書いてない
各瞬間ランダム位置に出現なのかもしれない

>>9
ランダムに動く物体5個を区別出来るなんて書いてない
距離と方向がわかるとだけ

予測した位置と移動速度、移動方向から推測してミサイルを打つ方向を決める必要がある
その方向決めという重要な部分が書いてない

0点
2020/07/16(木) 21:34:34.55ID:Rw1l0Cvs
クソコテはどっちも出題がクソ
存在もクソ
2020/07/16(木) 21:44:35.29ID:Zj8FcZKn
>>17
任意のは言い過ぎ
値が大きいと有効桁ゼロになる

精度は問わないといっても有効桁ゼロはさすがにダメと思う
2020/07/16(木) 21:54:34.68ID:Tv2xtriA
物体の現在位置: (px, py)
物体の推定速度: (vx, vy)
ミサイルの速さ: mv
距離:sqrt(px**2+py**2)
到達にかかる時間: t_star==sqrt(px**2+py**2)/mv
到達までにかかる時間を加味した物体の予想位置:
(px+t_star*vx, py+t_star*vy)
ここまでの計算を繰り返し、誤差を減少させる。
結果の衝突予想位置にatan2に施すとミサイルの発射方向が得られる。
23デフォルトの名無しさん
垢版 |
2020/07/16(木) 22:05:54.70ID:6HbDCmR4
>>21
はいすみません
x_hatがπ以上の正の場合
x_hatが-π以下の負の場合
それ以外の場合で式を分ける必要がありそう
2020/07/16(木) 22:06:42.91ID:Zj8FcZKn
>>22
頭悪い方法ですね
2020/07/16(木) 22:09:47.34ID:Tv2xtriA
スマートな方法は軍事秘密なんだよ


(方程式を使う)
2020/07/16(木) 22:28:50.69ID:Zj8FcZKn
簡単な二次方程式になるわけだけど
2020/07/16(木) 22:32:18.70ID:Tv2xtriA
昔はモンキーハンティングとかのシミュレーションやったよ
2020/07/16(木) 22:34:22.52ID:Zj8FcZKn
頭悪い方法で?
2020/07/16(木) 22:35:58.48ID:Zj8FcZKn
>>22から頭の悪さがにじみ出てる
2020/07/16(木) 22:36:41.77ID:Rw1l0Cvs
頭悪いのがにじみ出てて読んでてイライラする
2020/07/16(木) 22:37:12.00ID:Tv2xtriA
他に剛体球の衝突とか、太陽系の表示とか、万有引力とか。
2020/07/16(木) 23:19:59.45ID:Tv2xtriA
高校レベルの数学でごめんね.

v:ミサイルの速さ。
d:ミサイルの方向ベクトル。
t: 時刻。
P: 物体の現在位置。
V: 物体の推定速度。
方程式v*d*t==P+V*t.
移項して
(v*d - V)*t==P.
t==P・(v*d - V)/||v*d - V||**2.
33デフォルトの名無しさん
垢版 |
2020/07/17(金) 04:33:22.78ID:MbWzFU1J
>>17
訂正

まず、0〜2*πのsin関数表を作成する
その後、
x_hat>=0 の場合: x_hat%(2*π)
x_hat<0の場合: 2*π + x_hat%(-2*π)
という式でx_hatを変換して上書きする
2020/07/17(金) 06:25:20.74ID:CFzyXZw3
>>32
本当頭悪いね
それでどうやって解くつもり?
高校生ならもっとスマートに解く
2020/07/17(金) 08:57:31.48ID:ICqzduEx
解答側だと頭悪いと煽られるから出題側に回ってたわけか
まあ出題も頭悪そうだったが
2020/07/17(金) 09:13:31.04ID:TqoFz7RF
回答例用意してなくても出題していいと思う
でもニッチすぎる問題で知識ひけらかしてるみたいな出題は例出してくれ
2020/07/17(金) 10:03:37.90ID:+x+SJT9l
P + V*t==v*d*t.
二乗すればdが消えて
|P|**2 + 2*P・V*t + |V|**2*t**2 == (v*t)**2.
これはtの二次方程式であるから整理して解の公式で解ける。
t<0のときは過去になるので除外する。
2020/07/17(金) 10:05:01.15ID:2gsvlStU
>>1 スレ一覧

1: https://toro.5ch.net/test/read.cgi/tech/1354393458/
2: https://toro.5ch.net/test/read.cgi/tech/1357191974/
3: https://peace.5ch.net/test/read.cgi/tech/1390525149/
4: https://peace.5ch.net/test/read.cgi/tech/1402622093/
5: https://peace.5ch.net/test/read.cgi/tech/1411227287/
6: https://peace.5ch.net/test/read.cgi/tech/1418278634/
7: https://peace.5ch.net/test/read.cgi/tech/1429195275/
8: http://echo.5ch.net/test/read.cgi/tech/1444216746/
9: https://mevius.5ch.net/test/read.cgi/tech/1480579110/
10: https://mevius.5ch.net/test/read.cgi/tech/1514772904/
11: https://mevius.5ch.net/test/read.cgi/tech/1524570314/
12: https://mevius.5ch.net/test/read.cgi/tech/1538096947/
13: https://mevius.5ch.net/test/read.cgi/tech/1549160513/
14: https://mevius.5ch.net/test/read.cgi/tech/1558168409/
15: https://mevius.5ch.net/test/read.cgi/tech/1564310397/
16: https://mevius.5ch.net/test/read.cgi/tech/1573948822/
17: https://mevius.5ch.net/test/read.cgi/tech/1584031367/
2020/07/17(金) 10:57:50.39ID:IMrokyul
>>37
えらい時間がかかったね
君、出題者だよね?
2020/07/17(金) 11:00:53.76ID:+x+SJT9l
三次元タートルで臓器を描画したら、レオナルド・ダ・ヴィンチのような天才になれるかもよ。
今、3Dプリンタのブームで三次元タートルグラフィックスは需要があるから、面白いことになるよ。
2020/07/17(金) 11:24:00.61ID:+x+SJT9l
臓器売買をなくすには、臓器を作ればいい。
ふふん。
2020/07/17(金) 11:55:47.46ID:vGVdpt19
>>37
で、5個の物体の
2020/07/17(金) 11:56:18.93ID:vGVdpt19
区別はどうするの?
2020/07/17(金) 12:50:28.20ID:+x+SJT9l
レーダー角の順番に物体をソートし、各物体に番号を付ける。レーダー角において物体が重なれば重複する恐れがあるが、とくに問題ではない。重複した物体が離れたときに、新規の物体の出現と見なせばいい。

前回と前々回の観測により、位置と速度が推測できる。次に予想される出現位置に一番近い物体を選択し、番号を関連付ければ同定できる。
45デフォルトの名無しさん
垢版 |
2020/07/17(金) 13:19:51.15ID:MbWzFU1J
>>36
チューリングマシンは現場でバリバリ使える調べて覚えるだけの価値がある技術だ
規則が連続している場合上の方を取ってくるとか2つの数値を比較して大小関係をルールにするといったことが出来る
正規表現で数値を取ってきてプログラミング言語で比較処理するより構造的に書ける
だから解答を用意した上でまずは簡単なお題から出して、次は少し難易度を上げるようなお題を考えながら待っていたが誰も解答しなかった
2020/07/17(金) 13:33:42.70ID:TqoFz7RF
>>45
どの言語でも使えるアルゴリズム?設計パターンなの?
理論だから賞味期限の長い知識なのはわかるけど優先的に教えられないのはなぜ?
2020/07/17(金) 13:35:45.21ID:vGVdpt19
>>44
各フレーム物体がランダム位置で出現する場合には使えません
2020/07/17(金) 13:37:37.60ID:vGVdpt19
>>45
チューリングマシンの実用性はゼロと思うけど
完全に学問用
2020/07/17(金) 13:40:10.41ID:Jbjf6afq
CFGのクラスのものを例題にしたから意図したような回答がなかったんじゃないかと
50デフォルトの名無しさん
垢版 |
2020/07/17(金) 14:08:20.12ID:x8K2tEcw
学術の巨大掲示板群 - アルファ・ラボ ttp://x0000.net
数学 物理学 化学 生物学 天文学 地理地学
IT 電子 工学 言語学 国語 方言 など

simulationライブラリで純粋な関数式プログラミングをする
UIライブラリ (C#, 2D) を作ったよ
連続と離散を統一した!
4Dエンジン
matrixのライブラリ
ある強力なFor関数
SQLライブラリ

☆ VMを書いた(C#) * x86ではない!
ttp://up.x0000.net/files/TSimulang.zip
☆ malloc / free を実装してみた (C#)
ttp://up.x0000.net/files/TMallocTest.zip
2020/07/17(金) 14:59:38.30ID:+x+SJT9l
>>47
UFOじゃあるまいし、そんな物体が地球上にあるわけない。
2020/07/17(金) 15:18:45.55ID:+x+SJT9l
ステルス機とか、超音速機とか、プラズマ兵器とかのことか。

それらは想定外だよ。
2020/07/17(金) 15:23:09.49ID:+x+SJT9l
プラズマ兵器は、実戦で使われた記録はないし、超音速でもレーダー網からは捕捉出来る。

ステルスは想定外。
2020/07/17(金) 16:57:04.24ID:+x+SJT9l
防衛システムの歯無しは終わり。

次は三次元タートルグラフィックス。位置と向きの情報を持ったタートル(亀)を操作して、面白い図形を描こうというお話。平面じゃないよ、立体だよ。

レンダリングを何にするか。OpenGLは終わったし、DirectDrawは初心者には難しいし。そうだ、JavaScriptのThree.jsにしよう。これならスマホでも確認できるね。使ったことないけど。
2020/07/17(金) 17:49:54.25ID:vGVdpt19
>>51
出題文を読みかえしてみろ
2020/07/17(金) 17:51:07.65ID:vGVdpt19
ランダムに動く物体5個
2020/07/17(金) 18:31:00.92ID:+x+SJT9l
さて、亀は三次元の座標データP=(x, y, z)と三次元の方向ベクトルD=(dx, dy, dz) (単位ベクトルとする)で表せる訳だが、
線分を一つ引くごとに、線分を指定した位置に世界に追加する。世界の観測者の視点であるカメラは、テキトーな位置と方向で設置しておく。
描画ルーチンは、世界に追加された線分群をまとめて描く。描画エンジンは遠近法により、奥行きを持った映像を完成する。
2020/07/17(金) 18:35:56.95ID:+x+SJT9l
小さなお題: Three.jsで三次元空間に線分を一本描画せよ。
59デフォルトの名無しさん
垢版 |
2020/07/17(金) 20:07:34.26ID:Q6g2SqxJ
だめだ
何をいっているのだか私にはさっぱり
2020/07/17(金) 20:36:03.22ID:RwfCcdVI
>>59
NGワードに糞コテを登録すればOKということだけ理解してれば大丈夫。
2020/07/17(金) 20:39:05.23ID:zSX7HXP2
>>60
NGワードなんてスルー能力の足りない人が使うものですよ、私は全然使いませんね、だって必要ないし…
2020/07/17(金) 21:03:37.05ID:CFzyXZw3
クソコテスレ
2020/07/17(金) 21:18:41.06ID:hZ0JaeyU
こんな感じでHTMLを書けばThree.jsで三角形が描ける。
https://gist.github.com/katahiromz/cc182b4aaeaf2c7b5902238212c0f3f1
2020/07/17(金) 21:29:05.44ID:hZ0JaeyU
これを応用すれば、スマホでも動作するブラウザゲームを自分で作って
ゲーム会社を立ち上げることができるかも。

Three.jsがどんなものかは、

https://threejs.org/

を見ればたぶんわかる。三次元を描画するものだ。
2020/07/17(金) 21:32:26.43ID:C5ummCR0
スレタイからずれすぎ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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