1

アイテムのリストのうち、他のリストに含まれていないものを並べ替えるタスクが与えられました。

この場合、銀行口座を持たないのは NI 番号です。

種類は次のとおりです。

    type NI = Int
    type Age = Int
    type Balance = Int
    type Person = (NI, Age, Balance)
    type Bank = [Person]
    type Market = [Bank]
    type Pop = [NI]

bankFree 関数は次のとおりです。

    bankFree :: Pop -> Market -> Pop
    bankFree a b = filter (map op3 b) a
        where 
            op3 [(x, y, z)] = x

私はここからどこへ行くのか完全に困惑しています。リストからマップ操作の要素を削除するには、ポップリストで作業する必要があることを知っています。私は notElem に適合し、他のさまざまなテストを実行しようとしましたが、役に立ちませんでした。

これについて何か助けていただければ幸いです。

4

1 に答える 1

2

プログラミングのコツは、複雑な問題をより単純な問題に分割する方法を見つけることです。単純な問題の解決策から複雑な問題への解決策を構築するという逆の方法で練習すると、この直感を得やすくなるかもしれません。そうすれば、問題が最も効果的に単純化される方法を感じることができます。

この問題は簡単に分解できます。最も単純な問題から始めて、上に拡張しましょう。

  • この問題を 1 人の NI と 1 人の人で解決できますか? これは一つの機能です
  • このソリューションを 1 つの NI と複数の人 (1 つの銀行) に拡張できますか? これは別の関数です - おそらく前のものを使用しています
  • このソリューションを 1 つの NI と多くの銀行 (1 つの市場) に拡張できますか? さらに別の機能 - おそらく前のものを使用
  • このソリューションをすべての NI (1 つのポップ) に適用できますか? もう1つの機能 - おそらく前のものを使用する

それでおしまい。

于 2013-09-28T10:13:34.073 に答える