Last week we had yet another competition where the goal is to create the smallest program that solves a particular problem. This time the problem to solve was a simple XML parsing routine with a few extra rules to make the parsing itself easier to implement (The complete rule set). This time python was chosen as the required language of the submissions.
The winning contribution from Helge:
from sys import stdin p=0 s=str.split for a in s(stdin.read(),'<'): a=s(a,'>');b=a.strip('/');p-=a
The contribution from Tobias:from sys import stdin i=stdin.read() s=x=t=0 k=i.find while x
") elif i[x+1]=="/":s-=1 else: u=0 while u ",x)-1]=="/":t=1 else:t=0;s+=1 print i[x+1:k(">",x)-t].strip() x+=1
The contribution from Harald:from sys import stdin l=stdin.read() e,p,c,x=0,0,0,0 r="" for i in l: if l[e:e+2]==']>'or l[e:e+2]=='->': c=0 if l[e:e+2]=='<!': c=1 if p and i==' 'or i=='/'or i=='>': p=0 if i=='/' and l[e+1]=='>': x-=1 if p and not c: r+=i if not c and i=='<'and l[e+1]!='/': r+="\n"+(' '*4)*x x+=1 p=1 if i=='<'and l[e+1]=='/': x-=1 e+=1
If any of the contributors want to provide a better description of their solutions, feel free to leave a comment!
Thanks to all the participants!