math_tasks 1.0.1 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +2 -1
- data/{.gitignore → _gitignore} +0 -0
- data/lib/math_tasks.rb +364 -302
- data/math_tasks-1.0.1.gem +0 -0
- data/math_tasks.gemspec +14 -0
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 71ef0177029feb734306b688bbbc671982542839b4dbb03e85c92b49b528e33e
|
4
|
+
data.tar.gz: 4bb33402ea331da57b47b384d079474eb0124329b9cd3ba455b93fdb4416f29e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a236c5cacacc704f793ef567389c5d6b2dd216d2f194d7fa45d4bc84c4b3ea2f02ffb094a3a4a9d11d6ff75550dcac4bb3f69f50d709adfc4c775553777ef28f
|
7
|
+
data.tar.gz: 186d67cb0c8726f5b2f70922badfb9f3d387a8f248344fb770362ba93d96dfc06a370caf714df50359903ba1427dc21b61fe140f063c26366216db150203425d
|
data/README.md
CHANGED
@@ -1 +1,2 @@
|
|
1
|
-
# MathTasksGem
|
1
|
+
# MathTasksGem
|
2
|
+
https://rubygems.org/gems/math_tasks
|
data/{.gitignore → _gitignore}
RENAMED
File without changes
|
data/lib/math_tasks.rb
CHANGED
@@ -1,371 +1,433 @@
|
|
1
1
|
class MathTasks
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
2
|
+
THE_TASK_1 = "Даны два действительных числа a и b. Получить их сумму, разность и произведение."
|
3
|
+
THE_TASK_2 = "Даны действительные числа x и y. Получить (|x|-|y|)/(1+|xy|)."
|
4
|
+
THE_TASK_3 = "Дана длина ребра куба. Найти объем куба и площадь его боковой поверхности."
|
5
|
+
THE_TASK_4 = "Даны два действительных положительных числа. Найти среднее арифметическое и среднее геометрическое этих чисел."
|
6
|
+
THE_TASK_5 = "Даны два действительных числа. Найти среднее арифметическое этих чисел и среднее геометрическое их модулей."
|
7
|
+
THE_TASK_6 = "Даны катеты прямоугольного треугольника. Найти его гипотенузу и площадь."
|
8
|
+
THE_TASK_8 = "Определить периметр правильного n-угольника,описанного около окружности радиуса r."
|
9
|
+
THE_TASK_9 = "Даны два действительных числа a и b. Получить их сумму, разность и произведение."
|
10
|
+
THE_TASK_10 = "Определить время падения камня на поверхность земли с высоты h."
|
11
|
+
THE_TASK_12 = "Дана сторона равностороннего треугольника. Найти площадь этого треугольника."
|
12
|
+
THE_TASK_13 = "Вычислить период колебания маятника длины l."
|
13
|
+
THE_TASK_14 = "Определить силу притяжения F между телами массы m1 и m2 , находящимися на расстоянии r друг от друга."
|
14
|
+
THE_TASK_15 = "Даны гипотенуза и катет прямоугольного треугольника. Найти второй катет и радиус вписанной окружности."
|
15
|
+
THE_TASK_16 = "Известна длина окружности. Найти площадь круга, ограниченного этой окружностью."
|
16
|
+
THE_TASK_17 = "Найти площадь кольца, внутренний радиус которого равен 20, а внешний – заданному числу r (r>20)."
|
17
|
+
THE_TASK_19 = "Определить время, через которое встретятся два тела, равноускоренно движущиеся навстречу друг другу, если известны их начальные скорости, ускорения и начальное расстояние между ними."
|
18
|
+
THE_TASK_20 = " Найти сумму членов арифметической прогрессии a, a+ d ,...,a+(n-1)d по данным значениям a, d, n."
|
19
|
+
THE_TASK_22 = "Найти площадь равнобочной трапеции с основаниями a и b и углом α при большем основании а."
|
20
|
+
THE_TASK_24 = "Вычислить расстояние между двумя точками с координатами x1 , y1 и x2 , y2."
|
21
|
+
THE_TASK_25 = "Треугольник задан координатами своих вершин. Найти:
|
22
|
+
а) периметр треугольника;
|
23
|
+
б) площадь треугольника."
|
24
|
+
THE_TASK_26 = "Найти площадь сектора, радиус которого равен 13.7, а дуга содержит заданное число радиан φ."
|
25
|
+
THE_TASK_27 = "Даны действительные положительные числа а, b, c. По трем сторонам с длинами a, b, c можно построить треугольник. Найти углы треугольника."
|
26
|
+
THE_TASK_28 = "Дано действительное число х. Не пользуясь никакими другими арифметическими операциями, кроме умножения, сложения и вычитания, вычислить:
|
27
|
+
2x**4-3x**3+4x**2-5x+6
|
28
|
+
Разрешается использовать не более четырех умножений и четырех сложений и вычитаний."
|
29
|
+
THE_TASK_33 = "Даны действительные числах,у. Получить:
|
30
|
+
а) max (x,y); б) min (x,y);
|
31
|
+
в) max (x,y) , min (x,y)."
|
32
|
+
THE_TASK_36 = "Даны действительные числа a,b,c. Проверить, выполняются ли неравенства a < b < c."
|
33
|
+
THE_TASK_37 = "Даны действительные числа a,b,c. Удвоить эти числа, если a ≥ b ≥ c , и заменить их абсолютными значениями, если это не так."
|
34
|
+
THE_TASK_38 = "Даны два действительных числа a и b. Получить их сумму, разность и произведение."
|
35
|
+
THE_TASK_39 = "Даны два действительных числа. Вывести первое число, если оно больше второго, и оба числа, если это не так."
|
36
|
+
THE_TASK_40 = "Даны два действительных числа. Заменить первое число нулем, если оно меньше или равно второму, и оставить числа без изменения в противном случае."
|
37
|
+
THE_TASK_41 = "Даны три действительных числа. Выбрать из них те, которые принадлежат интервалу (1, 3)."
|
38
|
+
THE_TASK_42 = "Даны действительные числаx, y (x≠ y). Меньшее из этих двух чисел заменить их полусуммой, а большее – их удвоенным произведением."
|
39
|
+
THE_TASK_43 = "Даны три действительных числа. Возвести в квадрат те из них, значения которых неотрицательны."
|
40
|
+
THE_TASK_45 = "Даны действительные числа a,b,c,d. Если a≤ b ≤ c ≤ d, то каждое число заменить наибольшим из них; если a>b>c>d, то оставить без изменения; в противном случае все числа заменяются их квадратами."
|
41
|
+
THE_TASK_47 = "Даны действительные положительные числа x,y,z. а) Выяснить существует ли треугольник с длинами сторонx,y,z. б) Если треугольник существует, то ответить – является ли он остроугольным."
|
42
|
+
THE_TASK_62 = "Определить, является ли данное целое число четным."
|
43
|
+
THE_TASK_63 = "Определить, верно ли, что при делении неотрицательного целого числа а на положительное целое число b получается остаток, равный одному из двух заданных чисел r или s."
|
44
|
+
THE_TASK_64 = "Дано натуральное числоn (n>99). Определить число сотен в нем."
|
45
|
+
THE_TASK_65 = "Дано натуральное числоn (n>99). Выяснить, верно ли, что n2 равно кубу суммы цифр числа n."
|
46
|
+
THE_TASK_66 = "Даны целые числа k,m, действительные числа x,y,z. При k<m2 ,k=m2 илиk>m2 заменить модулем соответственно значенияx,y илиz, а два других значения уменьшить на 0.5."
|
47
|
+
THE_TASK_73 = "Даны целые числа k,l. Если числа не равны, то заменить каждое из них одним и тем же числом, равным большему из исходных, а если равны, то заменить числа нулями."
|
48
|
+
THE_TASK_74 = "Дано натуральное n (n ≤ 100), определяющее возраст человека (в годах). Дать для этого числа наименования «год», «года» или «лет»: например, 1 год, 23 года, 45 лет и т. д."
|
49
|
+
THE_TASK_87 = "Даны натуральное n,m. Получить сумму m последних цифр числа n."
|
50
|
+
THE_TASK_90 = "Даны натуральные числа m и n. Найти такие натуральные p и q, не имеющие общих делителей, что p/q = m/n."
|
51
|
+
THE_TASK_107 = "Дано целое число m > 1. Получить наибольшее целое k, при котором 4**k < m."
|
52
|
+
THE_TASK_108 = "Дано натуральное число n. Получить наименьшее число вида 2**r , превосходящее n"
|
53
|
+
THE_TASK_109 = "Дано натуральное число n. Вычислить 1⋅2 + 2⋅3⋅4 +...+ n⋅(n+1)⋅...⋅2n."
|
54
|
+
THE_TASK_183 = "Даны натуральные числа n, p, целые числа a1, … , an. Получить произведение членов последовательности a1, … , an, кратных p."
|
55
|
+
THE_TASK_251 = "Даны натуральное число n, символы s1, …, sn. Подсчитать, сколько раз среди данных символов встречается буква x. (Строковый вариант: дана строка символов; подсчитать, сколько раз среди символов строки встречается буква x.)"
|
56
|
+
THE_TASK_252 = "Даны натуральное число n, символы s1, …, sn. Подсчитать:
|
57
|
+
а) сколько раз среди данных символов встречается символ + и сколько раз символ ∗ ;
|
58
|
+
б) общее число вхождений символов +, –, * в последовательность s1,...,sn "
|
59
|
+
THE_TASK_261 = " Даны натуральное число n, символы s1, …, sn.
|
60
|
+
а) Подсчитать наибольшее количество идущих подряд пробелов.
|
61
|
+
б) Выяснить, верно ли, что в последовательности s1, …, s имеются пять идущих подряд букв е. "
|
62
|
+
|
63
|
+
class << self
|
64
|
+
def task_1(first_number, second_number)
|
65
|
+
{ sum: first_number + second_number,
|
66
|
+
dif: first_number - second_number,
|
67
|
+
product: first_number * second_number }
|
68
|
+
end
|
7
69
|
|
8
|
-
|
9
|
-
|
10
|
-
|
70
|
+
def task_2(first_number, second_number)
|
71
|
+
{ result: (first_number.abs - second_number.abs) / (1 + first_number.abs * second_number.abs) }
|
72
|
+
end
|
11
73
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
74
|
+
def task_3(cube_side)
|
75
|
+
{ volume: cube_side**3,
|
76
|
+
surface_area: cube_side**2 }
|
77
|
+
end
|
16
78
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
79
|
+
def task_4(first_number, second_number)
|
80
|
+
{ average: (first_number * second_number) / 2,
|
81
|
+
geometric_mean: Math.sqrt((first_number * second_number)).round(2) }
|
82
|
+
end
|
21
83
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
84
|
+
def task_5(first_number, second_number)
|
85
|
+
{ average: (first_number * second_number) / 2,
|
86
|
+
geometric_mean_mod: Math.sqrt((first_number.abs * second_number.abs)).round(2) }
|
87
|
+
end
|
26
88
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
89
|
+
def task_6(side1, side2)
|
90
|
+
{ hypotenuse: Math.sqrt(side1**2 + side2**2).round(2),
|
91
|
+
square: side1 * side2 / 2 }
|
92
|
+
end
|
31
93
|
|
32
|
-
|
33
|
-
|
34
|
-
|
94
|
+
def task_8(number_angle, radius)
|
95
|
+
{ perimeter: (2 * number_angle * radius * Math.tan(Math::PI / number_angle)).round(2) }
|
96
|
+
end
|
35
97
|
|
36
|
-
|
37
|
-
|
38
|
-
|
98
|
+
def task_9(resistor1, resistor2, resistor3)
|
99
|
+
{ total_resistance: (1 / (1 / resistor1.to_f + 1 / resistor2.to_f + 1 / resistor3.to_f)).round(2) }
|
100
|
+
end
|
39
101
|
|
40
|
-
|
41
|
-
|
42
|
-
|
102
|
+
def task_10(height)
|
103
|
+
{ time_fall: Math.sqrt(2 * height / 9.8).round(2) }
|
104
|
+
end
|
43
105
|
|
44
|
-
|
45
|
-
|
46
|
-
|
106
|
+
def task_12(side)
|
107
|
+
{ square: (side**2 * Math.sqrt(3) / 4).round(2) }
|
108
|
+
end
|
47
109
|
|
48
|
-
|
49
|
-
|
50
|
-
|
110
|
+
def task_13(length)
|
111
|
+
{ oscillation_period: (2**Math::PI * Math.sqrt(length) / 9.8).round(2) }
|
112
|
+
end
|
51
113
|
|
52
|
-
|
53
|
-
|
54
|
-
|
114
|
+
def task_14(mass1, mass2, distance)
|
115
|
+
{ force_attraction: mass1 * mass2 * 6.67e-11 / distance**2 }
|
116
|
+
end
|
55
117
|
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
118
|
+
def task_15(first_leg, hypotenuse)
|
119
|
+
second_leg = Math.sqrt(hypotenuse**2 - first_leg**2).round 2
|
120
|
+
circle_radius = ((first_leg + second_leg - hypotenuse) / 2).round 2
|
121
|
+
{ second_leg: second_leg,
|
122
|
+
circle_radius: circle_radius }
|
123
|
+
end
|
62
124
|
|
63
|
-
|
64
|
-
|
65
|
-
|
125
|
+
def task_16(circumference)
|
126
|
+
{ area: (circumference**2 / (Math::PI * 4)).round(2) }
|
127
|
+
end
|
66
128
|
|
67
|
-
|
68
|
-
|
69
|
-
|
129
|
+
def task_17(outer_radius)
|
130
|
+
{ area: (Math::PI * (outer_radius**2) - Math::PI * (20**2)).round(2) }
|
131
|
+
end
|
70
132
|
|
71
|
-
|
72
|
-
|
73
|
-
|
133
|
+
def task_19(v1, v2, a1, a2, s)
|
134
|
+
{ time: ((- (v1 + v2) + Math.sqrt((v1 + v2) * (v1 + v2) + 2 * (a1 + a2) * s)) / (a1 + a2)).round(2) }
|
135
|
+
end
|
74
136
|
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
137
|
+
def task_20(a, d, n)
|
138
|
+
sum = a
|
139
|
+
(0...n).each do |i|
|
140
|
+
sum += d * i
|
141
|
+
end
|
142
|
+
{ sum: sum }
|
79
143
|
end
|
80
|
-
{ sum: sum }
|
81
|
-
end
|
82
144
|
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
145
|
+
def task_22(base1, base2, angle)
|
146
|
+
{ square: (((base1 + base2) * ((base1 - base2).abs / 2) * Math.sin(angle * Math::PI / 180) / \
|
147
|
+
Math.cos(angle * Math::PI / 180)) / 2).round(2) }
|
148
|
+
end
|
87
149
|
|
88
|
-
|
89
|
-
|
90
|
-
|
150
|
+
def task_24(x1, x2, y1, y2)
|
151
|
+
{ distance: Math.sqrt((x1 - x2)**2 + (y1 - y2)**2).round(2) }
|
152
|
+
end
|
91
153
|
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
154
|
+
def task_25(x1, y1, x2, y2, x3, y3)
|
155
|
+
a = Math.sqrt(Math.sqrt((x2 - x1).abs) + Math.sqrt((y2 - y1).abs))
|
156
|
+
b = Math.sqrt(Math.sqrt((x3 - x2).abs) + Math.sqrt((y3 - y2).abs))
|
157
|
+
c = Math.sqrt(Math.sqrt((x1 - x3).abs) + Math.sqrt((y1 - y3).abs))
|
158
|
+
p = ((a + b + c) / 2).round 2
|
159
|
+
s = Math.sqrt(p * (p - a) * (p - b) * (p - c)).round 2
|
160
|
+
{ perimeter: p,
|
161
|
+
square: s }
|
162
|
+
end
|
101
163
|
|
102
|
-
|
103
|
-
|
104
|
-
|
164
|
+
def task_26(radius, angle_radian)
|
165
|
+
{ square: (radius * radius * angle_radian / 2).round(2) }
|
166
|
+
end
|
105
167
|
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
168
|
+
def task_27(a, b, c)
|
169
|
+
s = a.to_f + b.to_f + c.to_f
|
170
|
+
x = (a / s * 180).round 2
|
171
|
+
y = (b / s * 180).round 2
|
172
|
+
z = (c / s * 180).round 2
|
173
|
+
{ angle_1: x,
|
174
|
+
angle_2: y,
|
175
|
+
angle_3: z }
|
176
|
+
end
|
115
177
|
|
116
|
-
|
117
|
-
|
118
|
-
|
178
|
+
def task_28(number)
|
179
|
+
{ result: 6 + number * (-5 + number * (4 + number * (-3 + 2 * number))) }
|
180
|
+
end
|
119
181
|
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
182
|
+
def task_33(first_number, second_number)
|
183
|
+
{ max: first_number > second_number ? first_number : second_number,
|
184
|
+
min: first_number > second_number ? second_number : first_number }
|
185
|
+
end
|
124
186
|
|
125
|
-
|
126
|
-
|
127
|
-
|
187
|
+
def task_36(x, y, z)
|
188
|
+
{ result: x < y && y < z ? true : false }
|
189
|
+
end
|
128
190
|
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
191
|
+
def task_37(x, y, z)
|
192
|
+
if x >= y && y >= z
|
193
|
+
x *= 2
|
194
|
+
y *= 2
|
195
|
+
z *= 2
|
196
|
+
else
|
197
|
+
x = x.abs
|
198
|
+
y = y.abs
|
199
|
+
z = z.abs
|
200
|
+
end
|
201
|
+
{ x: x,
|
202
|
+
y: y,
|
203
|
+
z: z }
|
204
|
+
end
|
143
205
|
|
144
|
-
|
145
|
-
|
146
|
-
|
206
|
+
def task_38(x, y)
|
207
|
+
{ z: x > y ? x - y : y - x + 1 }
|
208
|
+
end
|
147
209
|
|
148
|
-
|
149
|
-
|
150
|
-
|
210
|
+
def task_39(x, y)
|
211
|
+
{ result: x > y ? x : [x, y] }
|
212
|
+
end
|
151
213
|
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
214
|
+
def task_40(x, y)
|
215
|
+
x = 0 if x <= y
|
216
|
+
{ x: x, y: y }
|
217
|
+
end
|
156
218
|
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
219
|
+
def task_41(x, y, z)
|
220
|
+
arr = []
|
221
|
+
arr << x if x >= 1 && x <= 3
|
222
|
+
arr << y if y >= 1 && y <= 3
|
223
|
+
arr << z if z >= 1 && z <= 3
|
224
|
+
{ result: arr }
|
225
|
+
end
|
164
226
|
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
227
|
+
def task_42(x, y)
|
228
|
+
if x > y
|
229
|
+
y = (x + y) / 2
|
230
|
+
x = (x + y) * 2
|
231
|
+
else
|
232
|
+
x = (x + y) / 2
|
233
|
+
y = (x + y) * 2
|
234
|
+
end
|
235
|
+
{ x: x, y: y }
|
172
236
|
end
|
173
|
-
{ x: x, y: y }
|
174
|
-
end
|
175
237
|
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
238
|
+
def task_43(x, y, z)
|
239
|
+
x **= 2 if x >= 0
|
240
|
+
y **= 2 if y >= 0
|
241
|
+
z **= 2 if z >= 0
|
242
|
+
{ x: x, y: y, z: z }
|
243
|
+
end
|
182
244
|
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
245
|
+
def task_45(a, b, c, d)
|
246
|
+
arr = []
|
247
|
+
arr << a << b << c << d
|
248
|
+
m = arr.max
|
249
|
+
rez = a > b && b > c && c > d
|
250
|
+
if a <= b && b <= c && c <= d
|
251
|
+
a = m
|
252
|
+
b = m
|
253
|
+
c = m
|
254
|
+
d = m
|
255
|
+
elsif !rez
|
256
|
+
a **= 2
|
257
|
+
b **= 2
|
258
|
+
c **= 2
|
259
|
+
d **= 2
|
260
|
+
end
|
261
|
+
{ a: a, b: b, c: c, d: d }
|
262
|
+
end
|
201
263
|
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
264
|
+
def task_47(a, b, c)
|
265
|
+
if a < (b + c) && b < (a + c) && c < (a + b)
|
266
|
+
if a == b || b == c || a == c
|
267
|
+
if a == b && b == c && a == c
|
268
|
+
{ result: 'equilateral triangle' }
|
269
|
+
else
|
270
|
+
{ result: 'isosceles triangle' }
|
271
|
+
end
|
207
272
|
else
|
208
|
-
{ result: '
|
273
|
+
{ result: 'arbitrary triangle' }
|
209
274
|
end
|
210
275
|
else
|
211
|
-
{ result: '
|
276
|
+
{ result: 'no triangle' }
|
212
277
|
end
|
213
|
-
else
|
214
|
-
{ result: 'no triangle' }
|
215
278
|
end
|
216
|
-
end
|
217
279
|
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
def self.task_63(a, b, r, _s)
|
223
|
-
{ result: (a % b == r) || (a % b == r) ? true : false }
|
224
|
-
end
|
280
|
+
def task_62(number)
|
281
|
+
{ result: number.even? ? 'even' : 'odd' }
|
282
|
+
end
|
225
283
|
|
226
|
-
|
227
|
-
|
228
|
-
|
284
|
+
def task_63(a, b, r, _s)
|
285
|
+
{ result: (a % b == r) || (a % b == r) ? true : false }
|
286
|
+
end
|
229
287
|
|
230
|
-
|
231
|
-
|
232
|
-
|
288
|
+
def task_64(x)
|
289
|
+
{ result: (x / 100).to_i }
|
290
|
+
end
|
233
291
|
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
y -= 0.5
|
238
|
-
z -= 0.5
|
239
|
-
elsif k == m**2
|
240
|
-
y = y.abs
|
241
|
-
x -= 0.5
|
242
|
-
z -= 0.5
|
243
|
-
else
|
244
|
-
z = z.abs
|
245
|
-
x -= 0.5
|
246
|
-
y -= 0.5
|
247
|
-
end
|
248
|
-
{ x: x, y: y, z: z }
|
249
|
-
end
|
292
|
+
def task_65(n)
|
293
|
+
{ result: n**2 == n.to_s.split('').inject(0) { |sum, x| sum + x.to_i } }
|
294
|
+
end
|
250
295
|
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
296
|
+
def task_66(k, m, x, y, z)
|
297
|
+
if k < m**2
|
298
|
+
x = x.abs
|
299
|
+
y -= 0.5
|
300
|
+
z -= 0.5
|
301
|
+
elsif k == m**2
|
302
|
+
y = y.abs
|
303
|
+
x -= 0.5
|
304
|
+
z -= 0.5
|
305
|
+
else
|
306
|
+
z = z.abs
|
307
|
+
x -= 0.5
|
308
|
+
y -= 0.5
|
309
|
+
end
|
310
|
+
{ x: x, y: y, z: z }
|
311
|
+
end
|
264
312
|
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
when 2, 3, 4
|
273
|
-
word = 'года'
|
313
|
+
def task_73(first_number, second_number)
|
314
|
+
p ' task 73:'
|
315
|
+
arr = []
|
316
|
+
arr << first_number << second_number
|
317
|
+
if first_number != second_number
|
318
|
+
first_number = arr.max
|
319
|
+
second_number = arr.max
|
274
320
|
else
|
321
|
+
first_number = 0
|
322
|
+
second_number = 0
|
323
|
+
end
|
324
|
+
{ first_number: first_number, second_number: second_number }
|
325
|
+
end
|
326
|
+
|
327
|
+
def task_74(age)
|
328
|
+
if age >= 11 && age <= 14
|
275
329
|
word = 'лет'
|
330
|
+
else
|
331
|
+
case age % 10
|
332
|
+
when 1
|
333
|
+
word = 'год'
|
334
|
+
when 2, 3, 4
|
335
|
+
word = 'года'
|
336
|
+
else
|
337
|
+
word = 'лет'
|
338
|
+
end
|
276
339
|
end
|
340
|
+
{ result: age.to_s + ' ' + word }
|
277
341
|
end
|
278
|
-
{ result: age.to_s + ' ' + word }
|
279
|
-
end
|
280
342
|
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
343
|
+
def task_87(number1, number2)
|
344
|
+
sum = 0
|
345
|
+
i = 0
|
346
|
+
while number1 > 0 && i < number2
|
347
|
+
sum += number1 % 10
|
348
|
+
number1 /= 10
|
349
|
+
i += 1
|
350
|
+
end
|
351
|
+
{ sum: sum }
|
288
352
|
end
|
289
|
-
{ sum: sum }
|
290
|
-
end
|
291
353
|
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
354
|
+
def task_90(m, n)
|
355
|
+
nod = m.gcd(n)
|
356
|
+
{ p: m / nod,
|
357
|
+
q: n / nod }
|
358
|
+
end
|
297
359
|
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
360
|
+
def task_107(m)
|
361
|
+
rez = 0
|
362
|
+
i = 0
|
363
|
+
while rez < m
|
364
|
+
i += 1
|
365
|
+
rez = 4**i
|
366
|
+
end
|
367
|
+
{ k: i - 1 }
|
304
368
|
end
|
305
|
-
{ k: i - 1 }
|
306
|
-
end
|
307
369
|
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
370
|
+
def self.task_108(number)
|
371
|
+
rez = 0
|
372
|
+
i = 0
|
373
|
+
while rez < number
|
374
|
+
i += 1
|
375
|
+
rez = 2**i
|
376
|
+
end
|
377
|
+
{ result: rez }
|
314
378
|
end
|
315
|
-
{ result: rez }
|
316
|
-
end
|
317
379
|
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
380
|
+
def task_109(number)
|
381
|
+
f = 0
|
382
|
+
if number == 1
|
383
|
+
f = 2
|
384
|
+
else
|
385
|
+
t = 1
|
386
|
+
(number..2 * number).each do |i|
|
387
|
+
t *= i
|
388
|
+
end
|
389
|
+
f = f * (number - 1) + t
|
326
390
|
end
|
327
|
-
|
391
|
+
{ result: f }
|
328
392
|
end
|
329
|
-
{ result: f }
|
330
|
-
end
|
331
393
|
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
394
|
+
def task_183(p, arr)
|
395
|
+
rez = arr.select { |a| (a.to_i % p.to_i).zero? && (a.to_i != 0) }.inject(1) { |r, a| r * a.to_i }
|
396
|
+
{ result: rez }
|
397
|
+
end
|
336
398
|
|
337
|
-
|
338
|
-
|
339
|
-
|
399
|
+
def task_251(str)
|
400
|
+
{ result: str.count('x') }
|
401
|
+
end
|
340
402
|
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
|
403
|
+
def task_252(str)
|
404
|
+
{ counter_plus: str.count('+'),
|
405
|
+
counter_multiple: str.count('*'),
|
406
|
+
counter_all: str.count('+') + str.count('-') + str.count('*') }
|
407
|
+
end
|
346
408
|
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
362
|
-
|
363
|
-
|
364
|
-
|
409
|
+
def task_261(str)
|
410
|
+
arr = str.split('')
|
411
|
+
space = 0
|
412
|
+
s = 0
|
413
|
+
rez = 0
|
414
|
+
e = 0
|
415
|
+
arr.each do |a|
|
416
|
+
if a == ' '
|
417
|
+
s += 1
|
418
|
+
else
|
419
|
+
space = s if s > space
|
420
|
+
s = 0
|
421
|
+
end
|
422
|
+
if a == 'e'
|
423
|
+
e += 1
|
424
|
+
else
|
425
|
+
rez = e if e > rez
|
426
|
+
e = 0
|
427
|
+
end
|
365
428
|
end
|
429
|
+
{ number_spaces: space,
|
430
|
+
question: rez >= 5 }
|
366
431
|
end
|
367
|
-
{ number_spaces: space,
|
368
|
-
question: rez >= 5 }
|
369
432
|
end
|
370
|
-
|
371
433
|
end
|
Binary file
|
data/math_tasks.gemspec
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
$:.push File.expand_path("../lib", __FILE__)
|
2
|
+
|
3
|
+
Gem::Specification.new do |s|
|
4
|
+
s.name = 'math_tasks'
|
5
|
+
s.version = '1.0.2'
|
6
|
+
s.date = '2018-11-21'
|
7
|
+
s.summary = 'MathTasks - Simple gem for some math taks'
|
8
|
+
s.description = 'Simple gem for some math tasks.'
|
9
|
+
s.author = 'Vladyslav volkov'
|
10
|
+
s.email = 'vladislav.volkov@gmail.com'
|
11
|
+
s.homepage = 'https://github.com/v-volkov/MathTasksGem'
|
12
|
+
s.license = 'MIT'
|
13
|
+
s.files = `git ls-files`.split("\n")
|
14
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: math_tasks
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Vladyslav volkov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-11-
|
11
|
+
date: 2018-11-21 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Simple gem for some math tasks.
|
14
14
|
email: vladislav.volkov@gmail.com
|
@@ -16,11 +16,13 @@ executables: []
|
|
16
16
|
extensions: []
|
17
17
|
extra_rdoc_files: []
|
18
18
|
files:
|
19
|
-
- ".gitignore"
|
20
19
|
- Gemfile
|
21
20
|
- Gemfile.lock
|
22
21
|
- README.md
|
22
|
+
- _gitignore
|
23
23
|
- lib/math_tasks.rb
|
24
|
+
- math_tasks-1.0.1.gem
|
25
|
+
- math_tasks.gemspec
|
24
26
|
homepage: https://github.com/v-volkov/MathTasksGem
|
25
27
|
licenses:
|
26
28
|
- MIT
|