プログラミングのお題スレ Part22 (863レス)
前次1-
抽出解除 レス栞

リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
537
(3): 9 [sage] 02/07(金)21:20 ID:dMuAEB5V(1/4)
>510 Perl5

https://ideone.com/lceN9R
539: 9 [sage] 02/07(金)23:00 ID:dMuAEB5V(2/4)
>>537
しくった、これ一番短い範囲ではなく間違って一番長い範囲を検出してる。
サンプルデータではたまたま同じ解になるようで、間違いを見落としてしまった。

それから、一番長い(短いにすべきだったが)範囲の検索にわざわざ候補listをsortして[0]番目を
取得しているが無駄だし規模が大きくなると効率よくない

時間あったら直しますわ〜
542: 538 [sage] 02/07(金)23:08 ID:ovhX7KXo(2/2)
>>540
>>537さん方式は動的にメモリとらなくていいのがいいよね、清々しくていいよね
あと実行時間の値はまぁアテにはならんので参考程度にw
544
(2): 9 [sage] 02/08(土)00:22 ID:vma3KbbM(1/2)
>>510 Perl5、>>537 の修正版

https://ideone.com/klqLux

修正点
>>537では間違って一番長い範囲を検出していたが、一番短い範囲に修正した。(サンプルデータではそれらの解はたまたま一致)
・パターンが3文字であることに依存する定数「2(=3 -1 )」をハードコードしている箇所があったので、パターン文字数次第で処理するように修正
・検出した候補文字列リストのうち一番短い物の検索のためにわざわざ候補リスト全体をsortするのをやめて
 reduceによって長さが一番短い文字列を検索するように修正

List::Utils は言語処理系にデフォルトで付属のコアモジュール、
List::MoreUtils はCPANのオプションノジュールだがideoneのperlにはインスコされていたので使っちゃいましたテヘペロ

なお、候補文字列リストを作らず、ループの最内ifの中で一番短い文字列だけを記録していく様に記述すれば
大規模問題で若干効率が良くなるだろうけど、
まあいいや、もういいや。
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.037s