1 名前:デフォルトの名無しさん mailto:sage [2021/06/19(土) 00:02:57.84 ID:MQWrKSb7.net] プログラミングのお題スレです。 【出題と回答例】 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/ 宿題は宿題スレがあるのでそちらへ。 ※前スレ プログラミングのお題スレ Part19 https://mevius.5ch.net/test/read.cgi/tech/1606662245/
792 名前:デフォルトの名無しさん mailto:sage [2022/09/09(金) 23:46:43.88 ID:3788iROh.net] >>751 ruby https://ideone.com/hBHe51 def f(as, bs) c = as.combination(2).map(&:sort).to_a.uniq.map {|x, y| [x * y, x, y]}.sort_by(&:first).each_cons(2) bs.map do |b| d = c.find {|e, f| e[0] < b && b <= f[0]} "#{b}:#{d ? d[1][1..2].join(',') : 'error'}" end end a = [17, 3, 3, 1, 6, 13, 11, 17, 2, 5, 7, 18, 16, 5, 8, 6, 5, 1, 11, 1] b = [390, 240, 37, 396, 198, 99, 242, 53, 329, 202] puts f(a, b)
793 名前:753 mailto:sage [[ここ壊れてます] .net] >>751 https://ideone.com/2UDrLT ・>>753 を若干の整理 ・>>752 さんのを見て&.を勉強 def f(a, b) c = a.combination(2).map(&:sort).to_a.uniq.map {|x, y| [x * y, x, y]}.sort b.map {|b| "#{b}:#{c.find {|e| b <= e[0]}&.[](1..2)&.join(',') || 'error'}"} end a = [17, 3, 3, 1, 6, 13, 11, 17, 2, 5, 7, 18, 16, 5, 8, 6, 5, 1, 11, 1] b = [390, 240, 37, 396, 198, 99, 242, 53, 329, 202] puts f(a, b)
794 名前:デフォルトの名無しさん mailto:sage [2022/09/10(土) 00:34:04.51 ID:sDbT/M8A.net] みんな解くのはえーなぁ
795 名前:96 mailto:sage [2022/09/10(土) 02:29:07.85 ID:7pWsuKpo.net] >>751 Perl5 $ls = [17, 3, 3, 1, 6, 13, 11, 17, 2, 5, 7, 18, 16, 5, 8, 6, 5, 1, 11, 1]; $ss = [390, 240, 37, 396, 198, 99, 242, 53, 329, 202]; sub f {2 < @_ ? (f(@_[1..$#_]), map{[$_[0] * $_, $_[0], $_]} @_[1..$#_]) : ()} @rs = sort{$$a[0] <=> $$b[0]} f @$ls; for $aa (@$ss) { @b = grep{$aa <= $$_[0]} @rs; print @b ? "$aa:$b[0][1],$b[0][2]\n" : "$aa:error\n"; } 実行結果 $ perl 20_751.pl 390:error 240:17,16 37:3,13 396:error 198:18,11 99:17,6 242:17,16 53:3,18 329:error 202:13,16
796 名前:デフォルトの名無しさん mailto:sage [2022/09/10(土) 11:29:46.54 ID:q8enYz1J.net] >>751 octave https://ideone.com/WGkm27 function c = f(a, b) u = unique(sort(nchoosek(a, 2), 2), 'rows'); p = prod(u, 2); c = cell(size(b)); for i = 1:numel(b) d = min(p(b(i) <= p)); if isempty(d) c{i} = sprintf('%d:error', b(i)); else s = strjoin(arrayfun(@(n) {num2str(n)}, u(p == d, :)), ','); c{i} = sprintf('%d:%s', b(i), s); end end end a = [17, 3, 3, 1, 6, 13, 11, 17, 2, 5, 7, 18, 16, 5, 8, 6, 5, 1, 11, 1]; b = [390, 240, 37, 396, 198, 99, 242, 53, 329, 202]; cellfun(@disp, f(a, b))
797 名前:デフォルトの名無しさん mailto:sage [2022/09/10(土) 13:32:08.25 ID:q8enYz1J.net] >>751 c https://ideone.com/Cqx8M3 #include <stdio.h> void f(int *a, int *b, int na, int nb) { int i, j, k, found, min, x, y; for (i = 0; i < nb; i++) { found = 0; for (j = 0; j < na; j++) for (k = 0; k < na; k++) if (j != k && b[i] <= a[j] * a[k] && (!found || a[j] * a[k] < min)) found = 1, min = a[j] * a[k], x = a[j], y = a[k]; if (!found) printf("%d:error\n", b[i]); else printf("%d:%d,%d\n", b[i], x, y); } } int main() { int a[] = {17, 3, 3, 1, 6, 13, 11, 17, 2, 5, 7, 18, 16, 5, 8, 6, 5, 1, 11, 1}; int b[] = {390, 240, 37, 396, 198, 99, 242, 53, 329, 202}; f(a, b, sizeof a / sizeof *a, sizeof b / sizeof *b); return 0; }
798 名前:デフォルトの名無しさん [2022/09/10(土) 19:18:11.93 ID:PLqR4TKQ.net] >>751 Kotlin 可能な限り漢字を使ったプログラムにしてみたが、余計にゴチャゴチャしてしまったかな? https://paiza.io/projects/ay4L7Wchnt6lGUvkh6h21A 240 が 16, 17 ではなく 17, 16 のように出るが、まあよかろう。 (リストの順番で覚えているのでこうなる)。
799 名前:デフォルトの名無しさん [2022/09/10(土) 22:25:19.23 ID:7X0yi8nW.net] お題 >>751 の問題について 長方形の1辺の長さをソートして縦方向と横方向に並べて交差するところに長方形の面積を入れて表にします https://downloadx.getuploader.com/g/angel556/90/%E3%81%97%E3%82%83%E3%81%8F%E3%81%A8%E3%82%8A%E6%B3%95.png この図は50を探すところを描いています 青色の斜めの値の中から正方形の面積以上かつ最小の値を見つけその場所を出発点とします 長方形の面積が正方形の面積よりも大きい場合は表を上にたどり、長方形の面積が正方形の面積よりも小さい場合は表を右にたどります 右方向から上方向に切り替わるところが回答の候補でその中から最小値を探すことで効率よく回答を見つけることができます しゃくとり虫が動いてるように見えるのでこれをしゃくとり法と呼ぶことにします >>751 の問題をしゃくとり法で解いてください
800 名前:デフォルトの名無しさん [2022/09/10(土) 22:51:25.27 ID:7X0yi8nW.net] > 右方向から上方向に切り替わるところが回答の候補でその中から最小値を探すことで効率よく回答を見つけることができます これは間違いかも、これだと55を見つけられない 各自で考えていただければありがたく
801 名前:デフォルトの名無しさん [2022/09/10(土) 22:52:41.16 ID:7X0yi8nW.net] いや、いいのか!? ダメだ混乱してきたもうパニックですわ
802 名前:デフォルトの名無しさん mailto:sage [2022/09/10(土) 22:57:53.10 ID:sDbT/M8A.net] おちつけ
803 名前:デフォルトの名無しさん [2022/09/10(土) 23:12:42.56 ID:7X0yi8nW.net] >>760 > 右方向から上方向に切り替わるところが回答の候補でその中から最小値を探すことで効率よく回答を見つけることができます これは間違いでした、上方向から右方向に変わる直前の値が回答候補ですね 50を探す場合、56,55,51が候補です https://downloadx.getuploader.com/g/angel556/91/%E3%81%97%E3%82%83%E3%81%8F%E3%81%A8%E3%82%8A%E6%B3%95_%E8%A8%82%E6%AD%A3.png
804 名前:素数を数えるんだ [2022/09/10(土) 23:25:22.59 ID:22kPJ9rf.net] 2, 3, 5, 7, 11, 13, 17, 19......
805 名前:デフォルトの名無しさん [2022/09/11(日) 01:04:25.98 ID:/LH0BDzE.net] お題 2~19までの素数を生成し掛け算の表を出力してください
806 名前:デフォルトの名無しさん [2022/09/12(月) 01:50:52.46 ID:xawmAmgS.net] >>751 Java https://paiza.io/projects/9bNWiYGC-KndYn1QmRsYIA
807 名前:デフォルトの名無しさん [2022/09/12(月) 10:44:10.79 ID:VxR6iqOp.net] >>764 Kotlin https://paiza.io/projects/caNg1GtDFhBF9Rk6AwC52Q 出力をHTMLにするとそれっぽく表示できた。 50は正方形の面積リストの最初に入れたが例の画像と同じような見た目になった。
808 名前:デフォルトの名無しさん mailto:sage [2022/09/12(月) 18:32:56.65 ID:eGlSQ2pk.net] >>751 ttps://ideone.com/mFYcmC >>764 ttps://ideone.com/vwjQvN
809 名前:デフォルトの名無しさん [2022/09/13(火) 22:22:38.95 ID:B0VHMNYc.net] >>766 C# https://paiza.io/projects/mR6tnluHgitHnC0VJWc6Wg
810 名前:デフォルトの名無しさん [2022/09/13(火) 22:25:19.07 ID:V4Kz63G0.net] お題:OpenGLで四角形を3つ描画せよ 一番下の四角形が1番大きく赤色 その上にのってる四角形は2番目に大きく緑色 さらにその上にのってる四角形は3番目に大きく青色
811 名前:デフォルトの名無しさん [2022/09/14(水) 12:47:57.36 ID:LkrioAg+.net] お題 フェアフィールドの公式は、西暦1年1月1日から指定した日付までの日数を求めるもので次の式です 日数 = (365 * Y) + (Y / 4) - (Y / 100) + (Y / 400) + (306 * (M + 1) / 10) + D - 428 UNIX時間は、西暦1970年1月1日午前0時0分0秒からの経過秒数です フェアフィールドの公式を用いてUNIX時間から年月日を求めて出力してください (例) 1000000000 → 2001-09-09T01:46:40 1234567890 → 2009-02-13T23:31:30
812 名前:デフォルトの名無しさん mailto:sage [2022/09/14(水) 15:20:59.73 ID:s+3MjQLV.net] >>772 bat @echo off &setlocal call :Conv_uTime2iso 1000000000 call :Conv_uTime2iso 1234567890 pause&exit /b :Conv_uTime2iso set /a "GD=(UT=%~1)/86400+719468, h=100+(R=UT%%86400)/3600, n=100+(R%%=3600)/60, s=100+R%%60, y=400*(GD/146097), y+=100*(i=(R=GD%%146097)/36524), y+=(R%%=36524)/1461*4, y+=j=(R%%=1461)/365, R=R%%365+365*(L=(i|j)/4), f=(k=(R*5+2)/153)/10, d=R+101-(306*k+4)/10, m=k+103-f*12, y+=f-L" echo %y%-%m:~-2%-%d:~-2%T%h:~-2%:%n:~-2%:%s:~-2%
813 名前:デフォルトの名無しさん mailto:sage [2022/09/15(木) 05:31:46.38 ID:LgD4XKTt.net] //>>772 JavaScript function _772(epoch) { /**/epoch = BigInt(epoch);if (epoch < 0n) {throw new RangeError('');} /**/const lastDateOfMonth = (_ => Object.fromEntries(Array.from([, , , ..._.slice(2), _[0], _[1]].entries()).filter(([, v]) => v)))(Array.from(new Array(12).keys()).map(m => BigInt(new Date(2_022, m + 1, 0, 0, 0 - new Date().getTimezoneOffset()).getDate()))); /**/const FAIRFIELD = fairfield(1_969n, 12n, 31n) + epoch / 86_400n + 1n; /**/let [Y, M, D] = [1_969n, 13n, 1n]; /**/for (; D <= 58n; D++) {if (FAIRFIELD == fairfield(Y, M, D)) {return {Y: 1_970n, M: 1n + D / 31n, D: D % 31n};}} /**/for (Y = 1_970n; Y <= Number.MAX_SAFE_INTEGER; Y++) { /**//**/for (M = 3n, D = 1n; D <= 366n; D++) { /**//**//**/if (FAIRFIELD == fairfield(Y, M, D)) { /**//**//**//**/if (D == 366n) { /**//**//**//**//**/if (isLeapFullYear(Y + 1n)) { /**//**//**//**//**//**/
814 名前:return {Y: Y + 1n, M: 2n, D: 29n}; /**//**//**//**//**/} else { /**//**//**//**//**//**/return {Y: Y + 1n, M: 3n, D: 1n}; /**//**//**//**//**/} /**//**//**//**/} else { /**//**//**//**//**/for (; lastDateOfMonth[M] <= D; D -= lastDateOfMonth[M++]); /**//**//**//**//**/if (M <=12n) { /**//**//**//**//**//**/return {Y, M, D}; /**//**//**//**//**/} else { /**//**//**//**//**//**/return {Y: Y + 1n, M: M % 12n, D}; /**/}}}}} /**/function isLeapFullYear(Y) {return Y % 4n == 0n && Y % 100n != 0n || Y % 400n == 0;} /**/function fairfield(Y, M, D) {return Y * 365n + Y / 4n - Y / 100n + Y / 400n + 306n * (M + 1n) / 10n + D - 428n;} } [] [ここ壊れてます]
815 名前:デフォルトの名無しさん mailto:sage [2022/09/15(木) 22:07:10.52 ID:AaudQZzp.net] うるう秒のテーブルがないと求められなくない?
816 名前:デフォルトの名無しさん mailto:sage [2022/09/16(金) 00:34:31.77 ID:ETiYX3D6.net] 400年で146097日増えるみたいだから適当にバイアス付けて146097で割る予感
817 名前:デフォルトの名無しさん mailto:sage [2022/09/16(金) 00:35:51.49 ID:ETiYX3D6.net] 違う 適当にバイアス付けて÷365.2425だ
818 名前:デフォルトの名無しさん mailto:sage [2022/09/16(金) 01:05:26.42 ID:/mniU0r8.net] フェアフィールドの公式てwikipediaに書かれている出自不明な公式でも何でも無いでっち上げの記事でしょ 式の解説文がこれまた頭悪くて、なのに誰も修正しないという
819 名前:デフォルトの名無しさん mailto:sage [2022/09/16(金) 01:13:35.77 ID:mMDmJ4/Z.net] グレゴリオ歴のとこに解説載ってるよ https://ja.m.wikipedia.org/wiki/%E3%82%B0%E3%83%AC%E3%82%B4%E3%83%AA%E3%82%AA%E6%9A%A6
820 名前:デフォルトの名無しさん [2022/09/16(金) 21:18:24.66 ID:k/2PI65L.net] >>772 Java https://paiza.io/projects/GkxKdFMCsjdM1lSoxk8mhQ
821 名前:デフォルトの名無しさん [2022/09/17(土) 17:48:30.91 ID:fw6a0lZo.net] お題 2*2の整数行列がいくつか与えられる。 これらを適当な順番で掛け合わせる(行列積)ことで零行列を作ることが可能かどうか判定せよ。 ただし、同じ行列を2回以上使用してもよい。 例 [[1, 0], [0, 0]], [[0, -1], [1, 0]] =>可能(行列1*行列2*行列1==0) [[1, 2], [3, 4]], [[0, -3], [2, 4]] =>不可能(正則行列だから)
822 名前:デフォルトの名無しさん mailto:sage [2022/09/17(土) 18:42:03.76 ID:ZMguHADz.net] >>781 零因子の発掘ですか、濃ゆいお題ですね…
823 名前:デフォルトの名無しさん mailto:sage [2022/09/18(日) 11:34:42.07 ID:qZaavGGf.net] お題:循環参照を開放せよ。 java https://ideone.com/xe64l4 ・ガベコレの対象になったのを確認まででヨシとす c++ https://ideone.com/1gXTAX
824 名前:デフォルトの名無しさん [2022/09/18(日) 12:52:34.73 ID:BMeW7wRv.net] >>783 Java https://paiza.io/projects/KPlcyOa7-yBMKlBes0ImXg
825 名前:デフォルトの名無しさん [2022/09/18(日) 16:37:27.93 ID:BMeW7wRv.net] >>783 Python https://paiza.io/projects/xCNkUNUSXbwUSWTf8OEA-Q
826 名前:デフォルトの名無しさん [2022/09/19(月) 02:47:41.37 ID:/08McGz8.net] >>783 Kotlin https://paiza.io/projects/dZhh0NhaeEwnxD45W6V7Ng Java VM 上で動くから Java と同じで参照している変数を null にして System.gc() するだけ。
827 名前:デフォルトの名無しさん mailto:sage [2022/09/24(土) 01:13:05.90 ID:uYRJl5GL.net] >>772 亀レスHaskell https://ideone.com/y7jYXr 色々考えて結局テーブル作って処理という最後の手段 わざわざ公開するほどのもんでもないけど一区切りつけるため 暦の勉強になった なんで大の月と小の月の配置はこんなみっともないことになってるんだろ? 歴史家が調べでよくわからんみたいだけど
828 名前:デフォルトの名無しさん [2022/09/24(土) 04:40:38.82 ID:6vPOYH6k.net] >>772 だめ。その式に当てはめると必ずずれる。
829 名前:デフォルトの名無しさん mailto:sage [2022/09/24(土) 07:42:29.88 ID:aunrhsr3.net] うるう秒を考慮しないとずれる
830 名前:デフォルトの名無しさん mailto:sage [2022/09/24(土) 09:42:29.34 ID:v3rIJe0P.net] >>788 問題には書かれていないけれどその式は条件によって前処理が必要 ・1-2月は前年として扱う。 1年を3-14月として計算 m=1 or 2 の時 y=y-1, m=m+12 >>789 UNIXTIMEにうるう秒なんて無い
831 名前:デフォルトの名無しさん mailto:sage [2022/09/24(土) 11:33:11.17 ID:aunrhsr3.net] >>790 日付に変換する過程でうるう秒考慮しないとずれるでしょう
832 名前:デフォルトの名無しさん mailto:sage [2022/09/24(土) 12:13:55.28 ID:v3rIJe0P.net] >>791 UNIXTIMEは「epocからの実時間の秒数」では無い 実時間から、うるう秒は加減され含まれず、1日は86400秒換算 だからそれを日時に変換しても「うるう秒の時刻を表せない」だけでズレなど発生しない
833 名前:デフォルトの名無しさん mailto:sage [2022/09/24(土) 12:34:24.41 ID:aunrhsr3.net] >>792 レスありがとう。不勉強だったわ。
834 名前:デフォルトの名無しさん [2022/09/24(土) 16:57:05.53 ID:6vPOYH6k.net] >>790 出題ミスか。 これまでに作られたプログラムはその辺のことを考慮したプログラムになっていたのかな? だったら分かってたんだからその辺の事を書いておいて欲しかったな。
835 名前:デフォルトの名無しさん mailto:sage [2022/09/24(土) 22:38:52.94 ID:Fvr5cAu6.net] wikiにはそこまで詳しい解説はなかったけど式みたらわかったけどな ⌊(m+1)/30.6⌋ という項 ⌊x/30.6⌋という関数は0,1,2,3,4となる値が 31,30,31,30,31,31,(繰り返し)‥① と変化してコレを周期153で繰り返す 月の長さは3月から見ると 31,30,31,30,31,31,30,31,30,31,31,28(29) となってるから①を一月分左に平行移動すれば良いとわかる からの⌊(m+1)/30.6⌋
836 名前:デフォルトの名無しさん mailto:sage [2022/09/24(土) 22:45:27.51 ID:Fvr5cAu6.net] >>795 間違えた ⌊m×30.6⌋という関数は0,1,2,3,4,‥の時の値が 31,31,30,31,30 の繰り返し 件の公式のmの項はコレを一月分ずらしてる
837 名前:デフォルトの名無しさん mailto:sage [2022/09/28(水) 02:17:31.98 ID:UDkh+W3M.net] お題:4回呼び出したらその内の1回が失敗する関数を書け 失敗した場合は「failed」と表示、成功した場合は「ok」と表示せよ
838 名前:デフォルトの名無しさん mailto:sage [2022/09/28(水) 09:47:46.29 ID:+QlM3L0o.net] seed変数はパラメータ渡しで良いですか
839 名前:デフォルトの名無しさん mailto:sage [2022/09/28(水) 19:05:59.31 ID:WptV1D3q.net] >>797 c https://ideone.com/PIpRmD void f() { static int i = 0, j, k = 4; if (i == 0) j = rand() % k; puts(i == j ? "failed" : "ok"); i = (i + 1) % k; }
840 名前:デフォルトの名無しさん mailto:sage [2022/09/28(水) 22:51:23.95 ID:7XofIB3A.net] >>797 Ruby def f $f_cnt||=0 puts$f_cnt==3||(rand(4)==~-$f_cnt+=1)?:failed: :ok end
841 名前:デフォルトの名無しさん [2022/09/30(金) 04:16:06.13 ID:F2zw9Wj+.net] >>797 Kotlin https://paiza.io/projects/QipeLOxxfW3_GNBarDA-8w Int型1つ分のワークエリアを呼ぶ側から与えてそこでカウントして必ず4回の内1回が失敗になる。 乱数を使うと4回の内1回失敗ではなくなる可能性があるので使っていない。 引数としてInt型の参照を渡しても中身を変えられないのでIntArray(Java なら int[] に相当)で1要素作ってIntArrayの参照を渡している。 クラスでやっても良かったが、わざわざクラス作るほどのことでもないと思ったのでこの方式にした。
842 名前:デフォルトの名無しさん [2022/10/01(土) 01:23:09.73 ID:I5nFps2z.net] >>797 Java https://paiza.io/projects/AOePb_OJDX44jb_jRddrsw?language=java
843 名前:デフォルトの名無しさん mailto:sage [[ここ壊れてます] .net] お題: あみだ https://imgur.com/6XtTF0E.png 画像のようなマス目の上に直線を引いたあみだを次のように表現することにします。 N: 縦線の本数(列数) M: 橋が架けられている行数 B: M行N-1列の二次元配列で、橋が架けられていたら1、そうでない場合は0が格納されています。 あらかじめ、あみだの入力には左から0〜N-1までの整数が割り振られていることにします。また、同じ行に橋が二つ連続で隣り合うことは禁止されています。 一応の制約: 2 <= N <= 100, 1 <= M <= 100 あみだに橋が1つも存在しない場合、M=1となり、Bは1行N-1列の大きさで、すべての要素が0の2次元配列になることにします。 お題1: N, M, Bが与えられるので、あみだの出力を求めてください。(入出力のフォーマットは各自で適宜変更してもいいです。) 入力例(画像のもの): 4 4 1 0 1 0 1 0 1 0 0 0 1 0 出力例: 3 0 1 2 お題2: Nとあみだの出力が与えられるので、Mをできるだけ小さくしたあみだを求め、Mと Bの一例 を表示してください。 入力例: 5 2 4 0 1 3 出力例: 3 0 1 0 1 1 0 1 0 0 1 0 0 あみだ関連のお題は過去スレで何回か見かけたがろくに相手にされていなかったのであげてみる。
844 名前:デフォルトの名無しさん mailto:sage [2022/10/10(月) 00:03:47.74 ID:Em47unOv.net] reduced expressionのまとめられる積を出来るだけまとめたものが必ず最短になるなら簡単なんだけどな
845 名前:デフォルトの名無しさん mailto:sage [2022/10/10(月) 12:25:25.51 ID:CId/Nblu.net] Gapとか使えばいいんじゃね
846 名前:デフォルトの名無しさん mailto:sage [2022/10/10(月) 15:00:17.69 ID:AiOpkeUk.net] reduced expression の長さ自体の計算は簡単だけどこの問題は"reduced expressionの長さを求めよ"ではないからそこまで数学的に単純じゃないよ
847 名前:デフォルトの名無しさん mailto:sage [2022/10/10(月) 20:53:48.73 ID:uiS3Rjx/.net] >>803 お題1 ttps://paiza.io/projects/tUaZay_JvtZRkIaUhjYF7Q お題2 ttps://paiza.io/projects/1yDZy-Vx-C9Q9Z_Oc03Mtw お題1とお題2でそれぞれ入力と出力をあわせるようにした Mをできるだけ小さくって難しいな これでいいのかわからん
848 名前:デフォルトの名無しさん mailto:sage [2022/10/10(月) 21:09:44.88 ID:TC3V9vEZ.net] アルゴリズムが存在するのは明らかだしひとつ答え見つけるアルゴリズムも簡単 でもreduced expression見つけるアルゴリズムと同程度のアルゴリズムとなると途端に難しくなる reduced expressionの場合には置換σのreduced expressionを見つけるには (1) σ = idであるか否か判定する、σ=idなら空列を返して終了 (2) そうでない場合σ(i) > σ(i+1)であるiを見つける、見つけたiに対してτ=σ(i i+1)とおいてτほreduced expression sを求める (3)
849 名前:デフォルトの名無しさん mailto:sage [2022/10/10(月) 21:16:09.04 ID:TC3V9vEZ.net] (3) s ( i i+1 )を返して終了 でもとまる ここでミソはreduced expressionの1番右は( i i+1 )と決め打ち出来ること、コレがあるから多項式時間で終わる しかしアミダの場合1番右の初手をそんなに簡単に決定出来るかが分からん 初手の可能性は転置全部の可換な集合のうち極大であるもの全体のいずれかに最短が入る事は簡単に示せるけど、そのような極大な可換集合をどれとっても必ずうまくいくことの証明がむずかしい 多分出来るんだとは思うけど正直数学板で話題にするような話でプロ板で出すような問題じゃない気がする
850 名前:441 [2022/10/11(火) 10:43:04.37 ID:Q+yx5xdI.net] >>803 最近やっとpythonを学び始めたレベルだから合ってるかわからん コメントとかもちゃんと書いたほうがいいのだろう
851 名前:か 暇な人添削してくれると嬉しい お題1 https://ideone.com/uQ0lEu お題2 https://ideone.com/IvtRj2 [] [ここ壊れてます]
852 名前:デフォルトの名無しさん [2022/10/11(火) 12:04:38.77 ID:xv8Y5zzF.net] しゃぶれよ
853 名前:96 mailto:sage [2022/10/13(木) 07:01:45.31 ID:JNehkz2R.net] >>773 自分でやれ
854 名前:デフォルトの名無しさん [2022/10/22(土) 02:49:22.02 ID:ql0xnxKt.net] やってるやん
855 名前:デフォルトの名無しさん [2022/10/24(月) 10:24:26.56 ID:sCRx2Xsd.net] お題 プリンタAは1分間に1ページ印刷できます プリンタBは3分間に1ページ印刷できます プリンタCは5分間に1ページ印刷できます プリンタを3台同時に動かして100ページを印刷します 100ページを印刷し終わるのに何分掛かるか求めてください
856 名前:デフォルトの名無しさん [2022/10/24(月) 12:38:35.85 ID:PxuF7JuF.net] >>814 perl5 https://paiza.io/projects/6hPV0H0VMJ6oloujnOVF8w
857 名前:デフォルトの名無しさん mailto:sage [2022/10/24(月) 13:32:21.38 ID:LLDppSf/.net] >>815 バグってるぞ 65分だと99枚しか印刷されない
858 名前:デフォルトの名無しさん mailto:sage [2022/10/24(月) 14:17:54.79 ID:l9s5dDsa.net] >>814 cmd set /a "p=100, n=15*p/23+!!(15*p%23)"
859 名前:デフォルトの名無しさん mailto:sage [2022/10/24(月) 15:31:07.39 ID:FSEywfH4.net] haskell pages n = sum $ map ( div n ) [ 1,3,5 ] main = print $ head [ n | n <- [1..], pages n >= 100 ]
860 名前:デフォルトの名無しさん mailto:sage [2022/10/24(月) 20:20:16.51 ID:112hix5y.net] >>814 aow = 100 power = (1 + 1r/3 + 1r/5) printf(aow / power) // => 65.21739130434783
861 名前:デフォルトの名無しさん mailto:sage [2022/10/24(月) 22:40:57.89 ID:SGYFZ2pJ.net] >>814 octave https://ideone.com/BOXjxs f = @(n) ceil(n * 15 / 23);
862 名前:デフォルトの名無しさん [2022/10/25(火) 01:46:09.54 ID:m3snEfri.net] >>814 Kotlin 何も考えずただカウントして求めるように書いた。 https://paiza.io/projects/8SWBhDQ_Bfr2ICXJpLmxhQ
863 名前:デフォルトの名無しさん mailto:sage [2022/10/25(火) 06:54:39.16 ID:LZqPXT/2.net] >>817 ,820 逆算はページ数によってはダメ 例えば3ページの時、3分4ページが正解だけど (B=2/3)+(C=2/5) で1繰り上がって2分が出て来る
864 名前:デフォルトの名無しさん mailto:sage [2022/10/25(火) 07:50:54.84 ID:V4E25MPr.net] A, B, Cでそれぞれ45/23, 15/23, 9/23ページ印刷すれば45/23分で3ページ印刷し終わるよ
865 名前:デフォルトの名無しさん [2022/10/25(火) 08:18:47.97 ID:5cB2OctB.net] 100ページだからセーフ
866 名前:デフォルトの名無しさん mailto:sage [2022/10/25(火) 13:35:12.41 ID:xp4U3IJL.net] >>814 JavaScript https://paiza.io/projects/I8_n6kEMrNGxbh-vwbTkqQ
867 名前:デフォルトの名無しさん [2022/10/25(火) 20:38:44.30 ID:Er29dtqL.net] 甘えんな 印刷周期を一定と仮定した上で解として取りうる離散値のどれになるかを小数単位で求めるプログラムも書こうよ
868 名前:デフォルトの名無しさん [2022/10/25(火) 21:08:38.15 ID:idE58GAF.net] すまん、1分に3枚じゃなくて3分に1枚かorz
869 名前:デフォルトの名無しさん [2022/10/25(火) 22:03:54.71 ID:b0dw4lqu.net] >>814 Java https://paiza.io/projects/3CptMd1jsIwuiYqU1IQYyg?language=java
870 名前:デフォルトの名無しさん [2022/10/25(火) 22:28:13.40 ID:F6XUw+z/.net] じゃあ1分に1枚、3枚、5枚のプリンターでの印刷というお題も出すか。
871 名前:デフォルトの名無しさん mailto:sage [2022/10/25(火) 22:38:49.46 ID:d0t/LHiA.net] >>814 octave https://ideone.com/0V6LlD function m = f(n, m) if nargin == 1 m = f(n, 0); elseif sum(idivide(m, [1 3 5])) < n m = f(n, m + 1); end end >>814 ocaml https://ideone.com/4iPTJS let f n = let rec aux m = if n <= (m + m / 3 + m / 5) then m else aux (m + 1) in aux 0
872 名前:デフォルトの名無しさん [2022/10/25(火) 23:47:11.01 ID:b0dw4lqu.net] >>829 Java public static void main(String[] args) { var pages = 100; var s = IntStream.of(1, 3, 5).sum(); System.out.println((pages + s - 1) / s); }
873 名前:デフォルトの名無しさん [2022/10/26(水) 13:26:51.44 ID:FciA0hc1.net] お題 オークA「ぐっふっふ…… 俺は媚薬を盛ってないぜ……」 オークB「ぐふっ…… 媚薬を盛ったやつはAかCのどちらかだぜ…」 オークC「オークBかDは嘘をついているぜ…ぐっふっふっふっ……」 オークD「ぐふふ…媚薬を盛った奴はB,Eの中にはいないぜ……ぐひっ…」 オークE「げひひっ……媚薬を盛ったやつは本当の事を言っているぞ…」 オーク達「ちなみに、お前に媚薬を盛ったのはこの中の一匹で、俺たちの中で一匹が嘘をついているぞ……」 女騎士「くうぅ…誰が嘘をついて誰が私に媚薬を盛ったんだ……!」 オーク達「ぐっふっふ……」 論理演算を用いて答えを求めてください
874 名前:デフォルトの名無しさん [2022/10/26(水) 13:33:52.83 ID:FciA0hc1.net] オークCとオークEがめんどくさいな
875 名前:デフォルトの名無しさん mailto:sage [2022/10/26(水) 15:30:35.63 ID:DM8ZU7Du.net] 全てが媚薬を盛って全員が嘘をついている これで全員の発言と矛盾がないと思う
876 名前:デフォルトの名無しさん mailto:sage [2022/10/26(水) 16:28:02.83 ID:xzd5i3vP.net] さすがに > オーク達「ちなみに、お前に媚薬を盛ったのはこの中の一匹で、俺たちの中で一匹が嘘をついているぞ……」 は正しいと仮定しないとなんでもありありになっちゃうだろ
877 名前:デフォルトの名無しさん mailto:sage [2022/10/26(水) 18:06:43.51 ID:VWCwwszG.net] さすがに > オーク達「ちなみに、お前に媚薬を盛ったのはこの中の一匹で、俺たちの中で一匹が嘘をついているぞ……」 コレウソついてるのは一匹“だけ”つて意味だよね? “少なくとも一匹はウソついてる” じゃないよね?
878 名前:デフォルトの名無しさん mailto:sage [2022/10/26(水) 18:20:40.38 ID:S3XzLK/s.net] このタイプの論理問題ってよく見かけるな 初出ってどこなんだろうな
879 名前:デフォルトの名無しさん mailto:sage [2022/10/26(水) 19:23:29.30 ID:gD5qQ1ZG.net] >>836 > “少なくとも一匹はウソついてる” だと、全員嘘つきでもいいからなんでもありになっちゃう気がする
880 名前:デフォルトの名無しさん mailto:sage [2022/10/26(水) 20:30:42.10 ID:dmTYCGjA.net] >>832 Haskell まだ自信なし https://ideone.com/7p50VK
881 名前:デフォルトの名無しさん mailto:sage [2022/10/26(水) 21:23:18.21 ID:OrdcPqRc.net] オーク達「」が真であることは、 この世界の神である出題者が保証してるわけだな?
882 名前:デフォルトの名無しさん mailto:sage [2022/10/26(水) 21:38:57.12 ID:Bjop1AC4.net] 出題者が嘘をついていて、オークがそのような発言をしていない可能性もある
883 名前:デフォルトの名無しさん mailto:sage [2022/10/27(木) 01:22:34.18 ID:s7i1htqL.net] >>832 Haskell 一ヶ所間違ってたので訂正 あとウソつきはちょうど1人という条件つけたら解一個になった https://ideone.com/vAXrzD
884 名前:デフォルトの名無しさん mailto:sage [2022/10/27(木) 09:19:06.82 ID:Uf+5HE/G.net] Haskell ウソつき1人としてループを5×5に 5人しかいないので大して変わらないけど https://ideone.com/zxaBcf
885 名前:デフォルトの名無しさん [2022/10/27(木) 14:26:07.23 ID:QRorZadJ.net] >>832 Java https://paiza.io/projects/VlDcOv5HhoHc1rQjRbF3dA?language=java
886 名前:デフォルトの名無しさん mailto:sage [2022/10/29(土) 19:11:19.58 ID:O3TXZpYa.net] お題 Kの倍数の桁の和 自然数nに対してf(n)をnの10進表示の各桁の和とします (例 f(1024) = 1+2+4 = 7) 自然数kに対してg(k)を g(k) = { f(n) | nはkの倍数である自然数 } とします 入力kに対してg(k)を出力するコードを書いて下さい
887 名前:デフォルトの名無しさん mailto:sage [2022/10/29(土) 19:33:57.73 ID:uuZ1gbyy.net] >>845 g(k)って必ずしも有限集合にならなくない?
888 名前:デフォルトの名無しさん mailto:sage [2022/10/29(土) 19:39:30.16 ID:O3TXZpYa.net] >>946 orz 訂正 g(k) = min{ f(n) | nはkの倍数である自然数 }
889 名前:デフォルトの名無しさん [2022/10/30(日) 00:28:15.63 ID:BQOGiCuF.net] お題 プレーヤーの前に閉じた3つのドアがあります 1つのドアの後ろには景品の新車があります 2つのドアの後ろにははずれを意味するヤギがいます プレーヤーは新車のドアを当てると新車がもらえます プレーヤーが1つのドアを選択したあとに司会のモンティが残りのドアのうちヤギがいるドアを開けてヤギを見せます ここでプレーヤーは「最初に選んだドアを残っている開けられていないドアに変更してもよい」と言われます ここでプレーヤーはドアを変更すべきだろうか? 乱数を使ったシミュレーションで答えを求めてください
890 名前:デフォルトの名無しさん [2022/10/30(日) 03:55:05.76 ID:KHak5nKt.net] >>848 モンティ・ホール問題だな。 Kotlin https://paiza.io/projects/8jlKawdSqlrp5JHr0uWC4w
891 名前:デフォルトの名無しさん mailto:sage [2022/10/30(日) 08:09:55.23 ID:oF72FRjI.net] ドアを変更するかどうかのところはランダムにする必要無くない? 二択なので一方に決めていれば残りが逆側の確率
892 名前:デフォルトの名無しさん mailto:sage [2022/10/30(日) 10:05:48.56 ID:Rpnmj8SE.net] まぁ 交換戦略「必ず交換する」 非交換戦略「決して交換しない」 確率交換戦略「ある分布に従って確率的に交換するかしないか決める」 で答えが変わる事を確認せよだからな ある意味最初2つの戦略も最後の戦略の特別な場合