A117967 Positive part of inverse of A117966; write n in balanced ternary and then replace (-1)'s with 2'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, 34, 29, 27, 28, 32, 30, 31, 44, 42, 43, 38, 36, 37, 41, 39, 40, 161, 159, 160, 155, 153, 154, 158, 156, 157, 143, 141, 142, 137, 135, 136, 140, 138, 139, 152, 150, 151, 146
Offset: 0
Examples
7 in balanced ternary is 1(-1)1, changing to 121 ternary is 16, so a(7)=16.
References
- D. E. Knuth, The Art of Computer Programming. Addison-Wesley, Reading, MA, Vol. 2, pp. 173-175
Links
- Alois P. Heinz, Table of n, a(n) for n = 0..9841
- Ken Levasseur, The Balanced Ternary Number System
Crossrefs
Programs
-
Maple
a:= proc(n) local d, i, m, r; m:=n; r:=0; for i from 0 while m>0 do d:= irem(m, 3, 'm'); if d=2 then m:=m+1 fi; r:= r+d*3^i od; r end: seq(a(n), n=0..100); # Alois P. Heinz, May 11 2015
-
Mathematica
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]; a /@ Range[0, 100] (* Jean-François Alcover, Jan 05 2021, after Alois P. Heinz *)
-
Python
from sympy.ntheory.factor_ import digits def a004488(n): return int("".join([str((3 - i)%3) for i in digits(n, 3)[1:]]), 3) def a117968(n): if n==1: return 2 if n%3==0: return 3*a117968(n/3) elif n%3==1: return 3*a117968((n - 1)/3) + 2 else: return 3*a117968((n + 1)/3) + 1 def a(n): return 0 if n==0 else a004488(a117968(n)) # Indranil Ghosh, Jun 06 2017
-
Scheme
;; Two alternative definitions in MIT/GNU Scheme, defined for whole Z: (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)))))))) (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)))) ;; Antti Karttunen, May 19 2008
Formula
a(0) = 0, a(3n) = 3a(n), a(3n+1) = 3a(n)+1, a(3n-1) = 3a(n)+2.
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