プログラミングのお題スレです。
【出題と回答例】
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/
宿題は宿題スレがあるのでそちらへ。
※前スレ
プログラミングのお題スレ Part16
https://mevius.5ch.net/test/read.cgi/tech/1573948822/
探検
プログラミングのお題スレ Part17
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2020/03/13(金) 01:42:47.06ID:0rEhys36154デフォルトの名無しさん
2020/04/16(木) 00:11:24.84ID:qhHxDSDQ155デフォルトの名無しさん
2020/04/16(木) 00:30:51.63ID:qxGCpnz3 乙。
156デフォルトの名無しさん
2020/04/16(木) 01:19:43.21ID:6omvFBXS >>153
アスペルガー症候群は黙ってた方がいい
アスペルガー症候群は黙ってた方がいい
157デフォルトの名無しさん
2020/04/16(木) 01:25:27.80ID:Yc0fbgtG 初速度や離れすぎ、近づきすぎの条件が書いてないのは事実で回答しようも無いんだし
そういうのはやめたらどうかと思うんだが
そういうのはやめたらどうかと思うんだが
158デフォルトの名無しさん
2020/04/16(木) 01:27:18.30ID:iTxUXfYH そういう柔軟性のなさがアスペルガー症候群くさいんだよなぁ…
まあ本当は出題の意図は分かってて敢えてイチャモン付けてるんだろうけど
まあ本当は出題の意図は分かってて敢えてイチャモン付けてるんだろうけど
159デフォルトの名無しさん
2020/04/16(木) 01:28:44.29ID:Yc0fbgtG160デフォルトの名無しさん
2020/04/16(木) 01:37:52.71ID:iTxUXfYH 俺なら初期位置も計算の打ち止め条件も完全に無視してポテンシャルの極小値を求めるプログラムを書いて提示するかな
出題者が期待してるのはそういうものだろうし些細な出題の問題点をいちいち指摘してボツにさせる気なんか起きないな
出題者が期待してるのはそういうものだろうし些細な出題の問題点をいちいち指摘してボツにさせる気なんか起きないな
161デフォルトの名無しさん
2020/04/16(木) 01:40:49.88ID:s4YIDkZq >>160
そのプログラムを投稿すればいいだけの話
そのプログラムを投稿すればいいだけの話
162デフォルトの名無しさん
2020/04/16(木) 01:43:39.05ID:iTxUXfYH じゃあ俺はアスペルガー症候群では?って言っただけの話
163デフォルトの名無しさん
2020/04/16(木) 01:47:00.10ID:s4YIDkZq164デフォルトの名無しさん
2020/04/16(木) 01:49:51.08ID:s4YIDkZq 無名掲示板とはいえ、人様に言う言葉にはもう少し気を使え
165デフォルトの名無しさん
2020/04/16(木) 01:50:45.97ID:XsJA9brB せっかく考えて出題してくれてるのに頭ごなしにボツにされようとしてるのを見て許せなかったんだよ
166デフォルトの名無しさん
2020/04/16(木) 01:52:40.82ID:s4YIDkZq それとこれとは別問題
お前の気分しだいで人に失礼なことをするのはよせ
お前の気分しだいで人に失礼なことをするのはよせ
167デフォルトの名無しさん
2020/04/16(木) 01:54:43.63ID:0k+XXy1f 君、ネット向いてないよ
168デフォルトの名無しさん
2020/04/16(木) 01:57:06.29ID:s4YIDkZq 飲むとスルー力が鈍るのは認める。
169デフォルトの名無しさん
2020/04/16(木) 01:58:36.86ID:XeDXz4LY まるでシラフならスルースキル高いかのような言い草で寒っ
170デフォルトの名無しさん
2020/04/16(木) 02:00:46.80ID:s4YIDkZq 今日はちょっと虫の居所が悪くてな、すまんな。
ちな上の方のレスのうち、どれが俺の回答か分かるかな
ちな上の方のレスのうち、どれが俺の回答か分かるかな
171デフォルトの名無しさん
2020/04/16(木) 02:05:16.91ID:oMF0NE5s 急に語り出して劇寒
172デフォルトの名無しさん
2020/04/16(木) 02:06:03.31ID:s4YIDkZq あげあしとりで終わりかよ
つまんねー
つまんねー
173デフォルトの名無しさん
2020/04/16(木) 02:08:57.22ID:s4YIDkZq174デフォルトの名無しさん
2020/04/16(木) 02:21:19.79ID:kjXrQDZb 今までも同じようにあまりよろしくないお題を出してそのたびにスルーか同じように指摘され続けてるんだからこんなもんでは?
個人的には全く解いてみたいと思えないお題ばかり
お題作るのは難しいなぁとつくづく感じる
個人的には全く解いてみたいと思えないお題ばかり
お題作るのは難しいなぁとつくづく感じる
175デフォルトの名無しさん
2020/04/16(木) 02:24:22.48ID:7PlP0fH8 ここはすききらいをしゃべるすれではありません
176デフォルトの名無しさん
2020/04/16(木) 02:24:26.49ID:GrYlaJ67 お題作るのは難しいよ
ちょうどいい難易度が難しい
ちょうどいい難易度が難しい
177デフォルトの名無しさん
2020/04/16(木) 02:25:43.69ID:s4YIDkZq そりゃ気持ちはわかっけどさー
解いてみたいと思えないお題ばかり、ってことはさすがに無い。
お題によって回答したい、したくないはあるぞ、
時間が許せば、それには回答してきた
解いてみたいと思えないお題ばかり、ってことはさすがに無い。
お題によって回答したい、したくないはあるぞ、
時間が許せば、それには回答してきた
178デフォルトの名無しさん
2020/04/16(木) 02:27:00.67ID:/gsmKway おまえ名言()とか好きそうだな
179デフォルトの名無しさん
2020/04/16(木) 02:27:53.73ID:s4YIDkZq >>178
何か心に響いたか?
何か心に響いたか?
180デフォルトの名無しさん
2020/04/16(木) 04:43:54.36ID:G88s3oE4 糞コテのお題をスルーできてない時点でどっちもゴミ
181デフォルトの名無しさん
2020/04/16(木) 05:18:07.63ID:FKJpjkAo お題、JAVA
ウインドウで、ボールを動かして、振り子にしろ。
ウインドウで、ボールを動かして、振り子にしろ。
182デフォルトの名無しさん
2020/04/16(木) 15:33:05.77ID:CZ2awm/7183デフォルトの名無しさん
2020/04/16(木) 18:34:42.45ID:Ao1pcPxo 眠くなってきた
184デフォルトの名無しさん
2020/04/16(木) 19:17:37.16ID:A3RNLqkM 草
185デフォルトの名無しさん
2020/04/16(木) 19:18:52.09ID:D2Oboa0/ >>182
しゅごい・・・
しゅごい・・・
186デフォルトの名無しさん
2020/04/16(木) 21:50:22.06ID:yL7j0Eir お題:
2次元平面上の点が5つ与えられる。
これらを順番に線分で結んだとき、星形が構成できるかどうか判定せよ
0 0
1 2
2 0
0 1
2 1
=> true
0 0
1 2
2 0
0 2
2 2
=> false
0 0
0 1
1 2
2 1
2 0
=> false
0 0
5 5
0 5
1 0
1 6
=> true
2次元平面上の点が5つ与えられる。
これらを順番に線分で結んだとき、星形が構成できるかどうか判定せよ
0 0
1 2
2 0
0 1
2 1
=> true
0 0
1 2
2 0
0 2
2 2
=> false
0 0
0 1
1 2
2 1
2 0
=> false
0 0
5 5
0 5
1 0
1 6
=> true
187デフォルトの名無しさん
2020/04/16(木) 22:15:17.40ID:A3RNLqkM 線型代数の問題だな
188デフォルトの名無しさん
2020/04/16(木) 22:30:46.61ID:+l2higCM お題
急減少列かどうかを判定せよ。
ただし急減少列とは、(末尾以外の)どの要素もそれ以降の要素の総和より大きい列のこと。
32,16,8,4,2,1 -> true
32,16,8,4,2,1,1 -> false
610,377,144,55,21,8,3,1 -> true
987,610,233,89,34,13,5,2,1 -> false
急減少列かどうかを判定せよ。
ただし急減少列とは、(末尾以外の)どの要素もそれ以降の要素の総和より大きい列のこと。
32,16,8,4,2,1 -> true
32,16,8,4,2,1,1 -> false
610,377,144,55,21,8,3,1 -> true
987,610,233,89,34,13,5,2,1 -> false
189デフォルトの名無しさん
2020/04/16(木) 22:37:52.73ID:dbvXh7HJ 逆順に並べた方が良いなあ
急増加列?
急増加列?
190デフォルトの名無しさん
2020/04/16(木) 22:57:42.94ID:tWuPngtw >>188 Perl5
sub f {
my $i = shift;
my $r = f(@_) if @_;
$i <= $r and die;
$i + $r;
}
for ([32,16,8,4,2,1], [32,16,8,4,2,1,1], [610,377,144,55,21,8,3,1], [987,610,233,89,34,13,5,2,1]) {
eval { f @$_ };
$s = "$@" ? 'false' : 'true';
$"=','; print "@$_ = $s\n";
}
実行
~ $ perl 17_188_shdec.pl
32,16,8,4,2,1 = true
32,16,8,4,2,1,1 = false
610,377,144,55,21,8,3,1 = true
987,610,233,89,34,13,5,2,1 = false
sub f {
my $i = shift;
my $r = f(@_) if @_;
$i <= $r and die;
$i + $r;
}
for ([32,16,8,4,2,1], [32,16,8,4,2,1,1], [610,377,144,55,21,8,3,1], [987,610,233,89,34,13,5,2,1]) {
eval { f @$_ };
$s = "$@" ? 'false' : 'true';
$"=','; print "@$_ = $s\n";
}
実行
~ $ perl 17_188_shdec.pl
32,16,8,4,2,1 = true
32,16,8,4,2,1,1 = false
610,377,144,55,21,8,3,1 = true
987,610,233,89,34,13,5,2,1 = false
191デフォルトの名無しさん
2020/04/17(金) 00:26:03.00ID:aBy1G2y60192デフォルトの名無しさん
2020/04/17(金) 02:37:38.65ID:GLu8MX8J193デフォルトの名無しさん
2020/04/17(金) 09:07:37.71ID:uUpf2Y3l194デフォルトの名無しさん
2020/04/17(金) 09:10:52.22ID:uUpf2Y3l 直線と点の位置関係判別を6回に減らした
195デフォルトの名無しさん
2020/04/17(金) 16:03:16.50ID:FcD+/8tF >>186 Perl5、PDL(Pythonで言うならnumpyとscipyを合わせたようなPerlモジュール)を使わせてもらいました
@t = ([[0,0], [1,2], [2,0], [0,1], [2,1]],
[[0,0], [1,2], [2,0], [0,2], [2,2]],
[[0,0], [0,1], [1,2], [2,1], [2,0]],
[[0,0], [5,5], [0,5], [1,0], [1,6]]);
use PDL;
use PDL::Math;
for $ps (@t) {
$ang = 0.0;
for ([0,1,2], [1,2,3], [2,3,4], [3,4,0], [4,0,1]) {
@p = map{pdl $$ps[$_]} @$_;
$v1 = norm($p[0] - $p[1]);
$v2 = norm($p[2] - $p[1]);
$spro = sum($v1 * $v2);
$ang += acos($spro);
}
$ang = abs($ang);
$ans = ($ang > 3.14 and 3.15 < $ang) ? 'true' : 'false';
print "$ans\n";
}
実行結果
~ $ perl 17_186_istar.pl
false
false
true
false
@t = ([[0,0], [1,2], [2,0], [0,1], [2,1]],
[[0,0], [1,2], [2,0], [0,2], [2,2]],
[[0,0], [0,1], [1,2], [2,1], [2,0]],
[[0,0], [5,5], [0,5], [1,0], [1,6]]);
use PDL;
use PDL::Math;
for $ps (@t) {
$ang = 0.0;
for ([0,1,2], [1,2,3], [2,3,4], [3,4,0], [4,0,1]) {
@p = map{pdl $$ps[$_]} @$_;
$v1 = norm($p[0] - $p[1]);
$v2 = norm($p[2] - $p[1]);
$spro = sum($v1 * $v2);
$ang += acos($spro);
}
$ang = abs($ang);
$ans = ($ang > 3.14 and 3.15 < $ang) ? 'true' : 'false';
print "$ans\n";
}
実行結果
~ $ perl 17_186_istar.pl
false
false
true
false
196デフォルトの名無しさん
2020/04/17(金) 17:08:25.08ID:TdOLExdu >>195 間違えてた
× $ans = ($ang > 3.14 and 3.15 < $ang) ? 'true' : 'false';
○ $ans = (3.14 < $ang and $ang < 3.15) ? 'true' : 'false';
しかし、実行結果は
~ $ perl 17_186_istar.pl
true
true
false
true
二番目がtrueになってしまう…orz
× $ans = ($ang > 3.14 and 3.15 < $ang) ? 'true' : 'false';
○ $ans = (3.14 < $ang and $ang < 3.15) ? 'true' : 'false';
しかし、実行結果は
~ $ perl 17_186_istar.pl
true
true
false
true
二番目がtrueになってしまう…orz
197デフォルトの名無しさん
2020/04/17(金) 17:12:31.49ID:tQG0pn8t198デフォルトの名無しさん
2020/04/17(金) 18:56:51.04ID:uUpf2Y3l199デフォルトの名無しさん
2020/04/17(金) 19:39:38.21ID:uUpf2Y3l200デフォルトの名無しさん
2020/04/17(金) 23:20:45.04ID:GLu8MX8J >>188
Kotlin
https://paiza.io/projects/BBr9uBvBedkLv6sZKj1z2A
やってることは >>192 とほぼ同じ。reduce() という丁度良いやつがあったのでそれを使った。
Kotlin
https://paiza.io/projects/BBr9uBvBedkLv6sZKj1z2A
やってることは >>192 とほぼ同じ。reduce() という丁度良いやつがあったのでそれを使った。
201デフォルトの名無しさん
2020/04/18(土) 04:51:44.87ID:hOyj3UHi お題: クリックすると画面が上下左右に揺れまくるボタンを作りなさい
202デフォルトの名無しさん
2020/04/18(土) 06:43:51.86ID:YnXQesFn 「五角形P0-P1-P2-P3-P4が星形である」と「五角形P0-P2-P4-P1-P3が凸五角形である」は同値でいいのかな
203デフォルトの名無しさん
2020/04/18(土) 06:48:34.99ID:N4WXNODD 自明だね
204デフォルトの名無しさん
2020/04/18(土) 14:12:42.90ID:IwpZ9OtG atan2とか要りそう
知らんけど
知らんけど
205デフォルトの名無しさん
2020/04/18(土) 14:40:52.97ID:rV7GPkSs 内積とかでできそう
知らんけど
知らんけど
206デフォルトの名無しさん
2020/04/18(土) 16:18:27.16ID:/6mIZfhm207デフォルトの名無しさん
2020/04/18(土) 16:34:26.54ID:N4WXNODD >>206
3番目のデータに関して
「五角形P0-P1-P2-P3-P4が星形である」 => false
「五角形P0-P2-P4-P1-P3が凸五角形である」 => false
反例にはなっていないはずだが?
3番目のデータに関して
「五角形P0-P1-P2-P3-P4が星形である」 => false
「五角形P0-P2-P4-P1-P3が凸五角形である」 => false
反例にはなっていないはずだが?
208デフォルトの名無しさん
2020/04/18(土) 16:47:06.00ID:30AxPVCB 「五角形P0-P1-P2-P3-P4が凸五角形である」 => true
「五角形P0-P2-P4-P1-P3が星形である」 => true
多分言いたいのはこっちでしょ
いずれにしろ反例になってないけど
「五角形P0-P2-P4-P1-P3が星形である」 => true
多分言いたいのはこっちでしょ
いずれにしろ反例になってないけど
209デフォルトの名無しさん
2020/04/18(土) 16:59:35.61ID:oyi4MQQP 結局コードは同じになりそう
知らんけど
知らんけど
210デフォルトの名無しさん
2020/04/18(土) 17:09:16.93ID:30AxPVCB そりゃ同値なんだから
点の指定順が変わるだけ
点の指定順が変わるだけ
211デフォルトの名無しさん
2020/04/18(土) 17:29:34.15ID:8ogfpEcQ 同値だと違うアルゴリズムでも同じコードになるのか
知らんかった
知らんかった
212デフォルトの名無しさん
2020/04/18(土) 17:34:30.91ID:30AxPVCB 何を言ってるんだこの人は
213デフォルトの名無しさん
2020/04/18(土) 17:37:26.92ID:8ogfpEcQ なんだ違うのか orz
214デフォルトの名無しさん
2020/04/18(土) 18:04:17.09ID:U3Va20gw いつものキチガイでしょ。
215デフォルトの名無しさん
2020/04/18(土) 22:39:39.01ID:9Ypi4rqk >>207
4番目のデータは?
4番目のデータは?
216デフォルトの名無しさん
2020/04/18(土) 22:46:42.32ID:N4WXNODD >>215
「五角形P0-P1-P2-P3-P4が星形である」 => true
「五角形P0-P2-P4-P1-P3が凸五角形である」 => true
だから反例じゃねえだろ
つーか凸角形の定義と対角線の定義から同値性は自明だろ
何が分からないのかが素でわからん
というか日本語通じてんのかこれ
「五角形P0-P1-P2-P3-P4が星形である」 => true
「五角形P0-P2-P4-P1-P3が凸五角形である」 => true
だから反例じゃねえだろ
つーか凸角形の定義と対角線の定義から同値性は自明だろ
何が分からないのかが素でわからん
というか日本語通じてんのかこれ
217デフォルトの名無しさん
2020/04/18(土) 22:48:13.84ID:n1sMw7/h またキチガイが暴れてるのか…
218デフォルトの名無しさん
2020/04/18(土) 22:50:15.61ID:H1RDccYw >>216
4番目のデータの「五角形P0-P2-P4-P1-P3」は変な形してない?
4番目のデータの「五角形P0-P2-P4-P1-P3」は変な形してない?
219デフォルトの名無しさん
2020/04/18(土) 22:50:52.43ID:N4WXNODD >>218
綺麗な凸5角形ですがなにか
綺麗な凸5角形ですがなにか
220デフォルトの名無しさん
2020/04/18(土) 22:52:15.69ID:n1sMw7/h ID真っ赤やん
221デフォルトの名無しさん
2020/04/18(土) 22:53:23.50ID:r5aLC6gt222デフォルトの名無しさん
2020/04/18(土) 22:54:18.63ID:N4WXNODD223デフォルトの名無しさん
2020/04/18(土) 22:57:07.50ID:N4WXNODD これ見てよく考えて
_4____
2____1
______
______
______
______
03____
_4____
2____1
______
______
______
______
03____
224デフォルトの名無しさん
2020/04/18(土) 22:59:19.73ID:GFBeMLbL >>221
ホントだすまんおれの手元の描画ミス
検算プログラム書いたが4番目のデータ、0-2-4-1-3で一周回ってきたときの方向かえる角度の和が2piにならんのよね
ANG: -0.785398163397448 -1.03037682652431 -1.14103404769821 -0.896055384571344 -1.5707963267949
和: -5.42366074898621
なーにかが間違ってるのか…
ホントだすまんおれの手元の描画ミス
検算プログラム書いたが4番目のデータ、0-2-4-1-3で一周回ってきたときの方向かえる角度の和が2piにならんのよね
ANG: -0.785398163397448 -1.03037682652431 -1.14103404769821 -0.896055384571344 -1.5707963267949
和: -5.42366074898621
なーにかが間違ってるのか…
225デフォルトの名無しさん
2020/04/18(土) 23:19:38.75ID:3QrrEgXO 五角形の内角の和は540度だぞw
226デフォルトの名無しさん
2020/04/18(土) 23:23:05.51ID:N4WXNODD 内角じゃなくてどれだけ曲がったかの和を計算してるんだから2PIで良いだろ
数値があってんのかは知らんが
数値があってんのかは知らんが
227デフォルトの名無しさん
2020/04/18(土) 23:50:57.37ID:tXl890QR ニチャァ…
228デフォルトの名無しさん
2020/04/18(土) 23:58:10.79ID:ZN+TZ1sR 算数できないやつが単発IDで必死にマウント取ろうとしてて草
229デフォルトの名無しさん
2020/04/19(日) 00:09:28.10ID:10eyuplu230デフォルトの名無しさん
2020/04/19(日) 00:25:50.90ID:suK8nNv5231デフォルトの名無しさん
2020/04/19(日) 00:29:16.44ID:10eyuplu >>230
普通に余弦定理で内角求めてPIから引くだけだよな?
普通に余弦定理で内角求めてPIから引くだけだよな?
232デフォルトの名無しさん
2020/04/19(日) 00:35:52.14ID:suK8nNv5233デフォルトの名無しさん
2020/04/19(日) 00:56:56.21ID:tNtEbJNg 自演と思わないと精神保てないの草
234デフォルトの名無しさん
2020/04/19(日) 01:15:18.71ID:kCjisW+o お題:マップの縮尺から画面の縮尺バーの長さを求めろ。
縮尺は、現実:画面 = 1:s
バーの長さは100以上で出来るだけ短くする。
バーの現実での長さの数値は 1, 2, 5 が頭にきて以降は0のみが続くもののみ許される。(1桁なら0がなくても良い)
例:
s = 0.003 → 150
0.01 → 100
0.4 → 200
0.96 → 192
縮尺は、現実:画面 = 1:s
バーの長さは100以上で出来るだけ短くする。
バーの現実での長さの数値は 1, 2, 5 が頭にきて以降は0のみが続くもののみ許される。(1桁なら0がなくても良い)
例:
s = 0.003 → 150
0.01 → 100
0.4 → 200
0.96 → 192
235デフォルトの名無しさん
2020/04/19(日) 06:41:17.34ID:J81tNU7x >>234
問題がよくわからない。
問題がよくわからない。
236デフォルトの名無しさん
2020/04/19(日) 07:17:30.86ID:kCjisW+o 説明が下手ですみません。
縮尺バーはGoogleマップの右下にあるようなバーで、画面上のバーの長さが現実では何キロメートルかを示しています。
その現実で何キロメートルかというのがバーの左に表示されています。
バーの長さはズームインしていくと連続的に伸びていき、伸びるすぎるガクッと縮んで、また連続的に伸びていきます。
そしてそのバーの左に表示される距離は2kmや50km、100kmなどの数値のみで中途半端な値は取りません。
この条件下で、縮尺とバーの長さの最小値を定めたときに、どんな長さでバーを画面に表示するかを求める問題です。
バーの長さは取りうるものの中で最小のものでお願いします。
縮尺バーはGoogleマップの右下にあるようなバーで、画面上のバーの長さが現実では何キロメートルかを示しています。
その現実で何キロメートルかというのがバーの左に表示されています。
バーの長さはズームインしていくと連続的に伸びていき、伸びるすぎるガクッと縮んで、また連続的に伸びていきます。
そしてそのバーの左に表示される距離は2kmや50km、100kmなどの数値のみで中途半端な値は取りません。
この条件下で、縮尺とバーの長さの最小値を定めたときに、どんな長さでバーを画面に表示するかを求める問題です。
バーの長さは取りうるものの中で最小のものでお願いします。
237デフォルトの名無しさん
2020/04/19(日) 07:38:33.09ID:aJCN2KvM238デフォルトの名無しさん
2020/04/19(日) 07:56:27.14ID:n5nVZY1D >>233
ひっでえブーメランで草
ひっでえブーメランで草
239デフォルトの名無しさん
2020/04/19(日) 08:58:41.21ID:OfVksrZS 外角って言葉、最近は習わない?
240デフォルトの名無しさん
2020/04/19(日) 12:05:15.55ID:bDqlqATM 単発IDワラワラ
241デフォルトの名無しさん
2020/04/19(日) 12:16:31.87ID:ylCglSST ちょっと数学の話になる度にむきになって荒らすのが必ず一人いるからな
242デフォルトの名無しさん
2020/04/19(日) 12:30:18.52ID:6WjGzswu お題に答えろよ
243デフォルトの名無しさん
2020/04/19(日) 13:11:54.30ID:+exX8g3v 日本語や説明が下手なお題だと考える気も起こらない
244デフォルトの名無しさん
2020/04/19(日) 14:11:18.59ID:J81tNU7x245デフォルトの名無しさん
2020/04/19(日) 15:33:55.52ID:xgV79Bs/ >>186 Perl5、P0-P2-P4-P1-P3が凸五角形であるか、で判定
@t = ([[0,0], [1,2], [2,0], [0,1], [2,1]],
[[0,0], [1,2], [2,0], [0,2], [2,2]],
[[0,0], [0,1], [1,2], [2,1], [2,0]],
[[0,0], [5,5], [0,5], [1,0], [1,6]],
[[0,1], [0,0], [1,0],[-1,-2],[-2,-1]]
);
@s = qw{0 2 4 1 3 0 2};
use PDL;
use PDL::Math;
use PDL::Constants qw(PI);
use feature 'signatures';
sub f($v1, $v2) {
my $sp = sum $v1 * $v2;
$v2 = -$v2 if $sp < 0.0;
my $ang = asin det pdl $v1 , $v2;
$ang = $ang >= 0.0 ? -PI + $ang : PI + $ang if $sp < 0.0;
$ang
}
for $ps (@t) {
@vs = map{pdl $ps->[$s[$_]]} 0..6;
@es = map{norm($vs[$_+1] - $vs[$_])} 0..5;
$angs = pdl map{f $es[$_], $es[$_+1]} 0..4;
$ans = 'true';
$ans = 'false' if (grep{abs $angs->at($_) < 0.0001} 0..4)
or $angs->min * $angs->max < 0.0;
$ttl = sum $angs;
$ans = 'false' if abs $ttl < 6.28 or abs $ttl > 6.29;
print "$ttl = Σ$angs: $ans\n";
}
@t = ([[0,0], [1,2], [2,0], [0,1], [2,1]],
[[0,0], [1,2], [2,0], [0,2], [2,2]],
[[0,0], [0,1], [1,2], [2,1], [2,0]],
[[0,0], [5,5], [0,5], [1,0], [1,6]],
[[0,1], [0,0], [1,0],[-1,-2],[-2,-1]]
);
@s = qw{0 2 4 1 3 0 2};
use PDL;
use PDL::Math;
use PDL::Constants qw(PI);
use feature 'signatures';
sub f($v1, $v2) {
my $sp = sum $v1 * $v2;
$v2 = -$v2 if $sp < 0.0;
my $ang = asin det pdl $v1 , $v2;
$ang = $ang >= 0.0 ? -PI + $ang : PI + $ang if $sp < 0.0;
$ang
}
for $ps (@t) {
@vs = map{pdl $ps->[$s[$_]]} 0..6;
@es = map{norm($vs[$_+1] - $vs[$_])} 0..5;
$angs = pdl map{f $es[$_], $es[$_+1]} 0..4;
$ans = 'true';
$ans = 'false' if (grep{abs $angs->at($_) < 0.0001} 0..4)
or $angs->min * $angs->max < 0.0;
$ttl = sum $angs;
$ans = 'false' if abs $ttl < 6.28 or abs $ttl > 6.29;
print "$ttl = Σ$angs: $ans\n";
}
246デフォルトの名無しさん
2020/04/19(日) 15:35:04.69ID:dE29U5t1 >>245 の実行結果
~ $ perl 17_186_convx_pent.pl
The signatures feature is experimental at 17_186_convx_pent.pl line 12, <DATA> line 207.
6.28318528610616 = Σ[ 1.5707963 0.78539816 1.5707963 0.78539816 1.5707963]: true
6.28318530717959 = Σ[ 1.5707963 1.5707963 0 1.5707963 1.5707963]: false
-12.5663706143592 = Σ[-2.2142974 -2.4980915 -2.677945 -2.677945 -2.4980915]: false
-6.28318530717959 = Σ[-0.78539816 -1.0303768 -2.0005586 -0.89605538 -1.5707963]: true
-12.5663706143592 = Σ[-2.0344439 -2.9996956 -2.4980915 -2.9996956 -2.0344439]: false
~ $ perl 17_186_convx_pent.pl
The signatures feature is experimental at 17_186_convx_pent.pl line 12, <DATA> line 207.
6.28318528610616 = Σ[ 1.5707963 0.78539816 1.5707963 0.78539816 1.5707963]: true
6.28318530717959 = Σ[ 1.5707963 1.5707963 0 1.5707963 1.5707963]: false
-12.5663706143592 = Σ[-2.2142974 -2.4980915 -2.677945 -2.677945 -2.4980915]: false
-6.28318530717959 = Σ[-0.78539816 -1.0303768 -2.0005586 -0.89605538 -1.5707963]: true
-12.5663706143592 = Σ[-2.0344439 -2.9996956 -2.4980915 -2.9996956 -2.0344439]: false
247デフォルトの名無しさん
2020/04/19(日) 16:09:00.64ID:wiVZfWUn248デフォルトの名無しさん
2020/04/19(日) 16:09:14.25ID:9DMQwSqL249デフォルトの名無しさん
2020/04/19(日) 16:14:07.05ID:o4nQ3+S9250デフォルトの名無しさん
2020/04/19(日) 18:05:16.51ID:3h7RKaJW >>234 Perl5 (問題の意図をくみ取り違えていなければ、下記で良い筈…ただし実の距離が一桁以下の場合はNGかも…)
for $s (qw{0.003 0.01 0.4 0.96}) {
$d = 1;
while ($s * $d < 10) { $d *= 10 }
if (50 <= ($s * $d)) {
$d *= 2;
} elsif (20 <= ($s * $d)) {
$d *= 5;
} else {
$d *= 10;
}
print "$s -> ", $s * $d, "\n";
}
実行結果
~ $ perl 17_234_scale_bar_len.pl
0.003 -> 150
0.01 -> 100
0.4 -> 200
0.96 -> 192
for $s (qw{0.003 0.01 0.4 0.96}) {
$d = 1;
while ($s * $d < 10) { $d *= 10 }
if (50 <= ($s * $d)) {
$d *= 2;
} elsif (20 <= ($s * $d)) {
$d *= 5;
} else {
$d *= 10;
}
print "$s -> ", $s * $d, "\n";
}
実行結果
~ $ perl 17_234_scale_bar_len.pl
0.003 -> 150
0.01 -> 100
0.4 -> 200
0.96 -> 192
251デフォルトの名無しさん
2020/04/19(日) 20:22:34.05ID:3rSuzVma >>250 もっとスンナリ書けるんだった…
for (qw{0.003 0.01 0.4 0.96}) {
$d = $_;
while ($d < 10) { $d *= 10 }
if (50 <= $d) { $d *= 2 }
elsif (20 <= $d) { $d *= 5 }
else { $d *= 10 }
print "$_ -> ", $d, "\n";
}
for (qw{0.003 0.01 0.4 0.96}) {
$d = $_;
while ($d < 10) { $d *= 10 }
if (50 <= $d) { $d *= 2 }
elsif (20 <= $d) { $d *= 5 }
else { $d *= 10 }
print "$_ -> ", $d, "\n";
}
252デフォルトの名無しさん
2020/04/20(月) 06:02:04.44ID:C+lKY/AM >>234 Ruby
def scale( s )
i = (100.0 / s).ceil
j = 100 * 10 ** - Math.log10( s ).to_i
s * j * [ 1, 2, 5 ].each{|k| break k if i <= k * j; 10 }
end
[ 0.003, 0.01, 0.4, 0.96 ].each{|x| puts "%-6g → %d" % [ x, scale(x) ] }
def scale( s )
i = (100.0 / s).ceil
j = 100 * 10 ** - Math.log10( s ).to_i
s * j * [ 1, 2, 5 ].each{|k| break k if i <= k * j; 10 }
end
[ 0.003, 0.01, 0.4, 0.96 ].each{|x| puts "%-6g → %d" % [ x, scale(x) ] }
253デフォルトの名無しさん
2020/04/20(月) 16:12:46.13ID:EsvxpnHB >>181 Perl5 (Javaじゃなくてスマソ、ActivePerlなどのTkxモジュールがインストールされている環境で実行ください)
use Tkx;
$top = Tkx::widget->new('.');
$c = $top->new_canvas(-width => 300, -height => 300);
$c->g_pack(-expand => 1);
($x0, $y0) = (150, 50);
$r = 200;
($v, $theta) = (0, 3.1415 * 40 / 180);
($x, $y);
$dt = 20;
sub show {
($x, $y) = ($x0 + $r * sin $theta, $y0 + $r * cos $theta);
$c->coords($stick, $x0, $y0, $x, $y);
$c->coords($ball, $x-7, $y-7, $x+7, $y+7);
Tkx::after($dt, \&show);
$a = -0.00098 * sin $theta;
$a *= $a * $v > 0 ? 0.95 : 1/0.95; # dumping
$dv = $a * $dt;
$dtheta = ($v + $dv/2) * $dt / $r;
$theta += $dtheta;
$v += $dv;
}
show;
$stick = $c->create_line($x0, $y0, $x, $y, -width => 2.0);
$ball = $c->create_oval($x-7, $y-7, $x+7, $y+7, -fill => 'gray');
Tkx::MainLoop();
use Tkx;
$top = Tkx::widget->new('.');
$c = $top->new_canvas(-width => 300, -height => 300);
$c->g_pack(-expand => 1);
($x0, $y0) = (150, 50);
$r = 200;
($v, $theta) = (0, 3.1415 * 40 / 180);
($x, $y);
$dt = 20;
sub show {
($x, $y) = ($x0 + $r * sin $theta, $y0 + $r * cos $theta);
$c->coords($stick, $x0, $y0, $x, $y);
$c->coords($ball, $x-7, $y-7, $x+7, $y+7);
Tkx::after($dt, \&show);
$a = -0.00098 * sin $theta;
$a *= $a * $v > 0 ? 0.95 : 1/0.95; # dumping
$dv = $a * $dt;
$dtheta = ($v + $dv/2) * $dt / $r;
$theta += $dtheta;
$v += $dv;
}
show;
$stick = $c->create_line($x0, $y0, $x, $y, -width => 2.0);
$ball = $c->create_oval($x-7, $y-7, $x+7, $y+7, -fill => 'gray');
Tkx::MainLoop();
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- バリ島で男子生徒ら集団万引きか、防犯カメラ映像が拡散 京都の大谷中学・高校が「窃盗行為」謝罪★4 [七波羅探題★]
- 中国軍機レーダー照射、トランプ氏沈黙突く 試される日本外交 [蚤の市★]
- 【地震】青森県で震度6強 長周期地震動も 津波注意報すべて解除 ★7 [ぐれ★] [ぐれ★]
- 【広島】「万引きした人を追跡」コンビニ店員の男性(46)を果物ナイフで刺したか 中国籍の少年(17)を殺人未遂容疑で現行犯逮捕 [ぐれ★]
- トランプ大統領 エヌビディア製AI半導体の中国輸出許可 安全保障重視の方針転換 [蚤の市★]
- 【サッカー】58歳カズ「オファーが来ている」 J3福島と近日中にも交渉 早ければ年内にも決断 [征夷大将軍★]
- 【悲報】高市早苗の擬人化がXで大バズりwwwwwwwwwwww [455031798]
- 高市が早くあの発言を撤回しないと、中国からもっと大きな制裁が飛んでくるぞ [805596214]
- 【動画】ファッションモデルまんこ、裸でランウェイを歩く。これがファッションだと言われて [749674962]
- 【画像】髙市さん「無職のシンママ支援を手厚くするため、世帯年収900万円以上の控除をカットします🙂」 [881878332]
- 早大名誉教授「高市内閣の高支持率はデータ操作か、支持している日本人がアホなのか」👈核心を突いてしまう [868050967]
- こんぺこ!こんぺこ!こんぺこ!🐰🏡
