Re: Number of Differing Digits & Another Problem (want to see different ways it can be done)
- To: mathgroup at smc.vnet.net
- Subject: [mg76330] Re: Number of Differing Digits & Another Problem (want to see different ways it can be done)
- From: dimitris <dimmechan at yahoo.com>
- Date: Sun, 20 May 2007 02:18:31 -0400 (EDT)
- References: <f2mf5b$mbm$1@smc.vnet.net>
Various alternatives exist. Below two are shown. It is easy to make your user defined function from them. I will just show the steps of the respective code. 1) In[354]:= o1 = {IntegerDigits[20, 2, 5], IntegerDigits[31, 2, 5]} MapThread[Equal, o] Count[%, False] Out[354]= {{1, 0, 1, 0, 0}, {1, 1, 1, 1, 1}} Out[355]= {True, False, True, False, False} Out[356]= 3 2) In[360]:= o2 = {IntegerDigits[126, 2, 7], IntegerDigits[357, 2, 7]} Transpose[%] DeleteCases[%, {a_, a_}] Length[%] Out[360]= {{1, 1, 1, 1, 1, 1, 0}, {1, 1, 0, 0, 1, 0, 1}} Out[361]= {{1, 1}, {1, 1}, {1, 0}, {1, 0}, {1, 1}, {1, 0}, {0, 1}} Out[362]= {{1, 0}, {1, 0}, {1, 0}, {0, 1}} Out[363]= 4 Dimitris / VenDiddy at gmail.com : > I just purchased a copy of Mathematica and I've been learning it for > about a week now. You can expect that I will be posting a lot of > questions. One thing I've noticed is that there are so many different > ways to do the same thing! > > Here is a function I came up with that calculates how many binary > digits two numbers differ in: > > BitDifferences[a_, b_, n_] := > Count[Equal @@@ > Thread[{IntegerDigits[a, 2, n], IntegerDigits[b, 2, n]}], True] > > For example 5 = 101 differs from 6 = 111 by one digit (the middle > digit). > > I want to see how you would do it so I can broaden my Mathematica > perspective. > > Thanks.