[過去ログ]
関数型プログラミング言語Haskell Part16 (978レス)
関数型プログラミング言語Haskell Part16 http://echo.5ch.net/test/read.cgi/tech/1317958045/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
778: デフォルトの名無しさん [sage] 2011/12/21(水) 19:40:34.62 >>767 data Where = Before | Here | After whereIncluded :: (Eq a) => [a] -> [a] -> a -> Where whereIncluded _ [] _ = After whereIncluded (a:as) (b:bs) x | x == b = Here | x == a = if elem x bs then Here else Before | otherwise = whereIncluded as bs x [説明] ・listA と listB それぞれの head と x を比較する ・listB の head と x が同じなら、x は listB に含まれる ・そうではなく listA の head と x が同じ場合、 x が listB に含まれていなければ、x は後方にある ・どちらの head とも異なっていれば、両者の tail に対して同計算を繰り返す ・計算を繰り返した結果 listB の tail が空なら、x は後方にある 提示された条件を全て完全に満たすものとして式を書いたので、 エラー処理は省いてある http://echo.5ch.net/test/read.cgi/tech/1317958045/778
779: 767 [sage] 2011/12/21(水) 21:02:56.56 >>770,771,772,778 まさかこんなに素早く返事があるとは思ってなくて 反応遅れました。すみません。 具体的なコード例までわざわざありがとうございます。 見事に誰一人としてelemIndexなんて使ってないですね……。 順序を調べる、という発想自体を捨てないと駄目だということが よくわかりました。 >>775 個人的には770さんの例以外は見て何をしているかは すぐ把握できました。 >>776 777さんが返してくれていますが、listAは整列とは限らないです。 listAの位置に基づいてlistBをソートすれば、listBは確かに連続 部分列になります。 というわけで、どうも皆さんありがとうございました。 http://echo.5ch.net/test/read.cgi/tech/1317958045/779
780: デフォルトの名無しさん [sage] 2011/12/22(木) 05:28:49.45 >>778 whereIncluded [1..6] [5] 4 = whereIncluded [2..6] [] 4 = After http://echo.5ch.net/test/read.cgi/tech/1317958045/780
782: 778 [sage] 2011/12/22(木) 07:52:15.94 >>780 に指摘されて修正案を考えてる時に、 全然違うアイデアが思い浮かんだんだが、 これは今まで出てきたかな(特に >>771 と同類か) listA から x の位置を探す x の位置の直後から http://echo.5ch.net/test/read.cgi/tech/1317958045/782
783: 778 [sage] 2011/12/22(木) 07:55:25.77 途中でレスってしまった >>780 に指摘されて修正案を考えてる時に、 全然違うアイデアが思い浮かんだんだが、 これは今まで出てきたかな(特に >>771 と同類か) listA から x の位置を探す x の位置の直後から listB の要素数分の要素をリストとして取り出す listC x が listB に無い場合、head listB が listC に有れば「前」 head listB が listC に無ければ「後ろ」 http://echo.5ch.net/test/read.cgi/tech/1317958045/783
784: 778 [sage] 2011/12/22(木) 08:55:12.79 >>783 訂正 > x の位置の直後から listB の要素数分の要素をリストとして取り出す listC x の位置の直後から末端までをリストとして取り出す listC http://echo.5ch.net/test/read.cgi/tech/1317958045/784
785: 778 [sage] 2011/12/22(木) 12:54:37.61 >>783,784 式にするとこんな感じ whereIncluded :: (Eq a) => [a] -> [a] -> a -> Where whereIncluded as bs@(b:_) x | elem x bs = Here | elem b as' = After | otherwise = Before where as' = takeWhile (/=x) as ダサいかな http://echo.5ch.net/test/read.cgi/tech/1317958045/785
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.039s