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/ 宿題は宿題スレがあるのでそちらへ。
152 名前:デフォルトの名無しさん mailto:sage [2018/05/01(火) 11:50:43.04 ID:PxRnJhKl.net] >>81 Squeak/Pharo Smalltalk | fn | fn := [:ps | ps asSet size = 4 and: [ ps noneSatisfy: [:p1 | [:p2 :p3 :p4 | (p3 - p2 crossProduct: p4 - p2) = 0 or: [p1 insideTriangle: p2 with: p3 with: p4] ] valueWithArguments: (ps copyWithout: p1) ] ] ]. fn value: {0@0. 1@0. 1@1. 0@1}. "=> true " fn value: {0@0. 1@1. 1@0. 0@1}. "=> true " fn value: {0@0. 2@0. 1@1. 0@2}. "=> false " fn value: {0@0. 1@1. 2@2. 3@3}. "=> false " fn value: {0@0. 0@0. 0@0. 0@0}. "=> false "
153 名前:デフォルトの名無しさん mailto:sage [2018/05/01(火) 12:02:35.06 ID:pz418p4m.net] >>118 お題のサンプル程度なら正規表現で十分かと PowerShell PS C:\> ([regex]'o.*?d.*?a.*?i.*?').Matches('odaiodai').Count >> 2 PS C:\> ([regex]'o.*?d.*?a.*?i.*?').Matches('ooddaaii').Count >> 1 PS C:\> ([regex]'o.*?d.*?a.*?i.*?').Matches('idao').Count >> 0 PS C:\> ([regex]'o.*?d.*?a.*?i.*?').Matches('ododoadioadioadioadioadioadiodaioadodioadiaodi ').Count >> 5
154 名前:デフォルトの名無しさん mailto:sage [2018/05/01(火) 12:07:06.40 ID:70o2W7dO.net] 文字をATCGにして長さ1億くらいにすればプログラミングっぽくなるんじゃねえの
155 名前:デフォルトの名無しさん [2018/05/01(火) 12:28:06.18 ID:UGhOjMxe.net] 【安全デマにブーメラン】 山口が自殺したら、次は城島、他のメンバーも酷い運命、食べて応援が応報に rosie.5ch.net/test/read.cgi/liveplus/1525137558/l50
156 名前:デフォルトの名無しさん mailto:sage [2018/05/01(火) 12:30:10.65 ID:in398Y2z.net] お題 大きさW×Hでポケットのないビリヤード台を想像してください。 左下の座標を(0,0)、右上の座標を(W,H)とします。 位置(0,0)から右上に向かって毎秒(a,b)の速度でボールを射出したとき、 ボールが位置(0,0)に戻ってくるのは何秒後でしょうか? ボールの大きさや摩擦などは無視します。 [input] W H a b (すべて正の整数) [example] 2 4 1 1 -> 8 3 4 2 1 -> 24 4 5 2 4 -> 20 1 2 10 5 -> 0.8
157 名前:デフォルトの名無しさん mailto:sage [2018/05/01(火) 13:50:08.69 ID:NcJxSmfh.net] 公式があるね。 周期=2WH/gcd(aH,bW) (gcdは最大公約数)
158 名前:デフォルトの名無しさん mailto:sage [2018/05/01(火) 13:56:33.70 ID:w7H89JvO.net] >>151 Perl5 use feature 'say'; for (<DATA>) { chomp; ($W, $H, $a, $b) = split; ($x, $y, $t) = 0x3; ($w, $h) = ($W, $H); do { ($w, $h) = (2*$w, 2*$h); ($tx, $ty) = ($w/$a, $h/$b); $t = ($tx < $ty) ? $tx : $ty; ($x, $y) = ($a*$t, $b*$t); } while ($x % (2*$W) != 0 or $y % (2*$H) != 0); say "$_ -> $t"; } __DATA__ 2 4 1 1 3 4 2 1 4 5 2 4 1 2 10 5 実行結果 $ perl 11_150.pl 2 4 1 1 -> 8 3 4 2 1 -> 24 4 5 2 4 -> 20 1 2 10 5 -> 0.8
159 名前:デフォルトの名無しさん mailto:sage [2018/05/01(火) 13:59:50.83 ID:w7H89JvO.net] >>152 やっぱ公約数に帰結するんだ、 >>153 書いてて繰り返し不要な解法がありそうだという気がしてきた まいいや自分で考えることも面白いから
160 名前:デフォルトの名無しさん mailto:sage [2018/05/01(火) 15:18:38.67 ID:V5+E1IVs.net] >>151 Squeak/Pharo Smalltalk | fn | fn := [:W :H :a :b | | time | time := 2 * W * H / (b * W gcd: a * H). time isInteger ifTrue: [time] ifFalse: [time asFloat] ]. fn valueWithArguments: #(2 4 1 1). "=> 8 " fn valueWithArguments: #(3 4 2 1). "=> 24 " fn valueWithArguments: #(4 5 2 4). "=> 20 " fn valueWithArguments: #(1 2 10 5). "=> 0.8 "
161 名前:デフォルトの名無しさん mailto:sage [2018/05/01(火) 19:12:45.94 ID:sD3/P01t.net] >>118 javascript var f = s => {console.log((s.match(/o.*?d.*?a.*?i.*?/g)||[]).length)} f('odaiodai') //=> 2 f('ooddaai') //=> 1 f('idao') //=> 0 f('ododoadioadioadioadioadioadiodaioadodioadiaodi') //=> 5 >>148 と同じ
162 名前:デフォルトの名無しさん mailto:sage [2018/05/01(火) 20:49:51.17 ID:2ktnnBej.net] >>103 ruby https://ideone.com/f8m9QV
163 名前:デフォルトの名無しさん mailto:sage [2018/05/01(火) 21:15:49.14 ID:oZjmv7dj.net] お題 大きさが(X, Y, Z)のナップサックに大きさが(x_i, y_i, z_i)で価値がv_iの荷物を価値の総和が最大になるように詰めたい X Y Z N x_1 y_1 z_1 v_1 ︙ x_N y_N z_N v_N と荷物及びナップサックが与えられた時、最大の価値を求めよ 可能ならどれを詰めたかも求めよ なお荷物は回転させて詰めても良いものとする
164 名前:デフォルトの名無しさん mailto:sage [2018/05/01(火) 21:36:00.67 ID:2ktnnBej.net] >>118 ruby https://ideone.com/4Ra0WG
165 名前:デフォルトの名無しさん mailto:sage [2018/05/01(火) 22:01:39.67 ID:bRlEbj+U.net] ナップザックというか箱だなそれ (雑感)
166 名前:デフォルトの名無しさん [2018/05/01(火) 22:40:45.68 ID:7ekaWt6m.net] お題 政令指定都市名を受け取り, 隣接する区を異なる色になるように塗り分けるのに必要な最少の色数を返す. f(Sagamihara) => 2 f(Yokohama) => 4
167 名前:デフォルトの名無しさん [2018/05/01(火) 22:43:51.19 .net] >>158 は、巡回セールスマン問題に並んで有名なナップサック問題である。 なお、この手の問題をNP完全問題だとかNP困難問題だとか呼ぶのは 「ナップサック」(NaPpsuck)に由来する。
168 名前:片山博文MZ mailto:sage [2018/05/01(火) 22:47:15.06 ID:Bi25k6nv.net] non-polynomial
169 名前:デフォルトの名無しさん mailto:sage [2018/05/01(火) 22:53:05.87 ID:Q2z4i3xl.net] 数学荒らし死ね
170 名前:デフォルトの名無しさん mailto:sage [2018/05/01(火) 22:54:11.24 ID:RbfjP2ra.net] 自分が理解できないからって数学荒らし呼ばわりは惨めすぎるね
171 名前:デフォルトの名無しさん mailto:sage [2018/05/01(火) 23:00:54.97 ID:dg2b7E11.net] >>162 民明書房か
172 名前:デフォルトの名無しさん mailto:sage [2018/05/02(水) 00:09:48.80 ID:WLxRJQ+g.net] >>165 じゃロシア語で埋めてくな。 文句ないんだろ。
173 名前:デフォルトの名無しさん mailto:sage [2018/05/02(水) 00:16:51.78 ID:WLxRJQ+g.net] Текущая версия страницы пока не проверялась опытными участниками и может значительно отличаться от версии, проверенной 11 апреля 2015; проверки требуют 20 правок. Бу́ря (шторм) — собирательное понятие, обозначающее очень сильный ветер (а также сильное волнение на море), возникающий по различным причинам и в разных областях Земли. Скорость приземного ветра (на стандартной высоте измерений 6—12 м над земной поверхностью) при буре составляет, по разным источникам, 15—20 м/с и более (21-25 м/с или 75-88 км/ч). Бури бывают снежные, песчаные и водные. Скорость ветра при буре гораздо меньше, чем при урагане, однако буря чаще всего сопровождается переносом песка, пыли или снега, что приводит к ущербу се
174 名前:|ьскому хозяйству, путям сообщения и другим отраслям экономики. [] [ここ壊れてます]
175 名前:デフォルトの名無しさん mailto:sage [2018/05/02(水) 00:18:35.47 ID:WLxRJQ+g.net] Буря может наблюдаться: при прохождении тропического или внетропического циклона; при прохождении смерча (тромба, торнадо); при шквале — кратковременном усилении ветра, связанном с местной или фронтальной грозой. К бурям по шкале Бофорта относятся ветры скоростью более 20 м/с (9 баллов), а к ураганам — ветры со скоростью более 32,6 м/с (12 баллов). Кроме того, по этой шкале различают: сильную бурю со скоростью 24,5-28,4 м/с (10 баллов); жестокую бурю со скоростью 28,5-32,6 м/с (11 баллов).
176 名前:デフォルトの名無しさん mailto:sage [2018/05/02(水) 00:19:06.57 ID:WLxRJQ+g.net] Термин «ураган» имеет также более узкое значение — тропический циклон. По месту образования тропические циклоны делят на: Субтропический шторм Тропический шторм Ураган (Атлантический океан) Тайфун (Тихий океан) Если скорость ветра в тропическом циклоне превышает 60 км/ч, ему присваивается собственное имя.
177 名前:デフォルトの名無しさん mailto:sage [2018/05/02(水) 00:20:01.14 ID:WLxRJQ+g.net] По мнению американских учёных, для областей, расположенных в северных широтах, снежной бурей можно считать зимний сильный ветер, во время которого скорость ветра достигает и превышает 15 м/с (56 км/ч). При этом температура воздуха опускается до −7 °C и ниже. Территория распространения снежной бури может быть сколь угодно обширной.
178 名前:デフォルトの名無しさん mailto:sage [2018/05/02(水) 00:32:41.39 ID:Ahv/tBZs.net] 数学は少なくとも話してる本人は内容を理解している 一方お前のクソみたいなロシア語はお前はその内容を理解していない 一つ聞くが、お前がコピペした文章の中には原意が支配するという意味のロシア語の単語が出てくるが、 その単語の性数態をお前は適切にこたえられるか? 答えられないだろうな。奇を衒って知りもしない外国語の文章をコピペしただけなんだから
179 名前:デフォルトの名無しさん mailto:sage [2018/05/02(水) 00:46:25.46 ID:bQ3xZw0Z.net] >>158 これは普通のナップザック問題と違って、荷物を積む積まないの選択肢のみならず それに加えナップザック中に残されているスペースの形状・大きさ、 荷物を積むならば配置する向きと位置 そういったすべての条件の組み合わせに配慮して、最終価値最大の解を探索せねばならず、 単に荷物の重さと価値のみに着目して動的計画法で価値最大化プログラムをちょいちょいと書く ような課題とは全然違った難しさがあるな…
180 名前:デフォルトの名無しさん mailto:sage [2018/05/02(水) 00:47:08.25 ID:WLxRJQ+g.net] なるほど。じゃ落語で埋めてくわ。 本人が理解してりゃスレ違いでもいいらしいからな。
181 名前:デフォルトの名無しさん mailto:sage [2018/05/02(水) 00:49:53.30 ID:Ahv/tBZs.net] >>174 数学が理解できなくてそんなに悔しかった?? 自分がロシア語も理解できないのにコピペしたのがバレてそんなに悔しかった?? 本当に惨めだね。あ、僕は落語なら浜野矩随が好きだからよろしくね、ど低能くん^^
182 名前:デフォルトの名無しさん mailto:sage [2018/05/02(水) 00:50:17.20 ID:WLxRJQ+g.net] こんな話がございます。 両国の回向院に猫塚トいうものがございます。 猫が死にますト、飼い主が回向料とともに、猫の亡骸を持ち込みまして。 寺の僧侶がお経を読んで、猫を葬ってくれるという。 これは、この塚に最初に入ったという猫の話でございます。 八丁堀の玉子屋新道に、魚屋を営む定吉ト申す者がございました。 もっとも、魚屋とは名ばかりで、その実は博奕打ちでございます。 毎日を遊んで暮らしている。
183 名前:デフォルトの名無しさん mailto:sage [2018/05/02(水) 00:50:56.06 ID:WLxRJQ+g.net] この日も、朝湯の帰りに馴染みの三河屋という居酒屋に立ち寄りまして。 風呂あがりの一杯とばかりに、呑気に引っ掛けておりますト。 ポカッ、ポカッと、頭の上から妙な音が聞こえてくる。 博奕打ちというのは、我々とはものの考え方が異なっているようで。 ――板に何かを叩きつける音がする。 なるほど、やってやがるな――
184 名前:デフォルトの名無しさん mailto:sage [2018/05/02(水) 00:51:47.73 ID:WLxRJQ+g.net] ト、てっきり丁半博打の壺を伏せる音と勘違いいたしまして。 「おい、六さん」 店の者を呼びつけます。 「なんだい、水臭えじゃねえか。やってるならやってるで、教えてくれてもいいだろうに。俺も仲間に入れてくれ。取り次いでくんなよ」 「博奕ですか。滅相もない。うちではそういったことはさせません。二階は物置ですよ」
185 名前:デフォルトの名無しさん mailto:sage [2018/05/02(水) 00:53:01.26 ID:WLxRJQ+g.net] それでも、確かに音がするのは妙でございます。 店の者が二階へ上がっていって、やがて下りてまいりました。 「分かりました。あれは猫です」 こういった店は、商売柄、どうしても猫が寄ってくる。 今朝も早くに仕入れておいたイナダを、勝手に食ってしまったそうで。 あんまり腹が立つから、焼け火箸で目玉を刺してやろうかとも思ったが。 店の主人が、せめて橋の上から放り投げる程度にしてやれと言ったという。
186 名前:デフォルトの名無しさん mailto:sage [2018/05/02(水) 00:54:13.04 ID:WLxRJQ+g.net] 「それで柱にふん縛っておいたんですがね。今、見に行ったら、なんとか逃げ出そうとして、立ち上がっては倒れてやがる。あれはその音ですよ」 定吉は柄にもなく、猫がちょっと不憫に思えまして。 死なせるくらいなら、自分が引き取って育てるからト。 金を渡して猫を貰い受けました。 差し毛の一本も見当たらない、正真正銘の黒猫です。 定吉は懐に入れるト、店を出て家に帰った。
187 名前:デフォルトの名無しさん mailto:sage [2018/05/02(水) 00:54:44.10 ID:WLxRJQ+g.net] 家では女房のお滝が待っています。 定吉が懐から黒猫を取り出しますト、途端に渋い顔を浮かべまして。 「やだよ、そんなものを持って帰って。私は猫は嫌いなんだよ」 ト、そっぽを向いて風呂に行ってしまう。 定吉は、自分が命を救ってやった猫ですから。 恩を着せるわけではないが、やはり可愛い。 一人残った家の中で、猫を抱き上げて話しかける。
188 名前:デフォルトの名無しさん mailto:sage [2018/05/02(水) 00:55:53.83 ID:WLxRJQ+g.net] 「そういや、名前を聞いてこなかったな。大抵の猫ならタマとかミケとか付けるんだが、お前はそんなガラじゃねえ。全身真っ黒で、熊みてえだもんな。そうだ。クマってのはどうだ」 するト、猫がにゃーごト鳴く。 「にゃーごだと。ヘヘ。鳴かなくていいから、恩返しのひとつでもしてみろよ。俺をちょっとは儲けさせてくれたら、拾った甲斐もあるってもんだ」 ト、猫に博奕の講釈をいたします。
189 名前:デフォルトの名無しさん mailto:sage [2018/05/02(水) 00:57:44.85 ID:WLxRJQ+g.net] 「一つでやるのをチョボイチ、 二つ使うのを丁半、三つ使うのをきつねと言う。俺がやってるのは丁半だ。グニの半、二ゾロの丁ってな」 定吉は賽を湯のみに入れて、畳の上に伏せますト。 「どうだ。表から見たらどの目か分からないだろう。だから、銭を賭けて当てるんだ。猫は魔物というから、お前なら当てられるだろう。おい、なんとか言ってみろよ」 猫は相変わらず、にゃーごト鳴く。
190 名前:デフォルトの名無しさん mailto:sage [2018/05/02(水) 00:58:41.40 ID:WLxRJQ+g.net] 「俺は、丁が出ると思うな。お前は何だ。にゃーごか。よし、俺が丁で、お前がにゃーご。勝負ッ」 ト、戯れながら湯呑みを開けますト、一二の半。 「おかしいな、半か。するってえと、お前のにゃーごは半か。ヘヘ、にゃご半か。それじゃあ今度は俺が半だ」 すると、今度は猫がにゃご、にゃごト、二回鳴く。
191 名前:デフォルトの名無しさん mailto:sage [2018/05/02(水) 00:59:18.14 ID:WLxRJQ+g.net] 「なんだい、妙な鳴き方をしやがる。今度はにゃごにゃごの丁ってか」 ト、笑いながら湯呑みを開けるト、二ゾロの丁。 それから何度繰り返してみましても、猫がにゃーごと鳴くと半。 にゃごにゃごト、二回鳴くと丁が出ます。 「お前、本当に恩返ししてくれるつもりだな。こいつはいい」
192 名前:デフォルトの名無しさん mailto:sage [2018/05/02(水) 01:00:01.79 ID:WLxRJQ+g.net] それから定吉は、賭場へ行くたびにこの猫を懐に忍ばせていく。 にゃーごの半、にゃごにゃごの丁で、どんどん金が儲かりまして。 羽振りがよくなるト、兄い、親分と立てられるようになる。 猫を始終連れて歩くので、そのうちに猫定と呼ばれるようになった。
193 名前:デフォルトの名無しさん mailto:sage [2018/05/02(水) 01:03:08.53 ID:WLxRJQ+g.net] 博徒の世界では、あだ名がついたら一人前ト申すそうでございますが。 一人前になるト、自然、悪評も目立つようになる。 そのうちに江戸にいられなくなり、ふた月ばかり旅に出ることにいたしまして。 定吉は、猫を女房に預けて家を出た。 これが惨劇の幕開けでございます。 ――チョット、一息つきまして。
194 名前:デフォルトの名無しさん mailto:sage [2018/05/02(水) 01:03:26.56 ID:bQ3xZw0Z.net] 数学厨よりひどいあらしだな スレが機能しなくなっちゃった
195 名前:デフォルトの名無しさん mailto:sage [2018/05/02(水) 01:04:21.64 ID:WLxRJQ+g.net] どこまでお話しましたか。 そうそう、博奕打ちの定吉が、猫の鳴き声で賽の目を当て、兄い、親分ト立てられるようになるところまでで――。 亭主の定吉が家を空けますト。 女房のお滝は、子分の若い者を家に引き入れるようになりまして。 長屋の住人たちが眉をひそめるのも、まったく気にしておりません。
196 名前:デフォルトの名無しさん mailto:sage [2018/05/02(水) 01:13:03.09 ID:p96PUqzp.net] 数学ができないやつは論理的思考もできないということを示す良い例だな 頼むからスレから未来永劫消えてくれ
197 名前:デフォルトの名無しさん mailto:sage [2018/05/02(水) 01:17:36.33 ID:bQ3xZw0Z.net] いてもいいけど荒らすな お題を出し 解答プログラムを書くこと
198 名前:デフォルトの名無しさん mailto:sage [2018/05/02(水) 01:21:54.54 ID:Ahv/tBZs.net] あの〜続きが気になるから onboumaru.com/049-nekosada から無断転載した「猫定」を 最後まで張ってくださいませんか?? 無能ロシア語落語さん^^
199 名前:デフォルトの名無しさん mailto:sage [2018/05/02(水) 01:22:07.91 ID:WLxRJQ+g.net] 自分が理解できれば何を書いてもいいというのは数学厨が示したルールだが。 文句を言われたらこう言って開き直ればいいそうだ。 「自分が理解できないからって荒らし呼ばわりは惨めすぎるね」
200 名前:デフォルトの名無しさん mailto:sage [2018/05/02(水) 01:23:03.68 ID:bQ3xZw0Z.net] 勘弁してくれよ それこそよそでやってくれ
201 名前:デフォルトの名無しさん mailto:sage [2018/05/02(水) 01:23:13.12 ID:WLxRJQ+g.net] >>192 了解。>>192 の依頼に従い、続行する。
202 名前:デフォルトの名無しさん mailto:sage [2018/05/02(水) 01:24:29.12 ID:WLxRJQ+g.net] そのうちに、人の噂も七十五日トばかりに。 ほとぼりが覚めた頃を見計らって、定吉が江戸に帰ってくる。 帰ってくるト、猫を連れてまたぞろ博奕へ出掛けます。 その夜。 お滝は、間男の若い者を呼びつけ、相談をした。 定吉がいては、お互い落ち着いて逢瀬を楽しむこともままならない。 いっそ、ひと思いに殺してしまってほしい。
203 名前:デフォルトの名無しさん mailto:sage [2018/05/02(水) 01:24:49.92 ID:p96PUqzp.net] >>193 数学は少なくともスレのお題と関係があったがお前のクソみたいなコピペはスレと無関係のただの荒らしだろうが どっちもウザイのは同じだが、一緒くたにすんなハゲ!
204 名前:デフォルトの名無しさん mailto:sage [2018/05/02(水) 01:25:10.76 ID:WLxRJQ+g.net] 若い者は、親分の家の姉御に見込まれたことで、男が上がったつもりになり。 箒を斜に切って油をかけ、ジリジリと火で炙る。 これは竹槍を作っているのでございます。 そうして、鯵切り包丁を手ぬぐいで包みますト。 腰に差して、長屋を飛び出していきました。 定吉は、馴染みの賭場へやってきておりましたが。 その晩はどうしたことか、猫が一向に鳴きません。
205 名前:デフォルトの名無しさん mailto:sage [2018/05/02(水) 01:26:10.04 ID:WLxRJQ+g.net] 体の具合が悪いのだろうか。 まあ、今まで稼がせてもらったのだから。 ト、この時にはすでに情が移っておりますから。 猫の具合を優先して、素直に帰ることにいたしました。 賭場を出るト、ポツポツと雨が降り出してくる。 定吉は猫を懐に大事にしまって、新橋の喜多川といううなぎ屋に駆け込んだ。 一杯やりながら、猫に鰻の切れ端をやるのが、この頃の楽しみでございます。 ところが、いつもはよく食う猫が、これまた今日に限って口をつけようといたしません。
206 名前:デフォルトの名無しさん mailto:sage [2018/05/02(水) 01:28:05.76 ID:WLxRJQ+g.net] 続きを張れと言ったのは数学厨な。
207 名前:デフォルトの名無しさん mailto:sage [2018/05/02(水) 01:29:36.61 ID:p96PUqzp.net] 責任転嫁すんなハゲ お前のせいで直近のお題が迷子だっつーの もう二度とこないでください
208 名前:デフォルトの名無しさん mailto:sage [2018/05/02(水) 02:28:44.50 ID:/DSye1oK.net] >>201 お前さんがやってる煽りも、ロシア語はってるいじけた小学生みたいな奴と同じレベルだよ。数学ができたとしても精神レベルは同程度。お前さんにどんな言い分があろうとも、周囲からはそう見える。
209 名前:デフォルトの名無しさん mailto:sage [2018/05/02(水) 02:46:19.96 ID:7KO0UxVX.net] 重み付き3次元箱詰め問題みたいなもんをここのお題に出すバカ 各都市の区の具体的なグラフが必要な問題をそれぞれのグラフも与えずに出すバカ 自分で解いて楽しいかどうか考えろよ
210 名前:デフォルトの名無しさん mailto:sage [2018/05/02(水) 02:57:52.71 ID:MBc9Gfy6.net] 出題時の注意>>4
211 名前:デフォルトの名無しさん mailto:sage [2018/05/02(水) 02:59:10.33 ID:bQ3xZw0Z.net] そら言えてる
212 名前:デフォルトの名無しさん mailto:sage [2018/05/02(水) 03:36:28.18 ID:XZO+Bco0.net] お題が流れたみたいなのでリンクまとめ >>11 "073:0" -> 18 "07362:450" -> 36 "06464:36470" -> 42 "0827171:28480" -> 66 "0737491:28180" -> 146 "05374734372747484:184618186912120" -> ? >>40 [-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] >>78 "213cba213cba213cba" -> "213aaa213bbb213ccc" >>103 gccgc -> 2 ggggggg -> 0 cppcppppccpppppc -> 5 cppcppppccpgpppc -> 0 >>118 odaiodai -> 2 ooddaai -> 1 idao -> 0 ododoadioadioadioadioadioadiodaioadodioadiaodi -> ?
213 名前:デフォルトの名無しさん mailto:sage [2018/05/02(水) 05:46:42.10 ID:hUDFoTxj.net] お題:Hello, World!を10回出力してください。ただし、偶数文字を小文字、奇数文字を大文字にすること。さらに3の倍数の文字をランダムな英字にすること。
214 名前:デフォルトの名無しさん mailto:sage [2018/05/02(水) 07:40:02.20 ID:bQ3xZw0Z.net] >>207 Perl5 use feature 'say'; @s = split'','Hello, World!'; @Az = ('A'..'Z', 'a'..'z'); for $i (0..9) { do {$s[$_ - 1] = $Az[int(rand(@Az))] if $_ % 3 == 0} for 1..@s; my @t; push @t, $i % 2 ? lc $c : uc $c while ($i, $c) = each @s; say @t; } 実行結果 $ perl 11_206.pl HeHlOg wQrLz! HeOlOp wOrLo! HeAlOh wMrLf! HeZlOs wJrLz! HeElOh wBrLg! HeBlOa wIrLy! HeFlOw wCrLb! HeTlOc wSrLp! HeOlOm wNrLx! HeJlOt wSrLl!
215 名前:デフォルトの名無しさん mailto:sage [2018/05/02(水) 09:59:45.49 ID:hcdKMJ5x.net] >>207 Squeak/Pharo Smalltalk Transcript open. 10 timesRepeat: [ | hello | hello := 'Hello, World!' collectWithIndex: [:chr :idx | ((idx isDivisibleBy: 3) ifTrue: [Character alphabet atRandom] ifFalse: [chr]) perform: (idx even ifTrue: [#asLowercase] ifFalse: [#asUppercase]) ]. Transcript cr; show: hello ] => HeYlOz wJrLp! HeNlOe wArLr! HeBlOn wWrLi! HeSlOx wOrLk! HeKlOy wRrLb! HeIlOs wJrLw! HeMlOd wGrLm! HeElOz wLrLf! HeJlOw wUrLr! HeTlOe wMrLy!
216 名前:デフォルトの名無しさん [2018/05/02(水) 10:26:22.57 ID:PqZlWADT.net] >>207 Common Lisp https://ideone.com/RrNm7L
217 名前:デフォルトの名無しさん [2018/05/02(水) 11:55:19.15 .net] >>207 C言語 https://ideone.com/5UVPgG
218 名前:デフォルトの名無しさん mailto:sage [2018/05/02(水) 12:51:34.17 ID:lkl981AK.net] お題 N項目のレーダーチャートを考える。 各項目の点数が配列A[N]で与えられるので、 項目の並べ方を調整して、レーダーチャートの面積を最大化せよ。 ※レーダーチャートの形状は正N角形であり、A[i]は中心からの距離を意味する。 {4,3,2,1,0} => 10.9371 //{0,1,3,4,2} {10,0,0,10,10,0,10,10} => 141.421 //{0,0,0,10,10,10,10,10} {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16} => 280.698
219 名前:デフォルトの名無しさん mailto:sage [2018/05/02(水) 12:58:12.60 ID:Zqd7NSI/.net] >>207 Emacs Lisp (defun* f (a &aux (b 0)) (map 'string (lambda (c) (let ((d (if (= (% (incf b) 3) 0) (+ ?a (random 26)) c))) (if (oddp b) (upcase d) (downcase d)))) a)) (mapc (lambda (x) (princ (funcall #'f x)) (terpri)) (make-list 10 "Hello, World!")) HeElOf wBrLb! HeAlOj wYrLk! HeZlOz wQrLd! HeBlOh wIrLm! HeMlOy wIrLb! HeZlOo wTrLk! HeRlOq wErLv! HeFlOn wKrLq! HeAlOg wQrLv! HeFlOa wRrLi!
220 名前:デフォルトの名無しさん mailto:sage [2018/05/02(水) 16:46:53.87 ID:Zqd7NSI/.net] >>212 Emacs Lisp (defun* f (a &aux b c) (loop for i from 0 below (length a) do (if (< i 3) (setq b (append b (list (nth i a)))) (dotimes (n (length b)) (push (cons (+ (abs (- (nth n b) (nth i a))) (abs (- (nth (% (1+ n) (length b)) b) (nth i a)))) n) c)) (let ((d (1+ (cdar (sort (copy-seq c) (lambda (a b) (< (car a) (car b)))))))) (setq b (append (subseq b 0 d) (list (nth i a)) (nthcdr d b)))))) b) (defun g (a) (flet ((b (c d e) (when (> c d) (rotatef c d)) (if (= d 0) 0.0 (* d (sin (/ pi e)) d (cos (/ pi e)) c (/ (float d)))))) (let ((h (length a)) (i 0.0)) (dotimes (n h) (incf i (apply #'b (list (nth n a) (nth (% (1+ n) h) a) h)))) i))) (f '(1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16)) => (1 2 4 6 8 10 12 14 16 15 13 11 9 7 5 3) (g (f '(1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16))) => 280.69829763979334
221 名前: mailto:sage [2018/05/02(水) 17:33:20.51 ID:R3g8E+PO.net] 有効な(注:主観による)お題一覧 >>11 >>40 >>78 >>81 >>88 >>103
222 名前: mailto:sage [2018/05/02(水) 17:33:54.32 ID:R3g8E+PO.net] >>215 >>118 >>151 >>207 >>212
223 名前:デフォルトの名無しさん mailto:sage [2018/05/02(水) 17:52:43.41 ID:ja0hTifx.net] >>212 J 山型に並べるだけ。 証明は略 (谷がある並び順は谷底を移動してより大きく出来ることが示せる。 谷がない場合、頂上から左右に振り分けて行くのが最大と示せる) NB. sin α sinA =: 1&o.@((o.2)&%)@# NB. ズラして掛けた総和 s =: +/@(*(}.@,{.))"1 NB. 山型に並べる raz =: (/:[)/:(/:+/@(* ,~/"1)@(*\)@i.@#) NB. 山型に並べてズラして掛けた総和にsinα掛けて半分にする ans =: -:@(sinA*(s@raz)) 1行で書くと ans =: -:@(1&o.@((o.2)&%)@#*+/@(*(}.@, {.))"1@((/:[)/:(/:+/@(*,~/"1)@(*\)@i.@#))) 実行例 ans 4 3 2 1 0 10.9371 ans 10 0 0 10 10 0 10 10 106.066 ans 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 280.698 https://%62it.ly/2jlIjeo
224 名前:デフォルトの名無しさん mailto:sage [2018/05/02(水) 18:09:55.15 ID:ja0hTifx.net] >>212 J 一応総当たりも (sinA, s は同じ) all =: A.~(i.@!@<:@#) min =: >./ ans2 =: -:@((sinA)*(min@(s@all))) 実行例 ans2 4 3 2 1 0 10.9371 ans2 10 0 0 10 10 0 10 10 141.421 ans2 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |out of memory: all | ans2 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
225 名前:デフォルトの名無しさん mailto:sage [2018/05/02(水) 18:10:22.50 ID:TAWRfgOr.net] >>207 octave https://ideone.com/j9EsUn
226 名前:デフォルトの名無しさん mailto:sage [2018/05/02(水) 18:11:53.98 ID:ja0hTifx.net] あれ?バグってるなこれ 総当たりの方は取り消します
227 名前:デフォルトの名無しさん mailto:sage [2018/05/02(水) 18:20:29.66 ID:ja0hTifx.net] 違った 山型に並べる方を取り消します、だった。
228 名前:デフォルトの名無しさん mailto:sage [2018/05/02(水) 18:27:52.12 ID:ja0hTifx.net] >>217 正しくはこうでした sinA =: 1&o.@((o.2)&%)@# s =: +/@(*(}.@,{.))"1 raz =: ((\: [) {~ (/: (* <:@(2&*)@(2&|)))@i.@#) ans =: -:@(sinA*(s@raz)) 1行にするのは略 https://%62it.ly/2w3XF0m
229 名前:デフォルトの名無しさん mailto:sage [2018/05/02(水) 19:04:01.98 ID:intU8xfF.net] >>207 Perl https://paiza.io/projects/3hW53qnnJ69_qwvN_oWiTA 改行入れないで変換しちゃったが、指定がないからまあいいか。
230 名前:デフォルトの名無しさん mailto:sage [2018/05/02(水) 19:12:21.47 ID:intU8xfF.net] >>212 それ、俺の直感ではsortすればいいだけなんじゃあ? 証明できんけど。
231 名前:デフォルトの名無しさん mailto:sage [2018/05/02(水) 19:28:18.08 ID:bfgs8qRD.net] >>224 >>212 … (ry > {4,3,2,1,0} > => 10.9371 //{0,1,3,4,2} _________~ ~
232 名前:デフォルトの名無しさん mailto:sage [2018/05/02(水) 19:30:41.81 ID:intU8xfF.net] >>225 あー。ちょっと違うな。崖作らずに山作る感じか。 証明できんけどw
233 名前:デフォルトの名無しさん mailto:sage [2018/05/02(水) 20:02:43.46 ID:ja0hTifx.net] >>226 「大きい方から順に取って、既存の列の大きい端の外側に配置」を繰り返せばいい 0 1 2 3 4 のときは 4 4, 3 2, 4, 3 2, 4, 3, 1 0, 2, 4, 3, 1 この時の面積は 1/2・sin 72° ・(0*2+2*4+4*3+3*1+1*0) = 10.9371
234 名前:デフォルトの名無しさん mailto:sage [2018/05/02(水) 20:20:59.85 ID:E/2WxUaU.net] ググったら公式出てきた chaoxuprime.com/posts/2012-08-08-maximize-the-area-of-a-radar-chart.html プログラムでやるなら、数列の前項後項の積和を最大化する方針がいいのかな
235 名前:225 mailto:sage [2018/05/02(水) 20:32:00.70 ID:QUr6vWwN.net] 面倒なので証明しないで全パターンの面積を求めて最大のやつを出すように作ろうかと思ったが、 腹が減ったので飯食ってから考えよう。(というかこうするならほとんど考える必要ないなこれw)
236 名前:211 mailto:sage [2018/05/02(水) 20:37:30.10 ID:lkl981AK.net] 問題思いついた後、ググって>>228 見つけたので出題した次第です。 最小化については上手い方法があるんだろうか?
237 名前:デフォルトの名無しさん mailto:sage [2018/05/02(水) 20:44:42.35 ID:ja0hTifx.net] >>228 そのπってのが真ん中から左右に配置して行くインデックス列。 でその証明は不完全(*1)だけど結論は合ってる。 (*1) n-1個の時の最大になる列のどこかに n番目の数を挿入すればn個の時の解が得られる、 ということを証明せずに利用している。 小さくするには山谷の数を多くする(小さいのと大きいのがなるべく隣接するように置く) ってことは直感的にわかるんだけど具体的な構成法は考察がいるな
238 名前:デフォルトの名無しさん mailto:sage [2018/05/02(水) 22:20:26.25 ID:hcdKMJ5x.net] >>212 Squeak/Pharo Smalltalk | fn | fn := [:arr | | strm res | strm := arr sorted readStream. res := OrderedCollection withAll: (strm next: 3). [strm atEnd] whileFalse: [ | next foundPos | next := strm next. foundPos := (1 to: res size) detectMax: [:idx | | a1 a2 | (a1 := res at: idx) + (a2 := res atWrap: idx+1) * next - (a1 * a2)]. res add: next afterIndex: foundPos ]. res := res asArray. (res * (2 * Float pi / res size) sin * ({res last}, res allButLast) / 2) sum -> res ]. fn value: #(4 3 2 1 0). "=> 10.937149937394265->#(0 1 3 4 2) " fn value: #(10 0 0 10 10 0 10 10). "=> 141.42135623730948->#(0 10 10 10 10 10 0 0) " fn value: #(1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16) "=> 280.6982976397934->#(1 2 4 6 8 10 12 14 16 15 13 11 9 7 5 3) "
239 名前:デフォルトの名無しさん mailto:sage [2018/05/03(木) 00:37:28.69 ID:hmU6w2gD.net] >>231 最小を目指して, 山谷の数を多くしてみました. (defun f2 (a) (let* ((b (sort (copy-seq a) #'<)) (c (/ (length b) 2)) (d (let ((e (subseq b 0 c))) (apply #'append (mapcar (lambda (x) (let ((y (pop e))) (if y (list x y) (list x)))) (reverse (subseq b c)))))) (h)) (loop for i from 0 below (length d) do (setq h (if (or (= (% i 4) 1) (= (% i 4) 2)) (append h (list (nth i d))) (append (list (nth i d)) h)))) h)) (f2 '(1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16)) (8 10 6 12 4 14 2 16 1 15 3 13 5 11 7 9) (g (f2 '(1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16))) 157.47423241823444
240 名前:デフォルトの名無しさん mailto:sage [2018/05/03(木) 00:59:37.08 ID:SwM9YWB0.net] >>207 Bash https://ideone.com/ljYBHK エラーには目を瞑ってください
241 名前:デフォルトの名無しさん [2018/05/03(木) 01:32:09.14 .net] >>234 無為に捨てられる何千もの’Hello, World!’がかわいそうすぎね?(´;ω;`)
242 名前:デフォルトの名無しさん mailto:sage [2018/05/03(木) 01:32:43.19 ID:rKkc5eBg.net] >>212 Perl5 https://ideone.com/cMJGDR 自力で動的計画法による解法を考えようとしていたけど、 >>228 で紹介されたWEBの解法に勝る見込みが無さそうなので 思考を停止してWEBの解法を愚直に実装したものです
243 名前:デフォルトの名無しさん mailto:sage [2018/05/03(木) 09:34:11.17 ID:dYPbvGoR.net] 【お題】 与えられた整数のリストで、 2つの要素の和が100になるすべての組を列挙せよ。 例: [1, 99, 20] -> [
244 名前:[1, 99]] [62, 116, 181, 86, 60, 98, -16, 73, 131, 16, 80, -81, 40] -> [[40, 60], [-16, 116], [-81, 181]] [100, 0, 100, 0] -> [[0, 100], [0, 100], [0, 100], [0, 100]] [] [ここ壊れてます]
245 名前:デフォルトの名無しさん [2018/05/03(木) 10:12:06.60 ID:6SfrUic2.net] >>237 Rust https://play.rust-lang.org/?gist=29b80b217f269f6ad43a712d52fd595e
246 名前:デフォルトの名無しさん mailto:sage [2018/05/03(木) 10:13:33.58 ID:ngB6qDho.net] >>237 ruby https://ideone.com/Noq7GJ
247 名前:デフォルトの名無しさん [2018/05/03(木) 10:19:06.64 ID:m6mdbiEz.net] >>237 Ruby。 ary.combination(2).select{|x|x.inject(:+)==100}
248 名前:デフォルトの名無しさん mailto:sage [2018/05/03(木) 10:45:51.16 ID:uFV+Z8SY.net] >>237 Squeak/Pharo Smalltalk | fn | fn := [:arr | | bag | bag := Bag new. arr combinations: 2 atATimeDo: [:comb | comb sum = 100 ifTrue: [bag add: comb sorted]]. bag asArray ]. fn value: #(1 99 20). "=> #((1 99)) " fn value: #(62 116 181 86 60 98 -16 73 131 16 80 -81 40). "=> #((-81 181) (-16 116) (40 60)) " fn value: #(100 0 100 0). "=> #((0 100) (0 100) (0 100) (0 100)} "
249 名前:デフォルトの名無しさん [2018/05/03(木) 11:34:54.61 .net] >>237 C言語 https://ideone.com/Ohue7U
250 名前:デフォルトの名無しさん mailto:sage [2018/05/03(木) 13:12:32.47 ID:N6jONgbj.net] >>237 Perl5 use Data::Dump 'dump'; for ([1, 99, 20], [62, 116, 181, 86, 60, 98, -16, 73, 131, 16, 80, -81, 40], [100, 0, 100, 0]) { sub c {my $d = shift; my @l = c(@_) if 1 < @_; @l, map{[$d, $_]} @_}; @s = grep{100 == $$_[0]+$$_[1]} c @$_; print dump($_)."\n->".dump(\@s)."\n"; } 実行結果 $ perl 11_236.pl [1, 99, 20] ->[[1, 99]] [62, 116, 181, 86, 60, 98, -16, 73, 131, 16, 80, -81, 40] ->[[60, 40], [181, -81], [116, -16]] [100, 0, 100, 0] ->[[100, 0], [0, 100], [100, 0], [100, 0]] ※実行にはperlのData::Dumpモジュールが必要ですが、 Ideoneのperl 24にはインストールされてないようでした
251 名前:デフォルトの名無しさん mailto:sage [2018/05/03(木) 13:15:16.16 ID:ngB6qDho.net] >>237 c https://ideone.com/c5I9TG
252 名前:デフォルトの名無しさん mailto:sage [2018/05/03(木) 14:31:25.30 ID:M52LYEAa.net] >>237 javascript var f = l => { console.log( l.reduce((acc, m, i, ary) => [ ...acc, ...ary.slice(i+1) .filter(n => m + n == 100) .map(n => [m, n]) ], [] ) ) } f([1, 99, 20]) //=> [[1, 99]] f([62, 116, 181, 86, 60, 98, -16, 73, 131, 16, 80, -81, 40]) //=> [[116, -16], [181, -81], [60, 40]] f([100, 0, 100, 0]) //=> [[100, 0], [100, 0], [0, 100], [100, 0]]