2011-11-08 7 views
5

私はフロートのリストのリストを操作しなければならないという問題があります。 [[浮く]]。これらの浮動小数点のリストは長さが4です。最初の3つの要素がテストされた場所で重複を削除したいが、4番目の要素は無視する。これは、マルチパートの問題の最後の部分です。私は、これを使用する方法を考えながら、頭の中で頭を叩きました。私は何か役に立つ情報を見つけることができません。nubByの使い方を理解するのに苦労しています

fixDuplicates :: [[Float]] -> [[Float]] 
fixDuplcates [[]] = [[]] 
fixDuplicates x = nubBy ? 
+2

トピックのコメント:4番目の数字が特殊な場合は、データ型を定義するときに何らかの形でそれを正当化する必要がありますか?種類の値を使用する代わりにレコードを格納するために意味のある名前を持つ構造体を使用する方法の種類。 – hugomg

+0

データ型はあらかじめ定義されており、私は与えられたものと一緒に作業する必要があります –

+0

変換関数を作成することができます;) – hugomg

答えて

10

nubByは、要素の同等性の比較に使用する関数を使用します。等価の定義は、最初の3つの要素が一致すれば2つのリストが等しいことです。

fixDuplicates xs = nubBy firstThreeMatch xs 
    where firstThreeMatch ys zs = take 3 ys == take 3 zs 
+8

繰り返しを削除し、追加で 'nubBy(===)\' on \ 'take 3) 'Data.Function'のインポート – ephemient

+0

完璧、ありがとう、私のプログラムは今完璧に動作します。 –

関連する問題