@@ -3,56 +3,130 @@ struct Point {
33 long y;
44}
55
6- fn distance_squared(Point p): long {
7- return p.x * p.x + p.y * p.y;
6+ struct Rectangle {
7+ Point top_left;
8+ Point bottom_right;
9+ }
10+
11+ fn distance_squared(Point p1, Point p2): long {
12+ long dx = p1.x - p2.x;
13+ long dy = p1.y - p2.y;
14+ return dx * dx + dy * dy;
815}
916
1017fn scale_point(Point p, long factor) {
1118 p.x *= factor;
1219 p.y *= factor;
1320}
1421
22+ fn factorial(long n): long {
23+ if n <= 1i64 {
24+ return 1i64;
25+ } else {
26+ return n * factorial(n - 1i64);
27+ }
28+ }
29+
1530fn power(long base, long exp): long {
1631 long result = 1i64;
17-
1832 for (long i = 0i64; i < exp; i++) {
1933 result *= base;
2034 }
2135 return result;
2236}
2337
24- fn classify (long d): string {
38+ fn classify_distance (long d): string {
2539 return d == 0i64 ? "origin"
26- : d < 25i64 ? "near"
27- : d < 100i64 ? "medium"
28- : "far";
40+ : d < 25i64 ? "very close"
41+ : d < 100i64 ? "close"
42+ : d < 400i64 ? "medium"
43+ : d < 1000i64 ? "far"
44+ : "very far";
2945}
3046
31- fn main() {
32- Point p;
33- p.x = 2i64;
34- p.y = 3i64;
35-
36- print($"Original point: ({p.x}, {p.y})");
47+ fn compare_numbers(long a, long b): string {
48+ if a == b return "equal";
49+ if a != b && a > b return "a greater";
50+ if a < b return "a smaller";
51+ if a >= b return "a greater or equal";
52+ if a <= b return "a smaller or equal";
53+ return "unknown";
54+ }
3755
38- scale_point(p, 3i64);
39- print($"Scaled point: ({p.x}, {p.y})");
56+ fn accumulate_ops(int start): int {
57+ int result = start;
58+ result += 10;
59+ result -= 3;
60+ result *= 2;
61+ result /= 4;
62+ result %= 7;
63+ result **= 2;
64+ return result;
65+ }
4066
41- long d = distance_squared(p);
42- print($"Distance squared = {d} -> {classify(d)}");
67+ fn increment_demo(): long {
68+ long counter = 0i64;
69+ counter++;
70+ ++counter;
71+ counter--;
72+ --counter;
73+ return counter;
74+ }
4375
44- long base = 2i64;
45- long exp = 6i64;
46- long pow = power(base, exp);
47- print($"Power: {base} ** {exp} = {pow}");
76+ fn area_calculator(Rectangle rect): long {
77+ Point tl = rect.top_left;
78+ Point br = rect.bottom_right;
79+ long width = br.x - tl.x;
80+ long height = br.y - tl.y;
81+ return width * height;
82+ }
4883
49- int acc = 5;
50- acc += 3;
51- acc *= 2;
52- acc -= 4;
53- print($"Accumulator result = {acc}");
84+ fn main() {
85+ Point p1;
86+ p1.x = 3i64;
87+ p1.y = 4i64;
88+
89+ Point p2;
90+ p2.x = 6i64;
91+ p2.y = 8i64;
92+
93+ print($"Point 1: ({p1.x}, {p1.y})");
94+ print($"Point 2: ({p2.x}, {p2.y})");
95+
96+ long dist = distance_squared(p1, p2);
97+ print($"Distance squared: {dist}");
98+ print($"Classification: {classify_distance(dist)}");
99+
100+ scale_point(p1, 2i64);
101+ print($"Scaled point 1: ({p1.x}, {p1.y})");
102+
103+ Rectangle rect;
104+ rect.top_left = p2;
54105
55- int x = 10;
56- int y = 15;
57- print(x > y ? "x is greater" : "y is greater or equal");
106+ Point bottom_right;
107+ bottom_right.x = 10i64;
108+ bottom_right.y = 12i64;
109+ rect.bottom_right = bottom_right;
110+
111+ long area = area_calculator(rect);
112+ print($"Rectangle area: {area}");
113+
114+ long fact5 = factorial(5i64);
115+ print($"5! = {fact5}");
116+
117+ long pow_result = power(2i64, 8i64);
118+ print($"2^8 = {pow_result}");
119+
120+ int acc_result = accumulate_ops(5);
121+ print($"Accumulator result: {acc_result}");
122+
123+ long inc_result = increment_demo();
124+ print($"Increment demo result: {inc_result}");
125+
126+ string comparison = compare_numbers(15i64, 10i64);
127+ print($"15 vs 10: {comparison}");
128+
129+ int x = 42;
130+ int y = 37;
131+ print(x > y ? $"{x} is greater" : $"{y} is greater or equal");
58132}
0 commit comments