-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbegin6.fs
More file actions
38 lines (32 loc) · 1022 Bytes
/
begin6.fs
File metadata and controls
38 lines (32 loc) · 1022 Bytes
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
\ Begin6. Даны длины ребер a, b, c прямоугольного параллелепипеда.
\ Найти его объем V = a·b·c и площадь поверхности S = 2·(a·b + b·c + a·c).
: 3MIRROR ( a b c -- a b c c b a )
DUP 2OVER SWAP
;
: V3D ( a b c -- V ) \ V = a*b*c
* *
;
: S3D ( a b c -- S ) \ S = 2*(a*b + b*c + a*c)
3MIRROR ( a b c -- a b c c b a )
ROT ( a b c c b a -- a b c a c b )
* ( a b c a c b -- a b c a c*b )
1 ( a b c a c*b -- a b c a c*b 1 )
2ROT ( a b c a c*b 1 -- c a c*b 1 a b )
* * ( c a c*b 1 a b -- c a c*b a*b )
2SWAP ( c a c*b a*b -- c*b a*b c a )
* ( c*b a*b c a -- c*b a*b c*a )
+ + 2 *
;
: B6 ( a b c -- S V) \ S = 2*(a*b + b*c + a*c), V = a*b*c
3MIRROR ( a b c -- a b c c b a )
S3D ( a b c c b a -- a b c S )
SWAP ( a b c S -- a b S c )
2SWAP ( a b S c -- S c a b )
V3D ( S c a b -- S V )
;
S" test/ttester.fs" included
t{ 1 2 3 3MIRROR -> 1 2 3 3 2 1 }t
t{ 2 3 5 V3D -> 30 }t
t{ 2 3 5 S3D -> 62 }t
t{ 2 3 5 B6 -> 62 30 }t
t{ 1 2 3 B6 -> 22 6 }t