2012-03-28 20 views
0

2つのセルの座標を見て、それらが隣接しているかどうかを判断する関数を作成しようとしています。haskellの隣接セルを見つける

私はこれのためにすることを考えています:

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

My機能は、2つの整数を取り、その後、(これは私が助けを必要と一部である)は、隣接していることを確認する必要があります。私が書いたものはすべて壊れてしまい、2つの非隣接セルが真を返すことも可能になるからです。

お願いします。 =]

+1

「私の機能は2つの_coordinates_を取る必要がある」と言っていたでしょうか? –

+0

ええ、それは2つの座標を見る必要があります。しかし、彼らはIntegersとして表現されていますか? – GnomeaD

+0

あなたの質問にあるコードは、 'Coord'sとして表現されていることを示唆しています。これは、xとyの値に対して' Integer'を持っています。 (あなたがすでに持っているコードを投稿して(質問に編集してください)、人々があなたをより効果的に助けることができます:)) – huon

答えて

1

あなたが意味するところでは、2つの座標が等しくない場合、それらの間の距離がX のY方向の距離が最大1であると思いますか?もしそうなら、あなたは使うことができる

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の選択をさせてください。 –

関連する問題