RosettaCodeData/Task/Odd-word-problem/D/odd-word-problem.d

20 lines
398 B
D

bool doChar(in bool odd, in void delegate() nothrow f=null) nothrow {
import core.stdc.stdio, std.ascii;
immutable int c = getchar;
if (!odd)
c.putchar;
if (c.isAlpha)
return doChar(odd, { c.putchar; if (f) f(); });
if (odd) {
if (f) f();
c.putchar;
}
return c != '.';
}
void main() {
bool i = true;
while (doChar(i = !i)) {}
}