Class: MathTasks
- Inherits:
-
Object
- Object
- MathTasks
- Defined in:
- lib/math_tasks.rb
Constant Summary collapse
- THE_TASK_1 =
"Даны два действительных числа a и b. Получить их сумму, разность и произведение."
- THE_TASK_2 =
"Даны действительные числа x и y. Получить (|x|-|y|)/(1+|xy|)."
- THE_TASK_3 =
"Дана длина ребра куба. Найти объем куба и площадь его боковой поверхности."
- THE_TASK_4 =
"Даны два действительных положительных числа. Найти среднее арифметическое и среднее геометрическое этих чисел."
- THE_TASK_5 =
"Даны два действительных числа. Найти среднее арифметическое этих чисел и среднее геометрическое их модулей."
- THE_TASK_6 =
"Даны катеты прямоугольного треугольника. Найти его гипотенузу и площадь."
- THE_TASK_8 =
"Определить периметр правильного n-угольника,описанного около окружности радиуса r."
- THE_TASK_9 =
"Даны два действительных числа a и b. Получить их сумму, разность и произведение."
- THE_TASK_10 =
"Определить время падения камня на поверхность земли с высоты h."
- THE_TASK_12 =
"Дана сторона равностороннего треугольника. Найти площадь этого треугольника."
- THE_TASK_13 =
"Вычислить период колебания маятника длины l."
- THE_TASK_14 =
"Определить силу притяжения F между телами массы m1 и m2 , находящимися на расстоянии r друг от друга."
- THE_TASK_15 =
"Даны гипотенуза и катет прямоугольного треугольника. Найти второй катет и радиус вписанной окружности."
- THE_TASK_16 =
"Известна длина окружности. Найти площадь круга, ограниченного этой окружностью."
- THE_TASK_17 =
"Найти площадь кольца, внутренний радиус которого равен 20, а внешний – заданному числу r (r>20)."
- THE_TASK_19 =
"Определить время, через которое встретятся два тела, равноускоренно движущиеся навстречу друг другу, если известны их начальные скорости, ускорения и начальное расстояние между ними."
- THE_TASK_20 =
" Найти сумму членов арифметической прогрессии a, a+ d ,...,a+(n-1)d по данным значениям a, d, n."
- THE_TASK_22 =
"Найти площадь равнобочной трапеции с основаниями a и b и углом α при большем основании а."
- THE_TASK_24 =
"Вычислить расстояние между двумя точками с координатами x1 , y1 и x2 , y2."
- THE_TASK_25 =
"Треугольник задан координатами своих вершин. Найти: а) периметр треугольника; б) площадь треугольника."
- THE_TASK_26 =
"Найти площадь сектора, радиус которого равен 13.7, а дуга содержит заданное число радиан φ."
- THE_TASK_27 =
"Даны действительные положительные числа а, b, c. По трем сторонам с длинами a, b, c можно построить треугольник. Найти углы треугольника."
- THE_TASK_28 =
"Дано действительное число х. Не пользуясь никакими другими арифметическими операциями, кроме умножения, сложения и вычитания, вычислить: 2x**4-3x**3+4x**2-5x+6 Разрешается использовать не более четырех умножений и четырех сложений и вычитаний."
- THE_TASK_33 =
"Даны действительные числах,у. Получить: а) max (x,y); б) min (x,y); в) max (x,y) , min (x,y)."
- THE_TASK_36 =
"Даны действительные числа a,b,c. Проверить, выполняются ли неравенства a < b < c."
- THE_TASK_37 =
"Даны действительные числа a,b,c. Удвоить эти числа, если a ≥ b ≥ c , и заменить их абсолютными значениями, если это не так."
- THE_TASK_38 =
"Даны два действительных числа a и b. Получить их сумму, разность и произведение."
- THE_TASK_39 =
"Даны два действительных числа. Вывести первое число, если оно больше второго, и оба числа, если это не так."
- THE_TASK_40 =
"Даны два действительных числа. Заменить первое число нулем, если оно меньше или равно второму, и оставить числа без изменения в противном случае."
- THE_TASK_41 =
"Даны три действительных числа. Выбрать из них те, которые принадлежат интервалу (1, 3)."
- THE_TASK_42 =
"Даны действительные числаx, y (x≠ y). Меньшее из этих двух чисел заменить их полусуммой, а большее – их удвоенным произведением."
- THE_TASK_43 =
"Даны три действительных числа. Возвести в квадрат те из них, значения которых неотрицательны."
- THE_TASK_45 =
"Даны действительные числа a,b,c,d. Если a≤ b ≤ c ≤ d, то каждое число заменить наибольшим из них; если a>b>c>d, то оставить без изменения; в противном случае все числа заменяются их квадратами."
- THE_TASK_47 =
"Даны действительные положительные числа x,y,z. а) Выяснить существует ли треугольник с длинами сторонx,y,z. б) Если треугольник существует, то ответить – является ли он остроугольным."
- THE_TASK_62 =
"Определить, является ли данное целое число четным."
- THE_TASK_63 =
"Определить, верно ли, что при делении неотрицательного целого числа а на положительное целое число b получается остаток, равный одному из двух заданных чисел r или s."
- THE_TASK_64 =
"Дано натуральное числоn (n>99). Определить число сотен в нем."
- THE_TASK_65 =
"Дано натуральное числоn (n>99). Выяснить, верно ли, что n2 равно кубу суммы цифр числа n."
- THE_TASK_66 =
"Даны целые числа k,m, действительные числа x,y,z. При k<m2 ,k=m2 илиk>m2 заменить модулем соответственно значенияx,y илиz, а два других значения уменьшить на 0.5."
- THE_TASK_73 =
"Даны целые числа k,l. Если числа не равны, то заменить каждое из них одним и тем же числом, равным большему из исходных, а если равны, то заменить числа нулями."
- THE_TASK_74 =
"Дано натуральное n (n ≤ 100), определяющее возраст человека (в годах). Дать для этого числа наименования «год», «года» или «лет»: например, 1 год, 23 года, 45 лет и т. д."
- THE_TASK_87 =
"Даны натуральное n,m. Получить сумму m последних цифр числа n."
- THE_TASK_90 =
"Даны натуральные числа m и n. Найти такие натуральные p и q, не имеющие общих делителей, что p/q = m/n."
- THE_TASK_107 =
"Дано целое число m > 1. Получить наибольшее целое k, при котором 4**k < m."
- THE_TASK_108 =
"Дано натуральное число n. Получить наименьшее число вида 2**r , превосходящее n"
- THE_TASK_109 =
"Дано натуральное число n. Вычислить 1⋅2 + 2⋅3⋅4 +...+ n⋅(n+1)⋅...⋅2n."
- THE_TASK_183 =
"Даны натуральные числа n, p, целые числа a1, … , an. Получить произведение членов последовательности a1, … , an, кратных p."
- THE_TASK_251 =
"Даны натуральное число n, символы s1, …, sn. Подсчитать, сколько раз среди данных символов встречается буква x. (Строковый вариант: дана строка символов; подсчитать, сколько раз среди символов строки встречается буква x.)"
- THE_TASK_252 =
"Даны натуральное число n, символы s1, …, sn. Подсчитать: а) сколько раз среди данных символов встречается символ + и сколько раз символ ∗ ; б) общее число вхождений символов +, –, * в последовательность s1,...,sn "
- THE_TASK_261 =
" Даны натуральное число n, символы s1, …, sn. а) Подсчитать наибольшее количество идущих подряд пробелов. б) Выяснить, верно ли, что в последовательности s1, …, s имеются пять идущих подряд букв е. "
Class Method Summary collapse
- .task_1(first_number, second_number) ⇒ Object
- .task_10(height) ⇒ Object
- .task_107(m) ⇒ Object
- .task_108(number) ⇒ Object
- .task_109(number) ⇒ Object
- .task_12(side) ⇒ Object
- .task_13(length) ⇒ Object
- .task_14(mass1, mass2, distance) ⇒ Object
- .task_15(first_leg, hypotenuse) ⇒ Object
- .task_16(circumference) ⇒ Object
- .task_17(outer_radius) ⇒ Object
- .task_183(p, arr) ⇒ Object
- .task_19(v1, v2, a1, a2, s) ⇒ Object
- .task_2(first_number, second_number) ⇒ Object
- .task_20(a, d, n) ⇒ Object
- .task_22(base1, base2, angle) ⇒ Object
- .task_24(x1, x2, y1, y2) ⇒ Object
- .task_25(x1, y1, x2, y2, x3, y3) ⇒ Object
- .task_251(str) ⇒ Object
- .task_252(str) ⇒ Object
- .task_26(radius, angle_radian) ⇒ Object
- .task_261(str) ⇒ Object
- .task_27(a, b, c) ⇒ Object
- .task_28(number) ⇒ Object
- .task_3(cube_side) ⇒ Object
- .task_33(first_number, second_number) ⇒ Object
- .task_36(x, y, z) ⇒ Object
- .task_37(x, y, z) ⇒ Object
- .task_38(x, y) ⇒ Object
- .task_39(x, y) ⇒ Object
- .task_4(first_number, second_number) ⇒ Object
- .task_40(x, y) ⇒ Object
- .task_41(x, y, z) ⇒ Object
- .task_42(x, y) ⇒ Object
- .task_43(x, y, z) ⇒ Object
- .task_45(a, b, c, d) ⇒ Object
- .task_47(a, b, c) ⇒ Object
- .task_5(first_number, second_number) ⇒ Object
- .task_6(side1, side2) ⇒ Object
- .task_62(number) ⇒ Object
- .task_63(a, b, r, _s) ⇒ Object
- .task_64(x) ⇒ Object
- .task_65(n) ⇒ Object
- .task_66(k, m, x, y, z) ⇒ Object
- .task_73(first_number, second_number) ⇒ Object
- .task_74(age) ⇒ Object
- .task_8(number_angle, radius) ⇒ Object
- .task_87(number1, number2) ⇒ Object
- .task_9(resistor1, resistor2, resistor3) ⇒ Object
- .task_90(m, n) ⇒ Object
Class Method Details
.task_1(first_number, second_number) ⇒ Object
64 65 66 67 68 |
# File 'lib/math_tasks.rb', line 64 def task_1(first_number, second_number) { sum: first_number + second_number, dif: first_number - second_number, product: first_number * second_number } end |
.task_10(height) ⇒ Object
102 103 104 |
# File 'lib/math_tasks.rb', line 102 def task_10(height) { time_fall: Math.sqrt(2 * height / 9.8).round(2) } end |
.task_107(m) ⇒ Object
360 361 362 363 364 365 366 367 368 |
# File 'lib/math_tasks.rb', line 360 def task_107(m) rez = 0 i = 0 while rez < m i += 1 rez = 4**i end { k: i - 1 } end |
.task_108(number) ⇒ Object
370 371 372 373 374 375 376 377 378 |
# File 'lib/math_tasks.rb', line 370 def self.task_108(number) rez = 0 i = 0 while rez < number i += 1 rez = 2**i end { result: rez } end |
.task_109(number) ⇒ Object
380 381 382 383 384 385 386 387 388 389 390 391 392 |
# File 'lib/math_tasks.rb', line 380 def task_109(number) f = 0 if number == 1 f = 2 else t = 1 (number..2 * number).each do |i| t *= i end f = f * (number - 1) + t end { result: f } end |
.task_12(side) ⇒ Object
106 107 108 |
# File 'lib/math_tasks.rb', line 106 def task_12(side) { square: (side**2 * Math.sqrt(3) / 4).round(2) } end |
.task_13(length) ⇒ Object
110 111 112 |
# File 'lib/math_tasks.rb', line 110 def task_13(length) { oscillation_period: (2**Math::PI * Math.sqrt(length) / 9.8).round(2) } end |
.task_14(mass1, mass2, distance) ⇒ Object
114 115 116 |
# File 'lib/math_tasks.rb', line 114 def task_14(mass1, mass2, distance) { force_attraction: mass1 * mass2 * 6.67e-11 / distance**2 } end |
.task_15(first_leg, hypotenuse) ⇒ Object
118 119 120 121 122 123 |
# File 'lib/math_tasks.rb', line 118 def task_15(first_leg, hypotenuse) second_leg = Math.sqrt(hypotenuse**2 - first_leg**2).round 2 circle_radius = ((first_leg + second_leg - hypotenuse) / 2).round 2 { second_leg: second_leg, circle_radius: circle_radius } end |
.task_16(circumference) ⇒ Object
125 126 127 |
# File 'lib/math_tasks.rb', line 125 def task_16(circumference) { area: (circumference**2 / (Math::PI * 4)).round(2) } end |
.task_17(outer_radius) ⇒ Object
129 130 131 |
# File 'lib/math_tasks.rb', line 129 def task_17(outer_radius) { area: (Math::PI * (outer_radius**2) - Math::PI * (20**2)).round(2) } end |
.task_183(p, arr) ⇒ Object
394 395 396 397 |
# File 'lib/math_tasks.rb', line 394 def task_183(p, arr) rez = arr.select { |a| (a.to_i % p.to_i).zero? && (a.to_i != 0) }.inject(1) { |r, a| r * a.to_i } { result: rez } end |
.task_19(v1, v2, a1, a2, s) ⇒ Object
133 134 135 |
# File 'lib/math_tasks.rb', line 133 def task_19(v1, v2, a1, a2, s) { time: ((- (v1 + v2) + Math.sqrt((v1 + v2) * (v1 + v2) + 2 * (a1 + a2) * s)) / (a1 + a2)).round(2) } end |
.task_2(first_number, second_number) ⇒ Object
70 71 72 |
# File 'lib/math_tasks.rb', line 70 def task_2(first_number, second_number) { result: (first_number.abs - second_number.abs) / (1 + first_number.abs * second_number.abs) } end |
.task_20(a, d, n) ⇒ Object
137 138 139 140 141 142 143 |
# File 'lib/math_tasks.rb', line 137 def task_20(a, d, n) sum = a (0...n).each do |i| sum += d * i end { sum: sum } end |
.task_22(base1, base2, angle) ⇒ Object
145 146 147 148 |
# File 'lib/math_tasks.rb', line 145 def task_22(base1, base2, angle) { square: (((base1 + base2) * ((base1 - base2).abs / 2) * Math.sin(angle * Math::PI / 180) / \ Math.cos(angle * Math::PI / 180)) / 2).round(2) } end |
.task_24(x1, x2, y1, y2) ⇒ Object
150 151 152 |
# File 'lib/math_tasks.rb', line 150 def task_24(x1, x2, y1, y2) { distance: Math.sqrt((x1 - x2)**2 + (y1 - y2)**2).round(2) } end |
.task_25(x1, y1, x2, y2, x3, y3) ⇒ Object
154 155 156 157 158 159 160 161 162 |
# File 'lib/math_tasks.rb', line 154 def task_25(x1, y1, x2, y2, x3, y3) a = Math.sqrt(Math.sqrt((x2 - x1).abs) + Math.sqrt((y2 - y1).abs)) b = Math.sqrt(Math.sqrt((x3 - x2).abs) + Math.sqrt((y3 - y2).abs)) c = Math.sqrt(Math.sqrt((x1 - x3).abs) + Math.sqrt((y1 - y3).abs)) p = ((a + b + c) / 2).round 2 s = Math.sqrt(p * (p - a) * (p - b) * (p - c)).round 2 { perimeter: p, square: s } end |
.task_251(str) ⇒ Object
399 400 401 |
# File 'lib/math_tasks.rb', line 399 def task_251(str) { result: str.count('x') } end |
.task_252(str) ⇒ Object
403 404 405 406 407 |
# File 'lib/math_tasks.rb', line 403 def task_252(str) { counter_plus: str.count('+'), counter_multiple: str.count('*'), counter_all: str.count('+') + str.count('-') + str.count('*') } end |
.task_26(radius, angle_radian) ⇒ Object
164 165 166 |
# File 'lib/math_tasks.rb', line 164 def task_26(radius, angle_radian) { square: (radius * radius * angle_radian / 2).round(2) } end |
.task_261(str) ⇒ Object
409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 |
# File 'lib/math_tasks.rb', line 409 def task_261(str) arr = str.split('') space = 0 s = 0 rez = 0 e = 0 arr.each do |a| if a == ' ' s += 1 else space = s if s > space s = 0 end if a == 'e' e += 1 else rez = e if e > rez e = 0 end end { number_spaces: space, question: rez >= 5 } end |
.task_27(a, b, c) ⇒ Object
168 169 170 171 172 173 174 175 176 |
# File 'lib/math_tasks.rb', line 168 def task_27(a, b, c) s = a.to_f + b.to_f + c.to_f x = (a / s * 180).round 2 y = (b / s * 180).round 2 z = (c / s * 180).round 2 { angle_1: x, angle_2: y, angle_3: z } end |
.task_28(number) ⇒ Object
178 179 180 |
# File 'lib/math_tasks.rb', line 178 def task_28(number) { result: 6 + number * (-5 + number * (4 + number * (-3 + 2 * number))) } end |
.task_3(cube_side) ⇒ Object
74 75 76 77 |
# File 'lib/math_tasks.rb', line 74 def task_3(cube_side) { volume: cube_side**3, surface_area: cube_side**2 } end |
.task_33(first_number, second_number) ⇒ Object
182 183 184 185 |
# File 'lib/math_tasks.rb', line 182 def task_33(first_number, second_number) { max: first_number > second_number ? first_number : second_number, min: first_number > second_number ? second_number : first_number } end |
.task_36(x, y, z) ⇒ Object
187 188 189 |
# File 'lib/math_tasks.rb', line 187 def task_36(x, y, z) { result: x < y && y < z ? true : false } end |
.task_37(x, y, z) ⇒ Object
191 192 193 194 195 196 197 198 199 200 201 202 203 204 |
# File 'lib/math_tasks.rb', line 191 def task_37(x, y, z) if x >= y && y >= z x *= 2 y *= 2 z *= 2 else x = x.abs y = y.abs z = z.abs end { x: x, y: y, z: z } end |
.task_38(x, y) ⇒ Object
206 207 208 |
# File 'lib/math_tasks.rb', line 206 def task_38(x, y) { z: x > y ? x - y : y - x + 1 } end |
.task_39(x, y) ⇒ Object
210 211 212 |
# File 'lib/math_tasks.rb', line 210 def task_39(x, y) { result: x > y ? x : [x, y] } end |
.task_4(first_number, second_number) ⇒ Object
79 80 81 82 |
# File 'lib/math_tasks.rb', line 79 def task_4(first_number, second_number) { average: (first_number * second_number) / 2, geometric_mean: Math.sqrt((first_number * second_number)).round(2) } end |
.task_40(x, y) ⇒ Object
214 215 216 217 |
# File 'lib/math_tasks.rb', line 214 def task_40(x, y) x = 0 if x <= y { x: x, y: y } end |
.task_41(x, y, z) ⇒ Object
219 220 221 222 223 224 225 |
# File 'lib/math_tasks.rb', line 219 def task_41(x, y, z) arr = [] arr << x if x >= 1 && x <= 3 arr << y if y >= 1 && y <= 3 arr << z if z >= 1 && z <= 3 { result: arr } end |
.task_42(x, y) ⇒ Object
227 228 229 230 231 232 233 234 235 236 |
# File 'lib/math_tasks.rb', line 227 def task_42(x, y) if x > y y = (x + y) / 2 x = (x + y) * 2 else x = (x + y) / 2 y = (x + y) * 2 end { x: x, y: y } end |
.task_43(x, y, z) ⇒ Object
238 239 240 241 242 243 |
# File 'lib/math_tasks.rb', line 238 def task_43(x, y, z) x **= 2 if x >= 0 y **= 2 if y >= 0 z **= 2 if z >= 0 { x: x, y: y, z: z } end |
.task_45(a, b, c, d) ⇒ Object
245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 |
# File 'lib/math_tasks.rb', line 245 def task_45(a, b, c, d) arr = [] arr << a << b << c << d m = arr.max rez = a > b && b > c && c > d if a <= b && b <= c && c <= d a = m b = m c = m d = m elsif !rez a **= 2 b **= 2 c **= 2 d **= 2 end { a: a, b: b, c: c, d: d } end |
.task_47(a, b, c) ⇒ Object
264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 |
# File 'lib/math_tasks.rb', line 264 def task_47(a, b, c) if a < (b + c) && b < (a + c) && c < (a + b) if a == b || b == c || a == c if a == b && b == c && a == c { result: 'equilateral triangle' } else { result: 'isosceles triangle' } end else { result: 'arbitrary triangle' } end else { result: 'no triangle' } end end |
.task_5(first_number, second_number) ⇒ Object
84 85 86 87 |
# File 'lib/math_tasks.rb', line 84 def task_5(first_number, second_number) { average: (first_number * second_number) / 2, geometric_mean_mod: Math.sqrt((first_number.abs * second_number.abs)).round(2) } end |
.task_6(side1, side2) ⇒ Object
89 90 91 92 |
# File 'lib/math_tasks.rb', line 89 def task_6(side1, side2) { hypotenuse: Math.sqrt(side1**2 + side2**2).round(2), square: side1 * side2 / 2 } end |
.task_62(number) ⇒ Object
280 281 282 |
# File 'lib/math_tasks.rb', line 280 def task_62(number) { result: number.even? ? 'even' : 'odd' } end |
.task_63(a, b, r, _s) ⇒ Object
284 285 286 |
# File 'lib/math_tasks.rb', line 284 def task_63(a, b, r, _s) { result: (a % b == r) || (a % b == r) ? true : false } end |
.task_64(x) ⇒ Object
288 289 290 |
# File 'lib/math_tasks.rb', line 288 def task_64(x) { result: (x / 100).to_i } end |
.task_65(n) ⇒ Object
292 293 294 |
# File 'lib/math_tasks.rb', line 292 def task_65(n) { result: n**2 == n.to_s.split('').inject(0) { |sum, x| sum + x.to_i } } end |
.task_66(k, m, x, y, z) ⇒ Object
296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 |
# File 'lib/math_tasks.rb', line 296 def task_66(k, m, x, y, z) if k < m**2 x = x.abs y -= 0.5 z -= 0.5 elsif k == m**2 y = y.abs x -= 0.5 z -= 0.5 else z = z.abs x -= 0.5 y -= 0.5 end { x: x, y: y, z: z } end |
.task_73(first_number, second_number) ⇒ Object
313 314 315 316 317 318 319 320 321 322 323 324 325 |
# File 'lib/math_tasks.rb', line 313 def task_73(first_number, second_number) p ' task 73:' arr = [] arr << first_number << second_number if first_number != second_number first_number = arr.max second_number = arr.max else first_number = 0 second_number = 0 end { first_number: first_number, second_number: second_number } end |
.task_74(age) ⇒ Object
327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 |
# File 'lib/math_tasks.rb', line 327 def task_74(age) if age >= 11 && age <= 14 word = 'лет' else case age % 10 when 1 word = 'год' when 2, 3, 4 word = 'года' else word = 'лет' end end { result: age.to_s + ' ' + word } end |
.task_8(number_angle, radius) ⇒ Object
94 95 96 |
# File 'lib/math_tasks.rb', line 94 def task_8(number_angle, radius) { perimeter: (2 * number_angle * radius * Math.tan(Math::PI / number_angle)).round(2) } end |
.task_87(number1, number2) ⇒ Object
343 344 345 346 347 348 349 350 351 352 |
# File 'lib/math_tasks.rb', line 343 def task_87(number1, number2) sum = 0 i = 0 while number1 > 0 && i < number2 sum += number1 % 10 number1 /= 10 i += 1 end { sum: sum } end |
.task_9(resistor1, resistor2, resistor3) ⇒ Object
98 99 100 |
# File 'lib/math_tasks.rb', line 98 def task_9(resistor1, resistor2, resistor3) { total_resistance: (1 / (1 / resistor1.to_f + 1 / resistor2.to_f + 1 / resistor3.to_f)).round(2) } end |
.task_90(m, n) ⇒ Object
354 355 356 357 358 |
# File 'lib/math_tasks.rb', line 354 def task_90(m, n) nod = m.gcd(n) { p: m / nod, q: n / nod } end |