News for hackers. Stuff that matters.
Re:Want a job working on mongoDB? Your first online intervie... by pedrocr on Saturday April 23, 2011 @09:40PM (#2478076)
>note that m XOR d is basically m + d without the carry bit

This isn't true. XOR is addition without any carry bits so there are several solutions that have the same XOR and difference

Re:Want a job working on mongoDB? Your first online intervie... by biobot on Saturday April 23, 2011 @09:57PM (#2478099)
There are at most 2 solutions: if m XOR d = a then either m+d = a or m+d = a+N.

With the combination of m-d = b, you will find m and d.

If both of them satisfied ( remember m and d are bounded by 1 and N) then we actually have two solutions.

Re:Want a job working on mongoDB? Your first online intervie... by pedrocr on Saturday April 23, 2011 @10:14PM (#2478121)
Here's a counterexample.

Sequence is [1, 2, 3, 4, 6, 6, 7, 8, 9, 10] so m = 5 and d = 6

  diff = 5-6 = -1
  xor = 5^6 = 3

  1-2 = -1
  1^2 = 3

  5-6 = -1
  5^6 = 3

  9-10 = -1
  9^10 = 3
So three different combinations, within N, that obey the two constraints
Re:Want a job working on mongoDB? Your first online intervie... by biobot on Sunday April 24, 2011 @12:02AM (#2478240)
OK. I think I find a way around.

Assume d XOR m = a. Find k = position of the first bit (from MSB to LSB) in a. Then d + m can be in [a + 2^(k+1),a + 2^(k+2),...,a + 2^63].

We will have less than 63 cases. In each case, after we find d and m, make sure they are in range and then linear test.

So in the end, we may need to run at most 63+3 = 66 N. But it still linear though.

Re:Want a job working on mongoDB? Your first online intervie... by biobot on Saturday April 23, 2011 @11:20PM (#2478197)
Make sense!

That fails my solution!