プログラミングのお題スレです。
【出題と回答例】
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/
宿題は宿題スレがあるのでそちらへ。
※前スレ
プログラミングのお題スレ Part19
https://mevius.5ch.net/test/read.cgi/tech/1606662245/
プログラミングのお題スレ Part20
■ このスレッドは過去ログ倉庫に格納されています
2021/06/19(土) 00:02:57.84ID:MQWrKSb7
761デフォルトの名無しさん
2022/09/10(土) 22:51:25.27ID:7X0yi8nW > 右方向から上方向に切り替わるところが回答の候補でその中から最小値を探すことで効率よく回答を見つけることができます
これは間違いかも、これだと55を見つけられない
各自で考えていただければありがたく
これは間違いかも、これだと55を見つけられない
各自で考えていただければありがたく
762デフォルトの名無しさん
2022/09/10(土) 22:52:41.16ID:7X0yi8nW いや、いいのか!? ダメだ混乱してきたもうパニックですわ
763デフォルトの名無しさん
2022/09/10(土) 22:57:53.10ID:sDbT/M8A おちつけ
764デフォルトの名無しさん
2022/09/10(土) 23:12:42.56ID:7X0yi8nW >>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
> 右方向から上方向に切り替わるところが回答の候補でその中から最小値を探すことで効率よく回答を見つけることができます
これは間違いでした、上方向から右方向に変わる直前の値が回答候補ですね
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
765素数を数えるんだ
2022/09/10(土) 23:25:22.59ID:22kPJ9rf 2, 3, 5, 7, 11, 13, 17, 19......
766デフォルトの名無しさん
2022/09/11(日) 01:04:25.98ID:/LH0BDzE お題
2~19までの素数を生成し掛け算の表を出力してください
2~19までの素数を生成し掛け算の表を出力してください
767デフォルトの名無しさん
2022/09/12(月) 01:50:52.46ID:xawmAmgS768デフォルトの名無しさん
2022/09/12(月) 10:44:10.79ID:VxR6iqOp >>764
Kotlin
https://paiza.io/projects/caNg1GtDFhBF9Rk6AwC52Q
出力をHTMLにするとそれっぽく表示できた。
50は正方形の面積リストの最初に入れたが例の画像と同じような見た目になった。
Kotlin
https://paiza.io/projects/caNg1GtDFhBF9Rk6AwC52Q
出力をHTMLにするとそれっぽく表示できた。
50は正方形の面積リストの最初に入れたが例の画像と同じような見た目になった。
769デフォルトの名無しさん
2022/09/12(月) 18:32:56.65ID:eGlSQ2pk770デフォルトの名無しさん
2022/09/13(火) 22:22:38.95ID:B0VHMNYc771デフォルトの名無しさん
2022/09/13(火) 22:25:19.07ID:V4Kz63G0 お題:OpenGLで四角形を3つ描画せよ
一番下の四角形が1番大きく赤色
その上にのってる四角形は2番目に大きく緑色
さらにその上にのってる四角形は3番目に大きく青色
一番下の四角形が1番大きく赤色
その上にのってる四角形は2番目に大きく緑色
さらにその上にのってる四角形は3番目に大きく青色
772デフォルトの名無しさん
2022/09/14(水) 12:47:57.36ID:LkrioAg+ お題
フェアフィールドの公式は、西暦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
フェアフィールドの公式は、西暦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
773デフォルトの名無しさん
2022/09/14(水) 15:20:59.73ID:s+3MjQLV >>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%
@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%
774デフォルトの名無しさん
2022/09/15(木) 05:31:46.38ID:LgD4XKTt //>>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)) {
/**//**//**//**//**//**/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;}
}
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)) {
/**//**//**//**//**//**/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;}
}
775デフォルトの名無しさん
2022/09/15(木) 22:07:10.52ID:AaudQZzp うるう秒のテーブルがないと求められなくない?
776デフォルトの名無しさん
2022/09/16(金) 00:34:31.77ID:ETiYX3D6 400年で146097日増えるみたいだから適当にバイアス付けて146097で割る予感
777デフォルトの名無しさん
2022/09/16(金) 00:35:51.49ID:ETiYX3D6 違う
適当にバイアス付けて÷365.2425だ
適当にバイアス付けて÷365.2425だ
778デフォルトの名無しさん
2022/09/16(金) 01:05:26.42ID:/mniU0r8 フェアフィールドの公式てwikipediaに書かれている出自不明な公式でも何でも無いでっち上げの記事でしょ
式の解説文がこれまた頭悪くて、なのに誰も修正しないという
式の解説文がこれまた頭悪くて、なのに誰も修正しないという
779デフォルトの名無しさん
2022/09/16(金) 01:13:35.77ID:mMDmJ4/Z780デフォルトの名無しさん
2022/09/16(金) 21:18:24.66ID:k/2PI65L781デフォルトの名無しさん
2022/09/17(土) 17:48:30.91ID:fw6a0lZo お題
2*2の整数行列がいくつか与えられる。
これらを適当な順番で掛け合わせる(行列積)ことで零行列を作ることが可能かどうか判定せよ。
ただし、同じ行列を2回以上使用してもよい。
例
[[1, 0], [0, 0]], [[0, -1], [1, 0]] =>可能(行列1*行列2*行列1==0)
[[1, 2], [3, 4]], [[0, -3], [2, 4]] =>不可能(正則行列だから)
2*2の整数行列がいくつか与えられる。
これらを適当な順番で掛け合わせる(行列積)ことで零行列を作ることが可能かどうか判定せよ。
ただし、同じ行列を2回以上使用してもよい。
例
[[1, 0], [0, 0]], [[0, -1], [1, 0]] =>可能(行列1*行列2*行列1==0)
[[1, 2], [3, 4]], [[0, -3], [2, 4]] =>不可能(正則行列だから)
782デフォルトの名無しさん
2022/09/17(土) 18:42:03.76ID:ZMguHADz >>781
零因子の発掘ですか、濃ゆいお題ですね…
零因子の発掘ですか、濃ゆいお題ですね…
783デフォルトの名無しさん
2022/09/18(日) 11:34:42.07ID:qZaavGGf784デフォルトの名無しさん
2022/09/18(日) 12:52:34.73ID:BMeW7wRv785デフォルトの名無しさん
2022/09/18(日) 16:37:27.93ID:BMeW7wRv786デフォルトの名無しさん
2022/09/19(月) 02:47:41.37ID:/08McGz8 >>783
Kotlin
https://paiza.io/projects/dZhh0NhaeEwnxD45W6V7Ng
Java VM 上で動くから Java と同じで参照している変数を null にして System.gc() するだけ。
Kotlin
https://paiza.io/projects/dZhh0NhaeEwnxD45W6V7Ng
Java VM 上で動くから Java と同じで参照している変数を null にして System.gc() するだけ。
787デフォルトの名無しさん
2022/09/24(土) 01:13:05.90ID:uYRJl5GL >>772
亀レスHaskell
https://ideone.com/y7jYXr
色々考えて結局テーブル作って処理という最後の手段
わざわざ公開するほどのもんでもないけど一区切りつけるため
暦の勉強になった
なんで大の月と小の月の配置はこんなみっともないことになってるんだろ?
歴史家が調べでよくわからんみたいだけど
亀レスHaskell
https://ideone.com/y7jYXr
色々考えて結局テーブル作って処理という最後の手段
わざわざ公開するほどのもんでもないけど一区切りつけるため
暦の勉強になった
なんで大の月と小の月の配置はこんなみっともないことになってるんだろ?
歴史家が調べでよくわからんみたいだけど
788デフォルトの名無しさん
2022/09/24(土) 04:40:38.82ID:6vPOYH6k >>772
だめ。その式に当てはめると必ずずれる。
だめ。その式に当てはめると必ずずれる。
789デフォルトの名無しさん
2022/09/24(土) 07:42:29.88ID:aunrhsr3 うるう秒を考慮しないとずれる
790デフォルトの名無しさん
2022/09/24(土) 09:42:29.34ID:v3rIJe0P791デフォルトの名無しさん
2022/09/24(土) 11:33:11.17ID:aunrhsr3 >>790
日付に変換する過程でうるう秒考慮しないとずれるでしょう
日付に変換する過程でうるう秒考慮しないとずれるでしょう
792デフォルトの名無しさん
2022/09/24(土) 12:13:55.28ID:v3rIJe0P >>791
UNIXTIMEは「epocからの実時間の秒数」では無い
実時間から、うるう秒は加減され含まれず、1日は86400秒換算
だからそれを日時に変換しても「うるう秒の時刻を表せない」だけでズレなど発生しない
UNIXTIMEは「epocからの実時間の秒数」では無い
実時間から、うるう秒は加減され含まれず、1日は86400秒換算
だからそれを日時に変換しても「うるう秒の時刻を表せない」だけでズレなど発生しない
793デフォルトの名無しさん
2022/09/24(土) 12:34:24.41ID:aunrhsr3 >>792
レスありがとう。不勉強だったわ。
レスありがとう。不勉強だったわ。
794デフォルトの名無しさん
2022/09/24(土) 16:57:05.53ID:6vPOYH6k795デフォルトの名無しさん
2022/09/24(土) 22:38:52.94ID:Fvr5cAu6 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⌋
⌊(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⌋
796デフォルトの名無しさん
2022/09/24(土) 22:45:27.51ID:Fvr5cAu6797デフォルトの名無しさん
2022/09/28(水) 02:17:31.98ID:UDkh+W3M お題:4回呼び出したらその内の1回が失敗する関数を書け
失敗した場合は「failed」と表示、成功した場合は「ok」と表示せよ
失敗した場合は「failed」と表示、成功した場合は「ok」と表示せよ
798デフォルトの名無しさん
2022/09/28(水) 09:47:46.29ID:+QlM3L0o seed変数はパラメータ渡しで良いですか
799デフォルトの名無しさん
2022/09/28(水) 19:05:59.31ID:WptV1D3q >>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;
}
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;
}
800デフォルトの名無しさん
2022/09/28(水) 22:51:23.95ID:7XofIB3A801デフォルトの名無しさん
2022/09/30(金) 04:16:06.13ID:F2zw9Wj+ >>797
Kotlin
https://paiza.io/projects/QipeLOxxfW3_GNBarDA-8w
Int型1つ分のワークエリアを呼ぶ側から与えてそこでカウントして必ず4回の内1回が失敗になる。
乱数を使うと4回の内1回失敗ではなくなる可能性があるので使っていない。
引数としてInt型の参照を渡しても中身を変えられないのでIntArray(Java なら int[] に相当)で1要素作ってIntArrayの参照を渡している。
クラスでやっても良かったが、わざわざクラス作るほどのことでもないと思ったのでこの方式にした。
Kotlin
https://paiza.io/projects/QipeLOxxfW3_GNBarDA-8w
Int型1つ分のワークエリアを呼ぶ側から与えてそこでカウントして必ず4回の内1回が失敗になる。
乱数を使うと4回の内1回失敗ではなくなる可能性があるので使っていない。
引数としてInt型の参照を渡しても中身を変えられないのでIntArray(Java なら int[] に相当)で1要素作ってIntArrayの参照を渡している。
クラスでやっても良かったが、わざわざクラス作るほどのことでもないと思ったのでこの方式にした。
802デフォルトの名無しさん
2022/10/01(土) 01:23:09.73ID:I5nFps2z803デフォルトの名無しさん
2022/10/09(日) 17:49:59.08ID:tsulmG4c お題: あみだ 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
あみだ関連のお題は過去スレで何回か見かけたがろくに相手にされていなかったのであげてみる。
画像のようなマス目の上に直線を引いたあみだを次のように表現することにします。
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
あみだ関連のお題は過去スレで何回か見かけたがろくに相手にされていなかったのであげてみる。
804デフォルトの名無しさん
2022/10/10(月) 00:03:47.74ID:Em47unOv reduced expressionのまとめられる積を出来るだけまとめたものが必ず最短になるなら簡単なんだけどな
805デフォルトの名無しさん
2022/10/10(月) 12:25:25.51ID:CId/Nblu Gapとか使えばいいんじゃね
806デフォルトの名無しさん
2022/10/10(月) 15:00:17.69ID:AiOpkeUk reduced expression の長さ自体の計算は簡単だけどこの問題は"reduced expressionの長さを求めよ"ではないからそこまで数学的に単純じゃないよ
807デフォルトの名無しさん
2022/10/10(月) 20:53:48.73ID:uiS3Rjx/ >>803
お題1
ttps://paiza.io/projects/tUaZay_JvtZRkIaUhjYF7Q
お題2
ttps://paiza.io/projects/1yDZy-Vx-C9Q9Z_Oc03Mtw
お題1とお題2でそれぞれ入力と出力をあわせるようにした
Mをできるだけ小さくって難しいな
これでいいのかわからん
お題1
ttps://paiza.io/projects/tUaZay_JvtZRkIaUhjYF7Q
お題2
ttps://paiza.io/projects/1yDZy-Vx-C9Q9Z_Oc03Mtw
お題1とお題2でそれぞれ入力と出力をあわせるようにした
Mをできるだけ小さくって難しいな
これでいいのかわからん
808デフォルトの名無しさん
2022/10/10(月) 21:09:44.88ID:TC3V9vEZ アルゴリズムが存在するのは明らかだしひとつ答え見つけるアルゴリズムも簡単
でもreduced expression見つけるアルゴリズムと同程度のアルゴリズムとなると途端に難しくなる
reduced expressionの場合には置換σのreduced expressionを見つけるには
(1) σ = idであるか否か判定する、σ=idなら空列を返して終了
(2) そうでない場合σ(i) > σ(i+1)であるiを見つける、見つけたiに対してτ=σ(i i+1)とおいてτほreduced expression sを求める
(3)
でもreduced expression見つけるアルゴリズムと同程度のアルゴリズムとなると途端に難しくなる
reduced expressionの場合には置換σのreduced expressionを見つけるには
(1) σ = idであるか否か判定する、σ=idなら空列を返して終了
(2) そうでない場合σ(i) > σ(i+1)であるiを見つける、見つけたiに対してτ=σ(i i+1)とおいてτほreduced expression sを求める
(3)
809デフォルトの名無しさん
2022/10/10(月) 21:16:09.04ID:TC3V9vEZ (3) s ( i i+1 )を返して終了
でもとまる
ここでミソはreduced expressionの1番右は( i i+1 )と決め打ち出来ること、コレがあるから多項式時間で終わる
しかしアミダの場合1番右の初手をそんなに簡単に決定出来るかが分からん
初手の可能性は転置全部の可換な集合のうち極大であるもの全体のいずれかに最短が入る事は簡単に示せるけど、そのような極大な可換集合をどれとっても必ずうまくいくことの証明がむずかしい
多分出来るんだとは思うけど正直数学板で話題にするような話でプロ板で出すような問題じゃない気がする
でもとまる
ここでミソはreduced expressionの1番右は( i i+1 )と決め打ち出来ること、コレがあるから多項式時間で終わる
しかしアミダの場合1番右の初手をそんなに簡単に決定出来るかが分からん
初手の可能性は転置全部の可換な集合のうち極大であるもの全体のいずれかに最短が入る事は簡単に示せるけど、そのような極大な可換集合をどれとっても必ずうまくいくことの証明がむずかしい
多分出来るんだとは思うけど正直数学板で話題にするような話でプロ板で出すような問題じゃない気がする
810441
2022/10/11(火) 10:43:04.37ID:Q+yx5xdI >>803
最近やっとpythonを学び始めたレベルだから合ってるかわからん
コメントとかもちゃんと書いたほうがいいのだろうか
暇な人添削してくれると嬉しい
お題1
https://ideone.com/uQ0lEu
お題2
https://ideone.com/IvtRj2
最近やっとpythonを学び始めたレベルだから合ってるかわからん
コメントとかもちゃんと書いたほうがいいのだろうか
暇な人添削してくれると嬉しい
お題1
https://ideone.com/uQ0lEu
お題2
https://ideone.com/IvtRj2
811デフォルトの名無しさん
2022/10/11(火) 12:04:38.77ID:xv8Y5zzF しゃぶれよ
813デフォルトの名無しさん
2022/10/22(土) 02:49:22.02ID:ql0xnxKt やってるやん
814デフォルトの名無しさん
2022/10/24(月) 10:24:26.56ID:sCRx2Xsd お題
プリンタAは1分間に1ページ印刷できます
プリンタBは3分間に1ページ印刷できます
プリンタCは5分間に1ページ印刷できます
プリンタを3台同時に動かして100ページを印刷します
100ページを印刷し終わるのに何分掛かるか求めてください
プリンタAは1分間に1ページ印刷できます
プリンタBは3分間に1ページ印刷できます
プリンタCは5分間に1ページ印刷できます
プリンタを3台同時に動かして100ページを印刷します
100ページを印刷し終わるのに何分掛かるか求めてください
815デフォルトの名無しさん
2022/10/24(月) 12:38:35.85ID:PxuF7JuF816デフォルトの名無しさん
2022/10/24(月) 13:32:21.38ID:LLDppSf/817デフォルトの名無しさん
2022/10/24(月) 14:17:54.79ID:l9s5dDsa >>814 cmd
set /a "p=100, n=15*p/23+!!(15*p%23)"
set /a "p=100, n=15*p/23+!!(15*p%23)"
818デフォルトの名無しさん
2022/10/24(月) 15:31:07.39ID:FSEywfH4 haskell
pages n = sum $ map ( div n ) [ 1,3,5 ]
main = print $ head [ n | n <- [1..], pages n >= 100 ]
pages n = sum $ map ( div n ) [ 1,3,5 ]
main = print $ head [ n | n <- [1..], pages n >= 100 ]
819デフォルトの名無しさん
2022/10/24(月) 20:20:16.51ID:112hix5y820デフォルトの名無しさん
2022/10/24(月) 22:40:57.89ID:SGYFZ2pJ821デフォルトの名無しさん
2022/10/25(火) 01:46:09.54ID:m3snEfri822デフォルトの名無しさん
2022/10/25(火) 06:54:39.16ID:LZqPXT/2823デフォルトの名無しさん
2022/10/25(火) 07:50:54.84ID:V4E25MPr A, B, Cでそれぞれ45/23, 15/23, 9/23ページ印刷すれば45/23分で3ページ印刷し終わるよ
824デフォルトの名無しさん
2022/10/25(火) 08:18:47.97ID:5cB2OctB 100ページだからセーフ
825デフォルトの名無しさん
2022/10/25(火) 13:35:12.41ID:xp4U3IJL826デフォルトの名無しさん
2022/10/25(火) 20:38:44.30ID:Er29dtqL 甘えんな
印刷周期を一定と仮定した上で解として取りうる離散値のどれになるかを小数単位で求めるプログラムも書こうよ
印刷周期を一定と仮定した上で解として取りうる離散値のどれになるかを小数単位で求めるプログラムも書こうよ
827デフォルトの名無しさん
2022/10/25(火) 21:08:38.15ID:idE58GAF すまん、1分に3枚じゃなくて3分に1枚かorz
828デフォルトの名無しさん
2022/10/25(火) 22:03:54.71ID:b0dw4lqu829デフォルトの名無しさん
2022/10/25(火) 22:28:13.40ID:F6XUw+z/ じゃあ1分に1枚、3枚、5枚のプリンターでの印刷というお題も出すか。
830デフォルトの名無しさん
2022/10/25(火) 22:38:49.46ID:d0t/LHiA >>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
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
831デフォルトの名無しさん
2022/10/25(火) 23:47:11.01ID:b0dw4lqu >>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);
}
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);
}
832デフォルトの名無しさん
2022/10/26(水) 13:26:51.44ID:FciA0hc1 お題
オークA「ぐっふっふ…… 俺は媚薬を盛ってないぜ……」
オークB「ぐふっ…… 媚薬を盛ったやつはAかCのどちらかだぜ…」
オークC「オークBかDは嘘をついているぜ…ぐっふっふっふっ……」
オークD「ぐふふ…媚薬を盛った奴はB,Eの中にはいないぜ……ぐひっ…」
オークE「げひひっ……媚薬を盛ったやつは本当の事を言っているぞ…」
オーク達「ちなみに、お前に媚薬を盛ったのはこの中の一匹で、俺たちの中で一匹が嘘をついているぞ……」
女騎士「くうぅ…誰が嘘をついて誰が私に媚薬を盛ったんだ……!」
オーク達「ぐっふっふ……」
論理演算を用いて答えを求めてください
オークA「ぐっふっふ…… 俺は媚薬を盛ってないぜ……」
オークB「ぐふっ…… 媚薬を盛ったやつはAかCのどちらかだぜ…」
オークC「オークBかDは嘘をついているぜ…ぐっふっふっふっ……」
オークD「ぐふふ…媚薬を盛った奴はB,Eの中にはいないぜ……ぐひっ…」
オークE「げひひっ……媚薬を盛ったやつは本当の事を言っているぞ…」
オーク達「ちなみに、お前に媚薬を盛ったのはこの中の一匹で、俺たちの中で一匹が嘘をついているぞ……」
女騎士「くうぅ…誰が嘘をついて誰が私に媚薬を盛ったんだ……!」
オーク達「ぐっふっふ……」
論理演算を用いて答えを求めてください
833デフォルトの名無しさん
2022/10/26(水) 13:33:52.83ID:FciA0hc1 オークCとオークEがめんどくさいな
834デフォルトの名無しさん
2022/10/26(水) 15:30:35.63ID:DM8ZU7Du 全てが媚薬を盛って全員が嘘をついている
これで全員の発言と矛盾がないと思う
これで全員の発言と矛盾がないと思う
835デフォルトの名無しさん
2022/10/26(水) 16:28:02.83ID:xzd5i3vP さすがに
> オーク達「ちなみに、お前に媚薬を盛ったのはこの中の一匹で、俺たちの中で一匹が嘘をついているぞ……」
は正しいと仮定しないとなんでもありありになっちゃうだろ
> オーク達「ちなみに、お前に媚薬を盛ったのはこの中の一匹で、俺たちの中で一匹が嘘をついているぞ……」
は正しいと仮定しないとなんでもありありになっちゃうだろ
836デフォルトの名無しさん
2022/10/26(水) 18:06:43.51ID:VWCwwszG さすがに
> オーク達「ちなみに、お前に媚薬を盛ったのはこの中の一匹で、俺たちの中で一匹が嘘をついているぞ……」
コレウソついてるのは一匹“だけ”つて意味だよね?
“少なくとも一匹はウソついてる”
じゃないよね?
> オーク達「ちなみに、お前に媚薬を盛ったのはこの中の一匹で、俺たちの中で一匹が嘘をついているぞ……」
コレウソついてるのは一匹“だけ”つて意味だよね?
“少なくとも一匹はウソついてる”
じゃないよね?
837デフォルトの名無しさん
2022/10/26(水) 18:20:40.38ID:S3XzLK/s このタイプの論理問題ってよく見かけるな
初出ってどこなんだろうな
初出ってどこなんだろうな
838デフォルトの名無しさん
2022/10/26(水) 19:23:29.30ID:gD5qQ1ZG839デフォルトの名無しさん
2022/10/26(水) 20:30:42.10ID:dmTYCGjA840デフォルトの名無しさん
2022/10/26(水) 21:23:18.21ID:OrdcPqRc オーク達「」が真であることは、
この世界の神である出題者が保証してるわけだな?
この世界の神である出題者が保証してるわけだな?
841デフォルトの名無しさん
2022/10/26(水) 21:38:57.12ID:Bjop1AC4 出題者が嘘をついていて、オークがそのような発言をしていない可能性もある
842デフォルトの名無しさん
2022/10/27(木) 01:22:34.18ID:s7i1htqL843デフォルトの名無しさん
2022/10/27(木) 09:19:06.82ID:Uf+5HE/G844デフォルトの名無しさん
2022/10/27(木) 14:26:07.23ID:QRorZadJ845デフォルトの名無しさん
2022/10/29(土) 19:11:19.58ID:O3TXZpYa お題
Kの倍数の桁の和
自然数nに対してf(n)をnの10進表示の各桁の和とします
(例 f(1024) = 1+2+4 = 7)
自然数kに対してg(k)を
g(k) = { f(n) | nはkの倍数である自然数 }
とします
入力kに対してg(k)を出力するコードを書いて下さい
Kの倍数の桁の和
自然数nに対してf(n)をnの10進表示の各桁の和とします
(例 f(1024) = 1+2+4 = 7)
自然数kに対してg(k)を
g(k) = { f(n) | nはkの倍数である自然数 }
とします
入力kに対してg(k)を出力するコードを書いて下さい
846デフォルトの名無しさん
2022/10/29(土) 19:33:57.73ID:uuZ1gbyy >>845
g(k)って必ずしも有限集合にならなくない?
g(k)って必ずしも有限集合にならなくない?
847デフォルトの名無しさん
2022/10/29(土) 19:39:30.16ID:O3TXZpYa848デフォルトの名無しさん
2022/10/30(日) 00:28:15.63ID:BQOGiCuF お題
プレーヤーの前に閉じた3つのドアがあります
1つのドアの後ろには景品の新車があります
2つのドアの後ろにははずれを意味するヤギがいます
プレーヤーは新車のドアを当てると新車がもらえます
プレーヤーが1つのドアを選択したあとに司会のモンティが残りのドアのうちヤギがいるドアを開けてヤギを見せます
ここでプレーヤーは「最初に選んだドアを残っている開けられていないドアに変更してもよい」と言われます
ここでプレーヤーはドアを変更すべきだろうか?
乱数を使ったシミュレーションで答えを求めてください
プレーヤーの前に閉じた3つのドアがあります
1つのドアの後ろには景品の新車があります
2つのドアの後ろにははずれを意味するヤギがいます
プレーヤーは新車のドアを当てると新車がもらえます
プレーヤーが1つのドアを選択したあとに司会のモンティが残りのドアのうちヤギがいるドアを開けてヤギを見せます
ここでプレーヤーは「最初に選んだドアを残っている開けられていないドアに変更してもよい」と言われます
ここでプレーヤーはドアを変更すべきだろうか?
乱数を使ったシミュレーションで答えを求めてください
849デフォルトの名無しさん
2022/10/30(日) 03:55:05.76ID:KHak5nKt850デフォルトの名無しさん
2022/10/30(日) 08:09:55.23ID:oF72FRjI ドアを変更するかどうかのところはランダムにする必要無くない?
二択なので一方に決めていれば残りが逆側の確率
二択なので一方に決めていれば残りが逆側の確率
851デフォルトの名無しさん
2022/10/30(日) 10:05:48.56ID:Rpnmj8SE まぁ
交換戦略「必ず交換する」
非交換戦略「決して交換しない」
確率交換戦略「ある分布に従って確率的に交換するかしないか決める」
で答えが変わる事を確認せよだからな
ある意味最初2つの戦略も最後の戦略の特別な場合
交換戦略「必ず交換する」
非交換戦略「決して交換しない」
確率交換戦略「ある分布に従って確率的に交換するかしないか決める」
で答えが変わる事を確認せよだからな
ある意味最初2つの戦略も最後の戦略の特別な場合
852デフォルトの名無しさん
2022/10/30(日) 11:47:05.86ID:0KuBg4yb お題N x Nのルービックキューブのパターン数を求めよ
853デフォルトの名無しさん
2022/10/30(日) 18:39:10.46ID:KHak5nKt >>850
なるほど。
なるほど。
854デフォルトの名無しさん
2022/10/30(日) 18:54:42.34ID:Sqe0pI7B モンティ・ホール問題のシミュレートのように見えて実はちょっと違う
モンキーホール問題だったのだ
モンキーホール問題だったのだ
855デフォルトの名無しさん
2022/10/30(日) 20:02:07.15ID:4vBwn6CZ856デフォルトの名無しさん
2022/10/31(月) 00:39:33.45ID:MKojko7I お題 ジュールトムソン効果っぽいものをシミュレーションで再現せよ
857デフォルトの名無しさん
2022/11/04(金) 07:13:30.92ID:jLlmakBU お題:1~10までの合計を求めよ
*ただしライブラリ、ループ文を使わないこと
*ただしライブラリ、ループ文を使わないこと
858デフォルトの名無しさん
2022/11/04(金) 07:18:56.49ID:yh54R4RT >>857 PHP
55
55
859デフォルトの名無しさん
2022/11/04(金) 08:24:04.42ID:TDQ1gw2t (1+10)*5
860デフォルトの名無しさん
2022/11/04(金) 12:00:50.88ID:ryvUUS8Q >>857 cmd
set /a "A=1, B=10, (B-A+1)/2*(A+B)+(B-A+1)%2*(A+B)/2" &rem A≦B
set /a "A=1, B=10, (B-A+1)/2*(A+B)+(B-A+1)%2*(A+B)/2" &rem A≦B
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【サッカー】U-17日本代表、激闘PK戦制す 北朝鮮撃破で6大会ぶり8強入り U17W杯 [久太郎★]
- 【サッカー】日本代表、ボリビアに3発快勝 森保監督通算100試合目を飾る…鎌田、町野、中村がゴール [久太郎★]
- XやChatGPTで広範囲の通信障害 投稿や閲覧できず [蚤の市★]
- 【インバウンド】中国人観光客の日本での消費額は年間約2兆円超…中国政府は公務員の出張取り消し [1ゲットロボ★]
- 【芸能】日中関係悪化でエンタメ業界に大ダメージ… JO1の中国でのイベント中止、邦画は公開延期、STARTOアイドルへの影響も [冬月記者★]
- 【卓球】早田ひな、「総額100万スられた」「ずっと憧れていたスペインとイタリア…」ヨーロッパ旅行で悲劇 スリ被害を告白 [muffin★]
- 万引きJC「すいません許してください!何でもしますから!」←どうする?
- Perfume・あ~ちゃんの結婚相手の一般男性、吉田カバンの社長と判明 [977261419]
- 自民党議員「高市は先人が築き上げた日中関係を壊した。外務省が謝罪に言ってるが自分で責任を取れ」 [834922174]
- 5時だから窓から5回ちんこ出した
- 「黙らせてやろうと思った」自宅マンション10階から高校テニスコート内の女子生徒目掛けて貯金箱を投擲した女の子、殺人未遂で逮捕 [399583221]
- 岡田克也「軽々しく存立危機事態とか言うべきじゃない」高市早苗「台湾で武力攻撃が発生したらどう考えても日本の存立危機事態」 [931948549]
