fork(1) download
  1. from fractions import Fraction
  2. from itertools import product
  3.  
  4. piles = [set(), {Fraction(-2),Fraction(2)}]
  5.  
  6. operators = [
  7. lambda a,b: a+b,
  8. lambda a,b: a-b,
  9. lambda a,b: b-a,
  10. lambda a,b: -(a+b),
  11. lambda a,b: a*b,
  12. lambda a,b: -a*b,
  13. lambda a,b: a/b,
  14. lambda a,b: b/a,
  15. lambda a,b: -a/b,
  16. lambda a,b: -b/a
  17. ]
  18.  
  19. for n in range(2,11):
  20. pile = set()
  21. for k in range(1,n//2+1):
  22. a_pile = piles[k]
  23. b_pile = piles[n-k]
  24. for op,a,b in product(operators,(a for a in a_pile if a >= 0),(b for b in b_pile if b >= 0)):
  25. try:
  26. pile.add(op(a,b))
  27. except:
  28. pass
  29. # print(str(n) + ': ' + ' '.join(str(x) for x in sorted(pile)))
  30. piles.append(pile)
  31.  
  32. for p in piles:
  33. print(len(p))
Success #stdin #stdout 2.04s 32760KB
stdin
Standard input is empty
stdout
0
2
5
13
33
77
185
441
1051
2523
6083