プログラミングのお題スレです。
【出題と回答例】
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/
宿題は宿題スレがあるのでそちらへ。
※前スレ
プログラミングのお題スレ Part15
http://mevius.5ch.net/test/read.cgi/tech/1564310397/
探検
プログラミングのお題スレ Part16
■ このスレッドは過去ログ倉庫に格納されています
2019/11/17(日) 09:00:22.10ID:xqEdXdr6
2019/11/17(日) 10:53:15.74ID:uilOlN75
>>1 おつ
3デフォルトの名無しさん
2019/11/17(日) 17:37:39.46ID:8gWobnsK val 乙 = "乙"
prontln(乙)
prontln(乙)
2019/11/18(月) 02:35:04.18ID:t9gVOJNg
お題:
https://i.imgur.com/JsMU4uh.jpg
明度が0〜9までのグレーの四角がグラデーション状に横並びにならんでいるとします
この状態だと隣接している四角と四角の明度の差が少ないので境目が見えづらいです
全ての四角同士の明度差ができるだけ大きくなるように並び替えるにはどういうロジックが考えられるでしょう?
四角の数が増えても対応できるような汎用的なロジックが望ましいです
両端は固定のままが理想ですが必須要件ではありません
・ボツ例:1〜4まで一つおきに左右端を入れ替える
(1) 1と8を入れ替える
(2) 2と7はそのまま
(3) 3と6を入れ替える
(4) 4と5はそのまま
※これだと4と5が隣り合ったままで明度差が少ない箇所が残るので最適解ではない
https://i.imgur.com/JsMU4uh.jpg
明度が0〜9までのグレーの四角がグラデーション状に横並びにならんでいるとします
この状態だと隣接している四角と四角の明度の差が少ないので境目が見えづらいです
全ての四角同士の明度差ができるだけ大きくなるように並び替えるにはどういうロジックが考えられるでしょう?
四角の数が増えても対応できるような汎用的なロジックが望ましいです
両端は固定のままが理想ですが必須要件ではありません
・ボツ例:1〜4まで一つおきに左右端を入れ替える
(1) 1と8を入れ替える
(2) 2と7はそのまま
(3) 3と6を入れ替える
(4) 4と5はそのまま
※これだと4と5が隣り合ったままで明度差が少ない箇所が残るので最適解ではない
2019/11/18(月) 05:41:33.12ID:8+qUVevR
Σ|a_n - a_{n+1}| を最大化する問題なのか
inf{|a_n - a_{n+1}|} を最大化する問題なのか
どっちなんだ?
inf{|a_n - a_{n+1}|} を最大化する問題なのか
どっちなんだ?
2019/11/18(月) 11:50:33.33ID:BCetHxzu
2019/11/18(月) 18:43:37.24ID:DjoGz+4S
8デフォルトの名無しさん
2019/11/18(月) 20:03:36.58ID:EbN/HVpO >>4
両端固定で最小隣接差を最大化する条件で回答する。Rですべての並べ方を虱潰しに
調べるのが https://ideone.com/paKF2d で、結果は>>6が言う通りになる。
n = 10 ではすぐに終わるが、それを超えると時間がかなりかかるし、環境によっては
メモリ不足になる。
もう少し効率的に調べるのが https://ideone.com/OsmpbQ で、n = 16 までは
すぐに終わる。それを超えると時間がかかるように段々なるので、さらなる効率化が
必要。
n = 10 と n = 16 の結果から、nが偶数の場合は>>6が言うように規則性が見られ、
nが大きくなっても並べ方は常に2通りで、例えば n = 256 のときは
0, 127, 254, 126, 253, 125, 252, ..., 2, 129, 1, 128, 255
0, 128, 1, 129, 2, 130, 3, ..., 253, 126, 254, 127, 255
になると予想されるが、それが正解であることを理論的に説明しないといけないな。
両端固定で最小隣接差を最大化する条件で回答する。Rですべての並べ方を虱潰しに
調べるのが https://ideone.com/paKF2d で、結果は>>6が言う通りになる。
n = 10 ではすぐに終わるが、それを超えると時間がかなりかかるし、環境によっては
メモリ不足になる。
もう少し効率的に調べるのが https://ideone.com/OsmpbQ で、n = 16 までは
すぐに終わる。それを超えると時間がかかるように段々なるので、さらなる効率化が
必要。
n = 10 と n = 16 の結果から、nが偶数の場合は>>6が言うように規則性が見られ、
nが大きくなっても並べ方は常に2通りで、例えば n = 256 のときは
0, 127, 254, 126, 253, 125, 252, ..., 2, 129, 1, 128, 255
0, 128, 1, 129, 2, 130, 3, ..., 253, 126, 254, 127, 255
になると予想されるが、それが正解であることを理論的に説明しないといけないな。
9デフォルトの名無しさん
2019/11/21(木) 21:52:25.50ID:1mUnuvuP >>4
【nが偶数の場合の>>8の予想を理論的に説明する】(等幅フォントでの表示推奨)
n = 10のとき、最小階差をd >= 6と仮定すると 0: 4, 5, 6, 7, 8
4に隣接できる数はなく、d = 5と仮定すると9だ 1: 5, 6, 7, 8, 9
けなので、数列が途切れてしまって続かない。 2: 6, 7, 8, 9
よってd >= 5はあり得ず、d = 4から調べれば良 3: 7, 8, 9
い。d = 4のとき各数が隣接できる数を列挙する 4: 0, 8, 9
と、右図のようになる。 5: 0, 1, 9
6: 0, 1, 2
7: 0, 1, 2, 3
8: 0, 1, 2, 3, 4
9: 1, 2, 3, 4, 5
これらの候補からそれぞれ2個(両端の0と9では 0: (4), (5), >6<, >7<, >8<
1個)ずつを選ぶ問題となる。4で、0と9を両方選 1: [5], 6, 7, 8, >9<
ぶと0→4→9で順列が終わってしまうため片方し 2: 6, 7, 8, >9<
か選べないから、8を必ず選ぶことが確定する。 3: 7, 8, >9<
同様に5で1が確定する。選択確定に[]、どちら 4: (0), [8], (9)
か一方を選択に()、非選択の確定に><の印をつ 5: (0), [1], (9)
けると、右図になる。 6: >0<, 1, 2
7: >0<, 1, 2, 3
8: >0<, 1, 2, 3, [4]
9: >1<, >2<, >3<, (4), (5)
【nが偶数の場合の>>8の予想を理論的に説明する】(等幅フォントでの表示推奨)
n = 10のとき、最小階差をd >= 6と仮定すると 0: 4, 5, 6, 7, 8
4に隣接できる数はなく、d = 5と仮定すると9だ 1: 5, 6, 7, 8, 9
けなので、数列が途切れてしまって続かない。 2: 6, 7, 8, 9
よってd >= 5はあり得ず、d = 4から調べれば良 3: 7, 8, 9
い。d = 4のとき各数が隣接できる数を列挙する 4: 0, 8, 9
と、右図のようになる。 5: 0, 1, 9
6: 0, 1, 2
7: 0, 1, 2, 3
8: 0, 1, 2, 3, 4
9: 1, 2, 3, 4, 5
これらの候補からそれぞれ2個(両端の0と9では 0: (4), (5), >6<, >7<, >8<
1個)ずつを選ぶ問題となる。4で、0と9を両方選 1: [5], 6, 7, 8, >9<
ぶと0→4→9で順列が終わってしまうため片方し 2: 6, 7, 8, >9<
か選べないから、8を必ず選ぶことが確定する。 3: 7, 8, >9<
同様に5で1が確定する。選択確定に[]、どちら 4: (0), [8], (9)
か一方を選択に()、非選択の確定に><の印をつ 5: (0), [1], (9)
けると、右図になる。 6: >0<, 1, 2
7: >0<, 1, 2, 3
8: >0<, 1, 2, 3, [4]
9: >1<, >2<, >3<, (4), (5)
10デフォルトの名無しさん
2019/11/21(木) 21:53:22.41ID:1mUnuvuP 3と6で候補がそれぞれ2個に絞られたから、それ 0: (4), (5), >6<, >7<, >8<
らが選択確定となり、右図になる。 1: [5], [6], >7<, >8<, >9<
2: [6], 7, >8<, >9<
3: [7], [8], >9<
4: (0), [8], (9)
5: (0), [1], (9)
6: >0<, [1], [2]
7: >0<, >1<, 2, [3]
8: >0<, >1<, >2<, [3], [4]
9: >1<, >2<, >3<, (4), (5)
2と7で残り候補がそれぞれ1個に絞られたから、 0: (4), (5), >6<, >7<, >8<
それらが選択確定となり、結局、可能な並べ方 1: [5], [6], >7<, >8<, >9<
は右図のように0の次に4か5から始まる2通りし 2: [6], [7], >8<, >9<
かないことが分かる。 3: [7], [8], >9<
4: (0), [8], (9)
5: (0), [1], (9)
6: >0<, [1], [2]
7: >0<, >1<, [2], [3]
8: >0<, >1<, >2<, [3], [4]
9: >1<, >2<, >3<, (4), (5)
同様にして、nが偶数の場合を一般化し、中央の2つの数n / 2 - 1とn / 2でそれぞれ
n - 2と1を選択確定、0とn - 1を一方選択とするところから始めて、順々に選択確定
させていくことができる。
>>8の予想を理論的に説明できたので、それに基づくプログラムを晴れて作成すると、
https://ideone.com/D3zdgX になる。
らが選択確定となり、右図になる。 1: [5], [6], >7<, >8<, >9<
2: [6], 7, >8<, >9<
3: [7], [8], >9<
4: (0), [8], (9)
5: (0), [1], (9)
6: >0<, [1], [2]
7: >0<, >1<, 2, [3]
8: >0<, >1<, >2<, [3], [4]
9: >1<, >2<, >3<, (4), (5)
2と7で残り候補がそれぞれ1個に絞られたから、 0: (4), (5), >6<, >7<, >8<
それらが選択確定となり、結局、可能な並べ方 1: [5], [6], >7<, >8<, >9<
は右図のように0の次に4か5から始まる2通りし 2: [6], [7], >8<, >9<
かないことが分かる。 3: [7], [8], >9<
4: (0), [8], (9)
5: (0), [1], (9)
6: >0<, [1], [2]
7: >0<, >1<, [2], [3]
8: >0<, >1<, >2<, [3], [4]
9: >1<, >2<, >3<, (4), (5)
同様にして、nが偶数の場合を一般化し、中央の2つの数n / 2 - 1とn / 2でそれぞれ
n - 2と1を選択確定、0とn - 1を一方選択とするところから始めて、順々に選択確定
させていくことができる。
>>8の予想を理論的に説明できたので、それに基づくプログラムを晴れて作成すると、
https://ideone.com/D3zdgX になる。
11デフォルトの名無しさん
2019/11/21(木) 21:54:24.25ID:1mUnuvuP nが奇数の場合にも偶数の場合と似たようにしてd >= (n - 1) / 2 はあり得ず、
d = (n - 1) / 2 - 1 から調べれば良いことが分かるが、偶数の場合と違い
選択確定できる数はない。>>8の元請け関数のforループの開始値をnではなく
n %/% 2 - 1に置き換えるだけでは、実行時間は5〜6%くらいしか短縮されない。
偶数の場合のような図の作成により、調べる組み合わせを減らしていくことは
できるが、プログラムを書くのはかなり面倒そう。
d = (n - 1) / 2 - 1 から調べれば良いことが分かるが、偶数の場合と違い
選択確定できる数はない。>>8の元請け関数のforループの開始値をnではなく
n %/% 2 - 1に置き換えるだけでは、実行時間は5〜6%くらいしか短縮されない。
偶数の場合のような図の作成により、調べる組み合わせを減らしていくことは
できるが、プログラムを書くのはかなり面倒そう。
2019/11/21(木) 22:40:32.33ID:vr0RSw67
>>4 Squeak Smalltalk。両端固定せず、対称排除なしの虱潰しで。
| min |
min := 0 -> OrderedCollection new.
(0 to: 9) permutationsDo: [:perm |
| curr |
curr := (perm overlappingPairsCollect: #-) abs min.
curr = min key ifTrue: [min value add: perm copy].
curr > min key ifTrue: [min := curr -> (OrderedCollection with: perm copy)]
].
^min value asArray "=> #(#(4 9 3 8 2 7 1 6 0 5) #(5 0 6 1 7 2 8 3 9 4)) "
"Pharo向け => http://ws.stfx.eu/CFADPDGFMTJC ;"
| min |
min := 0 -> OrderedCollection new.
(0 to: 9) permutationsDo: [:perm |
| curr |
curr := (perm overlappingPairsCollect: #-) abs min.
curr = min key ifTrue: [min value add: perm copy].
curr > min key ifTrue: [min := curr -> (OrderedCollection with: perm copy)]
].
^min value asArray "=> #(#(4 9 3 8 2 7 1 6 0 5) #(5 0 6 1 7 2 8 3 9 4)) "
"Pharo向け => http://ws.stfx.eu/CFADPDGFMTJC ;"
2019/11/22(金) 20:06:41.59ID:EyqF2Cmi
お題:読み手を一瞬戸惑わせよ
https://ideone.com/OCwpPB
https://ideone.com/OCwpPB
2019/11/23(土) 05:56:02.57ID:KvoIJqUR
https://twitter.com/AtomDynamics16/status/1197979782719229952
キー入力を一定時間ごとに送るソフトを書いたのだけど、やっぱりグレーですか?
パケット改変して無くて、メモ帳ではうまくいってる。
UOクライアントに使うのが怖くて躊躇している。
https://twitter.com/5chan_nel (5ch newer account)
キー入力を一定時間ごとに送るソフトを書いたのだけど、やっぱりグレーですか?
パケット改変して無くて、メモ帳ではうまくいってる。
UOクライアントに使うのが怖くて躊躇している。
https://twitter.com/5chan_nel (5ch newer account)
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 「中国人の訪日熱は冷めた」 人気旅行先から日本外れる 14日で自粛呼びかけ1カ月 ★2 [蚤の市★]
- 高市首相の答弁書に「台湾有事答えない」と明記 存立危機発言当時 ★7 [蚤の市★]
- 最新版Z級クソ映画ランキングが決定! [牛丼★]
- 【STARTO ENTERTAINMENT】SUPER EIGHTの横山裕、フジ『ドッキリGP』ロケで全治2ヶ月の重傷 [Ailuropoda melanoleuca★]
- 「1800万円の売り上げゼロに…」中国インバウンドに特化の宿の今 ★2 [蚤の市★]
- 公用車カーナビのNHK受信料「全額免除を」 千葉市議会、国に制度創設求める意見書可決 [少考さん★]
- 【朗報】南鳥島のレアアース、中国産の「20倍の純度」青山繁晴氏「日本は資源大国」日本復活のファンファーレが鳴り響く! [673057929]
- 麻婆豆腐食べてる
- 【安倍の実】大誤算!日本企業、円安で苦しむ、、適正為替より大幅に乖離。助けて高市 [219241683]
- 愛国者「釘を使わない日本独自の伝統工法スゴイ!」X民「それ中国起源ですよ」→批判殺到 [834922174]
- 👊😅👊三☁😶‍🌫三⛅🏡
- コーヒー、来年3月から30パーセント値上げへ [709039863]
