Maze generation: Difference between revisions
Content added Content deleted
imported>Mike632t No edit summary |
|||
Line 3,060: | Line 3,060: | ||
Link to live demo: http://dc25.github.io/mazeGenerationElm/ |
Link to live demo: http://dc25.github.io/mazeGenerationElm/ |
||
=={{header|FORTRAN}}== |
|||
==={{header|FORTRAN-IV}}=== |
|||
Compiled using DEC Fortran V6.1. |
|||
<syntaxhighlight lang="fortran-66"> |
|||
PROGRAM MAZE |
|||
C This program will display a random maze on the display. |
|||
INTEGER W(25,53),V(25,53),H,B,S,R,X,Z,Q,H1,C |
|||
INTEGER IX |
|||
REAL LINE(26) |
|||
DATA EDD, EBB, BBI, BBB /'!--', '! ', ' !', ' ' / |
|||
WRITE(*,97) |
|||
97 FORMAT('$','Enter a random seed ? ') |
|||
READ(*,101) IX |
|||
WRITE(*,103) |
|||
WRITE(*,99) |
|||
99 FORMAT('$','Enter number of rows ? ') |
|||
120 READ(*,101) B |
|||
IF ((B .GE. 5).AND.(B .LT. 54)) GOTO 95 |
|||
WRITE(*,102) |
|||
GOTO 120 |
|||
95 WRITE(*,103) |
|||
WRITE(*,100) |
|||
100 FORMAT('$','Enter number of columns ? ') |
|||
94 READ(*,101) H |
|||
101 FORMAT(I5) |
|||
IF ((H .GE. 5).AND.(H .LT. 26)) GOTO 150 |
|||
WRITE(*,102) |
|||
102 FORMAT('$','Out of range - try again ? ') |
|||
GOTO 94 |
|||
150 WRITE(*,103) |
|||
103 FORMAT(' ') |
|||
DO 10 I=1, 25 |
|||
DO 10 J=1, 53 |
|||
W(I,J)=0 |
|||
V(I,J)=0 |
|||
10 CONTINUE |
|||
Q = 0 |
|||
Z = 0 |
|||
H1 = H + 1 |
|||
X = IFIX (RAN(IX) * H + 1) |
|||
DO 180 I=1, H |
|||
IF (I .EQ. X) GOTO 173 |
|||
LINE(I) = EDD |
|||
GOTO 180 |
|||
173 LINE(I) = EBB |
|||
180 CONTINUE |
|||
LINE(H1) = EBB |
|||
WRITE(*,104) (LINE(I), I = 1, H1) |
|||
104 FORMAT(' ',2X,26A3) |
|||
C = 1 |
|||
W(X, 1) = C |
|||
C = C + 1 |
|||
R = X |
|||
S = 1 |
|||
GOTO 260 |
|||
210 IF (R .NE. H) GOTO 240 |
|||
IF (S .NE. B) GOTO 230 |
|||
R=1 |
|||
S=1 |
|||
GOTO 250 |
|||
230 R=1 |
|||
S=S+1 |
|||
GOTO 250 |
|||
240 R=R+1 |
|||
250 IF (W(R,S) .EQ. 0 ) GOTO 210 |
|||
260 IF (R-1 .EQ. 0 ) GOTO 530 |
|||
IF (W(R-1,S) .NE. 0) GOTO 530 |
|||
IF (S-1 .EQ. 0) GOTO 390 |
|||
IF (W(R,S-1) .NE. 0) GOTO 390 |
|||
IF (R .EQ. H) GOTO 330 |
|||
IF (W(R+1,S) .NE. 0) GOTO 330 |
|||
X=IFIX(RAN(IX)*3+1) |
|||
GOTO (790, 820, 860), X |
|||
330 IF (S .NE. B) GOTO 340 |
|||
IF (Z .EQ. 1) GOTO 370 |
|||
Q=1 |
|||
GOTO 350 |
|||
340 IF (W(R,S+1) .NE. 0) GOTO 370 |
|||
350 X=IFIX(RAN(IX)*3+1) |
|||
IF (X .EQ. 1) GOTO 790 |
|||
IF (X .EQ. 2) GOTO 820 |
|||
IF (X .EQ. 3) GOTO 910 |
|||
370 X=IFIX(RAN(IX)*2+1) |
|||
IF (X .EQ. 1) GOTO 790 |
|||
IF (X .EQ. 2) GOTO 820 |
|||
390 IF (R .EQ. H) GOTO 470 |
|||
IF (W(R+1,S) .NE. 0) GOTO 470 |
|||
IF (S .NE. B) GOTO 420 |
|||
IF (Z .EQ. 1) GOTO 450 |
|||
Q = 1 |
|||
GOTO 430 |
|||
420 IF (W(R,S+1) .NE. 0) GOTO 450 |
|||
430 X = IFIX(RAN(IX)*3+1) |
|||
IF (X .EQ. 1) GOTO 790 |
|||
IF (X .EQ. 2) GOTO 860 |
|||
IF (X .EQ. 3) GOTO 910 |
|||
450 X=IFIX(RAN(IX)*2+1) |
|||
IF (X .EQ. 1) GOTO 790 |
|||
IF (X .EQ. 2) GOTO 860 |
|||
470 IF (S .NE. B) GOTO 490 |
|||
IF (Z .EQ. 1) GOTO 520 |
|||
Q = 1 |
|||
GOTO 500 |
|||
490 IF (W(R,S+1) .NE. 0) GOTO 520 |
|||
500 X=IFIX(RAN(IX)*2+1) |
|||
IF (X .EQ. 1) GOTO 790 |
|||
IF (X .EQ. 2) GOTO 910 |
|||
520 GOTO 790 |
|||
530 IF (S-1 .EQ. 0) GOTO 670 |
|||
IF (W(R,S-1) .NE. 0) GOTO 670 |
|||
IF (R .EQ. H) GOTO 610 |
|||
IF (W(R+1,S) .NE. 0) GOTO 610 |
|||
IF (S .NE. B) GOTO 560 |
|||
IF (Z .EQ. 1) GOTO 590 |
|||
Q=1 |
|||
GOTO 570 |
|||
560 IF (W(R,S+1) .NE. 0) GOTO 590 |
|||
570 X=IFIX(RAN(IX)*3+1) |
|||
IF (X .EQ. 1) GOTO 820 |
|||
IF (X .EQ. 2) GOTO 860 |
|||
IF (X .EQ. 3) GOTO 910 |
|||
590 X=IFIX(RAN(IX)*2+1) |
|||
IF (X .EQ. 1) GOTO 820 |
|||
IF (X .EQ. 2) GOTO 860 |
|||
610 IF (S .NE. B) GOTO 630 |
|||
IF (Z .EQ. 1) GOTO 660 |
|||
Q=1 |
|||
GOTO 640 |
|||
630 IF (W(R,S+1) .NE. 0) GOTO 660 |
|||
640 X=IFIX(RAN(IX)*2+1) |
|||
IF (X .EQ. 1) GOTO 820 |
|||
IF (X .EQ. 2) GOTO 910 |
|||
660 GOTO 820 |
|||
670 IF (R .EQ. H) GOTO 740 |
|||
IF (W(R+1,S) .NE. 0) GOTO 740 |
|||
IF (S .NE. B) GOTO 700 |
|||
IF (Z .EQ. 1) GOTO 730 |
|||
Q=1 |
|||
GOTO 830 |
|||
700 IF (W(R,S+1) .NE. 0) GOTO 730 |
|||
X=IFIX(RAN(IX)*2+1) |
|||
IF (X .EQ. 1) GOTO 860 |
|||
IF (X .EQ. 2) GOTO 910 |
|||
730 GOTO 860 |
|||
740 IF (S .NE. B) GOTO 760 |
|||
IF (Z .EQ. 1) GOTO 780 |
|||
Q=1 |
|||
GOTO 770 |
|||
760 IF (W(R,S+1) .NE. 0) GOTO 780 |
|||
770 GOTO 910 |
|||
780 GOTO 1000 |
|||
790 W(R-1,S)=C |
|||
C=C+1 |
|||
V(R-1,S)=2 |
|||
R=R-1 |
|||
IF (C .EQ. H*B+1) GOTO 1010 |
|||
Q=0 |
|||
GOTO 260 |
|||
820 W(R,S-1)=C |
|||
830 C=C+1 |
|||
V(R,S-1)=1 |
|||
S=S-1 |
|||
IF (C .EQ. H*B+1) GOTO 1010 |
|||
Q=0 |
|||
GOTO 260 |
|||
860 W(R+1,S)=C |
|||
C=C+1 |
|||
IF (V(R,S) .EQ. 0) GOTO 880 |
|||
V(R,S)=3 |
|||
GOTO 890 |
|||
880 V(R,S)=2 |
|||
890 R=R+1 |
|||
IF (C .EQ. H*B+1) GOTO 1010 |
|||
GOTO 530 |
|||
910 IF (Q .EQ. 1) GOTO 960 |
|||
W(R,S+1)=C |
|||
C=C+1 |
|||
IF (V(R,S) .EQ. 0) GOTO 940 |
|||
V(R,S)=3 |
|||
GOTO 950 |
|||
940 V(R,S)=1 |
|||
950 S=S+1 |
|||
IF (C .EQ. H*B+1) GOTO 1010 |
|||
GOTO 260 |
|||
960 Z=1 |
|||
IF (V(R,S) .EQ. 0) GOTO 980 |
|||
V(R,S)=3 |
|||
Q=0 |
|||
GOTO 1000 |
|||
980 V(R,S)=1 |
|||
Q=0 |
|||
R=1 |
|||
S=1 |
|||
GOTO 250 |
|||
1000 GOTO 210 |
|||
1010 DO 1073 J=1, B |
|||
LINE(1) = BBI |
|||
DO 1040 I=1, H |
|||
IF (V(I,J) .LT. 2) GOTO 1030 |
|||
LINE(I+1) = BBB |
|||
GOTO 1040 |
|||
1030 LINE(I+1) = BBI |
|||
1040 CONTINUE |
|||
WRITE(*, 106) (LINE(I), I=1, H1) |
|||
106 FORMAT (1X,26A3) |
|||
DO 1070 I=1, H |
|||
IF (V(I,J) .EQ. 0) GOTO 1060 |
|||
IF (V(I,J) .EQ. 2) GOTO 1060 |
|||
LINE(I) = EBB |
|||
GOTO 1070 |
|||
1060 LINE(I) = EDD |
|||
1070 CONTINUE |
|||
LINE(H1) = EBB |
|||
WRITE(*,107) (LINE(I), I = 1, H1) |
|||
107 FORMAT (3X, 26A3) |
|||
1073 CONTINUE |
|||
END |
|||
</syntaxhighlight> |
|||
{{out}} |
|||
<pre style="height:35ex;overflow:scroll;"> |
|||
Enter a random seed ? -23 |
|||
Enter number of rows ? 10 |
|||
Enter number of columns ? 23 |
|||
!--!--!--!--!--!--!--!--!--!--!--!--!--!--!--!--!--!--!--!--!--!--! ! |
|||
! ! ! ! ! ! |
|||
! !--! ! ! ! !--!--!--!--!--!--! ! ! ! !--!--! ! !--!--!--! |
|||
! ! ! ! ! ! ! ! ! ! ! ! ! ! |
|||
!--!--!--! ! !--! ! !--! ! ! ! ! !--! ! ! !--!--!--!--! ! |
|||
! ! ! ! ! ! ! ! ! ! ! ! ! |
|||
! !--! ! !--! ! ! ! !--! ! !--!--! !--!--!--! !--!--! ! ! |
|||
! ! ! ! ! ! ! ! ! ! ! ! ! ! |
|||
! ! !--! ! !--! !--!--! ! !--! ! ! !--!--! !--!--! !--!--! |
|||
! ! ! ! ! ! ! ! ! ! ! ! ! |
|||
! !--!--!--! ! !--! ! !--!--! !--!--! ! !--! ! !--!--! ! ! |
|||
! ! ! ! ! ! ! ! ! ! ! ! ! ! |
|||
! ! ! !--!--!--! ! ! ! !--! !--! !--!--! ! ! ! ! !--!--! |
|||
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! |
|||
!--! !--! ! ! !--!--! !--! ! !--! ! ! !--! ! ! !--!--! ! |
|||
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! |
|||
! !--! !--!--! ! ! !--! !--!--! ! !--!--! !--!--! !--! ! ! |
|||
! ! ! ! ! ! ! ! ! ! ! ! ! |
|||
! ! ! ! ! !--! ! ! !--! ! ! !--!--!--! !--! !--!--!--! ! |
|||
! ! ! ! ! ! ! ! ! |
|||
!--!--!--!--!--!--!--!--!--!--!--!--! !--!--!--!--!--!--!--!--!--!--! |
|||
</pre> |
|||
==={{header|Microsoft FORTRAN-80}}=== |
|||
As well as not having an intrinsic RND function, Microsoft Fortran-80 has some other minor differences to 'standard' Fortran-IV. |
|||
<syntaxhighlight lang="fortran66"> |
|||
PROGRAM MAZE |
|||
C This program will display a random maze on the display. |
|||
INTEGER W(25,53),V(25,53),H,B,S,R,X,Z,Q,H1,C |
|||
REAL LINE(26) |
|||
DATA EDD, EBB, BBI, BBB /'|--', '| ', ' |', ' ' / |
|||
WRITE(1,98) |
|||
98 FORMAT ('1','Maze Generator') |
|||
WRITE (1,97) |
|||
97 FORMAT('0','Enter a random seed ? ') |
|||
READ (1,101) IX |
|||
WRITE(1,99) |
|||
99 FORMAT(' ','Enter number of rows ? ') |
|||
120 READ(1,101) B |
|||
IF ((B .GE. 5).AND.(B .LT. 54)) GO TO 95 |
|||
WRITE (1,102) |
|||
GO TO 120 |
|||
95 WRITE(1,100) |
|||
100 FORMAT(' ','Enter number of columns ? ') |
|||
94 READ(1,101) H |
|||
101 FORMAT(I5) |
|||
IF ((H .GE. 5).AND.(H .LT. 26)) GO TO 150 |
|||
WRITE(1,102) |
|||
102 FORMAT(' ','Out of range - try again ? ') |
|||
GO TO 94 |
|||
150 WRITE(1,103) |
|||
103 FORMAT(' ') |
|||
DO 10 I=1, 25 |
|||
DO 10 J=1, 53 |
|||
W(I,J)=0 |
|||
V(I,J)=0 |
|||
10 CONTINUE |
|||
Q = 0 |
|||
Z = 0 |
|||
H1 = H + 1 |
|||
X = IFIX (RND(IX) * H + 1) |
|||
DO 180 I=1, H |
|||
IF (I .EQ. X) GO TO 173 |
|||
LINE(I) = EDD |
|||
GO TO 180 |
|||
173 LINE(I) = EBB |
|||
180 CONTINUE |
|||
LINE(H1) = EBB |
|||
WRITE (1,104) (LINE(I), I = 1, H1) |
|||
104 FORMAT('1',2X,26A3) |
|||
C = 1 |
|||
W(X, 1) = C |
|||
C = C + 1 |
|||
R = X |
|||
S = 1 |
|||
GO TO 260 |
|||
210 IF (R .NE. H) GO TO 240 |
|||
IF (S .NE. B) GO TO 230 |
|||
R=1 |
|||
S=1 |
|||
GO TO 250 |
|||
230 R=1 |
|||
S=S+1 |
|||
GOTO 250 |
|||
240 R=R+1 |
|||
250 IF (W(R,S) .EQ. 0 ) GO TO 210 |
|||
260 IF (R-1 .EQ. 0 ) GO TO 530 |
|||
IF (W(R-1,S) .NE. 0) GO TO 530 |
|||
IF (S-1 .EQ. 0) GO TO 390 |
|||
IF (W(R,S-1) .NE. 0) GO TO 390 |
|||
IF (R .EQ. H) GO TO 330 |
|||
IF (W(R+1,S) .NE. 0) GO TO 330 |
|||
X=IFIX(RND(IX)*3+1) |
|||
GO TO (790, 820, 860), X |
|||
330 IF (S .NE. B) GO TO 340 |
|||
IF (Z .EQ. 1) GO TO 370 |
|||
Q=1 |
|||
GOTO 350 |
|||
340 IF (W(R,S+1) .NE. 0) GO TO 370 |
|||
350 X=IFIX(RND(IX)*3+1) |
|||
IF (X .EQ. 1) GO TO 790 |
|||
IF (X .EQ. 2) GO TO 820 |
|||
IF (X .EQ. 3) GO TO 910 |
|||
370 X=IFIX(RND(IX)*2+1) |
|||
IF (X .EQ. 1) GO TO 790 |
|||
IF (X .EQ. 2) GO TO 820 |
|||
390 IF (R .EQ. H) GO TO 470 |
|||
IF (W(R+1,S) .NE. 0) GO TO 470 |
|||
IF (S .NE. B) GO TO 420 |
|||
IF (Z .EQ. 1) GO TO 450 |
|||
Q = 1 |
|||
GOTO 430 |
|||
420 IF (W(R,S+1) .NE. 0) GO TO 450 |
|||
430 X = IFIX(RND(IX)*3+1) |
|||
IF (X .EQ. 1) GO TO 790 |
|||
IF (X .EQ. 2) GO TO 860 |
|||
IF (X .EQ. 3) GO TO 910 |
|||
450 X=IFIX(RND(IX)*2+1) |
|||
IF (X .EQ. 1) GO TO 790 |
|||
IF (X .EQ. 2) GO TO 860 |
|||
470 IF (S .NE. B) GO TO 490 |
|||
IF (Z .EQ. 1) GO TO 520 |
|||
Q = 1 |
|||
GOTO 500 |
|||
490 IF (W(R,S+1) .NE. 0) GO TO 520 |
|||
500 X=IFIX(RND(IX)*2+1) |
|||
IF (X .EQ. 1) GO TO 790 |
|||
IF (X .EQ. 2) GO TO 910 |
|||
520 GOTO 790 |
|||
530 IF (S-1 .EQ. 0) GO TO 670 |
|||
IF (W(R,S-1) .NE. 0) GO TO 670 |
|||
IF (R .EQ. H) GO TO 610 |
|||
IF (W(R+1,S) .NE. 0) GO TO 610 |
|||
IF (S .NE. B) GO TO 560 |
|||
IF (Z .EQ. 1) GO TO 590 |
|||
Q=1 |
|||
GOTO 570 |
|||
560 IF (W(R,S+1) .NE. 0) GO TO 590 |
|||
570 X=IFIX(RND(IX)*3+1) |
|||
IF (X .EQ. 1) GO TO 820 |
|||
IF (X .EQ. 2) GO TO 860 |
|||
IF (X .EQ. 3) GO TO 910 |
|||
590 X=IFIX(RND(IX)*2+1) |
|||
IF (X .EQ. 1) GO TO 820 |
|||
IF (X .EQ. 2) GO TO 860 |
|||
610 IF (S .NE. B) GO TO 630 |
|||
IF (Z .EQ. 1) GO TO 660 |
|||
Q=1 |
|||
GOTO 640 |
|||
630 IF (W(R,S+1) .NE. 0) GO TO 660 |
|||
640 X=IFIX(RND(IX)*2+1) |
|||
IF (X .EQ. 1) GO TO 820 |
|||
IF (X .EQ. 2) GO TO 910 |
|||
660 GOTO 820 |
|||
670 IF (R .EQ. H) GO TO 740 |
|||
IF (W(R+1,S) .NE. 0) GO TO 740 |
|||
IF (S .NE. B) GO TO 700 |
|||
IF (Z .EQ. 1) GO TO 730 |
|||
Q=1 |
|||
GOTO 830 |
|||
700 IF (W(R,S+1) .NE. 0) GO TO 730 |
|||
X=IFIX(RND(IX)*2+1) |
|||
IF (X .EQ. 1) GO TO 860 |
|||
IF (X .EQ. 2) GO TO 910 |
|||
730 GOTO 860 |
|||
740 IF (S .NE. B) GO TO 760 |
|||
IF (Z .EQ. 1) GO TO 780 |
|||
Q=1 |
|||
GOTO 770 |
|||
760 IF (W(R,S+1) .NE. 0) GO TO 780 |
|||
770 GOTO 910 |
|||
780 GOTO 1000 |
|||
790 W(R-1,S)=C |
|||
C=C+1 |
|||
V(R-1,S)=2 |
|||
R=R-1 |
|||
IF (C .EQ. H*B+1) GO TO 1010 |
|||
Q=0 |
|||
GOTO 260 |
|||
820 W(R,S-1)=C |
|||
830 C=C+1 |
|||
V(R,S-1)=1 |
|||
S=S-1 |
|||
IF (C .EQ. H*B+1) GO TO 1010 |
|||
Q=0 |
|||
GOTO 260 |
|||
860 W(R+1,S)=C |
|||
C=C+1 |
|||
IF (V(R,S) .EQ. 0) GO TO 880 |
|||
V(R,S)=3 |
|||
GOTO 890 |
|||
880 V(R,S)=2 |
|||
890 R=R+1 |
|||
IF (C .EQ. H*B+1) GO TO 1010 |
|||
GOTO 530 |
|||
910 IF (Q .EQ. 1) GO TO 960 |
|||
W(R,S+1)=C |
|||
C=C+1 |
|||
IF (V(R,S) .EQ. 0) GO TO 940 |
|||
V(R,S)=3 |
|||
GOTO 950 |
|||
940 V(R,S)=1 |
|||
950 S=S+1 |
|||
IF (C .EQ. H*B+1) GO TO 1010 |
|||
GOTO 260 |
|||
960 Z=1 |
|||
IF (V(R,S) .EQ. 0) GO TO 980 |
|||
V(R,S)=3 |
|||
Q=0 |
|||
GOTO 1000 |
|||
980 V(R,S)=1 |
|||
Q=0 |
|||
R=1 |
|||
S=1 |
|||
GOTO 250 |
|||
1000 GOTO 210 |
|||
1010 DO 1073 J=1, B |
|||
LINE(1) = BBI |
|||
DO 1040 I=1, H |
|||
IF (V(I,J) .LT. 2) GO TO 1030 |
|||
LINE(I+1) = BBB |
|||
GOTO 1040 |
|||
1030 LINE(I+1) = BBI |
|||
1040 CONTINUE |
|||
WRITE(1, 106) (LINE(I), I=1, H1) |
|||
106 FORMAT (1X,26A3) |
|||
DO 1070 I=1, H |
|||
IF (V(I,J) .EQ. 0) GO TO 1060 |
|||
IF (V(I,J) .EQ. 2) GO TO 1060 |
|||
LINE(I) = EBB |
|||
GOTO 1070 |
|||
1060 LINE(I) = EDD |
|||
1070 CONTINUE |
|||
LINE(H1) = EBB |
|||
WRITE (1,107) (LINE(I), I = 1, H1) |
|||
107 FORMAT (3X, 26A3) |
|||
1073 CONTINUE |
|||
END |
|||
FUNCTION RND(IY) |
|||
C This function returns a psudo random real number between 0 and 1. |
|||
IY = IY*899 |
|||
IF (IY .LT. 0) IY = IY + 32767 + 1 |
|||
RND=FLOAT(IY)/32767. |
|||
RETURN |
|||
END |
|||
</syntaxhighlight> |
|||
{{out}} |
|||
<pre style="height:35ex;overflow:scroll;"> |
|||
Enter a random seed ? -23 |
|||
Enter number of rows ? 10 |
|||
Enter number of columns ? 23 |
|||
|--|--|--|--|--|--|--|--| |--|--|--|--|--|--|--|--|--|--|--|--|--|--| |
|||
| | | | | | | | |
|||
| |--| |--|--| |--| | | |--|--| |--|--|--|--| | |--| |--| | |
|||
| | | | | | | | | | | |
|||
| |--|--| | |--|--| | |--| | |--|--| |--|--|--|--| |--| |--| |
|||
| | | | | | | | | | |
|||
| |--|--| |--|--|--|--|--|--|--|--|--| |--|--|--| | | | |--| | |
|||
| | | | | | | |
|||
|--|--| | |--|--|--|--|--|--| |--| | |--|--|--|--|--|--|--|--|--| |
|||
| | | | | | | | | |
|||
| |--|--| | |--|--| |--| | |--| | |--|--| |--|--|--| |--| | |
|||
| | | | | | | | | | | |
|||
|--|--| | |--| | |--|--|--|--| | |--|--| |--| | |--|--|--|--| |
|||
| | | | | | | | | | | | |
|||
| | | | | |--| |--| | | | |--|--|--|--| | |--|--|--|--| | |
|||
| | | | | | | | | | | | | | |
|||
| | | |--|--| | |--|--| | |--|--|--| | |--|--| | | | |--| |
|||
| | | | | | | | | | | | | |
|||
| |--|--| |--| |--|--| | | | |--|--|--| | | |--|--|--|--| | |
|||
| | | | | | | |
|||
|--|--|--|--|--|--|--|--|--|--| |--|--|--|--|--|--|--|--|--|--|--|--| |
|||
</pre> |
|||
=={{header|Emacs Lisp}}== |
=={{header|Emacs Lisp}}== |
||
{{libheader|cl-lib}} |
{{libheader|cl-lib}} |