プログラミングのお題スレです。
【出題と回答例】
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:0rEhys36187デフォルトの名無しさん
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();
254デフォルトの名無しさん
2020/04/20(月) 17:09:22.78ID:CQO/p7b7 最下点付近での近似だな
255デフォルトの名無しさん
2020/04/20(月) 17:15:47.88ID:CQO/p7b7 いや普通のだったわ、すまん
256デフォルトの名無しさん
2020/04/20(月) 18:33:21.43ID:SXRlK0qI >>181 Python3 (Javaじゃなくてスマソ >>253 をインプリ, tkinterのインストールされている環境で実行ください)
import math, tkinter as tk
root = tk.Tk()
canvas = tk.Canvas(root, width=300, height=300)
canvas.pack()
x0, y0 = 150, 50
r = 200
v, theta = 0, 3.1415 * 40 / 180
x, y = x0 + r * math.sin(theta), y0 + r * math.cos(theta)
stick = canvas.create_line(x0, y0, x, y, width=2)
ball = canvas.create_oval(x-7, y-7, x+7, y+7, fill='gray')
dt = 20
def show():
global v, theta, x, y
a = -0.00098 * math.sin(theta)
a *= 0.95 if a * v > 0 else 1/0.95 # dumping
dv = a * dt;
dtheta = (v + dv/2) * dt / r
theta += dtheta;
v += dv;
x, y = x0 + r * math.sin(theta), y0 + r * math.cos(theta)
canvas.coords(stick, x0, y0, x, y)
canvas.coords(ball, x-7, y-7, x+7, y+7)
root.after(dt, show)
show()
root.mainloop()
import math, tkinter as tk
root = tk.Tk()
canvas = tk.Canvas(root, width=300, height=300)
canvas.pack()
x0, y0 = 150, 50
r = 200
v, theta = 0, 3.1415 * 40 / 180
x, y = x0 + r * math.sin(theta), y0 + r * math.cos(theta)
stick = canvas.create_line(x0, y0, x, y, width=2)
ball = canvas.create_oval(x-7, y-7, x+7, y+7, fill='gray')
dt = 20
def show():
global v, theta, x, y
a = -0.00098 * math.sin(theta)
a *= 0.95 if a * v > 0 else 1/0.95 # dumping
dv = a * dt;
dtheta = (v + dv/2) * dt / r
theta += dtheta;
v += dv;
x, y = x0 + r * math.sin(theta), y0 + r * math.cos(theta)
canvas.coords(stick, x0, y0, x, y)
canvas.coords(ball, x-7, y-7, x+7, y+7)
root.after(dt, show)
show()
root.mainloop()
257デフォルトの名無しさん
2020/04/20(月) 19:55:58.67ID:qCtnBvYT そろそろオレ二重振り子見たくなってきちゃったなァ
258デフォルトの名無しさん
2020/04/20(月) 20:37:59.21ID:7fNLbA/z double pendulumはカオスだからNG
259デフォルトの名無しさん
2020/04/20(月) 21:50:54.25ID:3yxFdBsA260デフォルトの名無しさん
2020/04/20(月) 22:11:41.07ID:7fNLbA/z261デフォルトの名無しさん
2020/04/20(月) 22:36:14.60ID:arq8EuUU 考えたわけじゃなくね?
262デフォルトの名無しさん
2020/04/20(月) 23:51:34.10ID:RmTF1U13 これダイクストラなのか
263デフォルトの名無しさん
2020/04/21(火) 00:32:44.25ID:2I58wt93 スタックに積んで処理していくっていう昔ながらの方法と何か違うの?
264デフォルトの名無しさん
2020/04/21(火) 00:35:59.72ID:2I58wt93 ウィキペディアにあった
265デフォルトの名無しさん
2020/04/21(火) 19:01:08.06ID:Nu/0ktL2 >>258
数値計算にカオスとか関係なくね?
数値計算にカオスとか関係なくね?
266デフォルトの名無しさん
2020/04/23(木) 02:45:01.66ID:40I0QciX267デフォルトの名無しさん
2020/04/23(木) 05:19:07.09ID:GeQlI54q >>265
ウルトラマンカオス。
ウルトラマンカオス。
268デフォルトの名無しさん
2020/04/23(木) 22:15:50.71ID:CuZLC5Yi >>181 Common Lisp (SBCL) + CLX。X Window Systemが使える環境で。>>253, >>256を参考に
(require "asdf")
(asdf:load-system "clx")
(defpackage #:pendulum (:use #:common-lisp #:xlib))
(in-package #:pendulum)
(defvar *display* (open-default-display))
(defvar *screen* (display-default-screen *display*))
(defvar *window* (create-window :parent (screen-root *screen*)
:x 0 :y 0
:width 300 :height 300
:background (screen-white-pixel *screen*)))
(defvar *gcontext* (create-gcontext :drawable *window*))
(defparameter *x0* 150)
(defparameter *y0* 50)
(defparameter *r* 200)
(defparameter *theta0* (/ (* pi 40) 180))
(defparameter *dt* 0.03)
(map-window *window*)
(loop for v = 0 then (+ v dv)
for theta = *theta0* then (+ theta dtheta)
for x = (+ *x0* (floor (* *r* (sin theta))))
for y = (+ *y0* (floor (* *r* (cos theta))))
for a = (let ((a (* -0.00098 (sin theta)))) (funcall (if (> (* a v) 0) #'* #'/) a 0.95))
for dv = (* a *dt*)
for dtheta = (/ (* (+ v (/ dv 2)) *dt*) *r*)
do (progn
(draw-line *window* *gcontext* *x0* *y0* x y)
(draw-arc *window* *gcontext* (- x 7) (- y 7) 14 14 0 (* 2 pi) t)
(clear-area *window*)))
(require "asdf")
(asdf:load-system "clx")
(defpackage #:pendulum (:use #:common-lisp #:xlib))
(in-package #:pendulum)
(defvar *display* (open-default-display))
(defvar *screen* (display-default-screen *display*))
(defvar *window* (create-window :parent (screen-root *screen*)
:x 0 :y 0
:width 300 :height 300
:background (screen-white-pixel *screen*)))
(defvar *gcontext* (create-gcontext :drawable *window*))
(defparameter *x0* 150)
(defparameter *y0* 50)
(defparameter *r* 200)
(defparameter *theta0* (/ (* pi 40) 180))
(defparameter *dt* 0.03)
(map-window *window*)
(loop for v = 0 then (+ v dv)
for theta = *theta0* then (+ theta dtheta)
for x = (+ *x0* (floor (* *r* (sin theta))))
for y = (+ *y0* (floor (* *r* (cos theta))))
for a = (let ((a (* -0.00098 (sin theta)))) (funcall (if (> (* a v) 0) #'* #'/) a 0.95))
for dv = (* a *dt*)
for dtheta = (/ (* (+ v (/ dv 2)) *dt*) *r*)
do (progn
(draw-line *window* *gcontext* *x0* *y0* x y)
(draw-arc *window* *gcontext* (- x 7) (- y 7) 14 14 0 (* 2 pi) t)
(clear-area *window*)))
269デフォルトの名無しさん
2020/04/23(木) 23:35:29.80ID:CLpyggBI 乙。
270デフォルトの名無しさん
2020/04/23(木) 23:53:39.74ID:lusTU/GG お題: 配列と列数が与えられるので配列を行列に再構築して返せ
例:
in < [1, 2, 3, 4], 2
out > [[1, 2], [3, 4]]
例:
in < [1, 2, 3, 4], 2
out > [[1, 2], [3, 4]]
271デフォルトの名無しさん
2020/04/24(金) 00:06:04.10ID:B1fvRJ4E >>270 Perl5
$s = [1, 2, 3, 4];
$ncol = 2;
push @b, [splice @$s, 0, $ncol] while @$s;
use Data::Dump 'dump';
print dump(\@b,)."\n";
実行結果
~ $ perl 17_270.pl
[[1, 2], [3, 4]]
$s = [1, 2, 3, 4];
$ncol = 2;
push @b, [splice @$s, 0, $ncol] while @$s;
use Data::Dump 'dump';
print dump(\@b,)."\n";
実行結果
~ $ perl 17_270.pl
[[1, 2], [3, 4]]
272デフォルトの名無しさん
2020/04/24(金) 00:32:20.67ID:9Lyz0QqN273デフォルトの名無しさん
2020/04/24(金) 01:48:19.75ID:m2hQekEP >>270 D
void main() @safe {
import std.stdio : writeln;
import std.range : chunks;
[1, 2, 3, 4].chunks(2).writeln;
}
void main() @safe {
import std.stdio : writeln;
import std.range : chunks;
[1, 2, 3, 4].chunks(2).writeln;
}
274デフォルトの名無しさん
2020/04/24(金) 02:15:23.92ID:XDANT2WI275デフォルトの名無しさん
2020/04/24(金) 06:44:44.69ID:q4hgA9QE 入力無視すんなら最初からprint([[1,2,],[3,4]])ってかけばええやんw
276デフォルトの名無しさん
2020/04/24(金) 06:56:30.60ID:oaHyD4Kv >>270 J
f =: 4 : 0
(-x) , \ y
)
2 f 1 2 3 4
1 2
3 4
f =: 4 : 0
(-x) , \ y
)
2 f 1 2 3 4
1 2
3 4
277デフォルトの名無しさん
2020/04/24(金) 13:12:17.03ID:UlmQZP6K >>275
あんたバカ?
あんたバカ?
278デフォルトの名無しさん
2020/04/24(金) 14:03:24.71ID:LCR05+vC このスレは入力のハードコーディングは禁止だって>>1に書いてるだろ?
279デフォルトの名無しさん
2020/04/24(金) 15:04:41.40ID:SqTnlu82 みなのもの戦に備えろ
280デフォルトの名無しさん
2020/04/24(金) 15:36:47.80ID:fZ+Jqbcm >>270
Kotlin
https://paiza.io/projects/F6x2m9b-Hs-a2yOZFxLMAw
こういうことをするための chunked() という拡張関数がライブラリに最初からあるので自分ではほとんど何も考えてない。
Kotlin
https://paiza.io/projects/F6x2m9b-Hs-a2yOZFxLMAw
こういうことをするための chunked() という拡張関数がライブラリに最初からあるので自分ではほとんど何も考えてない。
281デフォルトの名無しさん
2020/04/24(金) 16:43:36.97ID:QbKPO/NJ \∧_ヘ / ̄ ̄ ̄ ̄ ̄ ̄ ̄
,,、,、,,, / \〇ノゝ < どうすっかな…… ,,、,、,,,
/三√ ゚Д゚) / \_______
/三/| ゚U゚|\ ,,、,、,,,
,,、,、,,, U (:::::::::::)∪ ,,、,、,,,
//三/|三|\ ,,,, ,,、,、,,,
∪ ∪
,, , ,,,, ,,、,、,,, ,,、,、,,,
,,,,, ∧_∧ うまいモナー,,,,, 、 ,,,,,, ,,,,,,,, ,,,,,
,,, ( ´∀`)___,,,,___ ,, ∧_∧ ゲンキニ シテルカナ・・・___,,
/ ̄ ( つ日ヽ ∧_∧ ( ) /
/ (__)) (´∀` ) ( ) ∧_∧∧_∧ / マターリモナー
∧_∧∧_∧ドーゾ (日ノ ) | | | ( ´∀`) ´∀`)
( ´∀`) ´∀`) ((__) ,(_(_) (○)⊂ ) つ日⊂ ) モーナー
―(つ⊂ ) つ⊂ )―――――――――――ヽ|〃(⌒)(⌒) (⌒)(⌒)
(⌒)(⌒) (⌒)(⌒)グーグー
,,、,、,,, / \〇ノゝ < どうすっかな…… ,,、,、,,,
/三√ ゚Д゚) / \_______
/三/| ゚U゚|\ ,,、,、,,,
,,、,、,,, U (:::::::::::)∪ ,,、,、,,,
//三/|三|\ ,,,, ,,、,、,,,
∪ ∪
,, , ,,,, ,,、,、,,, ,,、,、,,,
,,,,, ∧_∧ うまいモナー,,,,, 、 ,,,,,, ,,,,,,,, ,,,,,
,,, ( ´∀`)___,,,,___ ,, ∧_∧ ゲンキニ シテルカナ・・・___,,
/ ̄ ( つ日ヽ ∧_∧ ( ) /
/ (__)) (´∀` ) ( ) ∧_∧∧_∧ / マターリモナー
∧_∧∧_∧ドーゾ (日ノ ) | | | ( ´∀`) ´∀`)
( ´∀`) ´∀`) ((__) ,(_(_) (○)⊂ ) つ日⊂ ) モーナー
―(つ⊂ ) つ⊂ )―――――――――――ヽ|〃(⌒)(⌒) (⌒)(⌒)
(⌒)(⌒) (⌒)(⌒)グーグー
282デフォルトの名無しさん
2020/04/24(金) 19:26:26.62ID:q4hgA9QE >>277
死ねよゴミ
死ねよゴミ
283デフォルトの名無しさん
2020/04/24(金) 19:46:51.66ID:OOGSSbp6 お題:ABC問題を解いてみましょう。
概要。
https://originalnews.nico/249090
サンプル。
https://wandbox.org/permlink/ohmA7kG8HdpG2pKF
概要。
https://originalnews.nico/249090
サンプル。
https://wandbox.org/permlink/ohmA7kG8HdpG2pKF
284デフォルトの名無しさん
2020/04/24(金) 20:10:45.78ID:zMxMvQeG 解くって何をするん?
285デフォルトの名無しさん
2020/04/24(金) 20:28:58.54ID:Ln0giejY 論文のurlを表示するとかでいいんじゃね?
286デフォルトの名無しさん
2020/04/24(金) 20:56:21.49ID:pA5GOauV お題
XORゲートは4つのNANDゲートで構成できることが知られている
この構成方法をプログラムで探索せよ
i番目のNANDゲートの入力を(ai,bi)、出力をciとする
XORゲートの入力を(X,Y)、出力をZとする
出力例
X->a1
Y->b1
X->a2
c1->b2
Y->a3
c1->b3
c2->a4
c3->b4
c4->Z
XORゲートは4つのNANDゲートで構成できることが知られている
この構成方法をプログラムで探索せよ
i番目のNANDゲートの入力を(ai,bi)、出力をciとする
XORゲートの入力を(X,Y)、出力をZとする
出力例
X->a1
Y->b1
X->a2
c1->b2
Y->a3
c1->b3
c2->a4
c3->b4
c4->Z
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国軍機レーダー照射、トランプ氏沈黙突く 試される日本外交 ★3 [蚤の市★]
- 元プロ野球選手・堂上隼人(43)を20代女性2人へのわいせつ未遂容疑で8回目の逮捕…これまでの被害者は10代・20代の女性11人に [Anonymous★]
- JAが"政府の備蓄米買い上げ"見越して価格下げず!?「古いコメは食用向きでないなどと理由をつけ...」専門家解説 [煮卵★]
- 【高校野球】なぜ『7回制』は反対多数でも止まらないか… 高野連が「全員の命」守るために貫く伝統より改革の姿勢 [冬月記者★]
- 【結婚の壁】結婚どころか今まで恋愛経験は一切ない人も…「年収500万の壁」を突破できない中間層の苦しい現実 [ぐれ★]
- 【テレビ】石破前首相 中国レーダー照射「フェーズ上がってる」と指摘も「日本の世論が激高するのは避ける必要が…」 [少考さん★]
- アメリカ人「トランプは高市に対して黙れと言ったのに彼女は方針を転換していない。日本は5常任理事国からも全く支持を得られていない」 [884040186]
- 高市「中国さんお願い電話で話そ、このままじゃ武力衝突になっちゃう😭」日中間の専用電話に日本側からかけるも無視される [931948549]
- 【悲報】山里亮太(南海キャンディーズ)さん [329329848]
- 中国、1年半で航空自衛隊の全戦力に匹敵する戦力を追加配備している模様...高市完敗確定 [237216734]
- 【悲報】中国メディア「高市が撤回して済む話ではなくなった。わざと戦闘機をレーダー照射距離に来させる戦争扇動者だ」 [359965264]
- みんなでアニメのタイトル決めるぞ↓
