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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c91e3d76ddf1c0ff57bb750803489adbf4c30dbad62a235e9aeeb790f0ea5b88
4
- data.tar.gz: 9736964ba155d0a938b4e3fa2dadddace8ec05e9177e353f1fd659db7ac54216
3
+ metadata.gz: 71ef0177029feb734306b688bbbc671982542839b4dbb03e85c92b49b528e33e
4
+ data.tar.gz: 4bb33402ea331da57b47b384d079474eb0124329b9cd3ba455b93fdb4416f29e
5
5
  SHA512:
6
- metadata.gz: a2efdfebafc4a872df783daa4c154fa985f0f35ec36289e9d09f35bae11bf68c8aadf771823cda10072aa4a7e5bda5b8dc5845b704e50e6c0637feef18e1fd10
7
- data.tar.gz: 4305ff2929427c5735c3b5f7b06325de5c38b8cd0979818b86ee983f9b58e1b76eb5dcd7e8da945297f6143c2298e69b4c9d8bd8e77afa796b389f8b59ad8739
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
File without changes
@@ -1,371 +1,433 @@
1
1
  class MathTasks
2
- def self.task_1(first_number, second_number)
3
- { sum: first_number + second_number,
4
- dif: first_number - second_number,
5
- product: first_number * second_number }
6
- end
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
- def self.task_2(first_number, second_number)
9
- { result: (first_number.abs - second_number.abs) / (1 + first_number.abs * second_number.abs) }
10
- end
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
- def self.task_3(cube_side)
13
- { volume: cube_side**3,
14
- surface_area: cube_side**2 }
15
- end
74
+ def task_3(cube_side)
75
+ { volume: cube_side**3,
76
+ surface_area: cube_side**2 }
77
+ end
16
78
 
17
- def self.task_4(first_number, second_number)
18
- { average: (first_number * second_number) / 2,
19
- geometric_mean: Math.sqrt((first_number * second_number)).round(2) }
20
- end
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
- def self.task_5(first_number, second_number)
23
- { average: (first_number * second_number) / 2,
24
- geometric_mean_mod: Math.sqrt((first_number.abs * second_number.abs)).round(2) }
25
- end
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
- def self.task_6(side1, side2)
28
- { hypotenuse: Math.sqrt(side1**2 + side2**2).round(2),
29
- square: side1 * side2 / 2 }
30
- end
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
- def self.task_8(number_angle, radius)
33
- { perimeter: (2 * number_angle * radius * Math.tan(Math::PI / number_angle)).round(2) }
34
- end
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
- def self.task_9(resistor1, resistor2, resistor3)
37
- { total_resistance: (1 / (1 / resistor1.to_f + 1 / resistor2.to_f + 1 / resistor3.to_f)).round(2) }
38
- end
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
- def self.task_10(height)
41
- { time_fall: Math.sqrt(2 * height / 9.8).round(2) }
42
- end
102
+ def task_10(height)
103
+ { time_fall: Math.sqrt(2 * height / 9.8).round(2) }
104
+ end
43
105
 
44
- def self.task_12(side)
45
- { square: (side**2 * Math.sqrt(3) / 4).round(2) }
46
- end
106
+ def task_12(side)
107
+ { square: (side**2 * Math.sqrt(3) / 4).round(2) }
108
+ end
47
109
 
48
- def self.task_13(length)
49
- { oscillation_period: (2**Math::PI * Math.sqrt(length) / 9.8).round(2) }
50
- end
110
+ def task_13(length)
111
+ { oscillation_period: (2**Math::PI * Math.sqrt(length) / 9.8).round(2) }
112
+ end
51
113
 
52
- def self.task_14(mass1, mass2, distance)
53
- { force_attraction: mass1 * mass2 * 6.67e-11 / distance**2 }
54
- end
114
+ def task_14(mass1, mass2, distance)
115
+ { force_attraction: mass1 * mass2 * 6.67e-11 / distance**2 }
116
+ end
55
117
 
56
- def self.task_15(first_leg, hypotenuse)
57
- second_leg = Math.sqrt(hypotenuse**2 - first_leg**2).round 2
58
- circle_radius = ((first_leg + second_leg - hypotenuse) / 2).round 2
59
- { second_leg: second_leg,
60
- circle_radius: circle_radius }
61
- end
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
- def self.task_16(circumference)
64
- { area: (circumference**2 / (Math::PI * 4)).round(2) }
65
- end
125
+ def task_16(circumference)
126
+ { area: (circumference**2 / (Math::PI * 4)).round(2) }
127
+ end
66
128
 
67
- def self.task_17(outer_radius)
68
- { area: (Math::PI * (outer_radius**2) - Math::PI * (20**2)).round(2) }
69
- end
129
+ def task_17(outer_radius)
130
+ { area: (Math::PI * (outer_radius**2) - Math::PI * (20**2)).round(2) }
131
+ end
70
132
 
71
- def self.task_19(v1, v2, a1, a2, s)
72
- { time: ((- (v1 + v2) + Math.sqrt((v1 + v2) * (v1 + v2) + 2 * (a1 + a2) * s)) / (a1 + a2)).round(2) }
73
- end
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
- def self.task_20(a, d, n)
76
- sum = a
77
- (0...n).each do |i|
78
- sum += d * i
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
- def self.task_22(base1, base2, angle)
84
- { square: (((base1 + base2) * ((base1 - base2).abs / 2) * Math.sin(angle * Math::PI / 180) / \
85
- Math.cos(angle * Math::PI / 180)) / 2).round(2) }
86
- end
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
- def self.task_24(x1, x2, y1, y2)
89
- { distance: Math.sqrt((x1 - x2)**2 + (y1 - y2)**2).round(2) }
90
- end
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
- def self.task_25(x1, y1, x2, y2, x3, y3)
93
- a = Math.sqrt(Math.sqrt((x2 - x1).abs) + Math.sqrt((y2 - y1).abs))
94
- b = Math.sqrt(Math.sqrt((x3 - x2).abs) + Math.sqrt((y3 - y2).abs))
95
- c = Math.sqrt(Math.sqrt((x1 - x3).abs) + Math.sqrt((y1 - y3).abs))
96
- p = ((a + b + c) / 2).round 2
97
- s = Math.sqrt(p * (p - a) * (p - b) * (p - c)).round 2
98
- { perimeter: p,
99
- square: s }
100
- end
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
- def self.task_26(radius, angle_radian)
103
- { square: (radius * radius * angle_radian / 2).round(2) }
104
- end
164
+ def task_26(radius, angle_radian)
165
+ { square: (radius * radius * angle_radian / 2).round(2) }
166
+ end
105
167
 
106
- def self.task_27(a, b, c)
107
- s = a.to_f + b.to_f + c.to_f
108
- x = (a / s * 180).round 2
109
- y = (b / s * 180).round 2
110
- z = (c / s * 180).round 2
111
- { angle_1: x,
112
- angle_2: y,
113
- angle_3: z }
114
- end
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
- def self.task_28(number)
117
- { result: 6 + number * (-5 + number * (4 + number * (-3 + 2 * number))) }
118
- end
178
+ def task_28(number)
179
+ { result: 6 + number * (-5 + number * (4 + number * (-3 + 2 * number))) }
180
+ end
119
181
 
120
- def self.task_33(first_number, second_number)
121
- { max: first_number > second_number ? first_number : second_number,
122
- min: first_number > second_number ? second_number : first_number }
123
- end
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
- def self.task_36(x, y, z)
126
- { result: x < y && y < z ? true : false }
127
- end
187
+ def task_36(x, y, z)
188
+ { result: x < y && y < z ? true : false }
189
+ end
128
190
 
129
- def self.task_37(x, y, z)
130
- if x >= y && y >= z
131
- x *= 2
132
- y *= 2
133
- z *= 2
134
- else
135
- x = x.abs
136
- y = y.abs
137
- z = z.abs
138
- end
139
- { x: x,
140
- y: y,
141
- z: z }
142
- end
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
- def self.task_38(x, y)
145
- { z: x > y ? x - y : y - x + 1 }
146
- end
206
+ def task_38(x, y)
207
+ { z: x > y ? x - y : y - x + 1 }
208
+ end
147
209
 
148
- def self.task_39(x, y)
149
- { result: x > y ? x : [x, y] }
150
- end
210
+ def task_39(x, y)
211
+ { result: x > y ? x : [x, y] }
212
+ end
151
213
 
152
- def self.task_40(x, y)
153
- x = 0 if x <= y
154
- { x: x, y: y }
155
- end
214
+ def task_40(x, y)
215
+ x = 0 if x <= y
216
+ { x: x, y: y }
217
+ end
156
218
 
157
- def self.task_41(x, y, z)
158
- arr = []
159
- arr << x if x >= 1 && x <= 3
160
- arr << y if y >= 1 && y <= 3
161
- arr << z if z >= 1 && z <= 3
162
- { result: arr }
163
- end
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
- def self.task_42(x, y)
166
- if x > y
167
- y = (x + y) / 2
168
- x = (x + y) * 2
169
- else
170
- x = (x + y) / 2
171
- y = (x + y) * 2
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
- def self.task_43(x, y, z)
177
- x **= 2 if x >= 0
178
- y **= 2 if y >= 0
179
- z **= 2 if z >= 0
180
- { x: x, y: y, z: z }
181
- end
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
- def self.task_45(a, b, c, d)
184
- arr = []
185
- arr << a << b << c << d
186
- m = arr.max
187
- rez = a > b && b > c && c > d
188
- if a <= b && b <= c && c <= d
189
- a = m
190
- b = m
191
- c = m
192
- d = m
193
- elsif !rez
194
- a **= 2
195
- b **= 2
196
- c **= 2
197
- d **= 2
198
- end
199
- { a: a, b: b, c: c, d: d }
200
- end
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
- def self.task_47(a, b, c)
203
- if a < (b + c) && b < (a + c) && c < (a + b)
204
- if a == b || b == c || a == c
205
- if a == b && b == c && a == c
206
- { result: 'equilateral triangle' }
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: 'isosceles triangle' }
273
+ { result: 'arbitrary triangle' }
209
274
  end
210
275
  else
211
- { result: 'arbitrary triangle' }
276
+ { result: 'no triangle' }
212
277
  end
213
- else
214
- { result: 'no triangle' }
215
278
  end
216
- end
217
279
 
218
- def self.task_62(number)
219
- { result: number.even? ? 'even' : 'odd' }
220
- end
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
- def self.task_64(x)
227
- { result: (x / 100).to_i }
228
- end
284
+ def task_63(a, b, r, _s)
285
+ { result: (a % b == r) || (a % b == r) ? true : false }
286
+ end
229
287
 
230
- def self.task_65(n)
231
- { result: n**2 == n.to_s.split('').inject(0) { |sum, x| sum + x.to_i } }
232
- end
288
+ def task_64(x)
289
+ { result: (x / 100).to_i }
290
+ end
233
291
 
234
- def self.task_66(k, m, x, y, z)
235
- if k < m**2
236
- x = x.abs
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
- def self.task3_73(first_number, second_number)
252
- p ' task 73:'
253
- arr = []
254
- arr << first_number << second_number
255
- if first_number != second_number
256
- first_number = arr.max
257
- second_number = arr.max
258
- else
259
- first_number = 0
260
- second_number = 0
261
- end
262
- { first_number: first_number, second_number: second_number }
263
- end
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
- def self.task_74(age)
266
- if age >= 11 && age <= 14
267
- word = 'лет'
268
- else
269
- case age % 10
270
- when 1
271
- word = 'год'
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
- def self.task_87(number1, number2)
282
- sum = 0
283
- i = 0
284
- while number1 > 0 && i < number2
285
- sum += number1 % 10
286
- number1 /= 10
287
- i += 1
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
- def self.task_90(m, n)
293
- nod = m.gcd(n)
294
- { p: m / nod,
295
- q: n / nod }
296
- end
354
+ def task_90(m, n)
355
+ nod = m.gcd(n)
356
+ { p: m / nod,
357
+ q: n / nod }
358
+ end
297
359
 
298
- def self.task_107(m)
299
- rez = 0
300
- i = 0
301
- while rez < m
302
- i += 1
303
- rez = 4**i
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
- def self.task_108(number)
309
- rez = 0
310
- i = 0
311
- while rez < number
312
- i += 1
313
- rez = 2**i
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
- def self.task_109(number)
319
- f = 0
320
- if number == 1
321
- f = 2
322
- else
323
- t = 1
324
- (number..2 * number).each do |i|
325
- t *= i
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
- f = f * (number - 1) + t
391
+ { result: f }
328
392
  end
329
- { result: f }
330
- end
331
393
 
332
- def self.task_183(p, arr)
333
- rez = arr.select { |a| (a.to_i % p.to_i).zero? && (a.to_i != 0) }.inject(1) { |r, a| r * a.to_i }
334
- { result: rez }
335
- end
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
- def self.task_251(str)
338
- { result: str.count('x') }
339
- end
399
+ def task_251(str)
400
+ { result: str.count('x') }
401
+ end
340
402
 
341
- def self.task_252(str)
342
- { counter_plus: str.count('+'),
343
- counter_multiple: str.count('*'),
344
- counter_all: str.count('+') + str.count('-') + str.count('*') }
345
- end
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
- def self.task_261(str)
348
- arr = str.split('')
349
- space = 0
350
- s = 0
351
- rez = 0
352
- e = 0
353
- arr.each do |a|
354
- if a == ' '
355
- s += 1
356
- else
357
- space = s if s > space
358
- s = 0
359
- end
360
- if a == 'e'
361
- e += 1
362
- else
363
- rez = e if e > rez
364
- e = 0
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
@@ -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.1
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-02 00:00:00.000000000 Z
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