Year-end appeal: Please make a donation to the OEIS Foundation to support ongoing development and maintenance of the OEIS. We are now in our 61st year, we have over 378,000 sequences, and we’ve reached 11,000 citations (which often say “discovered thanks to the OEIS”).
%I #24 Jan 05 2021 11:11:32
%S 0,1,5,3,4,17,15,16,11,9,10,14,12,13,53,51,52,47,45,46,50,48,49,35,33,
%T 34,29,27,28,32,30,31,44,42,43,38,36,37,41,39,40,161,159,160,155,153,
%U 154,158,156,157,143,141,142,137,135,136,140,138,139,152,150,151,146
%N Positive part of inverse of A117966; write n in balanced ternary and then replace (-1)'s with 2's.
%D D. E. Knuth, The Art of Computer Programming. Addison-Wesley, Reading, MA, Vol. 2, pp. 173-175
%H Alois P. Heinz, <a href="/A117967/b117967.txt">Table of n, a(n) for n = 0..9841</a>
%H Ken Levasseur, <a href="http://discretemath.org/ternary_number_system.html">The Balanced Ternary Number System</a>
%F a(0) = 0, a(3n) = 3a(n), a(3n+1) = 3a(n)+1, a(3n-1) = 3a(n)+2.
%F If one adds this clause, then the function is defined on the whole Z: If n<0, then a(n) = A004488(a(-n)) (or equivalently: a(n) = A117968(-n)) and then it holds that a(A117966(n)) = n. - _Antti Karttunen_, May 19 2008
%e 7 in balanced ternary is 1(-1)1, changing to 121 ternary is 16, so a(7)=16.
%p a:= proc(n) local d, i, m, r; m:=n; r:=0;
%p for i from 0 while m>0 do
%p d:= irem(m, 3, 'm');
%p if d=2 then m:=m+1 fi;
%p r:= r+d*3^i
%p od; r
%p end:
%p seq(a(n), n=0..100); # _Alois P. Heinz_, May 11 2015
%t a[n_] := Module[{d, i, m = n, r = 0}, For[i = 0, m > 0, i++, {m, d} = QuotientRemainder[m, 3]; If[d == 2, m++]; r = r + d*3^i]; r];
%t a /@ Range[0, 100] (* _Jean-François Alcover_, Jan 05 2021, after _Alois P. Heinz_ *)
%o (Scheme)
%o (Two alternative definitions in MIT/GNU Scheme, defined for whole Z:)
%o (define (A117967 z) (cond ((zero? z) 0) ((negative? z) (A004488 (A117967 (- z)))) (else (let* ((lp3 (expt 3 (A062153 z))) (np3 (* 3 lp3))) (if (< (* 2 z) np3) (+ lp3 (A117967 (- z lp3))) (+ np3 (A117967 (- z np3))))))))
%o (define (A117967v2 z) (cond ((zero? z) 0) ((negative? z) (A004488 (A117967v2 (- z)))) ((zero? (modulo z 3)) (* 3 (A117967v2 (/ z 3)))) ((= 1 (modulo z 3)) (+ (* 3 (A117967v2 (/ (- z 1) 3))) 1)) (else (+ (* 3 (A117967v2 (/ (+ z 1) 3))) 2))))
%o ;; _Antti Karttunen_, May 19 2008
%o (Python)
%o from sympy.ntheory.factor_ import digits
%o def a004488(n): return int("".join([str((3 - i)%3) for i in digits(n, 3)[1:]]), 3)
%o def a117968(n):
%o if n==1: return 2
%o if n%3==0: return 3*a117968(n/3)
%o elif n%3==1: return 3*a117968((n - 1)/3) + 2
%o else: return 3*a117968((n + 1)/3) + 1
%o def a(n): return 0 if n==0 else a004488(a117968(n)) # _Indranil Ghosh_, Jun 06 2017
%Y Cf. A117966. a(n) = A004488(A117968(n)). Bisection of A140263. A140267 gives the same sequence in ternary.
%K base,nonn,look
%O 0,3
%A _Franklin T. Adams-Watters_, Apr 05 2006