login
Hamming distance between (n-1)! and n!.
16

%I #29 Oct 24 2024 23:51:52

%S 0,2,1,4,2,4,4,6,4,9,8,15,12,16,14,12,16,23,26,23,21,29,31,34,31,33,

%T 33,44,32,38,42,46,52,51,45,55,55,59,55,59,51,82,65,83,74,75,80,80,80,

%U 74,87,104,86,91,98,90,81,103,104,98,112,104,111,116,111,132

%N Hamming distance between (n-1)! and n!.

%C Problem: To find a better lower estimate for a(n) than the trivial one, which is a(n) >= A000120(floor(log_2(n))).

%C Note that this trivial estimate yields unboundedness of the sequence.

%H Alois P. Heinz, <a href="/A205509/b205509.txt">Table of n, a(n) for n = 1..1000</a>

%e Since 5!=(0001111000)_2 and 6!=(1011010000)_2, then the number of different binary digits is 4. Therefore, a(6)=4.

%p read("transforms") :

%p Hamming := proc(a,b)

%p XORnos(a,b) ;

%p wt(%) ;

%p end proc:

%p A205509 := proc(n)

%p Hamming((n-1)!,n!) ;

%p end proc: # _R. J. Mathar_, Apr 02 2012

%t nn = 100; Table[b2 = IntegerDigits[n!, 2]; b1 = IntegerDigits[(n - 1)!, 2, Length[b2]]; Total[Abs[b1 - b2]], {n, nn}] (* _T. D. Noe_, Jan 31 2012 *)

%o (Sage)

%o def A205509(n) :

%o f = bin(factorial(n)).lstrip("0b")

%o g = bin(factorial(n-1)).lstrip("0b")

%o h = "".zfill(len(f)-len(g)) + g

%o return sum(a != b for a, b in zip(f, h))

%o [A205509(k) for k in (1..66)] # Peter Luschny, Jan 31 2012

%o (Python 3.10+)

%o from math import factorial

%o def A205509(n): return ((f:=factorial(n-1))^f*n).bit_count() # _Chai Wah Wu_, Jul 13 2022

%Y Cf. A001511.

%K nonn,base

%O 1,2

%A _Vladimir Shevelev_, Jan 28 2012