94 lines
1.6 KiB
Plaintext
94 lines
1.6 KiB
Plaintext
DEFINE MAX_NUMBERS="200"
|
|
DEFINE MAX_LEN="20"
|
|
DEFINE MAX_FACTORS="5"
|
|
DEFINE PTR="CARD"
|
|
|
|
PROC PrintResult(BYTE max,n BYTE ARRAY factors PTR ARRAY texts)
|
|
BYTE i,j,t
|
|
BYTE ARRAY values(MAX_FACTORS)
|
|
|
|
FOR j=0 TO n-1
|
|
DO
|
|
values(j)=1
|
|
OD
|
|
|
|
FOR i=1 TO max
|
|
DO
|
|
t=0
|
|
FOR j=0 TO n-1
|
|
DO
|
|
IF values(j)=0 THEN
|
|
t=1 Print(texts(j))
|
|
FI
|
|
values(j)==+1
|
|
IF values(j)=factors(j) THEN
|
|
values(j)=0
|
|
FI
|
|
OD
|
|
IF t=0 THEN PrintB(i) FI
|
|
Put(32)
|
|
OD
|
|
RETURN
|
|
|
|
BYTE FUNC Find(CHAR ARRAY s CHAR c BYTE POINTER err)
|
|
BYTE i
|
|
|
|
FOR i=1 TO s(0)
|
|
DO
|
|
IF s(i)=c THEN
|
|
err^=0 RETURN (i)
|
|
FI
|
|
OD
|
|
err^=1
|
|
RETURN (0)
|
|
|
|
PROC Main()
|
|
BYTE max,i,n,pos,err
|
|
BYTE ARRAY factors(MAX_FACTORS)
|
|
PTR ARRAY texts(MAX_FACTORS)
|
|
CHAR ARRAY
|
|
s(100),tmp(100),
|
|
t0(MAX_LEN),t1(MAX_LEN),t2(MAX_LEN),
|
|
t3(MAX_LEN),t4(MAX_LEN)
|
|
|
|
texts(0)=t0 texts(1)=t1 texts(2)=t2
|
|
texts(3)=t3 texts(4)=t4
|
|
|
|
DO
|
|
PrintF("Max number (1-%B): ",MAX_NUMBERS)
|
|
max=InputB()
|
|
UNTIL max>=1 AND max<=MAX_NUMBERS
|
|
OD
|
|
|
|
n=0
|
|
DO
|
|
PrintF("Number of rules (1-%B): ",MAX_FACTORS)
|
|
n=InputB()
|
|
UNTIL n>=1 AND n<=MAX_FACTORS
|
|
OD
|
|
|
|
FOR i=0 TO n-1
|
|
DO
|
|
DO
|
|
PrintF("Rule #%B (number space text):",i+1)
|
|
InputS(s)
|
|
pos=Find(s,' ,@err)
|
|
IF pos=1 OR pos=s(0) THEN
|
|
err=1
|
|
FI
|
|
IF err=0 THEN
|
|
SCopyS(tmp,s,1,pos-1)
|
|
factors(i)=ValB(tmp)
|
|
IF factors(i)<2 THEN
|
|
err=1
|
|
FI
|
|
SCopyS(texts(i),s,pos+1,s(0))
|
|
FI
|
|
UNTIL err=0
|
|
OD
|
|
OD
|
|
|
|
PutE()
|
|
PrintResult(max,n,factors,texts)
|
|
RETURN
|