Look-and-say sequence: Difference between revisions
Content deleted Content added
Not a robot (talk | contribs) Add Modula-2 |
|||
Line 2,886: | Line 2,886: | ||
11131221133112132113212221 |
11131221133112132113212221 |
||
</pre> |
</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}}== |
=={{header|NewLisp}}== |