入力は9要素のリストです。
最初の8要素の合計/ 10の剰余(以下のアルゴリズムで、tajの2行目)が最後の(9番目の)要素と等しいかどうかを確認したいと思います。リスト要素の合計がハスケルの最後の要素と等しいかどうかをチェックする方法は?
私のプログラムでは残りがカウントされますが、チェックする方法はわかりません。私はいくつかの方法を試しました。
oddS :: Int-> Int
oddS x = x*3
evenS :: Int -> Int
evenS y = y*7
taj :: [Int] -> Int
taj (a:b:c:d:e:f:g:h:w) = (oddS a + evenS b + oddS c + evenS d + oddS e + evenS f + oddS g + evenS h) `mod` 10
私はそれが最良の解決策ではないことを知っていますが、それは仕事です。
ウィレムの助けを借りた代替ソリューション。
check :: [Int] -> Bool
check xs = xn == taj xs
where xn = last xs
'oddS'と' evenS'の目的は何ですか?合計を計算したいのであれば、なぜ3と7で乗算するのか分かりません。 –
@WillemVanOnsem検証アルゴリズムです。それはそのように機能します。 入力リストは、最初の8要素(奇数インデックス要素* 3と偶数インデックス要素* 7)のmod 10が最後の要素と等しい場合に有効です。 – George312
@ Georg321:それはどこに質問に記載されていますか? –