Mina - 1 year ago 51

Javascript Question

We're sorry if it sounds too noob. But this is our life's first encounter with Python.

We have got a python function like this:

`def m(n,k,c=0):x,y=n;return c if n==k else 7*(c>6)or min(m((x+a,y+b),k,c+1)for a,b in[(1,2),(1,-2),(-1,2),(-1,-2),(2,1),(2,-1),(-2,1),(-2,-1)])`

which is being called like this:

`print m((1,2), (5,6))`

In order to understand it we were trying to add line breaks like this:

`def m(n,k,c=0):x,y=n;return c`

if n==k else 7*(c>6) or min(m((x+a,y+b),k,c+1)for a,b in[(1,2),(1,-2),(-1,2),(-1,-2),(2,1),(2,-1),(-2,1),(-2,-1)])

We're not understanding why is just a

Once we understand this, probably we shall be able to convert this program to javascript:

`function m(n, k, c = 0) {`

x,

y = n;

return c

if (n == k) {

} else {

7 * (c > 6) or Math.min(m((x + a, y + b), k, c + 1) for a, b in [(1, 2), (1, -2), (-1, 2), (-1, -2), (2, 1), (2, -1), (-2, 1), (-2, -1)])

}

}

Recommended for you: Get network issues from **WhatsUp Gold**. **Not end users.**

Answer Source

When you define a function, either the function definition must be all on the same line (as in your original example), or the header `def m(n,k,c=0):`

must be on the line of its own, and the remaining statements must be on the next line(s). You cannot mix-and-match.

```
def m(n, k, c=0):
x, y = n
return c if n==k else \
7 * (c > 6) or min(m((x + a, y + b), k, c + 1)
for a,b in [(1,2), (1,-2), (-1,2), (-1,-2),
(2,1), (2,-1), (-2,1), (-2,-1)])
m((1,2), 3)
#7
```

Recommended from our users: **Dynamic Network Monitoring from WhatsUp Gold from IPSwitch**. ** Free Download**