class Feature

Public Instance Methods

a_less_b_less_c(num_a, num_b, num_c) click to toggle source
# File lib/feature.rb, line 224
def a_less_b_less_c(num_a, num_b, num_c)
  (num_a < num_b && num_b < num_c) ? true : false
end
a_more_eq_b_more_eq_c(num_a, num_b, num_c) click to toggle source
# File lib/feature.rb, line 228
def a_more_eq_b_more_eq_c(num_a, num_b, num_c)
  (num_a >= num_b && num_b >= num_c) ? [num_a * 2, num_b * 2, num_c * 2] : [num_a.abs, num_b.abs, num_c.abs]
end
angeles_triangle(side_a, side_b, side_c) click to toggle source
# File lib/feature.rb, line 171
def angeles_triangle (side_a, side_b, side_c)
  angele_b = ((side_a ** 2 + side_c ** 2) - side_b ** 2) / (2 * side_c * side_a).to_f * 180
  angele_c = ((side_a ** 2 + side_b ** 2) - side_c ** 2) / (2 * side_b * side_a).to_f * 180
  angele_a = 180 - angele_b + angele_c
  {
    angele_a: angele_a.abs.round,
    angele_b: angele_b.abs.round,
    angele_c: angele_c.abs.round
  }
end
area_circle(circumference) click to toggle source
# File lib/feature.rb, line 91
def area_circle(circumference)
  radius = circumference / (2 * Math::PI)
  Math::PI * radius ** 2
end
area_hypot_triangle(first_leg, second_leg) click to toggle source
# File lib/feature.rb, line 36
def area_hypot_triangle(first_leg, second_leg)
  {
    area: 0.5 * first_leg * second_leg,
    hypotenuse: Math.sqrt(first_leg ** 2 + second_leg ** 2)
  }
end
area_sector(number_arc, radius = 13.7) click to toggle source
# File lib/feature.rb, line 167
def area_sector(number_arc, radius = 13.7)
  area = ((number_arc / 2.to_f) * radius ** 2).round
end
area_triangle(side) click to toggle source
# File lib/feature.rb, line 69
def area_triangle(side)
  (1 / 2.to_f) * side * Math.sqrt(side ** 2 - side ** 2 / 2)
end
average_ar_geo_num(first_number, second_number) click to toggle source
# File lib/feature.rb, line 22
def average_ar_geo_num(first_number, second_number)
  {
    arithmetical: (first_number + second_number) / 2.to_f,
    geometrical: Math.sqrt(first_number * second_number)
  }
end
average_ar_num_and_geo_mod(first_number, second_number) click to toggle source
# File lib/feature.rb, line 29
def average_ar_num_and_geo_mod(first_number, second_number)
  {
    arithmetical: (first_number + second_number) / 2,
    geometrical: Math.sqrt(first_number.abs * second_number.abs)
  }
end
calc_2_equations(num_x) click to toggle source
# File lib/feature.rb, line 191
def calc_2_equations(num_x)
  {
    answer1: 1 + num_x * (-2 + num_x * (3 - 4 * num_x)),
    answer2: 1 + num_x * (2 + num_x * (3 + 4 * num_x))
  }
end
calc_equation_1_number(number_x) click to toggle source
# File lib/feature.rb, line 182
def calc_equation_1_number(number_x)
  6 + number_x * (-5 + number_x * (4 - 3 * number_x + 2 * (number_x + number_x)))
end
calc_equation_2_number(num_x, num_y) click to toggle source
# File lib/feature.rb, line 186
def calc_equation_2_number(num_x, num_y)
  num_x * (num_x + num_x + num_x - (num_y + num_y) - 7 * num_x + 15) + num_y * (10 - 4 * num_y) +
    num_x * (num_x + num_x - 3) + 6
end
calc_number_z(num_x, num_y) click to toggle source
# File lib/feature.rb, line 232
def calc_number_z(num_x, num_y)
  num_x > num_y ? num_x - num_y : num_y - (num_x + 1)
end
calcul_the_progression() click to toggle source
# File lib/feature.rb, line 307
def calcul_the_progression
  result = 1
  (0.1..10).step(0.1) { |i| result *= 1 + Math.sin(i) }
  result
end
calcul_value_a_b(value_x, value_y, value_z) click to toggle source
# File lib/feature.rb, line 62
def calcul_value_a_b(value_x, value_y, value_z)
  {
    value_a: (2 * Math.cos(value_x - Math::PI / 6)) / (1 / 2 + Math.sin(value_y) ** 2),
    value_b: 1 + (value_z ** 2 / 3 + value_z ** 2 / 5)
  }
end
comp_x_y_and_output(num_x, num_y) click to toggle source
# File lib/feature.rb, line 236
def comp_x_y_and_output(num_x, num_y)
  num_x > num_y ? num_x : [num_x, num_y]
end
comp_x_y_or_x_by_0(num_x, num_y) click to toggle source
# File lib/feature.rb, line 240
def comp_x_y_or_x_by_0(num_x, num_y)
  num_x <= num_y ? num_x = 0 : [num_x, num_y]
end
compound_resistance(first_resistance, second_resistance, third_resistance) click to toggle source
# File lib/feature.rb, line 54
def compound_resistance(first_resistance, second_resistance, third_resistance)
  1 / ((1 / first_resistance.to_f) + (1 / second_resistance.to_f) + (1 / third_resistance.to_f))
end
determ_even_numb(number_x) click to toggle source
# File lib/feature.rb, line 265
def determ_even_numb(number_x)
  number_x % 2 == 0 ? true : false
end
determ_hund_in_numb(number_n) click to toggle source
# File lib/feature.rb, line 278
def determ_hund_in_numb(number_n)
  number_n > 99 ? number_n / 100.to_i : false
end
determ_remainder_div_r_s(num_a, num_b, num_r, num_s) click to toggle source
# File lib/feature.rb, line 269
def determ_remainder_div_r_s(num_a, num_b, num_r, num_s)
  remainder = num_a % num_b
  {
    remainder_equal_r: remainder == num_r ? true : nil,
    remainder_equal_s: remainder == num_s ? true : nil,
    remainder_not_equal_r_or_s:  remainder != num_r && remainder != num_s ? true : nil
  }
end
dist_between_points(coordinates_x_frt_point, coordinates_y_frt_point, coordinates_x_scnd_point, coordinates_y_scnd_point) click to toggle source
# File lib/feature.rb, line 145
def dist_between_points(coordinates_x_frt_point, coordinates_y_frt_point,
  coordinates_x_scnd_point, coordinates_y_scnd_point)
  distance = (Math.sqrt((coordinates_x_scnd_point - coordinates_x_frt_point) ** 2 +
    (coordinates_y_scnd_point - coordinates_y_frt_point) ** 2)).round
end
eq_squa_numb_n_cub_sum(number_n) click to toggle source
# File lib/feature.rb, line 282
def eq_squa_numb_n_cub_sum(number_n)
  sum = number_n.to_s.split('').map.each {|x| x.to_i}.sum
  number_n ** 2 == sum ** 3 ? true : false
end
fall_time(height, constant_g = 9.83) click to toggle source
# File lib/feature.rb, line 58
def fall_time(height, constant_g = 9.83)
  Math.sqrt(2 * height / constant_g)
end
floor_round_int_numb_x(number_x) click to toggle source
# File lib/feature.rb, line 257
def floor_round_int_numb_x(number_x)
  {
    floor: number_x.floor,
    round: number_x.round,
    to_i: number_x.to_i
  }
end
force_of_gravity(first_mass, second_mass, distance, g = 0.000000000067385) click to toggle source
# File lib/feature.rb, line 77
def force_of_gravity(first_mass, second_mass, distance, g = 0.000000000067385)
  g * ((first_mass * second_mass) / distance ** 2)
end
formula_solution(value_x, value_y) click to toggle source
# File lib/feature.rb, line 11
def formula_solution(value_x, value_y)
  (value_x.abs - value_y.abs) / (1 + (value_x * value_y).abs).to_f
end
heig_med_bis_and_rad(side_a, side_b, side_c) click to toggle source
# File lib/feature.rb, line 122
def heig_med_bis_and_rad(side_a, side_b, side_c)
  semiperimeter = ((side_a + side_b + side_c) / 2).to_f
  {
    #length height
    height_a: calcul_triangle_height(side_a, side_b, side_c, side_a),
    height_b: calcul_triangle_height(side_a, side_b, side_c, side_b),
    height_c: calcul_triangle_height(side_a, side_b, side_c, side_c),
    #length median
    median_a: calcul_triangle_median(side_b, side_c, side_a),
    median_b: calcul_triangle_median(side_a, side_c, side_b),
    median_c: calcul_triangle_median(side_a, side_b, side_c),
    #length bisector
    bisector_a: calcul_triangle_bisector(side_b, side_c, side_a),
    bisector_b: calcul_triangle_bisector(side_a, side_c, side_b),
    bisector_c: calcul_triangle_bisector(side_a, side_b, side_c),
    #radius circumscribed inscribed circle
    radius_circumscribed: (side_a * side_b * side_c / (4 * Math.sqrt(semiperimeter *
    (semiperimeter - side_a) * (semiperimeter - side_b) * (semiperimeter - side_c)))).round(1),
    radius_inscribed: Math.sqrt((semiperimeter - side_a) * (semiperimeter - side_b) *
      (semiperimeter - side_c) / semiperimeter).round(1)
  }
end
incl_sm_lst_frst_lst_b_on_n(num_n) click to toggle source
# File lib/feature.rb, line 287
def incl_sm_lst_frst_lst_b_on_n(num_n)
  {
    including: num_n.to_s.split("").length,
    sum: num_n.to_s.split("").map.each {|x| x.to_i}.sum,
    last: num_n.to_s.split("").last.to_i,
    first: num_n.to_s.split("").first.to_i,
    last_but_one: num_n.to_s[-2].to_i
  }
end
less_halfsum_more_doubled(num_x, num_y) click to toggle source
# File lib/feature.rb, line 244
def less_halfsum_more_doubled(num_x, num_y)
  num_x > num_y ? [x = (num_x + num_y) / 2.to_f, y = num_x * num_y * 2] :
   [y = (num_x + num_y) / 2.to_f, x = (num_x * num_y) * 2 ]
end
max_min_2_number(num_x, num_y) click to toggle source
# File lib/feature.rb, line 198
def max_min_2_number(num_x, num_y)
  {
    max: [num_x, num_y].max,
    min: [num_x, num_y].min,
    max_min: [num_x, num_y].minmax.reverse
  }
end
meeting_time(acceleration_f, acceleration_s, speed_f, speed_s, distance) click to toggle source
# File lib/feature.rb, line 108
def meeting_time(acceleration_f, acceleration_s, speed_f, speed_s, distance)
  average_acceleration = (acceleration_f + acceleration_s) / 2
  average_speed = speed_f + speed_s
  (-average_speed + Math.sqrt(-average_speed ** 2 + (4 * distance * average_acceleration))) / (2 * average_acceleration)
end
min_max_2_equations(num_x, num_y, num_z) click to toggle source
# File lib/feature.rb, line 213
def min_max_2_equations(num_x, num_y, num_z)
  sum = num_x + num_y + num_z
  product = num_x * num_y * num_z
  new_sum =  ((sum / 2.to_f) ** 2) + 1
  new_product = product ** 2 + 1
  {
    max: sum > product ? sum : product,
    min: new_sum < new_product ? new_sum : new_product
  }
end
min_max_3_number(num_x, num_y, num_z) click to toggle source
# File lib/feature.rb, line 206
def min_max_3_number(num_x, num_y, num_z)
  {
    max: [num_x, num_y, num_z].max,
    min_max: [num_x, num_y, num_z].minmax
  }
end
non_negative_number(num_x, num_y, num_z) click to toggle source
# File lib/feature.rb, line 249
def non_negative_number(num_x, num_y, num_z)
  {
    a_more_0: num_x >= 0 ? num_x ** 2 : nil,
    b_more_0: num_y >= 0 ? num_y ** 2 : nil,
    c_more_0: num_z >= 0 ? num_z ** 2 : nil
  }
end
number_check(number) click to toggle source
# File lib/feature.rb, line 297
def number_check(number)
  {
    palindrome: number == number.to_s.reverse.to_i ? true : false ,
    three_identical_numbers: (number.to_s.split('').uniq.size == 2 && number != number.to_s.reverse.to_i) ?
      true : false ,
    numbers_different: number.to_s.split('') == number.to_s.split('').uniq ?
      true : false
  }
end
period_of_oscillation(length, constant_g = 9.83) click to toggle source
# File lib/feature.rb, line 73
def period_of_oscillation(length, constant_g = 9.83)
  2 * Math::PI * Math.sqrt(length / constant_g)
end
permtr_area_triangle(coordinates_x_point_a, coordinates_y_point_a, coordinates_x_point_b, coordinates_y_point_b, coordinates_x_point_c, coordinates_y_point_c) click to toggle source
# File lib/feature.rb, line 151
def permtr_area_triangle(coordinates_x_point_a, coordinates_y_point_a, coordinates_x_point_b,
  coordinates_y_point_b, coordinates_x_point_c, coordinates_y_point_c)
  distance_a = calcuate_distance(coordinates_x_point_b, coordinates_x_point_a,
    coordinates_y_point_b,coordinates_y_point_a)
  distance_b = calcuate_distance(coordinates_x_point_b, coordinates_x_point_c,
    coordinates_y_point_b, coordinates_y_point_c)
  distance_c =  calcuate_distance(coordinates_x_point_c, coordinates_x_point_a,
    coordinates_y_point_c, coordinates_y_point_a)
  semiperimeter = ((distance_a + distance_b + distance_c) / 2)
  {
    perimeter: distance_a + distance_b + distance_c,
    area: Math.sqrt(semiperimeter * (semiperimeter - distance_a) * (semiperimeter - distance_b) *
      (semiperimeter - distance_c)).round
  }
end
permtr_multicutnik(number_of_corners, radius) click to toggle source
# File lib/feature.rb, line 50
def permtr_multicutnik(number_of_corners, radius)
  number_of_corners * 2 * radius * Math.sin(Math::PI / number_of_corners)
end
ring_area(inner_radius = 20, outer_radius) click to toggle source
# File lib/feature.rb, line 96
def ring_area(inner_radius = 20, outer_radius)
  (Math::PI * (inner_radius ** 2 - outer_radius ** 2)).to_i
end
sec_leg_radius_inscr_circle(first_leg, hypotenuse) click to toggle source
# File lib/feature.rb, line 81
def sec_leg_radius_inscr_circle(first_leg, hypotenuse)
  second_leg = Math.sqrt(hypotenuse ** 2 - first_leg ** 2)
  triangle_semi_perimeter = 0.5 * (first_leg + hypotenuse + second_leg)
  {
    radius: Math.sqrt((triangle_semi_perimeter - first_leg) * (triangle_semi_perimeter - hypotenuse) *
      (triangle_semi_perimeter - second_leg)) / triangle_semi_perimeter,
    second_leg: second_leg
  }
end
sides_triangle(angles_A, angles_B, angles_C, radius) click to toggle source
# File lib/feature.rb, line 100
def sides_triangle(angles_A, angles_B, angles_C, radius)
  {
    side_a: calcul_triangle_sides(radius, angles_A),
    side_b: calcul_triangle_sides(radius, angles_B),
    side_c: calcul_triangle_sides(radius, angles_C)
  }
end
sum_arith_progression(value_a, value_d, value_n) click to toggle source
# File lib/feature.rb, line 114
def sum_arith_progression(value_a, value_d, value_n)
  ((2 * value_a + (value_n - 1) * value_d) / 2) * value_n
end
sum_diff_product(first_number, second_number) click to toggle source
# File lib/feature.rb, line 3
def sum_diff_product(first_number, second_number)
  {
    sum: first_number + second_number,
    diff: first_number - second_number,
    product: first_number * second_number
  }
end
trapezium_area(greater_base, smaller_base, angle) click to toggle source
# File lib/feature.rb, line 118
def trapezium_area(greater_base, smaller_base, angle)
  (((greater_base + smaller_base) / 2) * ((greater_base - smaller_base) / 2) * Math.tan(angle)).to_i
end
value_temp_water(f_volue, f_temperature, s_value, s_temperature) click to toggle source
# File lib/feature.rb, line 43
def value_temp_water(f_volue, f_temperature, s_value, s_temperature)
  {
    value: f_volue + s_value,
    tempetature: ((f_volue * f_temperature) + (s_value * s_temperature)) / (f_volue + s_value).to_f
  }
end
volume_area_cube(length_of_the_edge) click to toggle source
# File lib/feature.rb, line 15
def volume_area_cube(length_of_the_edge)
  {
    volume: length_of_the_edge ** 3,
    area: 6 * length_of_the_edge ** 2
  }
end

Private Instance Methods

calcuate_distance(coordinate_x_point_1, ccoordinate_x_point_2,coordinate_y_point_1,coordinate_y_point_2) click to toggle source
# File lib/feature.rb, line 333
def calcuate_distance(coordinate_x_point_1, ccoordinate_x_point_2,coordinate_y_point_1,coordinate_y_point_2)
  Math.sqrt((coordinate_x_point_1 - ccoordinate_x_point_2) ** 2 +
    (coordinate_y_point_1 - coordinate_y_point_2) ** 2).round
end
calcul_triangle_bisector(side_1, side_2, side_3) click to toggle source
# File lib/feature.rb, line 329
def calcul_triangle_bisector(side_1, side_2, side_3)
  semiperimeter = (side_1 + side_2 + side_3) / 2
  (2 * Math.sqrt(side_1 * side_2 * semiperimeter * (semiperimeter - side_3)) / (side_1 + side_2))  .round(1)
end
calcul_triangle_height(side_a, side_b, side_c, opositive_side) click to toggle source
# File lib/feature.rb, line 319
def calcul_triangle_height(side_a, side_b, side_c, opositive_side)
  semiperimeter = (side_a + side_b + side_c) / 2
  area = Math.sqrt(semiperimeter * (semiperimeter - side_a) * (semiperimeter - side_b) * (semiperimeter - side_c))
  (opositive_side / 2) * area.round(1)
end
calcul_triangle_median(side_1, side_2, side_3) click to toggle source
# File lib/feature.rb, line 325
def calcul_triangle_median(side_1, side_2, side_3)
  (Math.sqrt((2 * side_1 ** 2 + 2 * side_2** 2 - side_3 ** 2) / 2)).round(1)
end
calcul_triangle_sides(r, angles) click to toggle source
# File lib/feature.rb, line 315
def calcul_triangle_sides(r, angles)
  r * 2 * Math.sin(angles).abs
end