2012-03-28 2 views
0

두 셀의 좌표를보고 인접하거나 인접하지 않으면 부울 응답을 반환하는 함수를 작성하려고합니다.haskell에서 인접 셀 찾기

data Coord = Coord {xCoord, yCoord :: Integer} 
deriving (Ord, Eq, Show, Read) 

내 기능들이 이웃 있는지 확인 (이 내가 도움이 필요한 부분입니다) 두 개의 정수와를 취할 필요가있다 :

나는 이것 때문에 생각하고있다. 내가 작성한 모든 것은 깨지게 될 것이다. 왜냐하면 두 개의 인접하지 않은 셀이 참을 수 있기 때문이다.

도와주세요. =]

+1

'내 기능은 두 개의 _ 코디네이트 _가 필요합니다'라고 말한 것 같습니다. 맞습니까? –

+0

그래, 두 좌표를 봐야 해. 그러나 그들은 Integers로 표현되고 있습니까? – GnomeaD

+0

당신의 질문에있는 코드는 그것들이 x와 y 값에 대해 정수를 갖는'Coord's로 표현되고 있음을 암시합니다. (당신이 이미 가지고있는 코드를 게시하여 (질문에 편집하십시오.) 사람들이 당신을 더 효과적으로 도울 수 있습니다 :)) – huon

답변

1

I 그들이 동일하지 않은 경우 두 좌표 감각으로 인접한 추측하고 X 그들 사이 Y 방향의 거리가 가장 하나인가? 그렇다면 사용할 수 있습니다

adjacent :: Coord -> Coord -> Bool 
adjacent p q | p == q = False 
adjacent (Coord x1 y1) (Coord x2 y2) = abs (x1 - x2) <= 1 && abs (y1 - y2) <= 1 
+1

인접한 다른 해석은 'x'와 'y'중 하나는 동일하고 다른 하나는 1만큼 다릅니다. 그러면 'abs (x1-x2) + abs (y1-y2) == 1'이됩니다. 평등 검사는 불필요하다. –

+0

@DanielFischer : 네, 맞습니다. 그 별도의 대답을해야합니다. 나는 OP의 실제 해석에 관해 모른다. 그래서 당신의 방법은 내가 제안한 것보다 더 적절할 것이다. –

+0

별도의 답변을 드릴 가치가 없습니다. 너의 것에 그것을 추가하고 그/그녀의 기준을 충족시키는 OP 선택을 시키십시오. –