1 名前:デフォルトの名無しさん mailto:sage [2018/04/24(火) 20:45:14.49 ID:ZY7R7Sru.net] プログラミングのお題スレです。 前スレ プログラミングのお題スレ Part10 https://mevius.5ch.net/test/read.cgi/tech/1514772904/ 【出題と回答例】 1 名前:デフォルトの名無しさん お題:お題本文 2 名前:デフォルトの名無しさん >>1 使用言語 回答本文 【ソースコードが長くなったら】 (オンラインでコードを実行できる) https://ideone.com/ codepad.org/ compileonline.com/ rextester.com/runcode https://runnable.com/ https://code.hackerearth.com/ melpon.org/wandbox https://paiza.io/ 宿題は宿題スレがあるのでそちらへ。
2 名前:デフォルトの名無しさん mailto:sage [2018/04/24(火) 20:46:44.20 ID:WimzHme9.net] >>1 乙
3 名前:デフォルトの名無しさん mailto:sage [2018/04/24(火) 21:01:59.85 ID:b5LehDYo.net] >>1 おちゅ
4 名前:デフォルトの名無しさん mailto:sage [2018/04/24(火) 21:57:24.56 ID:+2ez/H34.net] 出題に際しては - お題の意図を汲みやすい入出力例も示す - 事前に自分でもコードを書いてみる
5 名前:デフォルトの名無しさん mailto:sage [2018/04/24(火) 22:12:31.82 ID:b5LehDYo.net] このスレ久しぶりに来た 数学できない勢だけどよろすこ
6 名前:デフォルトの名無しさん mailto:sage [2018/04/24(火) 22:50:49.03 ID:26GTet/U.net] じゃあ過去ログから面白そうなお題探してきて
7 名前:デフォルトの名無しさん mailto:sage [2018/04/24(火) 23:28:41.47 ID:b5LehDYo.net] >>6 過去ログから持ってきた訳じゃないんだけど、こういうお題を考えた 平面座標aとbが入力されます。bから見てaがおおよそ何時の方角にあるか時刻で出力してください。 例えば座標の方角が2時と3時の中間
8 名前:だった場合は両方の時刻を同時に出力してください。 座標が重なった場合は0時と出力してください。方角の精度は時刻み、分刻みから選択自由とします。 でも何か既視感あるんだよな 過去ログに似たようなお題があったかもしれない [] [ここ壊れてます]
9 名前:デフォルトの名無しさん mailto:sage [2018/04/25(水) 00:32:02.03 ID:Q0aOI6dW.net] (逆)三角関数使わずにって制限つければまあまあ面白いかもしれない
10 名前:デフォルトの名無しさん mailto:sage [2018/04/25(水) 01:02:21.48 ID:Xk9Nens/.net] 数学じゃん。 紙と鉛筆で解いて算出は電卓でやれ。 プログラムでやっても電卓でできる程度のことしかしないじゃん。
11 名前:デフォルトの名無しさん mailto:sage [2018/04/25(水) 04:59:23.37 ID:uzp6LfsA.net] >>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 "
12 名前:デフォルトの名無しさん [2018/04/25(水) 07:24:05.48 ID:OIcVuxa9.net] 過去ログから、さすがにこれはプログラミングの問題でしょ お題: 下図のように山の麓(標高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" -> ?
13 名前:デフォルトの名無しさん mailto:sage [2018/04/25(水) 08:12:36.77 ID:YrZy/fuf.net] >>11 手計算でやっても答えが一致しないのだが、本当にそんな時間掛かるか? C++ https://ideone.com/GK5A8F
14 名前:デフォルトの名無しさん mailto:sage [2018/04/25(水) 08:15:25.48 ID:YrZy/fuf.net] >>12 あ、ごめん私が間違えてた 計算し直してくる
15 名前:デフォルトの名無しさん [2018/04/25(水) 08:57:14.64 ID:s6Mh195j.net] スレの宿題のをやってみた (規制対象なので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
16 名前:デフォルトの名無しさん [2018/04/25(水) 09:00:27.95 ID:s6Mh195j.net] >スレの宿題のを 「前スレの宿題の」と書こうとしてミスしました。 実際のとこ宿題なのかどうかは知らないけど。
17 名前:デフォルトの名無しさん mailto:sage [2018/04/25(水) 09:14:36.14 ID:s6Mh195j.net] >>14 のをちょっとだけ訂正 (コードをcodeの方に書いただけ) https://bit. ly/2HYN8WH
18 名前:デフォルトの名無しさん [2018/04/25(水) 10:26:52.48 ID:tAxnUvIH.net] >>11 テスト例の最初のやつはなぜ18になるのか?7+3+7=17ではないのか?
19 名前:デフォルトの名無しさん [2018/04/25(水) 10:28:30.47 ID:tAxnUvIH.net] あ、ごめん。寝ぼけてた。すまん。
20 名前:デフォルトの名無しさん mailto:sage [2018/04/25(水) 10:29:50.42 ID:8AWpTaB2.net] 7 + (7 - 3) + 7 = 18 あってるよ
21 名前:デフォルトの名無しさん mailto:sage [2018/04/25(水) 11:57:29.80 ID:pPLIJyjZ.net] 度々ごめん 直に書けないurlはこう貼ればいいとわかったので (もしかして常識だったか) https://%62it%2Ely/2Jplh1k
22 名前:デフォルトの名無しさん mailto:sage [2018/04/25(水) 12:11:25.24 ID:pPLIJyjZ.net] >>12 最後の b++ は b -- の打ち間違いか
23 名前:デフォルトの名無しさん mailto:sage [2018/04/25(水) 12:51:35.60 ID:/CvNfD/i.net] >>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
24 名前:デフォルトの名無しさん mailto:sage [2018/04/25(水) 15:06:56.64 ID:eqJJBtIM.net] >>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と同じだから、どうなるんだ?
25 名前:22 mailto:sage [2018/04/25(水) 15:15:39.29 ID:/CvNfD/i.net] >>11 理解できてなかったわ "07362:450" の解がもうわからん
26 名前:22 mailto:sage [2018/04/25(水) 15:29:44.32 ID:/CvNfD/i.net] >>23 Bはa,bどちらも5点ならどちらを選んでも良い 各人は自分の順になったとき、 選択可能な各位置について「以降誰が何をしても最悪でも〜点とれる」という点数を考え、 それが最大になる位置(のうちのどれか一つ)を選ぶ (何をしても、といってももちろん皆が上記のルールは守るものとする) ストレートなMin-Max戦略だなこれ
27 名前:デフォルトの名無しさん mailto:sage [2018/04/25(水) 15:30:57.61 ID:ucQtsZek.net] >>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時間
28 名前:22 mailto:sage [2018/04/25(水) 15:37:00.23 ID:pPLIJyjZ.net] >>26 ありがとう 問題は理解できていて頭が悪いだけでした [] [ここ壊れてます]
30 名前:23 mailto:sage [2018/04/25(水) 18:07:14.08 ID:eqJJBtIM.net] >>25 Bのa・b 戦略が、共に5点の同点で、その2つをA に戻すから、 Aは両方を比較しなければならないから、複雑だと思って
31 名前:デフォルトの名無しさん mailto:sage [2018/04/25(水) 19:23:53.90 ID:/CvNfD/i.net] >>11 やってみた https://ideone.com/LsjBLX 結果 "073:0" => 18 "07362:450" => 36 "06464:36470" => 46 "0827171:28480" => 66 "0737491:28180" => 146 "05374734372747484:184618186912120" => 400 一箇所だけ>>11 と違うな
32 名前:デフォルトの名無しさん mailto:sage [2018/04/25(水) 20:04:18.92 ID:8AWpTaB2.net] >>11 って解無しのパターンってあるのかな?
33 名前:デフォルトの名無しさん mailto:sage [2018/04/25(水) 20:26:41.27 ID:ucQtsZek.net] >>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 無いんじゃね?
34 名前:29 mailto:sage [2018/04/25(水) 21:13:14.97 ID:/CvNfD/i.net] >>29 はバグってた 直したら>>11 と一致しました https://ideone.com/ECmxkW 常に解がありそうだけど証明はどうやるんだろ
35 名前:デフォルトの名無しさん mailto:sage [2018/04/25(水) 21:16:36.07 ID:8AWpTaB2.net] ちょっと考えてみたけど至る所微分不可能な山ではない限り解は存在するね
36 名前:29 mailto:sage [2018/04/25(水) 21:33:09.38 ID:/CvNfD/i.net] 適当に折り返すことによって山谷の数を合わせられる あとは略、って感じか
37 名前:29 mailto:sage [2018/04/25(水) 21:38:29.30 ID:/CvNfD/i.net] 数じゃなく高さを合わせるのか 眠くて頭が回らない
38 名前:デフォルトの名無しさん mailto:sage [2018/04/28(土) 14:30:11.12 ID:O8BM7Wua.net] e^(z) + 1 = 0 を満たす全ての z∈C の絶対値の集合をSとする. この時、Sの中でN番目(N≦10^5)に小さい元を求めよ. なお, e = Σ{n∈N}(1/n!) である.
39 名前:デフォルトの名無しさん mailto:sage [2018/04/28(土) 14:49:49.33 ID:8V4fYuem.net] 数学じゃん。まーたセンセか。 数学板で相手してもらえないのかな?
40 名前:デフォルトの名無しさん mailto:sage [2018/04/28(土) 14:54:49.91 ID:dXz/YQDX.net] つまんね
41 名前:デフォルトの名無しさん mailto:sage [2018/04/28(土) 16:51:43.06 ID:bUTNgJY5.net] N番目に大きな正の奇数を求めよ、みたいな
42 名前:デフォルトの名無しさん mailto:sage [2018/04/28(土) 17:14:48.72 ID:GokrK/uL.net] 簡単なところで。 【お題】 与えられた整数のリストを、 すべての奇数がすべての偶数の前に来るよう並べ替えなさい。 ただし奇数、偶数、それぞれの順番は変えないこと。 [-1, 2, 8, -9, -2, -3, -6, -10, -8, 5, 7, 9, 7] -> [-1, -9, -3, 5, 7, 9, 7, 2, 8, -2, -6, -10, -8]
43 名前:デフォルトの名無しさん mailto:sage [2018/04/28(土) 17:36:46.27 ID:PugBvw3H.net] >>40 Java https://ideone.com/7ibDgO しんぷる
44 名前:デフォルトの名無しさん mailto:sage [2018/04/28(土) 18:15:08.94 ID:7FInXxAw.net] J ((#~2&|),(#~2&|&>:)) -1, 2, 8, -9, -2, -3, -6, -10, -8, 5, 7, 9, 7 出力 _1 9 3 _5 _7 _9 _7 _2 _8 _2 _6 10 _8 (Jでは_が負の符号)
45 名前:デフォルトの名無しさん mailto:sage [2018/04/28(土) 18:19:04.17 ID:XQamhGXx.net] >>40 Perl @a = (1, 2, 8, -9, -2, -3, -6, -10, -8, 5, 7, 9, 7); @o = grep{$_ & 1} @a; @e = grep{!($_ & 1)} @a; use feature 'say'; use Data::Dump qw(dump); say dump [@o, @e]; $ perl 11_41.pl [1, -9, -3, 5, 7, 9, 7, 2, 8, -2, -6, -10, -8]
46 名前:デフォルトの名無しさん mailto:sage [2018/04/28(土) 18:21:14.38 ID:PugBvw3H.net] > _1 9 3 _5 _7 _9 _7 _2 _8 _2 _6 10 _8 Jは全くわからんが、出力おかしくないけ? _1 _9 _3 5 7 9 7 2 8 _2 _6 _10 _8 になるはず?
47 名前:デフォルトの名無しさん mailto:sage [2018/04/28(土) 19:00:22.31 ID:bUTNgJY5.net] >>44 おかしい。こんな短いものでバグ作るとは
48 名前:。 [] [ここ壊れてます]
49 名前:デフォルトの名無しさん mailto:sage [2018/04/28(土) 19:06:05.69 ID:8V4fYuem.net] なんだJニキたいしたことなかったんだな。ガッカリだわ
50 名前:デフォルトの名無しさん mailto:sage [2018/04/28(土) 19:06:51.88 ID:bUTNgJY5.net] >>42 >((#~2&|),(#~2&|&>:)) -1, 2, 8, -9, -2, -3, -6, -10, -8, 5, 7, 9, 7 こう書かなきゃダメだった ((#~2&|),(#~2&|&>:)) _1 2 8 _9 _2 _3 _6 _10 _8 5 7 9 7
51 名前:デフォルトの名無しさん mailto:sage [2018/04/28(土) 19:07:19.36 ID:bUTNgJY5.net] 1か月くらいしかやってないから ガタガタブルブル
52 名前:デフォルトの名無しさん mailto:sage [2018/04/28(土) 19:11:02.35 ID:PugBvw3H.net] 入力に , 入れてたからおかしくなったのけw
53 名前:デフォルトの名無しさん mailto:sage [2018/04/28(土) 19:16:25.16 ID:bUTNgJY5.net] カンマはあっても良いんだけど _2 を -2 と書くと ,- なる演算子のコンビネータで世にも奇妙な動きになる
54 名前:デフォルトの名無しさん mailto:sage [2018/04/28(土) 19:18:49.62 ID:PugBvw3H.net] やっぱりJわからんww
55 名前:デフォルトの名無しさん mailto:sage [2018/04/28(土) 19:20:47.82 ID:e4v0vK3x.net] 違った 1,2,3 => 1 2 3 1, -2, 3 => 1 _2 _3 マイナスがそれまで連結したそれより右、 上の例だと 2 3 全体に作用してた
56 名前:デフォルトの名無しさん mailto:sage [2018/04/28(土) 20:02:26.64 ID:amQJLuCm.net] >>40 ソートするだけやん... C++ https://ideone.com/EX8gEd
57 名前:デフォルトの名無しさん mailto:sage [2018/04/28(土) 20:34:22.01 ID:7FInXxAw.net] あー! ソートするだけか。グッと短くなるな J (\:2&|) _1, 2, 8, _9, _2, _3, _6, _10, _8, 5, 7, 9, 7 結果 _1 _9 _3 5 7 9 7 2 8 _2 _6 _10 _8
58 名前:デフォルトの名無しさん mailto:sage [2018/04/28(土) 21:15:59.30 ID:Ie6V8ZCt.net] >>40 Squeak/Pharo Smalltalk | fn1 fn2 | fn1 := [:arr | (arr select: #odd), (arr select: #even)]. fn2 := [:arr | (arr sort: [:x | x odd asBit] descending) asArray]. fn1 value: #(-1 2 8 -9 -2 -3 -6 -10 -8 5 7 9 7). "=> #(-1 -9 -3 5 7 9 7 2 8 -2 -6 -10 -8) " fn2 value: #(-1 2 8 -9 -2 -3 -6 -10 -8 5 7 9 7). "=> #(-1 -9 -3 5 7 9 7 2 8 -2 -6 -10 -8) "
59 名前:デフォルトの名無しさん [2018/04/28(土) 21:55:04.43 ID:efxIQEuI.net] >>40 # Rubyで。 def f040(a) a.select(&:odd?) + a.select(&:even?) end
60 名前:デフォルトの名無しさん mailto:sage [2018/04/28(土) 21:58:00.35 ID:fbonRnOo.net] >>40 Perl @s = (-1, 2, 8, -9, -2, -3, -6, -10, -8, 5, 7, 9, 7); push @{$a[$_ & 1]}, $_ for @s; ($e, $o) = @a; print "@$o @$e\n"; $ perl 11_40.pl -1 -9 -3 5 7 9 7 2 8 -2 -6 -10 -8
61 名前:デフォルトの名無しさん mailto:sage [2018/04/28(土) 21:58:07.26 ID:4vnB69wL.net] [[[ ][ ]]]\[[]] [[[]]]],[[[ [][] ]
62 名前:デフォルトの名無しさん [2018/04/28(土) 22:24:14.64 ID:kOoyKfN/.net] 安定なソートである必要は無いのかな
63 名前:デフォルトの名無しさん mailto:sage [2018/04/28(土) 22:45:12.30 ID:amQJLuCm.net] >>59 やり方による >>53 みたいな奴だと安定ソートが必要
64 名前:デフォルトの名無しさん mailto:sage [2018/04/29(日) 00:30:13.18 ID:VMPsXvec.net] >>36 って S = {(2m + 1)π / √((2nπ)^2 + 1)|(m, n)∈N^2}だから最小値存在しなくね? 複素数の複素数乗って多価関数だよね?
65 名前:デフォルトの名無しさん mailto:sage [2018/04/29(日) 01:45:04.33 ID:eN7o88HV.net] >>61 e は実数で S = {(2n-1)π} じゃないの。 数学は良く知らんけど。 [[[{[{{]] を見て反省してJの良さが伝わりやすいように>>54 をわかりやすく書き直してみた 定義 data =: _1 2 8 _9 _2 _3 _6 _10 _8 5 7 9 7 modulo =: |~ ascending_sort_by = \: 実行 data ascending_sort_by 2 modulo data 結果 _1 _9 _3 5 7 9 7 2 8 _2 _6 _10 _8 これを分かりにくくして行くと>>94 になる 2項演算子 f と単項演算子 g から単行演算子 (f g)、 (f g) x の値は x f (g x) を作れる仕組み 2項演算子 f の左側引数をxに固定した単項演算子 x&f、(x&f) y の値は x f y を作れる仕組み これらを使って「2での剰余をキーとしてソートする 単行演算子」を作って data に適用する形に書き直すと (ascending_sort_by (2&modulo)) data これを直に書いて不要な空白や括弧を取ると>>94 の (\:2&|) data
66 名前:デフォルトの名無しさん mailto:sage [2018/04/29(日) 01:48:41.58 ID:eN7o88HV.net] ↑ \ になってる文字は本来バックスラッシュ Jはスマフォアプリがあるので暇で困っている人にはパズル的に遊ぶのにお勧め
67 名前:デフォルトの名無しさん mailto:sage [2018/04/29(日) 02:09:53.25 ID:VMPsXvec.net] >>62 z := x + y*i (x, y∈R) e^z = -1 ⇔ exp((x + y*i)(p.v.Log|e| + i*arg(e))) = -1 ⇔ exp(x - 2nπy)*exp((2nπx + y)i) = -1 ⇔ x = 2nπy and 2nπx + y = (2m + 1)π ⇔ x = 2nπy and y = (2m + 1)π/((2nπ)^2 + 1) ⇔ z = (2m + 1)π/(2nπ - i) ⇒ |z| = |2m + 1|π/sqrt(4n^2π^2 + 1) (m, n∈N) だからS = {(2n-1)π}はありえないよ
68 名前:デフォルトの名無しさん mailto:sage [2018/04/29(日) 02:12:22.08 ID:/ExMHkxk.net] >>40 Ocaml https://ideone.com/tZmgi1 初めて扱った言語だから分かりやすさ優先 冗長だよなぁ
69 名前:デフォルトの名無しさん mailto:sage [2018/04/29(日) 02:23:13.34 ID:p2Z/45DS.net] >>62 >>>61 >modulo =: |~ ~ はタイプミス(不要)でしたごめんなさい寝ます
70 名前:デフォルトの名無しさん mailto:sage [2018/04/29(日) 03:00:09.99 ID:zLWhc+ki.net] >>40 javascript var ary = [-1, 2, 8, -9, -2, -3, -6, -10, -8, 5, 7, 9, 7]; // 条件判定が二倍走るのが気に食わない var ans = [...ary.filter(n => n % 2), ...ary.filter(n => !(n % 2))]; console.log(ans); // のでこうした。長い…読むとき引っ掛かりそう var ans = ary.reduce((acc, n) => n % 2 ? {odd: [...acc.odd, n], even: acc.even} : {odd: acc.odd, even: [...acc.even, n]}, {odd: [], even: []}); console.log([...ans.odd, ...ans.even]); // 結局俺にはこれが分かりやすくていいや var odd = [], even = []; ary.forEach(n => {n % 2 ? odd.push(n) : even.push(n);}); console.log([...odd, ...even]);
71 名前:デフォルトの名無しさん mailto:sage [2018/04/29(日) 05:45:46.05 ID:hIO/B/Lz.net] >>40 Kotlin https://paiza.io/projects/psvjfVlHA_h2ywBb3amg3Q C https://paiza.io/projects/iZQ1V6L34LthEdqvQsRNJQ
72 名前:デフォルトの名無しさん mailto:sage [2018/04/29(日) 05:54:20.45 ID:hIO/B/Lz.net] >>43 やってることほとんど同じだけど短くできるので改造してみました。 Perl https://paiza.io/projects/hmeuU1NTBlSqUtbFr6Vn2Q
73 名前:デフォルトの名無しさん [2018/04/29(日) 07:08:41.98 ID:BEZTP3Wm.net] >>40 Common Lisp https://ideone.com/7FvGqn 計測してみたらsortが一番遅かった https://ideone.com/CzpnHR
74 名前:デフォルトの名無しさん mailto:sage [2018/04/29(日) 09:01:58.05 ID:aHYSui5W.net] >>40 ruby p [-1, 2, 8, -9, -2, -3, -6, -10, -8, 5, 7, 9, 7].partition(&:odd?).flatten
75 名前:デフォルトの名無しさん mailto:sage [2018/04/29(日) 09:22:53.62 ID:aHYSui5W.net] >>40 ocaml https://ideone.com/Izv76M is_oddはぐぐって見つけたのの丸パクリ
76 名前:デフォルトの名無しさん mailto:sage [2018/04/29(日) 21:32:42.63 ID:siUxTeIDF] お題: 文字列をソートしなさい。ただし、英字のみをソートし他はそのままにすること。 例: "213cba213cba213cba" -> "213aaa213bbb213ccc"
77 名前:デフォルトの名無しさん mailto:sage [2018/04/29(日) 10:27:23.47 ID:aHYSui5W.net] >>40 rust https://ideone.com/epTHxQ タプルにflattenとかできたらよかったのに…
78 名前:デフォルトの名無しさん [2018/04/29(日) 16:09:08.42 ID:hIO/B/Lz.net] >>40 Kotlin でも >>71 そっくりに書けることに気付いたので >>68 を fork して書き換えてみた。 https://paiza.io/projects/Ilw66tbpxElWvi1lSmKU3Q
79 名前:デフォルトの名無しさん mailto:sage [2018/04/29(日) 20:33:37.53 ID:My7UiDyw.net] [[[ []]]]*[[ [][] ][] } } {} [[[
80 名前:デフォルトの名無しさん mailto:sage [2018/04/29(日) 20:42:22.87 ID:/ExMHkxk.net] しっかし、良問なお題だな……
81 名前:デフォルトの名無しさん mailto:sage [2018/04/29(日) 21:35:33.15 ID:f+z04ZEq.net] お題: 文字列をソートしなさい。ただし、英字のみをソートし他はそのままにすること。 例: "213cba213cba213cba" -> "213aaa213bbb213ccc"
82 名前:デフォルトの名無しさん mailto:sage [2018/04/29(日) 21:43:39.24 ID:VMPsXvec.net] >>78 Riby "213cba213cba213cba".yield_self{|v|r=/[a-zA-Z]/;s=v.scan(r).sort;v.gsub(r){s.shift}} #=> "213aaa213bbb213ccc"
83 名前:デフォルトの名無しさん mailto:sage [2018/04/29(日) 22:33:55.68 ID:aHYSui5W.net] >>78 octave https://ideone.com/qppgil
84 名前:デフォルトの名無しさん mailto:sage [2018/04/29(日) 22:50:48.02 ID:WuAwAiPA.net] お題 二次元平面上の4点が与えられる。この4点で凸四角形を構成できるか判定せよ。 ※4点の順番は、時計回りや反時計回りとは限らない。 (0, 0), (1, 0), (1, 1), (0, 1) => true (0, 0), (1, 1), (1, 0), (0, 1) => true (0, 0), (2, 0), (1, 1), (0, 2) => false (0, 0), (1, 1), (2, 2), (3, 3) => false (0, 0), (0, 0), (0, 0), (0, 0) => false
85 名前:デフォルトの名無しさん mailto:sage [2018/04/29(日) 22:53:34.50 ID:yO7NcvMF.net] そんな空気読めないから学生に不人気なんだよ数学板帰れ
86 名前:デフォルトの名無しさん mailto:sage [2018/04/29(日) 23:11:38.79 ID:wF7FhsU6.net] >>78 Squeak/Pharo Smalltalk | fn | fn := [:str | | letters | letters := OrderedCollection new. ((str asArray gather: [:chr | chr isLetter ifTrue: [letters add: chr. '{', letters size asString, '}'] ifFalse: [chr asString]] ) as: String) format: letters sort ]. fn value: '213cba213cba213cba' "=> '213aaa213bbb213ccc' "
87 名前:デフォルトの名無しさん mailto:sage [2018/04/29(日) 23:14:55.98 ID:UI+loYQZ.net] >>78 Perl5 @s = split '', '213cba213cba213cba'; @i = 0..$#s; @k = grep{$s[$_] =~ /[a-z]/} 0..$#s; @l = sort @s[@k]; $s[$k[$_]] = $l[$_] for 0..$#k; use feature 'say'; say @s; $ perl 11_77.pl 213aaa213bbb213ccc
88 名前:デフォルトの名無しさん mailto:sage [2018/04/29(日) 23:19:13.69 ID:UI+loYQZ.net] >>84 @i = 0..$#s; この行、要らなかった、消し忘れた…orz
89 名前:デフォルトの名無しさん mailto:sage [2018/04/29(日) 23:22:03.47 ID:WuAwAiPA.net] >>78 C++ #include <iostream> #include <string> #include <algorithm> #include <boost/iterator/filter_iterator.hpp> template <typename FwdIt> void selection_sort(FwdIt first, FwdIt last) { for (auto it = first; it != last; ++it) std::iter_swap(it, min_element(it, last)); } int main() { std::string s; std::cin >> s; selection_sort(boost::make_filter_iterator(&::isalpha, s.begin(), s.end()), boost::make_filter_iterator(&::isalpha, s.end(), s.end())); std::cout << s << std::endl; }
90 名前:デフォルトの名無しさん mailto:sage [2018/04/29(日) 23:46:37.03 ID:wPb3/3m7.net] >>78 Haskell アルゴリズム自体は単純だけどコードが泥臭い もっと綺麗に書けそう import Data.Char import Data.List solve [] ys = ([],reverse $ sort ys) solve (x:xs) ys = if isAlpha x then let (vs,w:ws) = solve xs (x:ys) in (w:vs,ws) else let (vs,ws) = solve xs ys in (x:vs,ws) main = putStrLn $ fst $ solve "213cba213cba213cba" []
91 名前:デフォルトの名無しさん mailto:sage [2018/04/30(月) 00:05:47.30 ID:873ZFTYn.net] お題 西暦X年のプレミアムフライデーを列挙せよ
92 名前:デフォルトの名無しさん mailto:sage [2018/04/30(月) 00:14:03.81 ID:wP9Edy/s.net] それは概念的な方?それとも実際に仕事に影響する方? 後者ならプレミアムフライデー列挙は0文字でできるが
93 名前:デフォルトの名無しさん mailto:sage [2018/04/30(月) 03:32:32.41 ID:XX4FB8lc.net] >>78 C https://paiza.io/projects/Oy8gIsyfgJX7t7rSEPnVkQ
94 名前:デフォルトの名無しさん mailto:sage [2018/04/30(月) 03:49:27.01 ID:XX4FB8lc.net] あれ?strdup() で警告出てるな。strdup() って標準ではないか。 まあでもCコンパイラのアバウトな処理によって動くバイナリは作られたようだがw や
95 名前:閧スいことは分かると思うのでそのままにしておく。 [] [ここ壊れてます]
96 名前:デフォルトの名無しさん mailto:sage [2018/04/30(月) 04:14:00.17 ID:XX4FB8lc.net] >>78 Kotlin https://paiza.io/projects/YLQlblIMPLj68rZq1YBibw
97 名前:デフォルトの名無しさん [2018/04/30(月) 07:20:36.76 ID:aMecU4PQ.net] >>78 Common Lisp https://ideone.com/wPfWhC
98 名前:デフォルトの名無しさん mailto:sage [2018/04/30(月) 09:43:30.53 ID:6GiCfUEC.net] >>78 Squeak/Pharo Smalltalk | fn | fn := [:str | | letters | letters := (str select: #isLetter) sort readStream. str collect: [:chr | chr isLetter ifTrue: [letters next] ifFalse: [chr]] ]. fn value: '213cba213cba213cba' "=> '213aaa213bbb213ccc' "
99 名前:デフォルトの名無しさん mailto:sage [2018/04/30(月) 11:03:34.34 ID:6GiCfUEC.net] >>88 Squeak/Pharo Smalltalk | preKinsOf | preKinsOf := [:year | (year asInteger asYear months collect: [:month | (month dates select: [:date | date weekday == #Friday]) last] ) reject: [:date | date mmddyyyy beginsWith: '4/29'] ]. preKinsOf value: 2022 "=> {28 January 2022 . 25 February 2022 . 25 March 2022 . 27 May 2022 . 24 June 2022 . 29 July 2022 . 26 August 2022 . 30 September 2022 . 28 October 2022 . 25 November 2022 . 30 December 2022} "
100 名前:デフォルトの名無しさん mailto:sage [2018/04/30(月) 11:06:46.51 ID:51rF4oVe.net] >>78 >>87 のアロー版 import Control.Arrow import Data.Char import Data.List solve ([],_) = ([],[]) solve ((x:xs),~yss@(y:ys)) = if isAlpha x then first (y:) $ second (x:) $ solve (xs,ys) else first (x:) $ solve (xs,yss) main = putStrLn $ loop (second sort . solve) "213cba213cba213cba"
101 名前:デフォルトの名無しさん mailto:sage [2018/04/30(月) 13:22:57.51 ID:9wPwzi/d.net] [[[ [ "[]" ]]] [] [][[[ [] ]][]