Python odd word problem
I crafted this compact solution to Dijkstra’s OddWordProblem:
from sys import stdin, stdout
def even(char) : stdout.write(char); return select(even, 0, "");
def odd(char) : q = select(odd, 0, ""); stdout.write(char); return q
def select(fn, skipspace, prefix) :
char = stdin.read(1)
if char.isspace() and skipspace : return select(fn, 1, prefix)
elif char.isspace() : return 0
elif char.isalpha() : stdout.write(prefix); return fn(char)
elif char == "." : return 1
else : raise "Invalid input"
if not select(even, 1, "") :
while not select(odd, 1, " ") and not select(even, 1, " ") : pass
stdout.write(".")
Leave a comment