[過去ログ] プログラミングのお題スレ Part9 [無断転載禁止]©2ch.net (1002レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
299
(3): デフォルトの名無しさん [sage] 2017/06/26(月)23:40 ID:JhsaOf6q(1/3)
>>296 Perl
http://ideone.com/iUAYUy

実行結果は

$ perl 9_296.pl
12_3: 6
313__: 10 (合わない…orz)
4_35_1264_23_434: 62 (合わない…orz)
123456789123456789: 98
88967472612377988186: 151 (合わない…orz)
19898693316679441672: 170
93769682716711132249893: 176

となり、半分が合わない。
そのうち 313__ を手で研鑽すると 10 になるのだが、
313__ は本当に8になるの?
300
(1): デフォルトの名無しさん [sage] 2017/06/26(月)23:41 ID:JhsaOf6q(2/3)
>>299
研鑽じゃねぇや手で起算な。
303: デフォルトの名無しさん [sage] 2017/06/27(火)00:02 ID:5fkiI7k4(1)
>>302
そっか、最初の3を食べちゃったら最短時間にならないな
>>299は最初の皿からダボハゼみたいに食いつくので必ずしも最短にはならないな
きっと腹が減りすぎていたんだろう…orz
318
(12): デフォルトの名無しさん [sage] 2017/07/04(火)21:28 ID:QK6Kginy(1/2)
>>296 >>299 Perl5
http://ideone.com/0yJ5U9

リスト処理ではなく、先ずは正規表現と文字列処理を使って書いてみた。

31…の3のように、食べているうちに後続の数値皿が通り過ぎてしまうような、
取りこぼしを起こし得る皿では、その数値を食べるか、あるいはスルーするか、
再帰的に両方に分岐し、木構造で計算しているが、
逆に食べている間に飛び越しを起こさないところでは、分岐が不要なので
来た順に直ちに食べることによって、枝分かれの過剰な細分化を抑制した。

それでも全探査すると、サンプルデータの三つ目まではすぐ解けるが、
四つめ以降は時間がかかりいつ終わるか分からない。

そこで、検索された食事秒数の最小値の更新状況を記録し、
同じ最小値が一定回数以上連続して繰り返し検出されるようになったら
最短値に収束したと見なし、探索を打ち切ることによって短時間で
解を出力できるようにした。打ち切り上限は10をハードコードしてあるが
今回のサンプルデータについては4か5で十分そうだ。

なお、23_ のような、2を食べることによって飛び越しを起こすポイントの
一番最後のものは,食べずにスルーして先に2を食べた方が、
次の周で早く食べ終わることは明らかだ。
これを演繹的に繰り返して、遡ってゆけば、上記のように木構造に
わたって動的に計算して探索しなくても、静的に求解できそうな気がしたが
難しそうなので、見送った。
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.035s