Class: MathTasks

Inherits:
Object
  • Object
show all
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

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