From b37f8d1dd4162966f9fa5a5f8e7c0e0487cfe5e8 Mon Sep 17 00:00:00 2001 From: lolabird Date: Fri, 22 Dec 2023 06:15:34 -0700 Subject: [PATCH] Get calculations working --- thinkcspy/Chapter-16-Exercises/pascal.py | 51 +++++++++++++++--------- 1 file changed, 33 insertions(+), 18 deletions(-) diff --git a/thinkcspy/Chapter-16-Exercises/pascal.py b/thinkcspy/Chapter-16-Exercises/pascal.py index 31baed7..36f0a90 100644 --- a/thinkcspy/Chapter-16-Exercises/pascal.py +++ b/thinkcspy/Chapter-16-Exercises/pascal.py @@ -1,26 +1,41 @@ -def pascal(row): - num = 0 - - if row < 0: +def createTriange(numRows): + if numRows < 0: return else: - for i in range(row+1): - spaces = (" "*(row-i)) - nums = f"{getbinomial(num, i)} " + for i in range(numRows+1): + spaces = (" "*(numRows-i)) + nums = f"{createRow(i)}" print(spaces + nums + spaces) - # if row == 0 or 1: num = 1 - # the first and last instance of i always == 1 - #elif row % 2 == 0: - # increase until the middle number then decrease - #elif row % 2 == 1: - # increase until the halfway point, then decrease + +def createRow(currentRow): + row = [] + + for i in range(currentRow + 1): + coefficient = getbinomial(currentRow, i) + row.append(coefficient) + + result = " ".join(map(str, row)) + + return result + +def getbinomial(n, k): + numerator = factorial(n) + denominator = factorial(k) * factorial(n - k) + return numerator // denominator -def getbinomial(num, iters): - - return f"{num+iters} " * iters - -pascal(8) +def factorial(number): + if number < 0: + return + elif number > 1: + number *= factorial(number - 1) + return number + else: + return 1 + + + +createTriange(5)