Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- +a # Lock resource a
- +b # Lock resource b
- -a # Unlock resource a
- -b # Unlock resource b
- --- # Thread separator
- +b # Lock resource b
- -b # Unlock resource b
- +a
- -a
- ---
- +a
- -a
- +a
- +b
- -b
- -a
- ---
- +b
- +a
- -a
- -b
- +a
- +b
- -a
- -b
- ---
- +a
- +b
- -b
- -a
- +a
- +b
- -b
- -a
- ---
- +b
- +c
- -c
- -b
- ---
- +c
- +a
- -a
- -c
- 1: 1 space
- 2: 1 tab
- 3: 1 tab + 1 space
- 4: 2 tabs
- import sys
- V=set()
- t=[[[]]]
- for r in sys.stdin:
- r=r.strip()
- if'---'==r:t.append([[]])
- 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))
- s=lambda l:s(l[1:])+map(lambda x:(l[0],x),l[1:])if 1<len(l)else[]
- E=reduce(set.union,map(lambda x:set(sum(map(s,x),[])),t),set())
- for v in V:
- k=set();q=[v]
- while 0<len(q):
- u=q.pop(0)
- if u in k:continue
- k.add(u)
- for x,y in E:
- if u==x:
- if y in k:print':(';sys.exit()
- else:q.append(y)
- print':)'
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement