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

レス数が950を超えています。1000を超えると書き込みができなくなります。
2019/05/18(土) 17:33:29.45ID:BWmpW4IF
プログラミングのお題スレです。

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

宿題は宿題スレがあるのでそちらへ。

※前スレ
https://mevius.5ch.net/test/read.cgi/tech/1549160513/
2019/07/22(月) 04:43:22.10ID:wriJoSF9
>>873は百害あって一理なし
2019/07/22(月) 05:57:37.39ID:R4+31Tcv
QZとか言う馬鹿は自分がやっている事がことごとく嫌がらせになっているというのにも
全く気づいてないんだろうなあ
2019/07/22(月) 10:03:01.17ID:xuhhP9lh
おまけにこの糞コテは数学もまともにできない低能
2019/07/22(月) 11:18:34.47ID:wZJ8iqbX
良かれと思ってやったのに迷惑だと言われる
千羽づるみたいだなって思いました
2019/07/22(月) 11:35:03.07ID:sp7+c3NQ
>>889
千羽鶴なら日本の文化だからまだいいよ
QZのは明らかに異国の匂いがする
2019/07/22(月) 11:38:44.03ID:RNJMLfCg
>>889
千羽鶴なら独善ではあっても善意のつもりだというのは分かるが、QZのは他人のためでなく自分がそうしたいというだけの理由だから、より嫌われる
892836
垢版 |
2019/07/22(月) 14:11:57.23ID:GAEqWBnq
お題・ルールは、
>>838
のままで良いです

マスは、11 * 11 で、やってみましょう!

空行・_ は、単に見やすくしただけなので、無視してください

S2953_94137_3
71546_79881_4
83411_29465_2
23716_54268_4
47385_73638_9

55263_74296_1
34945_87362_5
96755_42186_7
14893_12472_6
71911_47852_1

29437_95134_E
2019/07/22(月) 17:05:26.62ID:mrS8zraI
>>892
https://ideone.com/aTBvPq
C++。あってるかはしらねーが、初期値を与えなおしてみたよ。
2019/07/22(月) 17:08:22.90ID:mrS8zraI
>>892
問い2は道順取れてるので頭と尻尾から配列なめてけば一応、かち合う場所が取れるよ。
2019/07/22(月) 17:53:24.27ID:mrS8zraI
https://ideone.com/ymnJMi
C++。バグがあったので直した。
最初の数値が固定値だったので、マスの値に変更した。
2019/07/22(月) 19:52:32.52ID:27NBQOQ4
S66
996
19E

超単純化した↑の場合
問1の場合はコスト18
問2の場合は座標(0,2) コスト19
で良いんだよな?
2019/07/22(月) 20:21:15.73ID:mrS8zraI
ホンダがらったフンだがらったヘンだがらった!フンフン!!

いでよ、主催者!!!
898デフォルトの名無しさん
垢版 |
2019/07/22(月) 20:27:49.31ID:vmYUDJ0J
>>897
ここには特に主催している人は居ないし、そもそも組織になっていない。各個人か勝手にお題を出して解きたい人が解いてるだけ。
おそらく常連は居るだろうが基本的に匿名で誰が誰だかよくわからず、人か入れ替わっていてもわからない。
2019/07/22(月) 22:09:07.24ID:zz8dj3fo
問1ってダイクストラ法まんまでいいの?
900836
垢版 |
2019/07/23(火) 09:29:05.01ID:5GIBUFQK
問2 について考えてみた

最短ターンでは、10ターンで、双方が出会うけど、
その時の双方を足したコストが、最小とは限らない!

だから迂回路の場合、つまり、11ターン以上で出会うマスも、すべて考慮して、
その中から最小コストを選ぶ必要がある

例えば、あるマスが、S・E 双方から12ターンなど

その際、双方からのターン数が異なる場合は、関係ない。
例えば、あるマスが、Sから11ターンで、Eから13ターンなど

>>899
ダイクストラ法で良い。
漏れは、総当たりでやってみる
901836
垢版 |
2019/07/23(火) 09:37:45.12ID:5GIBUFQK
>>896
問1 は、6 + 6 + 6 = 18

問2 は、左下の1 の所で出会うのなら、
S から、9 + 1 = 10
E から、9 + 1 = 10
で、合計20

出会うマスのコストを2回足しているけど、これで良いか
2019/07/23(火) 13:22:20.59ID:QB0eaOex
>>898
あ、それはわかってるよ。
問題の主催者(>>836)を呼びたかった。
やってきたので召喚成功だ。

ふふ。
2019/07/23(火) 16:42:15.95ID:0hlsR1TA
Sは左上、Eは右下、盤面は正方形で良いのか?それともそれ以外のパターンも考慮しなきゃいけないのか
904836
垢版 |
2019/07/23(火) 17:53:12.70ID:5GIBUFQK
>>903
正方形ではなく、長方形だね

マスの座標は、行列の順で、開始点は( 行0, 列0 )

漏れは、盤面の周囲に、番兵を置いて、考えてます
905896
垢版 |
2019/07/23(火) 18:05:44.96ID:GpNXeX+q
>>901
うん、ぼけてた
コスト20やなw

問2で盤面サイズが奇数x偶数とかの場合はゴールはどう考えればいいの? 同時移動だとすれ違っちゃうが
Sが常に先に動く (Eが居るところで合流)
Eが常に先に動く (Sが居るところで合流)
SとE好きな方が先に動く (コストが低いマスの方で合流)
SとEが同時に動く (すれ違って合流できない? 中間点で合流? その場合のコストは?)

たとえば S12E とかの場合
906836
垢版 |
2019/07/23(火) 20:32:34.55ID:5GIBUFQK
盤面のサイズが偶数では、問2 は無理

必ず、奇数×奇数
2019/07/23(火) 21:26:26.55ID:JcFEdZGk
>>885
回答いただき感謝いたします
2019/07/23(火) 22:05:37.82ID:GpNXeX+q
>>906
偶数×偶数も行けるやろ
偶数×奇数、奇数×偶数は無理だが
2019/07/24(水) 14:07:43.24ID:i9YSslum
目の前で出会うことが目的じゃないの?
910デフォルトの名無しさん
垢版 |
2019/07/25(木) 16:00:43.87ID:JLY47fmQ
任意の整数を引数に取り、フィボナッチ数か判別するisfib関数を作れ。
なお、フィボナッチ数では無い場合任意の整数と-1の組(Cなどは代わりの物)を、
フィボナッチ数ならフィボナッチ数=任意の整数とそれがフィボナッチ数列の何番めかを表す数の組を返す事。

例:
isfib 0 = (0,1)
isfib 1 = (1,2)
isfib 2 = (2,4)
isfib 3 = (3,5)
isfib 4 = (4,-1)
isfib 5 = (5,6)
2019/07/25(木) 18:03:38.63ID:D8pzUtDE
>>910
Common Lisp
https://pastebin.com/qqYUKSem

出力
(loop for i from 0 to 6 do (isfib i))
(0 . 1)
(1 . 2)
(2 . 4)
(3 . 5)
(4 . -1)
(5 . 6)
(6 . -1)
2019/07/26(金) 01:20:21.47ID:E/v28Z/A
>>910 Perl5

sub isfib {
 $v = shift;
 %h = map{$_ => $_} @s = (0,1);
 do {
  $f = $s[-2] + $s[-1];
  push @s, $f;
  $h{$f} //= @s;
 } while $f < $v;
 ($v, $h{$v} // -1);
}
printf "isfib $_ = (%d,%d)\n", isfib $_ for 0..5;

実行結果
$ perl 14_910_isfib.pl
isfib 0 = (0,0)
isfib 1 = (1,1)
isfib 2 = (2,4)
isfib 3 = (3,5)
isfib 4 = (4,-1)
isfib 5 = (5,6)
913デフォルトの名無しさん
垢版 |
2019/07/26(金) 06:33:07.15ID:NUjZudpe
>>910 Lua
function isFib(n)
  local a, b, c = 0, 1, 1
  while a < n do
    a, b, c = b, a + b, c + 1
  end
  if a ~= n then c = -1 end
  return n, c
end
914836
垢版 |
2019/07/26(金) 09:34:26.36ID:54Ib42km
>>908-909
確かに、偶数×偶数は、
同じターンで、同じマスに入れますね!

S1
2E

S12
34E
2019/07/26(金) 09:50:12.39ID:rMhs1i6l
>>910
戻り値がbooleanじゃないのが気持ち悪い
2019/07/26(金) 21:09:58.82ID:D2C6zjmj
>>913
4のとき
isfib 4 = (5,-1)
にならない?
2019/07/26(金) 22:09:57.95ID:wMkqv1Wf
「何番目かを返す」ってのが地味に難しいな
そこまでの全てのフィボナッチ数を求めないと無理じゃね?
2019/07/26(金) 22:53:34.40ID:XK3Q7RTy
>>916 勘違いした
isfib 4 = (4,-1)
になる。合っている。
2019/07/26(金) 23:11:48.79ID:PBeJ5BeU
キャッシュ層込みの問題だな
2019/07/26(金) 23:31:36.17ID:HmAxaouE
お題: 水素原子、酸素原子、炭素原子からなる分子の化学式が与えられる。原子の種類と個数から考えられる分子構造をデータ構造で表現し、コンソール画面に可能なかぎり表示しなさい。

(例)
H2O --> H - O - H
CO2 --> O = C = O
CH4 -->
  H
 |
H- C - H
  |
  H
2019/07/26(金) 23:39:37.50ID:HmAxaouE
(例2) 図式化が難しければ、データ構造だけでもいい。

CO2 → (C, O, O), ((0, 1), (0, 2)).
H2O → (H, H, O), ((0, 2), (1, 2)).
CH4 → (C, H, H, H), ((0, 1), (0, 2), (0, 3)).
2019/07/26(金) 23:40:57.41ID:XK3Q7RTy
>>920
サンプル回答キボンヌ
2019/07/26(金) 23:42:34.11ID:HmAxaouE
>>921
訂正。
CH4 → (C, H, H, H, H), ((0, 1), (0, 2), (0, 3), (0, 4)).
2019/07/26(金) 23:45:02.28ID:PBeJ5BeU
>>920
ベンゼン寒とかシクロヘキサン
3、5つあたりも鬼門か?
2019/07/26(金) 23:47:59.42ID:HmAxaouE
図式化は不可能に近いようだ。データ構造だけでOK.
2019/07/26(金) 23:48:10.95ID:XK3Q7RTy
そいうこと考えてから出題ヨロ
2019/07/27(土) 00:19:22.73ID:P0VdsVRX
備考。

ここでは単純のために「結合の手」を使ったモデルで考える。
原子によって結合の手の個数は決まっている(Cは4個、Oは2個、Hは1個)。
結合の手が余らないような分子構造のみを考える(一酸化炭素COのような構造は除外する)。
2019/07/27(土) 00:22:04.97ID:P0VdsVRX
電荷を持たない分子だけを対象とする。イオンではない。
2019/07/27(土) 00:24:45.04ID:A58wSpEe
ヨーク考えて、出題するレベルに練りあがってから出直したらどうですか
930デフォルトの名無しさん
垢版 |
2019/07/27(土) 03:29:25.97ID:IOXz7NXW
うわーおQZってまだ生きてたのか
昔NG推奨にしてスレ立てたような気がしたんだが
2019/07/27(土) 06:20:15.81ID:vbPXi5Ru
>>930
以下のレスのように、相変わらず身勝手なレスを繰り返してるよ

https://mevius.5ch.net/test/read.cgi/tech/1562581391/575
2019/07/27(土) 06:23:51.65ID:Okexx4cI
>>917
一般項 f(n) = (φ^n - (-φ)^(-n)) / sqrt(5) はnに対して狭義単調増加なので逆写像 fi(n) が存在して当然 fi・f(n) = n が成り立つ。
従って「そこまでの全てのフィボナッチ数を求めないと無理」は偽である。
2019/07/27(土) 06:26:39.77ID:Okexx4cI
>>920
化学式と分子構造は一対一対応してねえよ
そんなの今日日高校生ですら理解してるわ
二度と書き込むな
934デフォルトの名無しさん
垢版 |
2019/07/27(土) 10:14:18.78ID:yKuZ7Tou
お題
非負整数m, nに対し、
f(m, n)= n+1 if m==0
f(m, n) = f(m-1, 1) if n == 0
f(m, n) = f(m-1, f(m, n-1)) otherwise
なるf(m, n)の値を求めよ

f(2, 1) = ?
f(4, 1) = ?
2019/07/27(土) 10:45:11.97ID:aB6NIKG8
>>910
https://ideone.com/S7V4hf
C++。どや!
2019/07/27(土) 10:56:52.18ID:aB6NIKG8
>>934
https://ideone.com/zaOvTK
C++。2個目がスタックオーバーフローだと思う。
2019/07/27(土) 11:08:11.84ID:tV8GDyIW
>>932
あのさ、簡単に言うけどその逆関数は複素関数になるぞ
そこまで言うなら逆関数を使ってnを求めるプログラムを書いてみろ
ここはム板だ
2019/07/27(土) 11:11:50.71ID:1cAkezH+
>>934
perl5
https://pastebin.com/xxirNWW3

f(4,1) はPCが帰ってこなくなったからやらない
f(2,1) は5だった
2019/07/27(土) 11:57:13.11ID:g91Bo5NE
>>934
C++
http://ideone.com/5Y9XT3
2019/07/27(土) 12:10:03.51ID:aB6NIKG8
え?メモ化したら解けるの??
ガーン。
2019/07/27(土) 12:26:28.44ID:BeYdmmLD
お題と回答
5 : 6 10 32 36 44
9 : 15 34 35 79
11=575 : 48 (78) 138-139 (140) 142 146 151 154
19 :
50, https://mevius.5ch.net/test/read.cgi/tech/1549160513/920 : 4 85 89
https://mevius.5ch.net/test/read.cgi/tech/1549160513/988 == 164 : 59 61 167 169 189 192 201 202
90 : 95 96
99 :
200 : 214 219
215 : 227
220 : 232 240 248 256 268
235 : 236 237 238 239 247 249 259 342 353
320 : 321 323 327 330 340
322 : 325 328 329 331 332 339 341 358 359
362 : 367 369 370 371 374 379 380 382 414
368 : 390
388 : 487 (488) 553 559
400 : 401
408 :
417 : 418 419 421 426 432 433 436 438 442 446 451 452 456 471 474 480 482 489 492 495 498 528 530 540
479 :
555 : 556 558 564 565
557 : 560 562 568 569
570 : 574 577
573 : 604 622
600 : 605 607 611 613 627 691
615,626 :
632 : 637 640 645 649 650 687 689-690
651 : 654 657 662 679 682
2019/07/27(土) 12:27:01.61ID:BeYdmmLD
655 :
661 :
683 : 685
695,704,716,721 : 696 697 701 703 711 713 714 715 718 722 723 724 727 740-741
708 : 714
717 :
752 :
753 : (760)
767 : 775
778 : 779 788 (792) 794
789 : 790 (793)
807 : 810 811 812 814 815 816 821 823
824 : 826 827-828 829 831
833 : 841
835 :
836,838,892 : 847 880 881 893 895
865,868 : 866 868
910 : 911 912 913 935
934 : 936 938 939
2019/07/27(土) 12:28:33.93ID:aB6NIKG8
https://ideone.com/iEyKYb
C++。constexprでもダメだったよ。
2019/07/27(土) 12:36:01.98ID:1cAkezH+
ああ まただよ(笑)
2019/07/27(土) 12:37:09.52ID:aB6NIKG8
d -_- b
2019/07/27(土) 13:05:36.13ID:hLAGzHLQ
>>941-942
統合失調症患者はどっか逝け
2019/07/27(土) 14:28:16.32ID:eTs80TG9
お題: cpu温度を表示せよ
2019/07/27(土) 15:01:57.99ID:Okexx4cI
>>937
論点ずらすな
「〜は無理」って言ってるからそれを否定しただけ
ただ 1 <= n <= 2 で狭義単調増加じゃないからそこだけは訂正しておくが

てかどんな頭で考えたらこの逆関数が複素関数になるんだか
可哀そうだから答え書いといてあげるけどさ
fi(x) = (log(sqrt(5) * x + sqrt(5 * x^2 - 4 * (-1)^((x + 1) % 3))) - log(2)) / log(φ)
2019/07/27(土) 15:15:49.31ID:b5LHfPHC
>>948
CやC++で ^ はXOR演算子なんだが
2019/07/27(土) 15:20:43.26ID:aB6NIKG8
ファイが何を指しているか・・・わからない・・・。
その定数5のいみがわからない。


そんな、ホラー。
2019/07/27(土) 15:23:42.00ID:Okexx4cI
動物園かよここは……

黄金比 φ := (1 + sqrt(5)) / 2

>>949
お前は一生クワス算でもやってろ
2019/07/27(土) 15:26:08.80ID:b5LHfPHC
>>951
そんなもん知ってるわアホ
上から目線で偉そうに
2019/07/27(土) 15:28:08.33ID:Okexx4cI
>>952
意味不明すぎてくっそ笑ったwww
自らの頭の悪さにキレててウケる
2019/07/27(土) 15:29:41.45ID:IpJBqisA
おおかた、数学的には反論できなくて悔しくなってc++では〜などという難癖をつけたのだろう
これ以上はスレチだからどっかよそでやれ
2019/07/27(土) 15:31:02.81ID:O5H2zazt
反論とかワロス
数学板でやれ
2019/07/27(土) 15:33:55.84ID:P0VdsVRX
phi
2019/07/27(土) 15:35:44.71ID:d+qHn5lK
数学(?)の話してんのにCやC++で ^ はXOR演算子なんだがとかいうやつ初めて見たわ
無能アピールだとしたらこれ以上ないくらいに効果出てるな
2019/07/27(土) 15:40:02.09ID:z4Poa3yK
数学の話は数学板で
2019/07/27(土) 15:40:49.84ID:7QbyGuYU
>そこまで言うなら逆関数を使ってnを求めるプログラムを書いてみろ!
どうせ無理だと思ってタンカを切ったら相手にあっさり答えを書かれてしまう(ついでに自分の間違いまで指摘されてしまう)
もし俺がこいつだったら、恥ずかしくなりすぎてXOR演算子云々で話をうやむやにする気持ちもわかるぞ
2019/07/27(土) 15:48:04.56ID:aB6NIKG8
>>951
https://ideone.com/PMTi9h
C++。コードに落としてみたけど、数学解らないから教えて。
フォークしてもいいよ。
2019/07/27(土) 15:51:41.66ID:aB6NIKG8
作ってて思ったのはね。
片方の関数は、フィボナッチ数知らないと動作しないのじゃないかということ。
片方の関数は、フィボナッチ数もとめにいくんだけど。

んで、鳥と卵の問題に見えるので、どういう風に使えばよいのかわからない。
2019/07/27(土) 15:52:21.85ID:3aZcsmVe
答え:カモノハシ
2019/07/27(土) 15:57:38.07ID:Okexx4cI
>>960
Fiの分子が微妙に違ったので訂正しておいたよ
https://ideone.com/SNN3mV
2019/07/27(土) 16:04:37.22ID:f7WK2xYd
炎上学習法か
例の頭のおかしな人かな?
2019/07/27(土) 16:04:59.65ID:1cAkezH+
あの逆関数?を単純に放りこんだら解けなかった
一筋縄じゃいかないね

Solve[(Log(Sqrt(5) * x + Sqrt(5 * x^2 - 4 * (-1)^((x + 1) % 3))) - Log(2)) *2/(1 + Sqrt(5)) ==5,x]
Solve::nsmet: This system cannot be solved with the methods available to Solve.
2019/07/27(土) 16:07:23.94ID:1cAkezH+
() [] に上の式を正しくなおしたがやはりだめだ
967デフォルトの名無しさん
垢版 |
2019/07/27(土) 16:08:06.87ID:7aZqje0Z
>>964
お前もまだいたの
2019/07/27(土) 16:08:36.42ID:aB6NIKG8
>>963
https://ideone.com/qN8CCx
幾つかNANになったのはコンピュータの問題かなぁ??
あんまり詳しくないんだけど。

中央値がきれいに取れてるので、境界線系のエラーもあり得る。
2019/07/27(土) 16:13:46.18ID:aB6NIKG8
しかしまー、数式で可逆式まで考えられるモノなのだねぇ。感心するわ。。。
2019/07/27(土) 16:27:26.01ID:aB6NIKG8
>>910 の題意からすると、こんな感じ?
https://ideone.com/WLv6dA

>>932の「有効」でエンド。
2019/07/27(土) 16:30:29.90ID:aB6NIKG8
いや、「技あり」か。
2019/07/27(土) 16:48:31.50ID:Okexx4cI
>>968
それのstd::pow(-1, 〜) が問題なので書き換えた
多少の誤差はあれどn = 2 を除いて右側の数字は0, 1, ..., 127と並んでいるよね
https://ideone.com/X7WSxR
2019/07/27(土) 16:51:51.51ID:aB6NIKG8
>>972
大体、求まってるね。

あなたつよいわ〜。
ここまで出来たら、あとは見せ方。
2019/07/27(土) 16:54:46.18ID:aB6NIKG8
念のため言っておくと、ideonは実行後コードと同じページにstdoutを表示する。
2019/07/27(土) 16:59:41.70ID:aB6NIKG8
>>972
三項演算子は、返す型が同じじゃないとエラーを吐く。
doubleとchar[]になってる。
2019/07/27(土) 17:02:12.84ID:aB6NIKG8
お、動いたか。

とりあえず、この辺で抜けるわ。
まったねー。
2019/07/27(土) 20:21:38.01ID:BeYdmmLD
>>934
アッカーマン関数であることにやっと気がつきました…
2019/07/27(土) 20:47:31.60ID:POROMEeh
>>977
どうてもいいけどお前は荒らすな
2019/07/27(土) 22:43:52.75ID:JtBf7oRg
>>972
誤差ないプログラム書けよ
2019/07/27(土) 23:00:24.26ID:JtBf7oRg
>>948
その式自分で考えた?
あと、>>934 の回答としてnが小さいときだけとか制約がある?
2019/07/28(日) 01:17:00.04ID:+ByOW8ha
お題
括弧のネストの深さの最大値を求めよ
括弧の対応が取れていない場合は-1を出力せよ


"{}" => 1
"}{" => -1
"" => 0
"{{{}{}}}{}" => 3
2019/07/28(日) 02:35:31.10ID:/N9EqgUo
>>981
python3
http://ideone.com/Nuqjvc
983デフォルトの名無しさん
垢版 |
2019/07/28(日) 04:13:25.02ID:QWXlr9dJ
>>910
Pythonで素直に書くとこんな感じ。

http://ideone.com/3HvxyP

これをそのままHaskellで書くと負けるが、こっちならPythonに勝つる。

http://ideone.com/iwLONj
984デフォルトの名無しさん
垢版 |
2019/07/28(日) 06:16:51.79ID:YNZYuVVC
>>981 Ruby

f = -> str {s = -str; (0..1.0/0).each{|i| s.gsub!('{}', '') || (break s.size.zero? ? i : -1)}}
['{}', '}{', '', '{{{}{}}}{}'].each{|e| puts "%p => %d" % [e, f[e]]}

# =>
"{}" => 1
"}{" => -1
"" => 0
"{{{}{}}}{}" => 3
2019/07/28(日) 12:26:21.14ID:/N9EqgUo
>>981
perl5
http://ideone.com/HOpSCt

言語変えたらより見やすくなった
レス数が950を超えています。1000を超えると書き込みができなくなります。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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