1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
\START92\
\COMMENT=Single file dated Thu Dec 4 00:09:27 20
\NAME=invids2
\FILE=day2.invids2.92f
(str)
Func
Local start,end,dims,dime,startn,endn,starte,ende,startne,endne,i,j,t,result,dime0,dims0,end0,start0,seen
inString(str,"-")\->\i
left(str,i-1)\->\start0
right(str,dim(str)-i)\->\end0
0\->\result
dim(start0)\->\dims0
dim(end0)\->\dime0
{}\->\seen
For j,2,dime0
mod(dims0,j)\->\i
If i\!=\0 Then
string(10^(floor(log(expr(start0))+j-i)))\->\start
dim(start)\->\dims
Else
start0\->\start
dims0\->\dims
EndIf
mod(dime0,j)\->\i
If i\!=\0 Then
string(10^(floor(log(expr(end0)))-i+1)-1)\->\end
dim(end)\->\dime
Else
end0\->\end
dime0\->\dime
EndIf
left(start,dims/j)\->\startn
left(end,dime/j)\->\endn
expr(startn)\->\startne
expr(endn)\->\endne
expr(start)\->\starte
expr(end)\->\ende
\(C)\ skip if end < last invalid
If expr(end)\>=\expr(startn&startn) Then
For i,startne,endne
string(i)\->\t
expr(repeats(t,j))\->\t
If t\>=\starte and t\<=\ende and ?contains(seen,t) Then
augment(seen,{t})\->\seen
result+t\->\result
EndIf
EndFor
EndIf
EndFor
Return result
EndFunc
\STOP92\
|