# Lab 13
# Number sequences
# YOUR NAMES AND EMAIL HERE!

# Natural numbers - RECURSIVELY!
# https://oeis.org/A001477
def nat(n):
    return 0

# Square numbers - RECURSIVELY!
# https://oeis.org/A000290
def sq(n):
    return 0

# Triangular numbers - RECURSIVELY!
# https://oeis.org/A000217
def tri(n):
    return 0

# Towers of Hanoi moves - RECURSIVELY!
# https://oeis.org/A000225
def moves(n):
    return 0

# Narayana's Cows - RECURSIVELY!
# https://oeis.org/A000930
# https://www.youtube.com/watch?v=VOS3piSMS9E
# https://www.youtube.com/watch?v=6yXQinqLmqc
# https://www.youtube.com/watch?v=sRvH6ZhojqA
def cows(n):
    return 0 

# Derangements - RECURSIVELY!
# https://oeis.org/A000166
def der(n):
    return 0 

# Centered Hexagonal Numbers - RECURSIVELY!
# https://oeis.org/A003215
def hex(n):
    return 0 

# Tetrahedral Numbers - RECURSIVELY!
# https://oeis.org/A000292
def tetra(n):
    return 0 

# Square Pyramidal Numbers - RECURSIVELY!
# https://oeis.org/A000330
def sqpyr(n):
    return 0 

# Star Numbers - RECURSIVELY!
# https://oeis.org/A003154
def star(n):
    return 0

# Catalan Numbers - mostly RECURSIVE!
# use a loop for the summation
# https://oeis.org/A000108
def cat(n):
    return 0


def main():
    print("naturals")
    print("[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, ...]")
    seq = list()
    for i in range(20):
        seq.append(nat(i))
    print(seq)

    print()
    print("squares")
    print("[0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100, ...]")
    seq = list()
    for i in range(20):
        seq.append(sq(i))
    print(seq)

    print()
    print("triangular")
    print("[0, 1, 3, 6, 10, 15, 21, 28, 36, 45, 55, ...]")
    seq = list()
    for i in range(20):
        seq.append(tri(i))
    print(seq)

    print()
    print("Towers of Hanoi moves")
    print("[0, 1, 3, 7, 15, 31, 63, 127, 255, 511, 1023, ...]")
    seq = list()
    for i in range(20):
        seq.append(moves(i))
    print(seq)

    print()
    print("Narayana's Cows")
    print("[1, 1, 1, 2, 3, 4, 6, 9, 13, 19, 28, ...]")
    seq = list()
    for i in range(20):
        seq.append(cows(i))
    print(seq)

    print()
    print("Derangements")
    print("[1, 0, 1, 2, 9, 44, 265, 1854, 14833, 133496, ...]")
    seq = list()
    for i in range(12):
        seq.append(der(i))
    print(seq)

    print()
    print("Centered Hexagonal Numbers")
    print("[1, 7, 19, 37, 61, 91, 127, 169, 217, 271, ...]")
    seq = list()
    for i in range(20):
        seq.append(hex(i))
    print(seq)

    print()
    print("Tetrahedral Numbers")
    print("[0, 1, 4, 10, 20, 35, 56, 84, 120, 165, 220, ...]")
    seq = list()
    for i in range(20):
        seq.append(tetra(i))
    print(seq) 

    print()
    print("Square Pyramidal Numbers")
    print("[0, 1, 5, 14, 30, 55, 91, 140, 204, 285, 385, ...]")
    seq = list()
    for i in range(20):
        seq.append(sqpyr(i))
    print(seq)  

    print()
    print("Star Numbers")
    print("[1, 13, 37, 73, 121, 181, 253, 337, 433, 541, 661, 793, ...]")
    seq = list()
    for i in range(20):
        seq.append(star(i))
    print(seq)  

    print()
    print("Catalan Numbers")
    print("[1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, ...]")
    seq = list()
    for i in range(11):
        seq.append(cat(i))
    print(seq)  
    

main()
