[過去ログ] 関数型プログラミング言語Haskell Part33 (1002レス)
上下前次1-新
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
813: 2021/04/17(土)18:14 ID:+4ymujjn(1/2) AAS
リストを使って漸化式
r_n = max_{1 <= i < n} (p_i + r_{n-i}), r_0 = 0
を解くプログラムを書いたのですがリストをArrayに変えたとたん動かなくなりました
どうやらmax'にifが使われているのが原因のようなのですが動かなくなる理由が分かりません
どなたか分かる方いますか?
プログラムは以下の通りです
import Data.Array
p = [1,5,8,9,10,17,17,20,24,30]
max' (i,q) (i',q') = if q < q' then (i',q') else (i,q)
solver p = array (0,length p) $ (0,0):[ -- 動かない
foldr1 max' [(i, p !! (i-1) + rs ! (j-i)) | i <- [1..j]]
| j <- [1..length p]
] where rs = solver p
solver' p = (0,0):[ -- 動く
foldr1 max' [(i, p !! (i-1) + (snd $ rs' !! (j-i))) | i <- [1..j]]
| j <- [1..length p]
] where rs' = solver' p
814: 2021/04/17(土)18:16 ID:+4ymujjn(2/2) AAS
動かないと言うのはghciに入力すると結果がいつまで経っても出力されない状況を指します
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.034s