プログラミングのお題スレです。
【出題と回答例】
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:0rEhys36114デフォルトの名無しさん
2020/04/09(木) 16:48:05.84ID:G208HopB115デフォルトの名無しさん
2020/04/09(木) 16:59:35.57ID:EoH4bsm+ >>113
悔しいんでしょwwそうゆう風にいつまでも負け惜しみ言ってなよwww
悔しいんでしょwwそうゆう風にいつまでも負け惜しみ言ってなよwww
116デフォルトの名無しさん
2020/04/10(金) 15:52:58.48ID:FxL3k9Tv >>110
コード短いね
コード短いね
117デフォルトの名無しさん
2020/04/10(金) 15:53:17.46ID:FxL3k9Tv ageてしまった
118デフォルトの名無しさん
2020/04/10(金) 17:33:36.23ID:gIxx/WN6 気にすんな
119デフォルトの名無しさん
2020/04/10(金) 17:34:13.60ID:GWaBtrPd age禁止ってまだやってんの?
120デフォルトの名無しさん
2020/04/10(金) 17:42:36.38ID:7f4O8kzL 非常事態を宣言します
121デフォルトの名無しさん
2020/04/10(金) 20:50:54.41ID:gIxx/WN6 このスレは放っておくとすぐ過疎っちゃうんだからむしろもっともっと激しくテッテ的にage続けるべきだ。
122デフォルトの名無しさん
2020/04/11(土) 00:56:36.59ID:qHx8Q1G9123デフォルトの名無しさん
2020/04/11(土) 01:07:31.53ID:Rbw4pROQ124デフォルトの名無しさん
2020/04/11(土) 01:11:10.19ID:fnqXUaLM (><)
125デフォルトの名無しさん
2020/04/12(日) 00:40:37.82ID:j0O/fDVx126デフォルトの名無しさん
2020/04/13(月) 23:30:53.99ID:+Sqc38Tr127デフォルトの名無しさん
2020/04/14(火) 00:06:26.40ID:hs9mI5+o128デフォルトの名無しさん
2020/04/14(火) 01:39:02.43ID:hs9mI5+o129デフォルトの名無しさん
2020/04/14(火) 01:44:11.08ID:cZOfM+S5 if(m[n]==null) m[n]=1
の部分と三項演算子の部分の後分は機能が被ってませんか?
の部分と三項演算子の部分の後分は機能が被ってませんか?
130デフォルトの名無しさん
2020/04/14(火) 12:04:01.20ID:ZuF0W/s6 >>61 Perl5、正規表現を使った文字列処理ではなく、数値のリストに対する処理として書いてみた
sub f {
my @s;
while (my $e = shift) { push @s, $e }
@_ ? (@s ? (\@s, f(@_)) : f(@_)) : \@s;
}
sub g { @_ > 2 ? "$_[0]-$_[-1]" : @_ }
for ([1], [2,3], [1,2,3], [1,3], [1,3,4,5], [7,9]) {
@a = ();
@a[@$_] = @$_;
@b = f @a;
@c = map{g @$_} @b;
$"=',';
print "[@$_] -> '@c'\n";
}
実行結果
~ $ perl 17_61_resanc_0414fp.pl
[1] -> '1'
[2,3] -> '2,3'
[1,2,3] -> '1-3'
[1,3] -> '1,3'
[1,3,4,5] -> '1,3-5'
[7,9] -> '7,9'
sub f {
my @s;
while (my $e = shift) { push @s, $e }
@_ ? (@s ? (\@s, f(@_)) : f(@_)) : \@s;
}
sub g { @_ > 2 ? "$_[0]-$_[-1]" : @_ }
for ([1], [2,3], [1,2,3], [1,3], [1,3,4,5], [7,9]) {
@a = ();
@a[@$_] = @$_;
@b = f @a;
@c = map{g @$_} @b;
$"=',';
print "[@$_] -> '@c'\n";
}
実行結果
~ $ perl 17_61_resanc_0414fp.pl
[1] -> '1'
[2,3] -> '2,3'
[1,2,3] -> '1-3'
[1,3] -> '1,3'
[1,3,4,5] -> '1,3-5'
[7,9] -> '7,9'
131蟻人間 ◆T6xkBnTXz7B0
2020/04/14(火) 12:53:55.02ID:QRiFiZHs お題: 整数の閉区間がいくつか与えられる。
それらの和集合を求め、それをいくつかの閉区間で出力せよ。
出力の閉区間の個数はなるべく少なくすること。
(例)
[1, 5], [2, 6], [-1, 10] ==> [-1, 10].
[2, 3], [3, 4], [7, 10] ==> [2, 4], [7, 10].
それらの和集合を求め、それをいくつかの閉区間で出力せよ。
出力の閉区間の個数はなるべく少なくすること。
(例)
[1, 5], [2, 6], [-1, 10] ==> [-1, 10].
[2, 3], [3, 4], [7, 10] ==> [2, 4], [7, 10].
132デフォルトの名無しさん
2020/04/14(火) 14:56:59.99ID:vknfd45S >>129
三項演算子ではない(Kotlinには三項演算子はない)。?: はエルビス演算子で、左側の式が null だったら右側の値を使うというやつ。nullでなければそのまま左側の値を使う。
で、その部分は先頭のレス番号のキーがまだ作られてなかったら0で初期化する部分だ。
m[n] = m[n] ?: 0
とも書けるが、これは何か無駄な感じがする。nullでなければ同じ値の代入になるので。だからifで必要な時だけの代入(初期化)にした。
三項演算子ではない(Kotlinには三項演算子はない)。?: はエルビス演算子で、左側の式が null だったら右側の値を使うというやつ。nullでなければそのまま左側の値を使う。
で、その部分は先頭のレス番号のキーがまだ作られてなかったら0で初期化する部分だ。
m[n] = m[n] ?: 0
とも書けるが、これは何か無駄な感じがする。nullでなければ同じ値の代入になるので。だからifで必要な時だけの代入(初期化)にした。
133デフォルトの名無しさん
2020/04/14(火) 15:14:57.47ID:U0kTSrBw >>131 Perl5
sub f {
my @s;
while (defined (my $e = shift)) { push @s, $e }
@_ ? (@s ? (\@s, f(@_)) : f(@_)) : \@s;
}
sub g { map{"[$$_[0],$$_[-1]]"} @_ }
for ([[1, 5], [2, 6], [-1, 10]],
[[2, 3], [3, 4], [7, 10]]) {
%h = map{$_ => $_} map{$$_[0]..$$_[1]} @$_;
@k = sort{$a <=> $b} keys %h;
@l = f map{$h{$_}} $k[0]..$k[-1];
$"=',';
@j = g @$_;
@k = g @l;
print "@j ==> @k\n";
}
実行結果
~ $ perl 17_131_intrange.pl
[1,5],[2,6],[-1,10] ==> [-1,10]
[2,3],[3,4],[7,10] ==> [2,4],[7,10]
sub f {
my @s;
while (defined (my $e = shift)) { push @s, $e }
@_ ? (@s ? (\@s, f(@_)) : f(@_)) : \@s;
}
sub g { map{"[$$_[0],$$_[-1]]"} @_ }
for ([[1, 5], [2, 6], [-1, 10]],
[[2, 3], [3, 4], [7, 10]]) {
%h = map{$_ => $_} map{$$_[0]..$$_[1]} @$_;
@k = sort{$a <=> $b} keys %h;
@l = f map{$h{$_}} $k[0]..$k[-1];
$"=',';
@j = g @$_;
@k = g @l;
print "@j ==> @k\n";
}
実行結果
~ $ perl 17_131_intrange.pl
[1,5],[2,6],[-1,10] ==> [-1,10]
[2,3],[3,4],[7,10] ==> [2,4],[7,10]
134デフォルトの名無しさん
2020/04/14(火) 15:35:48.84ID:cZOfM+S5 >>132
なるほど。ありがとうございます。
なるほど。ありがとうございます。
135デフォルトの名無しさん
2020/04/14(火) 17:17:14.65ID:h96nPay3 数式を標準入力から与えられる。
計算結果を出力しなさい。
条件
・数式の長さが1000を超える場合や、不正な数式についてはErrorと出力すること
・整数を出力しなさい
・小数点が出る場合は切り捨てた値を出力すること
・eval禁止
・数式に利用できる文字 0123456789+-*/()
・数式に半角スペースは含まれない
計算結果を出力しなさい。
条件
・数式の長さが1000を超える場合や、不正な数式についてはErrorと出力すること
・整数を出力しなさい
・小数点が出る場合は切り捨てた値を出力すること
・eval禁止
・数式に利用できる文字 0123456789+-*/()
・数式に半角スペースは含まれない
136デフォルトの名無しさん
2020/04/14(火) 17:45:13.26ID:SdOMVfQl >>135 数式のサンプルよろ
137デフォルトの名無しさん
2020/04/14(火) 17:50:15.21ID:OuRgqSbO 100/2(3+4)
はいくつですか?
はいくつですか?
138デフォルトの名無しさん
2020/04/14(火) 17:56:57.90ID:7oi1O/kb139蟻人間 ◆T6xkBnTXz7B0
2020/04/14(火) 19:35:28.42ID:Ozse1OSh お題: CD/DVDドライブのトレイを開きなさい。
140デフォルトの名無しさん
2020/04/14(火) 19:48:22.16ID:rsqvGSlE141デフォルトの名無しさん
2020/04/14(火) 19:50:23.06ID:rsqvGSlE typo
p eval$_ rescue$><<:Error while gets
p eval$_ rescue$><<:Error while gets
142デフォルトの名無しさん
2020/04/14(火) 20:13:52.06ID:AV9/Nsy0144デフォルトの名無しさん
2020/04/14(火) 22:24:45.74ID:8w/NVh3l >>139 Python
import ctypes
ctypes.windll.WINMM.mciSendStringW(u"set cdaudio door open", None, 0, None)
import ctypes
ctypes.windll.WINMM.mciSendStringW(u"set cdaudio door open", None, 0, None)
145デフォルトの名無しさん
2020/04/15(水) 01:04:36.72ID:RHvlA1sV 三項演算子ないとかゴミだな
146デフォルトの名無しさん
2020/04/15(水) 12:23:24.76ID:229B67vy >>131 js
let input = [[2, 3], [3, 4], [7, 10]];
let result = input.reduce((merged, range) => {
let under = range.map(n =>
merged.filter(mrange => mrange[0] <= n && n <= mrange[1])[0]||[]);
let extended = [under[0][0] || range[0], under[1][1] || range[1]];
let bored = merged.filter(mrange => !(extended[0] <= mrange[0] && mrange[1] <= extended[1]));
return [...bored, extended];
}, []);
console.log(result);
let input = [[2, 3], [3, 4], [7, 10]];
let result = input.reduce((merged, range) => {
let under = range.map(n =>
merged.filter(mrange => mrange[0] <= n && n <= mrange[1])[0]||[]);
let extended = [under[0][0] || range[0], under[1][1] || range[1]];
let bored = merged.filter(mrange => !(extended[0] <= mrange[0] && mrange[1] <= extended[1]));
return [...bored, extended];
}, []);
console.log(result);
147デフォルトの名無しさん
2020/04/15(水) 12:57:38.58ID:qoEmvMwd148デフォルトの名無しさん
2020/04/15(水) 15:02:35.67ID:3oL83xUj >>145 Perl5、再帰降下parser generator使わせてもらいました
sub evalop {
my (@list) = @{$_[0]};
my $val = shift(@list)->();
while (@list) {
my ($op, $arg2) = splice @list, 0, 2;
$op->($val,$arg2->());
} $val }
use Parse::RecDescent;
$parse = new Parse::RecDescent(<<'EOG');
formula: expr /\s*\Z/ {$item[1]->()} | <error>
expr: <leftop:muldiv add_op muldiv> {sub {::evalop $item[1]}}
add_op: '+' {sub {$_[0] += $_[1]}} | '-' {sub{ $_[0] -= $_[1]}}
muldiv: <leftop:factor mult_op factor> {sub {::evalop $item[1]}}
mult_op: '*' {sub {$_[0] *= $_[1]}} | '/' {sub {$_[0] /= $_[1]}}
factor: number | '(' expr ')' {$item[2]}
number: /\d+/ {sub {$item[1]}}
EOG
for (<DATA>) {
chomp;
$ret = defined ($iret = $parse->formula($_)) ? sprintf('%d', $iret) : 'Error';
printf "$_ = %s\n", $ret;
}
__DATA__
1+2*((3-4*5)/6+7)*8-9
100/2(3+4)
100/2*(3+4)
*10
1/3*3
sub evalop {
my (@list) = @{$_[0]};
my $val = shift(@list)->();
while (@list) {
my ($op, $arg2) = splice @list, 0, 2;
$op->($val,$arg2->());
} $val }
use Parse::RecDescent;
$parse = new Parse::RecDescent(<<'EOG');
formula: expr /\s*\Z/ {$item[1]->()} | <error>
expr: <leftop:muldiv add_op muldiv> {sub {::evalop $item[1]}}
add_op: '+' {sub {$_[0] += $_[1]}} | '-' {sub{ $_[0] -= $_[1]}}
muldiv: <leftop:factor mult_op factor> {sub {::evalop $item[1]}}
mult_op: '*' {sub {$_[0] *= $_[1]}} | '/' {sub {$_[0] /= $_[1]}}
factor: number | '(' expr ')' {$item[2]}
number: /\d+/ {sub {$item[1]}}
EOG
for (<DATA>) {
chomp;
$ret = defined ($iret = $parse->formula($_)) ? sprintf('%d', $iret) : 'Error';
printf "$_ = %s\n", $ret;
}
__DATA__
1+2*((3-4*5)/6+7)*8-9
100/2(3+4)
100/2*(3+4)
*10
1/3*3
149デフォルトの名無しさん
2020/04/15(水) 15:04:17.94ID:IXOt/09v150蟻人間 ◆T6xkBnTXz7B0
2020/04/15(水) 21:28:09.80ID:mz+a7+dL お題: 二次元空間にナゾの物体Pが2個ある。2個のPは初期状態に(-3, -2), (3, 1)[単位:m]にあるものと仮定する。
2個のPは離れすぎると距離r[m]に比例する引力加速度2*r[m/s^2]を生じ、近づきすぎると距離r[m]に反比例する反発
加速度k/r[m/s^2]が発生する。rが収束するとき(一秒あたりの距離の変化が0.01[m]以下)の距離をRと表す。
kとRの関係を調べたい。kを1.0から1.5まで0.1刻みで動かし、それぞれで数値積分によって2つのPの収束位置を近似計算し、Rを求め、(k, R)の組を出力せよ。
2個のPは離れすぎると距離r[m]に比例する引力加速度2*r[m/s^2]を生じ、近づきすぎると距離r[m]に反比例する反発
加速度k/r[m/s^2]が発生する。rが収束するとき(一秒あたりの距離の変化が0.01[m]以下)の距離をRと表す。
kとRの関係を調べたい。kを1.0から1.5まで0.1刻みで動かし、それぞれで数値積分によって2つのPの収束位置を近似計算し、Rを求め、(k, R)の組を出力せよ。
151デフォルトの名無しさん
2020/04/15(水) 21:56:01.64ID://wWJwAN はい、次の方どうぞ
152蟻人間 ◆T6xkBnTXz7B0
2020/04/15(水) 22:30:18.26ID:mz+a7+dL お題: 次のようなプログラムを作れ。プログラムを起動したとき、ファイル「times.txt」に現在の日時を秒単位で記録した後、
前回の起動日時との差を求め、時間差の秒数を表示せよ。
ただし、うるう秒を考慮すること。
前回の起動日時との差を求め、時間差の秒数を表示せよ。
ただし、うるう秒を考慮すること。
153デフォルトの名無しさん
2020/04/15(水) 23:31:28.64ID:/1JmN5U2154デフォルトの名無しさん
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
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- バリ島で男子生徒ら集団万引きか、防犯カメラ映像が拡散 京都の大谷中学・高校が「窃盗行為」謝罪★4 [七波羅探題★]
- 中国軍機レーダー照射、トランプ氏沈黙突く 試される日本外交 [蚤の市★]
- 【広島】「万引きした人を追跡」コンビニ店員の男性(46)を果物ナイフで刺したか 中国籍の少年(17)を殺人未遂容疑で現行犯逮捕 [ぐれ★]
- 【地震】青森県で震度6強 長周期地震動も 津波注意報すべて解除 ★7 [ぐれ★] [ぐれ★]
- 【サッカー】58歳カズ「オファーが来ている」 J3福島と近日中にも交渉 早ければ年内にも決断 [征夷大将軍★]
- 【速報】気象庁は津波注意報すべて解除 [蚤の市★]
- 【実況】博衣こよりのえちえち朝こよ🧪
- ヨッシー、ヘイホー、テレサ ←こいつらwwwwwwwww
- 【悲報】高市早苗の擬人化がXで大バズりwwwwwwwwwwww [455031798]
- さかまた「過呼吸になった」かなた「耳聞こえない」ござる「声出ない」まつり「ご飯食べれない」
- くそしてかがやけ
- 一人暮らしだからケツ出してみてるけど
