Google Code Jam 2011 Qualification Round

全てpythonでGolfして解きました。本当はbefungeとかで解きたかったけど、予想以上に問題がHARDだったのでやめました。
努力不足なのであんまり短くないです。

A(204 Byte)

for T in range(input()):
 x=raw_input().split();t=i=1;w=[1,1];d=[0,0]
 while i<len(x):
	c=x[i]<"F";v=int(x[i+1])
	if abs(w[c]-v)<=d[c]:i+=2;w[c]=v;d[c]=-1
	d[0]+=1;d[1]+=1;t+=1
 print"Case #%s:"%(T+1),t-1

B(309 Byte)

for T in range(input()):
 x=raw_input().split();i=int(x[0]);m={};d={};h=[]
 for s in x[1:i+1]:m[s[:2]]=m[s[1::-1]]=s[2]
 for s in x[i+2:-2]:d[s]=d[s[::-1]]=1
 for c in x[-1]:
  while h and h[-1]+c in m:c=m[h.pop()+c]
  if any(a+c in d for a in h):h=[]
  else:h+=[c]
 print"Case #%s:"%(T+1),`h`.replace("'","")

C(147 Byte)

for T in range(input()):n=input();x=sorted(map(int,raw_input().split()));z=i=0;exec"z^=x[i];i+=1;"*n; print"Case #%s:"%(T+1),[sum(x[1:]),"NO"][0<z]

D(112 Byte)

for T in range(input()):input();print"Case #%s:"%(T+1),sum(i+1!=int(v)for i,v in enumerate(raw_input().split()))