[過去ログ] プログラミングのお題スレ Part16 (1002レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
4
(7): 2019/11/18(月)02:35 ID:t9gVOJNg(1) AAS
お題:
画像リンク[jpg]:i.imgur.com
明度が0〜9までのグレーの四角がグラデーション状に横並びにならんでいるとします
この状態だと隣接している四角と四角の明度の差が少ないので境目が見えづらいです
全ての四角同士の明度差ができるだけ大きくなるように並び替えるにはどういうロジックが考えられるでしょう?
四角の数が増えても対応できるような汎用的なロジックが望ましいです
両端は固定のままが理想ですが必須要件ではありません

・ボツ例:1〜4まで一つおきに左右端を入れ替える
(1) 1と8を入れ替える
(2) 2と7はそのまま
省3
6
(4): 2019/11/18(月)11:50 ID:BCetHxzu(1) AAS
>>4
力業で確認したら
>>5 の判定ルールで前者後者ともに最大になるのは
[0, 5, 1, 6, 2, 7, 3, 8, 4, 9] だけみたい、前者 41、後者 4
前者だけだとスコア 41 で 576通り、後者だけだとスコア 4 で 2通り
そのもう一つの解は [0, 4, 8, 3, 7, 2, 6, 1, 5, 9] で前者の判定ルールだとスコア 39

[0, 5, 1, 6, 2, 7, 3, 8, 4, 9] を偶数項と奇数項に分けると…
7
(2): 2019/11/18(月)18:43 ID:DjoGz+4S(1) AAS
>>4 Java (両端固定ではない
外部リンク:ideone.com

>>6
つまりこういうことかの?
両端固定で奇数個の場合はどうなるんじゃろ
8
(4): 2019/11/18(月)20:03 ID:EbN/HVpO(1) AAS
>>4
両端固定で最小隣接差を最大化する条件で回答する。Rですべての並べ方を虱潰しに
調べるのが 外部リンク:ideone.com で、結果は>>6が言う通りになる。
n = 10 ではすぐに終わるが、それを超えると時間がかなりかかるし、環境によっては
メモリ不足になる。

もう少し効率的に調べるのが 外部リンク:ideone.com で、n = 16 までは
すぐに終わる。それを超えると時間がかかるように段々なるので、さらなる効率化が
必要。

n = 10 と n = 16 の結果から、nが偶数の場合は>>6が言うように規則性が見られ、
nが大きくなっても並べ方は常に2通りで、例えば n = 256 のときは
省3
9
(3): 2019/11/21(木)21:52 ID:1mUnuvuP(1/3) AAS
AA省
12: 2019/11/21(木)22:40 ID:vr0RSw67(1) AAS
>>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)) "
省1
16: 2019/11/23(土)22:51 ID:ubdNKuk5(1) AAS
>>4>>11の方式で求めるプログラムを書いてみた: 外部リンク:ideone.com

nが偶数の場合、n = 8までは>>8の2番目のプログラムと比べて遅いが、n = 10, 12,
14, 16, 18, 20ではそれぞれ1.78倍、7.16倍、49.8倍、327倍、3120倍、30800倍の
速度になり、差がどんどん開いていく。n = 256でも1秒未満で求められる。

nが奇数の場合、n = 11までは遅いが、n = 13で同程度になり、n = 15, 17, 19, 21では
それぞれ3.25倍、12.6倍、58.8倍、325倍の速度で、差がやはりどんどん開いていく。
nが2大きくなるごとに並べ方の通り数が2倍以上に増えるようなので、n = 255では
どんなアルゴリズムを使ってもコンピュータの性能限界をはるかに超えてしまう。
227: 2019/12/10(火)23:47 ID:qBy9puuu(4/4) AAS
あとから追加されそうな条件の
仮に全部0以上の整数とした時に
5*5*5>125,100>4*4*4のメモ代り
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.033s