RosettaCodeData/Task/Combinations/ERRE/combinations.erre

37 lines
675 B
Plaintext

PROGRAM COMBINATIONS
CONST M_MAX=3,N_MAX=5
DIM COMBINATION[M_MAX],STACK[100,1]
PROCEDURE GENERATE(M)
LOCAL I
IF (M>M_MAX) THEN
FOR I=1 TO M_MAX DO
PRINT(COMBINATION[I];" ";)
END FOR
PRINT
ELSE
FOR N=1 TO N_MAX DO
IF ((M=1) OR (N>COMBINATION[M-1])) THEN
COMBINATION[M]=N
! --- PUSH STACK -----------
STACK[SP,0]=M STACK[SP,1]=N
SP=SP+1
! --------------------------
GENERATE(M+1)
! --- POP STACK ------------
SP=SP-1
M=STACK[SP,0] N=STACK[SP,1]
! --------------------------
END IF
END FOR
END IF
END PROCEDURE
BEGIN
GENERATE(1)
END PROGRAM