### Communities

tag:snake search within a tag
user:xxxx search by author id
score:0.5 posts with 0.5+ score
"snake oil" exact phrase
created:<1w created < 1 week ago
post_type:xxxx type of post
Challenges

# When The Ternary Is Balance

+4
−0

Inspired by this Rosetta Code article.

# Introduction

Balanced Ternary is a method of representing integers using -1, 0 and 1 in base 3.

Decimal 11 = (1 * 32) + (1 * 31) + (−1 * 30) = [1,1,-1] or "++-"

Decimal 6 = (1 * 32) + (−1 * 31) + (0 * 30) = [1,-1,0] or "+-0"

Given any integer, you must give its balanced ternary representation in any permitted format (array, string, etc.)

Your program must support all integers present within its maximum integer limit.

# Test Cases

Reference implementation with first 200 values

5 +--
6 +-0
11 ++-
65 +-++-
-44 -++0+
-540 -+-+000


# Scoring

This is code-golf. Shortest answer in each language wins.

Why does this post require moderator attention?
Why should this post be closed?

+3
−0

(g!)
g a=mapM(\_->[-1..1])a++g(0:a)
(a:b)!c|foldl1((+).(*3))a==c=a|0<1=b!c


Try it online!

Why does this post require moderator attention?

+3
−0

# JavaScript (Node.js), 474050 49 bytes

-1 (possibly -3) bytes thanks to Shaggy!

f=(n,s='0')=>n?f(n/3+n%3/2|0,'')+"+-0+-"[n%3+2]:s


Try it online!

A basic recursive solution.

Why does this post require moderator attention?

(Possible) 40 bytes (1 comment)
+2
−0

# Python 3, 78 bytes

def t(n,*l):d="0+-"[n%3];return d*(not l or n*n) if n*n<2 else t((n+1)//3,1)+d


Try it online!

Why does this post require moderator attention?