fork download
  1. import re
  2. def F(x,k):
  3. if isinstance(x,int):return x in k
  4. if len(x)==1:return x[0]in k
  5. a,b,c=x;r,R=F(a,k),F(c,k)
  6. return[r or R,r and R]['&'==b]
  7. def f(K):
  8. T=[]
  9. for o in K:
  10. t=[];q=[([*{*map(int,re.findall('\d+',str(o)))}],[])]
  11. for k,p in q:
  12. t+=[sorted(p,reverse=1)]*F(o,p)
  13. if k:q+=(k[1:],p+[k[0]]),(k[1:],p),
  14. T+=(o,min(t)),
  15. return[a for a,_ in sorted(T,key=lambda x:x[1],reverse=1)]
  16.  
  17. def to_list(s):return[eval(i) for i in filter(None, s.split('\n'))]
  18. s1 = """
  19. [1]
  20. [2]
  21. [3]
  22. [1, "&", 2]
  23. [1, "&", 3]
  24. [3, "&", 2]
  25. [1, "|", 2]
  26. [2, "|", 3]
  27. [[1, "&", 2], "|", 3]
  28. [[2, "|", 3], "&", 3]
  29. """
  30. s2 = """
  31. [[[6, '|', [[10, '|', 1], '&', [3, '&', 3]]], '|', 10], '&', [[12, '&', [9, '|', 7]], '|', [[3, '|', 8], '&', [[10, '|', [[1, '&', 3], '&', 9]], '|', [[2, '|', 1], '&', 1]]]]]
  32. [[7, '|', 9], '&', [[5, '|', 10], '&', [[12, '|', 3], '&', 4]]]
  33. [7, '|', 7]
  34. [[[5, '|', [1, '|', 9]], '&', [[7, '&', [[6, '&', [1, '|', 7]], '|', 2]], '|', 5]], '&', [[[[8, '&', 6], '&', 1], '&', 5], '&', [10, '|', [11, '&', [3, '&', 6]]]]]
  35. [[[[2, '&', [6, '&', 8]], '|', [[4, '|', 4], '|', [[5, '&', 4], '|', [[[1, '|', 5], '|', 1], '&', 7]]]], '&', [[[9, '|', [3, '&', 7]], '|', [9, '|', 5]], '&', [[[[8, '|', 11], '|', 8], '|', 2], '|', 2]]], '&', [[3, '|', 6], '&', 9]]
  36. [[12, '|', [5, '&', [[12, '&', 3], '|', [9, '&', 1]]]], '|', [10, '&', [[8, '|', 9], '&', [[[8, '|', 3], '|', 8], '|', 11]]]]
  37. [[9, '|', 11], '&', [[[11, '&', 12], '|', 10], '&', [3, '&', 12]]]
  38. [[[5, '&', 9], '&', [10, '&', 2]], '|', [10, '|', 10]]
  39. [[6, '&', 4], '&', [4, '|', 11]]
  40. [[[[11, '&', [[[[5, '|', 11], '&', [10, '|', 7]], '&', 2], '|', 2]], '|', 12], '|', 5], '&', [[[2, '&', [5, '|', 9]], '&', 4], '&', [6, '|', [3, '&', 2]]]]
  41. """
  42. print(f(to_list(s1)))
  43. print(f(to_list(s2)))
Success #stdin #stdout 0.3s 15564KB
stdin
Standard input is empty
stdout
[[3, '&', 2], [1, '&', 3], [3], [[2, '|', 3], '&', 3], [1, '&', 2], [[1, '&', 2], '|', 3], [2], [2, '|', 3], [1], [1, '|', 2]]
[[[9, '|', 11], '&', [[[11, '&', 12], '|', 10], '&', [3, '&', 12]]], [[[5, '|', [1, '|', 9]], '&', [[7, '&', [[6, '&', [1, '|', 7]], '|', 2]], '|', 5]], '&', [[[[8, '&', 6], '&', 1], '&', 5], '&', [10, '|', [11, '&', [3, '&', 6]]]]], [[[5, '&', 9], '&', [10, '&', 2]], '|', [10, '|', 10]], [[12, '|', [5, '&', [[12, '&', 3], '|', [9, '&', 1]]]], '|', [10, '&', [[8, '|', 9], '&', [[[8, '|', 3], '|', 8], '|', 11]]]], [[[[2, '&', [6, '&', 8]], '|', [[4, '|', 4], '|', [[5, '&', 4], '|', [[[1, '|', 5], '|', 1], '&', 7]]]], '&', [[[9, '|', [3, '&', 7]], '|', [9, '|', 5]], '&', [[[[8, '|', 11], '|', 8], '|', 2], '|', 2]]], '&', [[3, '|', 6], '&', 9]], [[7, '|', 9], '&', [[5, '|', 10], '&', [[12, '|', 3], '&', 4]]], [7, '|', 7], [[6, '&', 4], '&', [4, '|', 11]], [[[[11, '&', [[[[5, '|', 11], '&', [10, '|', 7]], '&', 2], '|', 2]], '|', 12], '|', 5], '&', [[[2, '&', [5, '|', 9]], '&', 4], '&', [6, '|', [3, '&', 2]]]], [[[6, '|', [[10, '|', 1], '&', [3, '&', 3]]], '|', 10], '&', [[12, '&', [9, '|', 7]], '|', [[3, '|', 8], '&', [[10, '|', [[1, '&', 3], '&', 9]], '|', [[2, '|', 1], '&', 1]]]]]]