Look-and-say sequence: Difference between revisions

Add Modula-2
(Add Modula-2)
Line 2,886:
11131221133112132113212221
</pre>
 
=={{header|Modula-2}}==
<lang modula2>MODULE LookAndSay;
FROM InOut IMPORT WriteString, WriteLn;
FROM Strings IMPORT Assign, Length;
 
CONST
MaxSize = 128;
Steps = 14;
 
VAR
buf1, buf2: ARRAY [0..MaxSize-1] OF CHAR;
step: CARDINAL;
 
PROCEDURE LookSay(in: ARRAY OF CHAR; VAR out: ARRAY OF CHAR);
VAR count, inIdx, outIdx: CARDINAL;
curChar: CHAR;
BEGIN
inIdx := 0;
outIdx := 0;
WHILE in[inIdx] # CHR(0) DO
curChar := in[inIdx];
count := 0;
REPEAT
INC(inIdx);
INC(count);
UNTIL in[inIdx] # curChar;
out[outIdx] := CHR(ORD('0') + count);
out[outIdx+1] := curChar;
outIdx := outIdx + 2;
END;
out[outIdx] := CHR(0);
END LookSay;
 
BEGIN
Assign("1", buf1);
FOR step := 1 TO Steps DO
WriteString(buf1);
WriteLn();
LookSay(buf1, buf2);
Assign(buf2, buf1);
END;
END LookAndSay.</lang>
{{out}}
<pre>1
11
21
1211
111221
312211
13112221
1113213211
31131211131221
13211311123113112211
11131221133112132113212221
3113112221232112111312211312113211
1321132132111213122112311311222113111221131221
1113122113121113123112111311222112132113213221133122211311221</pre>
 
=={{header|NewLisp}}==
2,111

edits