-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathLOREM.PAS
121 lines (109 loc) · 3.43 KB
/
LOREM.PAS
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
{ @author: Sylvain Maltais (support@gladir.com)
@created: 2023
@website(https://www.gladir.com/CODER/IALIB-TP)
@abstract(Target: Turbo Pascal 7, Free Pascal 3.2)
}
Unit LOREM;
INTERFACE
Procedure WriteLoremIpsumTextInFile(Var F:Text;Count:Integer;LoremIpsum:Boolean);
IMPLEMENTATION
Uses Strings;
Const
Words:Array[0..177]of PChar=(
'lorem','ipsum','dolor','sit','amet','consectetur','adipiscing',
'elit','curabitur','vel','hendrerit','libero','eleifend',
'blandit','nunc','ornare','odio','ut','orci','gravida',
'imperdiet','nullam','purus','lacinia','a','pretium','quis',
'congue','praesent','sagittis','laoreet','auctor','mauris',
'non','velit','eros','dictum','proin','accumsan','sapien','nec',
'massa','volutpat','venenatis','sed','eu','molestie','lacus',
'quisque','porttitor','ligula','dui','mollis','tempus','at',
'magna','vestibulum','turpis','ac','diam','tincidunt','id',
'condimentum','enim','sodales','in','hac','habitasse','platea',
'dictumst','aenean','neque','fusce','augue','leo','eget','semper',
'mattis','tortor','scelerisque','nulla','interdum','tellus',
'malesuada','rhoncus','porta','sem','aliquet','et','nam',
'suspendisse','potenti','vivamus','luctus','fringilla','erat',
'donec','justo','vehicula','ultricies','varius','ante','primis',
'faucibus','ultrices','posuere','cubilia','curae','etiam',
'cursus','aliquam','quam','dapibus','nisl','feugiat','egestas',
'class','aptent','taciti','sociosqu','ad','litora','torquent',
'per','conubia','nostra','inceptos','himenaeos','phasellus',
'nibh','pulvinar','vitae','urna','iaculis','lobortis','nisi',
'viverra','arcu','morbi','pellentesque','metus','commodo',
'ut','facilisis','felis','tristique','ullamcorper','placerat',
'aenean','convallis','sollicitudin','integer','rutrum','duis',
'est','etiam','bibendum','donec','pharetra','vulputate',
'maecenas','mi','fermentum','consequat','suscipit','aliquam',
'habitant','senectus','netus','fames','quisque','euismod',
'curabitur','lectus','elementum','tempor','risus','cras'
);
Function StrToCapital(S:String):String;Begin
If Length(S)=0 Then StrToCapital:=''
Else StrToCapital:=UpCase(S[1])+Copy(S,2,255);
End;
Function Gauss:Real;
Var
U,V,X,Y:Real;
Begin
X:=Random;
Y:=Random;
U:=Sqrt(-2*Ln(X))*Cos(2*PI*Y);
V:=Sqrt(-2*Ln(X))*Sin(2*PI*Y);
Gauss:=U;
End;
Function GaussMs(M,S:Real):Real;Begin
GaussMs:=Gauss+S+M;
End;
Function GaussSentence:Integer;Begin
GaussSentence:=Round(GaussMs(2.460,5.080));
End;
Procedure WriteLoremIpsumTextInFile(Var F:Text;Count:Integer;LoremIpsum:Boolean);
Var
I,NumWord,_Index,LenSentence:Integer;
Capital:Boolean;
LastWord:String;
Begin
Capital:=True;
LenSentence:=GaussSentence;
I:=0;NumWord:=0;
If(LoremIpsum)Then Begin
I:=2;
Write(F,'Lorem ');
Write(F,'Ipsum ');
NumWord:=2;
End;
While(I<Count)do Begin
_Index:=Random(High(Words));
If LastWord=StrPas(Words[_Index])Then _Index:=Random(High(Words));
If(Capital)Then Begin
Write(F,StrToCapital(StrPas(Words[_Index])));
Capital:=False;
End
Else
Write(F,StrPas(Words[_Index]));
If I+1<Count Then Begin
If NumWord>=LenSentence Then Begin
LenSentence:=GaussSentence;
Case Random(2) of
0:Write(F,', ');
1:Begin
Write(F,'. ');
Capital:=True;
End;
End;
NumWord:=0;
End
Else
Begin
Write(F,' ');
Inc(NumWord);
Capital:=False;
End;
End;
LastWord:=StrPas(Words[_Index]);
Inc(I);
End;
Write(F,'.');
End;
END.