Advertisement
Guest User

Untitled

a guest
Oct 20th, 2019
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.77 KB | None | 0 0
  1. import sys
  2. from functools import reduce
  3.  
  4. N = 4
  5. VARS = 'abcd'
  6.  
  7. mult = lambda a, b: a * b
  8.  
  9. def showN(i):
  10. if i == 1:
  11. return None
  12. else:
  13. return str(i)
  14.  
  15. def showPow(a, b):
  16. if b == 0:
  17. return None
  18. elif b == 1:
  19. return a
  20. else:
  21. return f'{a}^{b}'
  22.  
  23. def fact(i):
  24. return reduce(mult, range(1, i + 1), 1)
  25.  
  26. def compute(n, i, v):
  27. if i < 0 or v == 0:
  28. return
  29.  
  30. if v == 1:
  31. yield [i]
  32. return
  33.  
  34. for j in reversed(range(n + 1)):
  35. for u in compute(n, i - j, v - 1):
  36. yield [j] + u
  37.  
  38. print('(' + ' + '.join(VARS) + ')^' + str(N), end='')
  39. print(' = ', end='')
  40. print(' + '.join([
  41. (
  42. '*'.join(filter(None, [
  43. showN(fact(N) // reduce(mult, map(fact, u))),
  44. ] + [
  45. showPow(VARS[i], u[i]) for i in range(len(VARS))
  46. ]))
  47. ) for u in compute(N, N, len(VARS))
  48. ]))
  49.  
  50. # print([*compute(N, N, VARS)])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement