Code: Alles auswählen
def group(xs, zs=''):
if not xs:
return ([zs] if zs else [])
elif zs.startswith(xs[0]):
return group(xs[1:], zs + xs[0])
else:
return ([zs] if zs else []) + group(xs[1:], xs[0])

Code: Alles auswählen
def group(xs, zs=''):
if not xs:
return ([zs] if zs else [])
elif zs.startswith(xs[0]):
return group(xs[1:], zs + xs[0])
else:
return ([zs] if zs else []) + group(xs[1:], xs[0])
Code: Alles auswählen
def group(cs, i=0, j=1):
if j >= len(cs):
return [cs[i:j]] if cs else []
elif cs[i] == cs[j]:
return group(cs, i, j+1)
else:
return [cs[i:j]] + group(cs, j, j+1)
Code: Alles auswählen
def group(cs):
if cs:
i = 0
for j in xrange(1, len(cs)):
if cs[i] != cs[j]:
yield cs[i:j]
i = j
yield cs[i:]
Code: Alles auswählen
def Y(r): return (lambda f: f(f))(lambda f: r(lambda *xs, **ys: f(f)(*xs, **ys)))
group1 = Y(
lambda g:
lambda cs, i=0, j=1:
([cs[i:j]] if cs else [])
if j >= len(cs) else
(g(cs, i, j+1) if cs[i] == cs[j] else [cs[i:j]] + g(cs, j, j+1))
)
def group2(cs):
if not cs:
return []
return Y(
lambda g:
lambda s, c, *cs:
(g(s + c, *cs) if c in s else [s][:bool(s)] + g(c, *cs))
if cs else
([s + c] if c in s else [s][:bool(s)] + [c])
)('', *cs)
Stimmt. Deswegen würde ich so etwas niemals im Ernst programmieren.gerold hat geschrieben:Das was du da mit Python anstellst, ist irgendwie die falsche Richtung.