2017-05-16 6 views
1

3 개의 키와 3 개의 잠금이 있으며 가능한 시도를 표시하는 코드를 작성해야합니다. 규칙은 다음과 같습니다.가능성을 찾는 목록 이해력의 조건

  • 첫 번째 키 앞에 두 번째 키를 배치 할 수 없습니다.
  • 키를 두 번 이상 시도 할 수 없습니다.
  • 첫 번째 키는 첫 번째 키로 사용할 수 없습니다.
  • 및 3 - 2 - 1
  • 순서로 배치 할 수 없으며 팁으로 다음과 같이 표시됩니다. [(x, y, z) | X < - [1..3]]

내가 대신, 방법이이 코드를 변경하려면 "FST < - [3]"은 말한다; "fst는 [1]이 될 수 없습니다." 그리고 나는 2가 1 앞에 올 수 없다고 덧붙이고 싶다. (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

에게 먼저 쓸 수 있습니다 주장 할 수 일치해라. 둘째, 의도적으로 변수'fst'와'tail'의 이름을 지정 했습니까? 아니면 이것들을 함수로 사용하려고 했습니까? 이 코드로 무엇을하려합니까? 요구 사항은 무엇입니까? –

+0

사양이 무엇인지는 분명하지 않습니다. 먼저 달성하고자하는 것을 말하고, 달성하려는 방법은 두 번째 부분입니다. –

+0

나는 그것들을 함수로 사용하고 싶었다. - 질문을 편집 했으니 이제는 더 명확 해 졌으면 좋겠다. – Pelin

답변

1

이 같은 것을 사용할 수 있습니다

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

먼저 키가 첫 번째로 배치 할 수 없습니다 설명

[(3,1,2)] 

준다.

두 번째 키는 첫 번째 앞에 배치 할 수 없습니다 않습니다.

x가 1 또는 2가 될 수 없습니다, 따라서 3 있어야한다는 의미이 없음 키를 두 번 이상 시도 할 수 없습니다

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

부터 제공합니다.

우리는 또한

, y != z 

마지막

가 두 번째로 중요한 첫 번째 앞에 배치 할 수 없습니다 적이 없다.

을 제공, Y/= 2]

사실, 어떤 생각으로, 당신은 당신의 괄호가 표시되지 않습니다 그냥

d = [(3, 1, 2)]