%I #16 Jun 11 2017 06:43:51
%S 0,1,0,2,3,0,0,4,5,0,6,7,0,0,0,8,9,0,10,11,0,0,12,13,0,14,15,0,0,0,0,
%T 16,17,0,18,19,0,0,20,21,0,22,23,0,0,0,24,25,0,26,27,0,0,28,29,0,30,
%U 31,0,0,0,0,0,32,33,0,34,35,0,0,36,37,0,38,39,0,0,0,40,41,0,42,43,0,0,44,45,0,46,47,0
%N Inverse function for injection A005187.
%C a(0)=0; thereafter if n occurs as a term of A005187, a(n)=its position in A005187, otherwise zero. This works as an "inverse" function for A005187 in a sense that a(A005187(n)) = n for all n.
%C a(n)*A234017(n) = 0 for all n.
%H Antti Karttunen, <a href="/A213714/b213714.txt">Table of n, a(n) for n = 0..8192</a>
%F a(0)=0, for n>0, a(n) = A079559(n) * (A046699(n+2)-1) [With A046699's October 2012 starting offset. Incorrect indexing shown in this formula corrected by _Antti Karttunen_, Dec 18 2013]
%o (MIT/GNU Scheme)
%o (define (A213714 n) (if (< n 1) 0 (* (A079559 n) (- (A046699 (+ n 2)) 1)))) ;; With A046699's October 2012 starting offset.
%o (Haskell)
%o import Data.List (genericIndex)
%o a213714 n = genericIndex a213714_list n
%o a213714_list = f [0..] a005187_list 0 where
%o f (x:xs) ys'@(y:ys) i | x == y = i : f xs ys (i+1)
%o | otherwise = 0 : f xs ys' i
%o -- _Reinhard Zumkeller_, May 01 2015
%o (Python)
%o from sympy import factorial
%o def a046699(n):
%o if n<3: return 1
%o s=1
%o while factorial(2*s)%(2**(n - 1))>0: s+=1
%o return s
%o def a053644(n): return 0 if n==0 else 2**(len(bin(n)[2:]) - 1)
%o def a043545(n):
%o x=bin(n)[2:]
%o return int(max(x)) - int(min(x))
%o def a079559(n): return 1 if n==0 else a043545(n + 1)*a079559(n + 1 - a053644(n + 1))
%o def a(n): return 0 if n==0 else a079559(n)*(a046699(n + 2) - 1) # _Indranil Ghosh_, Jun 11 2017
%Y Can be used when computing A213715, A213723, A213724, A233275, A233277. Cf. A005187, A046699, A079559, A234017, A230414.
%K nonn
%O 0,4
%A _Antti Karttunen_, Oct 26 2012