プログラミングのお題スレ Part18
■ このスレッドは過去ログ倉庫に格納されています
%W[> > 1 \ o t s u].each(&:display)
# => >>1 otsu 前スレ996の三次元タートルグラフィックス。
懸賞WebMoney5000円です。早い者勝ち。 普通にドン引き
なんか作って欲しいツールの作成依頼スレになりそう
出題者は解答を持ち合わせておくべきだな 短期間に複数の出題をするのはいかがなものか
前の出題を締め切ってからするべきだろう
中には解答に数ヶ月を要するものもあるので
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
出題者はちゃんと評価と解答の解説を責任持って投稿下さい 【防衛システムに関する解説】
この出題は平面上の幾何学的な事象として論じられる。よって数学のベクトルの知識が必須である。
自機は中央にあり動かないのであるから、これを原点としてもよい。レーダー電波は放射状の電磁波であり、明らかに光速で直進する。
レーダーの直線の方程式は角度thetaのときr*(cos(theta), sin(theta))と書ける。すなわちレーダー角に触れれば探知される。
敵機はアニメーションの原理で動く。よってタイマーを使って一定時間ごとに位置を変化させれば動いているように見える。
位置や速度に特に指定はない。よって乱数などで決めることになる。
続く。 それぞれの敵機の位置ベクトルと速度ベクトルがあり、それらは時間の変数によって変化する。敵機の速度ベクトルを推定するために、位置ベクトルを記録せねばならない。
レーダーは360度回るのであるから、隠れ場所がなければ特定の角度となり、必ず見つかる。位置は一定時間ごとに必ずわかるはずである。
位置の変位を経過時間で割れば速度ベクトルが推定できる。位置がわかれば3平方の定理で距離がわかる。距離が近ければミサイルを
発射せねばなるまい。ミサイルを撃つ方向はatan2関数を使用すれば求められる。
【解説終わり】 【SQLサイン関数出題の解説】
ウェブや深層学習などの進展につれて、今や巨大データの扱いは、ありふれた作業となってきている。巨大データを扱う場合、データベースを使うとアクセス能力や利便性を向上できる。中でも特に一般的なSQLについて出題することにした。
しかし、SQLは方言が多くて、細かい調整はマニュアルを読まないとわからないことが多い。さらに、アクセス方法やインターフェイスが多様すぎて、こちらで解析するのは困難である。
よって採点は行わない。各自で自ら結果を確認して採点してほしい。SQLを始めるなら、まず入門書から入って、次に使用するデータベースのマニュアルを読んでもらいたい。
続く。 「精度は構わない」といったはずだ。最悪でもnearest neighborhoodを選んでも正解にした。サイン関数は波形のグラフをとる代表的な三角関数だから、高校生以上なら知ってるはずだ、知名度は高いと判断した。 周期性があるので有限のテーブル(表)で近似できる。
「SQLのみを使う」とも言っていない。SQLの外部でサイン関数の数値を計算しても正解とする。しかしテーブルは作成しなければならない。すでに作成済みの場合に備えてまず「DROP TABLE ...」する。
次にテーブルの仕様を設計して「CREATE TABLE ...」する。細かいことは...で省略するが、わからないときは入門書かマニュアルを参照して下さいな。
テーブルの行を追加するには「INSERT INTO ...」する。テーブルからサイン関数の値を問い合わせる場合は「SELECT ... FROM ... WHERE ...」する。これが実際のサイン関数の値に常識的に近ければ正解とする。
【解説終わり】 >>12
-πから+πまでのsin関数表を元に-∞から+∞までのsin関数をNN法を使って完成させろという意味だったのか 精度は構わないなら
0, 1, -1 の3択でも正解か >>8
訂正。
(誤) 方程式はr*(cos(theta), sin(theta))と書ける。
(正) 方程式は(x, y) == r*(cos(theta), sin(theta))と書ける。 提出済みのコードに
x_hat%(2*π)-π
を加えれば絶対値が大きな任意の数にも対応出来る >>8
敵機?
ランダムに動く物体でしょ
慣性が働くとも書いてないし連続で動くとも書いてない
各瞬間ランダム位置に出現なのかもしれない
>>9
ランダムに動く物体5個を区別出来るなんて書いてない
距離と方向がわかるとだけ
予測した位置と移動速度、移動方向から推測してミサイルを打つ方向を決める必要がある
その方向決めという重要な部分が書いてない
0点 >>17
任意のは言い過ぎ
値が大きいと有効桁ゼロになる
精度は問わないといっても有効桁ゼロはさすがにダメと思う 物体の現在位置: (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に施すとミサイルの発射方向が得られる。 >>21
はいすみません
x_hatがπ以上の正の場合
x_hatが-π以下の負の場合
それ以外の場合で式を分ける必要がありそう スマートな方法は軍事秘密なんだよ
(方程式を使う) 昔はモンキーハンティングとかのシミュレーションやったよ 他に剛体球の衝突とか、太陽系の表示とか、万有引力とか。 高校レベルの数学でごめんね.
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. >>17
訂正
まず、0〜2*πのsin関数表を作成する
その後、
x_hat>=0 の場合: x_hat%(2*π)
x_hat<0の場合: 2*π + x_hat%(-2*π)
という式でx_hatを変換して上書きする >>32
本当頭悪いね
それでどうやって解くつもり?
高校生ならもっとスマートに解く 解答側だと頭悪いと煽られるから出題側に回ってたわけか
まあ出題も頭悪そうだったが 回答例用意してなくても出題していいと思う
でもニッチすぎる問題で知識ひけらかしてるみたいな出題は例出してくれ P + V*t==v*d*t.
二乗すればdが消えて
|P|**2 + 2*P・V*t + |V|**2*t**2 == (v*t)**2.
これはtの二次方程式であるから整理して解の公式で解ける。
t<0のときは過去になるので除外する。 >>37
えらい時間がかかったね
君、出題者だよね? 三次元タートルで臓器を描画したら、レオナルド・ダ・ヴィンチのような天才になれるかもよ。
今、3Dプリンタのブームで三次元タートルグラフィックスは需要があるから、面白いことになるよ。 臓器売買をなくすには、臓器を作ればいい。
ふふん。 レーダー角の順番に物体をソートし、各物体に番号を付ける。レーダー角において物体が重なれば重複する恐れがあるが、とくに問題ではない。重複した物体が離れたときに、新規の物体の出現と見なせばいい。
前回と前々回の観測により、位置と速度が推測できる。次に予想される出現位置に一番近い物体を選択し、番号を関連付ければ同定できる。 >>36
チューリングマシンは現場でバリバリ使える調べて覚えるだけの価値がある技術だ
規則が連続している場合上の方を取ってくるとか2つの数値を比較して大小関係をルールにするといったことが出来る
正規表現で数値を取ってきてプログラミング言語で比較処理するより構造的に書ける
だから解答を用意した上でまずは簡単なお題から出して、次は少し難易度を上げるようなお題を考えながら待っていたが誰も解答しなかった >>45
どの言語でも使えるアルゴリズム?設計パターンなの?
理論だから賞味期限の長い知識なのはわかるけど優先的に教えられないのはなぜ? >>44
各フレーム物体がランダム位置で出現する場合には使えません >>45
チューリングマシンの実用性はゼロと思うけど
完全に学問用 CFGのクラスのものを例題にしたから意図したような回答がなかったんじゃないかと 学術の巨大掲示板群 - アルファ・ラボ 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 >>47
UFOじゃあるまいし、そんな物体が地球上にあるわけない。 ステルス機とか、超音速機とか、プラズマ兵器とかのことか。
それらは想定外だよ。 プラズマ兵器は、実戦で使われた記録はないし、超音速でもレーダー網からは捕捉出来る。
ステルスは想定外。 防衛システムの歯無しは終わり。
次は三次元タートルグラフィックス。位置と向きの情報を持ったタートル(亀)を操作して、面白い図形を描こうというお話。平面じゃないよ、立体だよ。
レンダリングを何にするか。OpenGLは終わったし、DirectDrawは初心者には難しいし。そうだ、JavaScriptのThree.jsにしよう。これならスマホでも確認できるね。使ったことないけど。 さて、亀は三次元の座標データP=(x, y, z)と三次元の方向ベクトルD=(dx, dy, dz) (単位ベクトルとする)で表せる訳だが、
線分を一つ引くごとに、線分を指定した位置に世界に追加する。世界の観測者の視点であるカメラは、テキトーな位置と方向で設置しておく。
描画ルーチンは、世界に追加された線分群をまとめて描く。描画エンジンは遠近法により、奥行きを持った映像を完成する。 小さなお題: Three.jsで三次元空間に線分を一本描画せよ。 >>59
NGワードに糞コテを登録すればOKということだけ理解してれば大丈夫。 >>60
NGワードなんてスルー能力の足りない人が使うものですよ、私は全然使いませんね、だって必要ないし… これを応用すれば、スマホでも動作するブラウザゲームを自分で作って
ゲーム会社を立ち上げることができるかも。
Three.jsがどんなものかは、
https://threejs.org/
を見ればたぶんわかる。三次元を描画するものだ。 ついに蟻人間は、3次元まで行ってしまったか
その内、Quaternion(4元数)がどうたらこうたらと、言い出しかねないw >>58
分かり難いけど、描けました。
https://i.imgur.com/XZgoOTV.gif
P0(0,0,0)-P1(100,100,100)です。
//形状オブジェクトの宣言と生成
var geometry3 = new THREE.Geometry();
geometry3.vertices.push( new THREE.Vector3(0, 0, 0) );
geometry3.vertices.push( new THREE.Vector3(100, 100, 100) );
//材質オブジェクトの宣言と生成
var material3 = new THREE.LineBasicMaterial({ color: 0xFFFFFF, transparent:true,
linewidth: 8,
opacity:0.5 });
//線オブジェクトの生成
lines = new THREE.LineSegments(geometry3, material3);
//線オブジェクトのシーンへの追加
scene.add(lines); お題:何らかの数式のグラフとしてハート形を出力せよ。
使用する言語は問わない。 >>68
HTML5,JavaScript
<canvas id="cv" width="360" height="360"></canvas>
<script>
var ctx = document.getElementById("cv").getContext("2d");
ctx.lineWidth = 5; //線の太さ
ctx.strokeStyle = "red";
ctx.beginPath();
var r=10;var x0=0,y0=0;
for(i=0;i<=360;i+=5){
var d = i*Math.PI/180;
x0= r*(16*Math.sin(d)*Math.sin(d)*Math.sin(d));
y0= r*(13*Math.cos(d)-5*Math.cos(2*d)-2*Math.cos(3*d)-Math.cos(4*d));
ctx.lineTo(w+x0,h-y0);
}
ctx.stroke();
</script>
https://i.imgur.com/9tjfBmv.png >>68 Lua
for y=1.5,-1.5,-0.1 do
for x=-2,2,0.1 do
if (x^2+y^2-1)^3-x^2*y^3<0 then
io.write("@@")
else
io.write("__")
end
end
print()
end >>45
出題が糞過ぎたから誰も答えなかったんだぞ >>45
このスレでは誰もお題に答えないということがよくある
俺もお題出したことがあるがそういう時があった >>68
❤♡🤎🧡🤍🖤❤❣💟💜💚💛💙💗
♥ &#9825; &#10084; >>71
どこらへんが問題なのかを言わないと次も同じ問題を起こす可能性がある すぐに論破されることを言う奴って何が目的なんだろう
5chを見下してるのかもしれないな
こんなサイトみてる奴は大したことないって思ってるから油断して非論理的な発言をするのかと思った どこに問題があるかなんて前スレでさんざん言われてただろ
あれで理解できないなら一生理解できないだろうね >>75
たぶん問題が難しいか、手間がかかるからじゃないかな >>77
指摘された問題点はすべて返信していてその返信に対する返信はない
つまり指摘された問題点はすべて間違っていて問題点は見つかっていない
>>78
Pythonで20行弱で書けることは伝えている
となると難易度がこのスレの住人には高すぎたということか... 問題の良し悪しよりも出題者の態度が気に入らないから取り組まない人がいるんじゃないかな
自分の正当性を主張するだけではダメで回答者のモチベーションを上げる方向に導かないと
コミュニケーションが未熟なだけだと思いました 線形拘束オートマトンでこの問題解いてみて!
線形拘束オートマトンはこういう仕組みで、こういうところでも活用できるから知ってると便利だよ!
みたいにポジティブアゲアゲでいかないと >>81
なるほどーそれは>>1に書いとくべきだな
皆んなから好かれる人の出題しか解答しませんよって
出題にも手間がかかるわけだからそういうのは普通に不誠実だと思う >>83
落ち着けよ
お題に解答が全く付かないなんてよくあることだって >>82
仕組みというか解説は書けるなら書きたかったな
悩んだがそんなに難しくないと思ったから止めといた >>83
ルールとして決める必要はなくて
一般的なコミュニケーションのとり方としてレスポンスが欲しいなら
自分の正当性だけを主張するやり方だと難しいよってこと
自分がこんなに頑張って問題書いたんだ、答えがないのは不誠実だ、そんな自己中発揮してたらレスポンスなくて当然かと 線形拘束オートマトンが実装できるってすごいことだから
模範解答示したら良いと思うよ >>83
難度がうんぬんよりも問題文読んだ時点で作問者の頭が悪そう(使ってる言葉の意味わかってなさそう)って思ってスルーしたわ
ここのコテハンも同じ理由でスルー
ただ、面白そうなら気まぐれで解くこともある
解く方も出す方も好きにしたら良い >>86
答えがないから不誠実なのではなくて
出題者に伝えておくべき情報が>>1に書かれていないのならそれは不誠実ということ
>>71は次のように言っている
「皆んながお前の出題に問題があると思っている」
俺は今後のためにも当然次の疑問が生まれ、それを伝えた「どこらへんが?難易度が高すぎた?」
そこで君が「難易度よりむしろマナーに問題がある」という趣旨の発言をした
そうなると俺は「>>1にマナーの具体的な内容を書くべき」
そうしないと同じ問題を起こしてしまうから >>89
ルールとして書くまでもなく一般的なコミュニケーションのことだから
>>1に書かれてなくても良いし、それが無いがゆえにできなかったのだという
態度が自己中ってこと 問題を起こしてしまうの主語は君がってことだよね? 君がコミュニケーション能力を身につければ解決すると思うのだけれども 解いてみたいと思えない内容の上に長文でうざい
っていう感情論に近いものを明文化すんのはちょっと難しいね 客観的に難易度は高いと思うよ
少なくとも僕は実装したこと無い
有限オートマトンが精一杯
自分で「難易度がこのスレの住人には高すぎたということか」と言ってしまうのはイキりだと思った
難易度+高慢な態度 ってところかと あるいは進行形で解いてるやつがいるかもしれないな
なんたってこのスレの最長解答時間は3ヵ月だからなw チューリングマシンのお題は、僕も解いて見ようと思ってWikipedia読んでる 最高のチューリングマシンを見せてやるぜ、必ず帰ってくるからな、帰ったら結婚しよう >>83
気に入らない奴は相手にされないなんて、人と人とのコミュニケーションが発生する場所なら何処でもそうだろう。仕事などの個人の感情よりやるべきことを優先すべき場面を除いては。
書かれてないから知らないなんて、小学生の屁理屈にも劣る反応だな。 新しいことを学ぶのは素晴らしいと思うけど今まで2週間以上同じスレに居たことがないから責任持てないなぁ
現場でバリバリ使う為にはε-非決定性オートマトンとかも知っとかないと実用的じゃなくなるから学習に意味を見いだすのはかなり難しいと思うよ ■ このスレッドは過去ログ倉庫に格納されています