Number Of Pairs
I am trying to write a code that takes m. a, a list of integers n. b, an integer and returns the number of pairs (m,n) with m,n in a such that |m-n|<=b. So far, I've got thi
Solution 1:
Yours doesn't make sense. No idea what you're trying with len(a, b)
, but it's not even allowed, since len
takes only one argument. And returning something just when you found the first counting pair? Here's a fix:
def close_pairs(l, d):
ctr =0for a,b in permutations(l, 2):
if (a - b) <=d and(b - a) <= d:
ctr += 1return ctr
And here's how I'd do it:
defclose_pairs(l, d):
returnsum(abs(a-b) <= d for a, b in permutations(l, 2))
Solution 2:
from itertools import permutations
defnearest_pairs(a, b):
for m, n in permutations(a, 2):
ifabs(m - n) <= b:
yield (m, n)
>>> list(nearest_pairs([1, 2, 5], 3))
[(1, 2), (2, 1), (2, 5), (5, 2)]
>>> list(nearest_pairs([1, 2, 5], 2))
[(1, 2), (2, 1)]
If you just want the count:
defnearest_pairs_count(a, b):
c, l = 0, len(a)
for i inrange(l):
for j inrange(i + 1, l):
ifabs(a[i] - a[j]) <= b:
c += 2return c
Post a Comment for "Number Of Pairs"