Here's my implementation (in Prolog):
Prologue with DCG (174 characters):
m(D):-write(D),nl,m(1,write(D),T,[nl|T],_). m(C,D,T)-->[D],{succ(C,N)},!,m(N,D,T). m(C,D,[G,D|T])-->[N],{G=write(C),G,D,(N=nl->(MTO=0-[N|R]-_,N);MTO=1-RN)},!,m(M,O,R).
A simple vanilla prologue, the code is much more transparent (225 characters):
m(D):- ((D=1->write(D),nl);true), m([], [1,D]). m([], [C,D|M]):- write(C), write(D),nl, reverse([D,C|M],[N|X]), !, m([N|X],[0,N]). m([D|T], [C,D|M]):- succ(C,N), !, m(T,[N,D|M]). m([Y|T],[C,D|M]):- write(C), write(D), !, m(T,[1,Y,D,C|M]).
To deduce the Morris sequence: m (D). where D is the "starting" digit.