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

■ このスレッドは過去ログ倉庫に格納されています
2018/04/24(火) 20:45:14.49ID:ZY7R7Sru
プログラミングのお題スレです。

前スレ
プログラミングのお題スレ Part10
https://mevius.5ch.net/test/read.cgi/tech/1514772904/

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

宿題は宿題スレがあるのでそちらへ。
2018/04/24(火) 20:46:44.20ID:WimzHme9
>>1
2018/04/24(火) 21:01:59.85ID:b5LehDYo
>>1
おちゅ
2018/04/24(火) 21:57:24.56ID:+2ez/H34
出題に際しては
- お題の意図を汲みやすい入出力例も示す
- 事前に自分でもコードを書いてみる
2018/04/24(火) 22:12:31.82ID:b5LehDYo
このスレ久しぶりに来た
数学できない勢だけどよろすこ
2018/04/24(火) 22:50:49.03ID:26GTet/U
じゃあ過去ログから面白そうなお題探してきて
2018/04/24(火) 23:28:41.47ID:b5LehDYo
>>6
過去ログから持ってきた訳じゃないんだけど、こういうお題を考えた

平面座標aとbが入力されます。bから見てaがおおよそ何時の方角にあるか時刻で出力してください。
例えば座標の方角が2時と3時の中間だった場合は両方の時刻を同時に出力してください。
座標が重なった場合は0時と出力してください。方角の精度は時刻み、分刻みから選択自由とします。

でも何か既視感あるんだよな
過去ログに似たようなお題があったかもしれない
2018/04/25(水) 00:32:02.03ID:Q0aOI6dW
(逆)三角関数使わずにって制限つければまあまあ面白いかもしれない
2018/04/25(水) 01:02:21.48ID:Xk9Nens/
数学じゃん。
紙と鉛筆で解いて算出は電卓でやれ。
プログラムでやっても電卓でできる程度のことしかしないじゃん。
2018/04/25(水) 04:59:23.37ID:uzp6LfsA
>>7 Squeak Smalltalk

| fn |
fn := [:a :b | (a - b) theta negated / (2 * Float pi) * 12 + 3 \\ 12].

fn value: 6@12 value: 6@6. "=> 0.0 "
fn value: 6+(2*3 sqrt)@12 value: 6@6. "=> 1.0 "
fn value: 6-(2*3 sqrt)@12 value: 6@6. "=> 11.0 "
fn value: 12@6 value: 6@6. "=> 3.0 "
fn value: 6@0 value: 6@6. "=> 6.0 "
fn value: 0@6 value: 6@6. "=> 9.0 "
fn value: 6@6 value: 6@6. "=> 0.0 "
11デフォルトの名無しさん
垢版 |
2018/04/25(水) 07:24:05.48ID:OIcVuxa9
過去ログから、さすがにこれはプログラミングの問題でしょ

お題:
下図のように山の麓(標高0)の両側にいるA君B君が頂上(標高10)を目指して同時に出発する
ただし、A君B君のいる位置の標高はどの時刻でも等しくなるように登らなければならない
(下図でA君が標高7の峠から標高3の谷へ下るときにはB君は来た道を引き返す必要がある)
標高1だけ上るor下るのに1時間かかるとして頂上まで最短で何時間かかるか求めよ

            10
       7   /\
     /\/3   \
A 0/            \0 B

山の形状は以下のような文字列で表現する
1)文字列の先頭と末尾はA君B君のスタート地点(標高0)を表し、必ず'0'である
2)ゴールの頂上(標高10)の位置は':'で表す(文字コードがちょうど':'='0'+10なので)
3)途中の峠と谷の標高を'1'〜'9'で表す(上図の山の形状は"073:0"と表される)
4)途中の峠と谷は交互に現れるようにする(例えば"037:0"は無し)

テスト例
"073:0" -> 18
"07362:450" -> 36
"06464:36470" -> 42
"0827171:28480" -> 66
"0737491:28180" -> 146
"05374734372747484:184618186912120" -> ?
2018/04/25(水) 08:12:36.77ID:YrZy/fuf
>>11
手計算でやっても答えが一致しないのだが、本当にそんな時間掛かるか?
C++ https://ideone.com/GK5A8F
2018/04/25(水) 08:15:25.48ID:YrZy/fuf
>>12
あ、ごめん私が間違えてた
計算し直してくる
14デフォルトの名無しさん
垢版 |
2018/04/25(水) 08:57:14.64ID:s6Mh195j
スレの宿題のをやってみた (規制対象なのでurlに全角スペースいれてます)
https://bi t.ly/2FdJBkh
以下のルール
全員が以下のルールを守って空席に決められた順に座るものとする
・全員の数字と着席順は皆が知っている
・スコアは上下左右の2〜4セルの数値の合計
・必ず空席のうちの最大のスコアになる席に座る
・最大のスコアの席が複数ある場合はどこに座っても良い
・「最大のスコアの席」とは、以降の人のルールに適う選択を考慮した上で決定される
(現在スコア5の2つの空席A, B があったとして、全員がルール通り座った結果Aが8、Bが7に
 なる場合はAを選択しなくてはならない)
座席
〇〇5
〇9〇
12〇
に対して、
番号 3、4、6、77、8 がこの順でルール通り座ろうとすると下記の結果になった。
座る順の早い4番が77の隣に行けず6番に負けてしまうとかちょっとおもしろい

77 3 5
6 9 4
1 2 8
15デフォルトの名無しさん
垢版 |
2018/04/25(水) 09:00:27.95ID:s6Mh195j
>スレの宿題のを
「前スレの宿題の」と書こうとしてミスしました。
実際のとこ宿題なのかどうかは知らないけど。
2018/04/25(水) 09:14:36.14ID:s6Mh195j
>>14のをちょっとだけ訂正
(コードをcodeの方に書いただけ)
https://bit. ly/2HYN8WH
17デフォルトの名無しさん
垢版 |
2018/04/25(水) 10:26:52.48ID:tAxnUvIH
>>11
テスト例の最初のやつはなぜ18になるのか?7+3+7=17ではないのか?
18デフォルトの名無しさん
垢版 |
2018/04/25(水) 10:28:30.47ID:tAxnUvIH
あ、ごめん。寝ぼけてた。すまん。
2018/04/25(水) 10:29:50.42ID:8AWpTaB2
7 + (7 - 3) + 7 = 18
あってるよ
2018/04/25(水) 11:57:29.80ID:pPLIJyjZ
度々ごめん
直に書けないurlはこう貼ればいいとわかったので
(もしかして常識だったか)
https://%62it%2Ely/2Jplh1k
2018/04/25(水) 12:11:25.24ID:pPLIJyjZ
>>12
最後の b++ は b -- の打ち間違いか
2018/04/25(水) 12:51:35.60ID:/CvNfD/i
>>11 の参考として戻る必要があるケースの例
05131:4501050
手計算では40時間。あってるかな

[ ]がA君B君の位置、
左端はそのステップに要する時間
0 [0]5131:450105[0]
5 0[5]131:45010[5]0
5 [0]5131:4501[0]50
1 0[]5131:450[1]050
1 [0]5131:45[0]1050
5 0[5]131:4[5]01050
4 05[1]31:45[]01050
3 051[3]1:45[]01050
2 0513[1]:45[]01050
4 05131[]:4[5]01050
1 05131[]:[4]501050
9 05131[:]4501050
2018/04/25(水) 15:06:56.64ID:eqJJBtIM
>>14
A, B, C の3人の順番で、
Bがaマスを選ぶと、Cには最高点になるx, y の2つの選択肢があり、
Cがxの場合、Bは10点、
Cがyの場合、Bは5点となる

この場合、Bがaの場合は5点と考えるので、
Bがbの場合が7点なら、Bはbを採用する

しかし、Bのbが5点なら、aと同じだから、どうなるんだ?
2422
垢版 |
2018/04/25(水) 15:15:39.29ID:/CvNfD/i
>>11
理解できてなかったわ
"07362:450" の解がもうわからん
2522
垢版 |
2018/04/25(水) 15:29:44.32ID:/CvNfD/i
>>23
Bはa,bどちらも5点ならどちらを選んでも良い

各人は自分の順になったとき、
選択可能な各位置について「以降誰が何をしても最悪でも〜点とれる」という点数を考え、
それが最大になる位置(のうちのどれか一つ)を選ぶ

(何をしても、といってももちろん皆が上記のルールは守るものとする)

ストレートなMin-Max戦略だなこれ
2018/04/25(水) 15:30:57.61ID:ucQtsZek
>>24
0 [0]7362:45[0]
5 0[]7362:4[5]0
1 0[]7362:[4]50
3 0[7]362:[]450
3 07[]362:[4]50
1 07[]362:4[5]0
2 07[3]62:45[]0
2 073[]62:4[5]0
1 073[]62:[4]50
2 073[6]2:[]450
2 0736[]2:[4]50
1 0736[]2:4[5]0
3 0736[2]:45[]0
3 07362[]:4[5]0
1 07362[]:[4]50
6 07362[:]450
36時間
2722
垢版 |
2018/04/25(水) 15:37:00.23ID:pPLIJyjZ
>>26
ありがとう
問題は理解できていて頭が悪いだけでした
2823
垢版 |
2018/04/25(水) 18:07:14.08ID:eqJJBtIM
>>25
Bのa・b 戦略が、共に5点の同点で、その2つをA に戻すから、

Aは両方を比較しなければならないから、複雑だと思って
2018/04/25(水) 19:23:53.90ID:/CvNfD/i
>>11
やってみた
https://ideone.com/LsjBLX

結果
"073:0" => 18
"07362:450" => 36
"06464:36470" => 46
"0827171:28480" => 66
"0737491:28180" => 146
"05374734372747484:184618186912120" => 400


一箇所だけ>>11と違うな
2018/04/25(水) 20:04:18.92ID:8AWpTaB2
>>11って解無しのパターンってあるのかな?
2018/04/25(水) 20:26:41.27ID:ucQtsZek
>>29 手計算
0 [0]6464:3647[0]
6 0[6]464:3647[]0
2 06[4]64:3647[]0
2 064[6]4:3647[]0
2 0646[4]:3647[]0
3 06464[]:364[7]0
3 0646[4]:36[4]70
2 064[6]4:3[6]470
2 06[4]64:3[]6470
2 0[6]464:3[6]470
3 0[]6464:[3]6470
3 0[6]464:[]36470
2 06[4]64:[]36470
2 064[6]4:[]36470
2 0646[4]:[]36470
6 06464[:]36470

>>30
無いんじゃね?
3229
垢版 |
2018/04/25(水) 21:13:14.97ID:/CvNfD/i
>>29はバグってた
直したら>>11と一致しました

https://ideone.com/ECmxkW

常に解がありそうだけど証明はどうやるんだろ
2018/04/25(水) 21:16:36.07ID:8AWpTaB2
ちょっと考えてみたけど至る所微分不可能な山ではない限り解は存在するね
3429
垢版 |
2018/04/25(水) 21:33:09.38ID:/CvNfD/i
適当に折り返すことによって山谷の数を合わせられる
あとは略、って感じか
3529
垢版 |
2018/04/25(水) 21:38:29.30ID:/CvNfD/i
数じゃなく高さを合わせるのか
眠くて頭が回らない
2018/04/28(土) 14:30:11.12ID:O8BM7Wua
e^(z) + 1 = 0 を満たす全ての z∈C の絶対値の集合をSとする.
この時、Sの中でN番目(N≦10^5)に小さい元を求めよ.
なお, e = Σ{n∈N}(1/n!) である.
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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