Advertisement
Guest User

Untitled

a guest
Dec 3rd, 2016
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.86 KB | None | 0 0
  1. +a # Lock resource a
  2. +b # Lock resource b
  3. -a # Unlock resource a
  4. -b # Unlock resource b
  5. --- # Thread separator
  6. +b # Lock resource b
  7. -b # Unlock resource b
  8.  
  9. +a
  10. -a
  11. ---
  12. +a
  13. -a
  14.  
  15. +a
  16. +b
  17. -b
  18. -a
  19. ---
  20. +b
  21. +a
  22. -a
  23. -b
  24.  
  25. +a
  26. +b
  27. -a
  28. -b
  29. ---
  30. +a
  31. +b
  32. -b
  33. -a
  34.  
  35. +a
  36. +b
  37. -b
  38. -a
  39. ---
  40. +b
  41. +c
  42. -c
  43. -b
  44. ---
  45. +c
  46. +a
  47. -a
  48. -c
  49.  
  50. 1: 1 space
  51. 2: 1 tab
  52. 3: 1 tab + 1 space
  53. 4: 2 tabs
  54.  
  55. import sys
  56. V=set()
  57. t=[[[]]]
  58. for r in sys.stdin:
  59. r=r.strip()
  60. if'---'==r:t.append([[]])
  61. else:v=r[1:];V.add(v);l=t[-1][-1];t[-1].append(l+[v]if'+'==r[0]else filter(lambda x:x!=v,l))
  62. s=lambda l:s(l[1:])+map(lambda x:(l[0],x),l[1:])if 1<len(l)else[]
  63. E=reduce(set.union,map(lambda x:set(sum(map(s,x),[])),t),set())
  64. for v in V:
  65. k=set();q=[v]
  66. while 0<len(q):
  67. u=q.pop(0)
  68. if u in k:continue
  69. k.add(u)
  70. for x,y in E:
  71. if u==x:
  72. if y in k:print':(';sys.exit()
  73. else:q.append(y)
  74. print':)'
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement