Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Intuition on the "find non-triplicate" problem #1

Open
fenomas opened this issue Jan 7, 2020 · 1 comment
Open

Intuition on the "find non-triplicate" problem #1

fenomas opened this issue Jan 7, 2020 · 1 comment

Comments

@fenomas
Copy link

fenomas commented Jan 7, 2020

Hey, thanks for posting this cool repo! This comment is in regards to find_non_triplicate_int.py. I love the generality of your final solution, but I think there's a simpler intuition towards it (which I imagine is probably the "intended answer" that whoever originally posed the problem had in mind).

I reckon it like this: consider that if the problem asked us to find the non-duplicate element, we could simply XOR all the list elements together, since XORing by the same element twice leaves the running total unchanged. Since this problem asks for a non-triplicate element, we could use the same approach if we had an operation that cancels itself out when applied three times. One can then note that XOR is equivalent to doing a digital sum (i.e. addition without carrying) in base 2, leading to the realization that digital sum in base 3 fits the bill.

Long story short, one should be able to add together all the input elements in base 3 without carrying, and the result should be the non-triplicate element.

(Apologies if you already saw this, but purposely left it out because your version is more general and satisfying 😁)

@tmoertel
Copy link
Owner

Thanks, Andy. I wrote my explanation the way I did because that's the way I approached the problem. I really like the approach that you describe also. I'll leave this issue open so that other people can see it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants