Wektory, i ruch w czterech kierunkach

0

Cześć!

Mam dwie tablice [a, b] i [x, y]* - gdzie a,b,x,y są liczbami całkowitymi, nieujemnymi.*
Które oznaczają położenia kwadratów na dwuwymiarowej planszy.
Potrzebuję napisać funkcję która zwróci true tylko
jeśli jeden do drugiego jest w relacji +1 na północ, południe, zachód , wschód to znaczy:
a+1= x; albo:
a-1 = x; albo:
b+1 = y albo:
b-1 = y
Jeśli wyłącznie jeden z podanych warunków zwraca true to funkcja powinna zwrócić** true**
W pozostałych wypadkach false;

Czy wiecie jak można to napisać bez dużej ilości if'ów ?

0

Coś takiego może?

for delta in [ -1, +1 ]
  if a + delta == x || b + delta == y
    return true

return false

Choć IMO jest to porównywalnie czytelne do prostego:

if a - 1 == x || b - 1 == y
  return true

if a + 1 == x || b + 1 == y
  return true

return false

Czy nawet:

return a - 1 == x || a + 1 == x
    || b - 1 == y || b + 1 == y
0

Niestety nie o to mi chodziło. Te funkcje dopuszczają ruch po przekątnej.
Jeśli np. a+1 = x && b+1 = y to powinno zwracać false.

3
wynik = (a+1==x) + (a-1==x) + (b+1==y) + (b-1==y);
if (wynik==1) ...
2

może coś takiego?

Math.abs(x - a) + Math.abs(y - b) == 1

1 użytkowników online, w tym zalogowanych: 0, gości: 1