|
|
|
@ -1,5 +1,4 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def indices_sorted_by_descending_values(array)
|
|
|
|
|
indices = array.each_with_index.to_a
|
|
|
|
|
sorted_indices = indices.sort_by { |(element, index)| -element }
|
|
|
|
@ -49,23 +48,67 @@ def prime_divisors(number)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Ex
|
|
|
|
|
array = [5, 3, 8, 1, 7]
|
|
|
|
|
puts "Indices in order of decreasing elements:"
|
|
|
|
|
puts indices_sorted_by_descending_values(array).join(", ")
|
|
|
|
|
# IO
|
|
|
|
|
|
|
|
|
|
def get_array_input(input_method)
|
|
|
|
|
if input_method == 1
|
|
|
|
|
puts "Введите элементы массива через пробел:"
|
|
|
|
|
gets.chomp.split.map(&:to_i)
|
|
|
|
|
elsif input_method == 2
|
|
|
|
|
puts "Введите имя файла:"
|
|
|
|
|
file_name = gets.chomp
|
|
|
|
|
File.read(file_name).split.map(&:to_i)
|
|
|
|
|
else
|
|
|
|
|
raise "Неверный метод ввода."
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def get_number_input(input_method)
|
|
|
|
|
if input_method == 1
|
|
|
|
|
puts "Введите число:"
|
|
|
|
|
gets.chomp.to_i
|
|
|
|
|
elsif input_method == 2
|
|
|
|
|
puts "Введите имя файла:"
|
|
|
|
|
file_name = gets.chomp
|
|
|
|
|
File.read(file_name).to_i
|
|
|
|
|
else
|
|
|
|
|
raise "Неверный метод ввода."
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
array = [5, 1, 8, 3, 8, 7]
|
|
|
|
|
puts "Elements between first and second maximum:"
|
|
|
|
|
puts elements_between_first_and_second_max(array).join(", ")
|
|
|
|
|
puts "Выберите задачу для выполнения:"
|
|
|
|
|
puts "1. Вывести индексы массива в порядке убывания элементов."
|
|
|
|
|
puts "2. Найти элементы между первым и вторым максимальным."
|
|
|
|
|
puts "3. Найти элементы между первым и последним максимальным."
|
|
|
|
|
puts "4. Найти минимальный четный элемент."
|
|
|
|
|
puts "5. Найти все простые делители числа."
|
|
|
|
|
|
|
|
|
|
array = [5, 1, 8, 3, 7, 8]
|
|
|
|
|
puts "Elements between first and last maximum:"
|
|
|
|
|
puts elements_between_first_and_last_max(array).join(", ")
|
|
|
|
|
task_number = gets.chomp.to_i
|
|
|
|
|
|
|
|
|
|
array = [5, 2, 8, 3, 7]
|
|
|
|
|
puts "Minimal even element:"
|
|
|
|
|
puts minimal_even_element(array)
|
|
|
|
|
puts "Выберите метод ввода данных (1: С клавиатуры, 2: Из файла):"
|
|
|
|
|
input_method = gets.chomp.to_i
|
|
|
|
|
|
|
|
|
|
number = 28
|
|
|
|
|
puts "Prime divisors:"
|
|
|
|
|
puts prime_divisors(number).join(", ")
|
|
|
|
|
case task_number
|
|
|
|
|
when 1
|
|
|
|
|
array = get_array_input(input_method)
|
|
|
|
|
puts "Индексы в порядке убывания элементов:"
|
|
|
|
|
puts indices_sorted_by_descending_values(array).join(", ")
|
|
|
|
|
when 2
|
|
|
|
|
array = get_array_input(input_method)
|
|
|
|
|
puts "Элементы между первым и вторым максимальным:"
|
|
|
|
|
puts elements_between_first_and_second_max(array).join(", ")
|
|
|
|
|
when 3
|
|
|
|
|
array = get_array_input(input_method)
|
|
|
|
|
puts "Элементы между первым и последним максимальным:"
|
|
|
|
|
puts elements_between_first_and_last_max(array).join(", ")
|
|
|
|
|
when 4
|
|
|
|
|
array = get_array_input(input_method)
|
|
|
|
|
puts "Минимальный четный элемент:"
|
|
|
|
|
puts minimal_even_element(array)
|
|
|
|
|
when 5
|
|
|
|
|
number = get_number_input(input_method)
|
|
|
|
|
puts "Простые делители числа:"
|
|
|
|
|
puts prime_divisors(number).join(", ")
|
|
|
|
|
else
|
|
|
|
|
puts "Неверный номер задачи."
|
|
|
|
|
end
|
|
|
|
|