def other(c1,c2):
    s=set()
    s.add('R')
    s.add('G')
    s.add('B')
    s.remove(c1)
    s.remove(c2)
    return list(s)[0]

def triangle(row):
    n=len(row)
    if n==1:
        return row[0]
    for _ in range(1,n):
        s=""
        for i in range(len(row)-1):           
            if row[i]==row[i+1]:
                s+=row[i]
            else:
                s+=other(row[i],row[i+1])
        row=s[:]
    return s[0]

from itertools import product
for n in range(1, 6):
    r = ""
    for p in product("RGB", repeat=n):
        s = ''.join(p)
        t = triangle(s)
        r += t

from math import comb
# for n in range(1, 15):
#     row = []
#     for k in range(n + 1):        
#         r = comb(n, k) % 3
#         row.append(str(r))
#     print(n, "===>", ' '.join(row))
from math import isqrt

def f(m, k):
    if m<3 and k<3: return comb(m, k)%3
    c, a = divmod(m, 3)
    d, b = divmod(k, 3)
    return f(c, d)*f(a, b)%3
    
def tri(n):
    if n == 0:
        return 0
    m = n
    ans = []
    b = 1
    while m > 0:
        q, r = divmod(m, 3)
        ans.append(r)
        m = q
    print(ans[::1])
    k = len(ans)
    s = 0
    for i in range(k):
        s = (s + f(k, i) * ans[i]) % 3
    return s
def to_base3(n):
    if n == 0:
        return [0]
    m = n
    ans = []
    b = 1
    while m > 0:
        q, r = divmod(m, 3)
        ans.append(r)
        m = q
    return ans[::-1]

    
print(tri(1247))
for n in range(20):
    s = ''.join(map(str, to_base3(n)))
    print(s)
# Chai Wah Wu  (OEIS)  
def solve(n):   
    k=(n+1)*2
    m = isqrt(k)
    r = m - (k<=m*(m+1))
    ans = f(r, n-comb(r+1, 2))
    return ans 

s = 0
tri = []
for k in range(10):
    row = []
    for j in range(k + 1):
        r = solve(s)
        row.append(str(r))
        s += 1
    print(' '.join(row))
        

Embed on website

To embed this program on your website, copy the following code and paste it into your website's HTML: