2017-05-16 14 views
1

3つのキーと3つのロックがあり、私は可能な試行を表示するコードを書く必要があります。ルールは次のとおりです。リストの理解の条件は、可能性を見つける

  • 第2のキーは、最初のキーの前に置くことはできません。
  • キーは複数回使用できません。
  • 最初のキーを最初のキーとして配置することはできません。
  • 3 - 2 - 1
  • の順番に配置することはできません。ヒントとして、[(x、y、z)| X < - [1..3]、]

私は方法でこのコードを変更する代わりに、という "FST < - [3]" それは言います。 "fstは[1]にすることはできません" と私はまた、2の前に来ることができないことを付け加えたいと思っています。(elemIndex 2(x、y、z))>(elemIndex 1(x、y、z)) しかしそれはうまくいかなかった。私はいくつかのアイデアを感謝します。

d = [(x,y,z) | x <- [1..3], y <- [1..3], z <-[1..3], fst <- [3] , tail <- 1], x /= y, y /= z, x /= z] 
+2

ファーストを書くことができると主張することができ、あなたのブラケットが表示されません、Y/= 2]

を与えます一致する。第二に、変数 'fst'と' tail'の名前を意図的に指定しているのですか、あるいはこれらを関数として使うつもりでしたか?このコードで何をしようとしていますか?要件は何ですか? –

+0

仕様が何であるかは私には分かりません。あなたが達成したいもの、達成したいものを最初に述べてください、第2の部分です。 –

+0

私はそれらを関数として使いたいと思っていました。 - 私はその質問を編集しましたので、今はもっと明確になることを願っています – Pelin

答えて

1

あなたはこのようなもの使用することができます

d = [(3, y, z) | y <- [1..2], z <-[1..2], y /= z, y /= 2] 

[(3,1,2)] 

説明

最初のものとして配置することができない最初のキーを提供します。

2番目のキーは、最初の1の前に置くことができませんでした。

xは1又は2であることができず、従ってこの無キーが複数回試みないことができる

ため

[(3, y, z) | y <- [1..2], z <-[1..2] 

を与える3でなければならないことを意味します。

我々はまた、

, y != z 

最後に

2番目のキーは、最初の1の前に置くことができませんでしてきました。

は実際には、いくつかの考えで、あなたはあなただけ

d = [(3, 1, 2)] 
関連する問題