Ruby/Задачник
< Ruby
Задачи по высокоуровневому программированию (ФГОУ ДПО МЭТТ ГАИ)
править- Дан целочисленный массив. Необходимо вывести вначале его элементы с четными индексами, а затем - с нечетными.
- Дан целочисленный массив. Необходимо вывести вначале его элементы с нечетными индексами, а затем - четными.
- Дан целочисленный массив. Вывести номер первого из тех его элементов, которые удовлетворяют двойному неравенству: A[0] < A[i] < A[-1]. Если таких элементов нет, то вывести [ ].
- Дан целочисленный массив. Вывести номер последнего из тех его элементов, которые удовлетворяют двойному неравенству: A[0] < A[i] < A[-1]. Если таких элементов нет, то вывести [ ].
- Дан целочисленный массив. Преобразовать его, прибавив к четным числам первый элемент. Первый и последний элементы массива не изменять.
- Дан целочисленный массив. Преобразовать его, прибавив к четным числам последний элемент. Первый и последний элементы массива не изменять.
- Дан целочисленный массив. Преобразовать его, прибавив к нечетным числам последний элемент. Первый и последний элементы массива не изменять.
- Дан целочисленный массив. Преобразовать его, прибавив к нечетным числам первый элемент. Первый и последний элементы массива не изменять.
- Дан целочисленный массив. Заменить все положительные элементы на значение минимального.
- Дан целочисленный массив. Заменить все положительные элементы на значение максимального.
- Дан целочисленный массив. Заменить все отрицательные элементы на значение минимального.
- Дан целочисленный массив. Заменить все отрицательные элементы на значение максимального.
- Дан целочисленный массив. Осуществить циклический сдвиг элементов массива влево на одну позицию.
- Дан целочисленный массив. Осуществить циклический сдвиг элементов массива вправо на одну позицию.
- Дан целочисленный массив. Проверить, образуют ли элементы арифметическую прогрессию. Если да, то вывести разность прогрессии, если нет - вывести nil.
- Дан целочисленный массив. Проверить, образуют ли элементы геометрическую прогрессию. Если да, то вывести знаменатель прогрессии, если нет - вывести nil.
- Дан целочисленный массив. Найти количество его локальных максимумов.
- Дан целочисленный массив. Найти количество его локальных минимумов.
- Дан целочисленный массив. Найти максимальный из его локальных максимумов.
- Дан целочисленный массив. Найти минимальный из его локальных минимумов.
- Дан целочисленный массив. Определить количество участков, на которых его элементы монотонно возрастают.
- Дан целочисленный массив. Определить количество участков, на которых его элементы монотонно убывают.
- Дано вещественное число R и массив вещественных чисел. Найти элемент массива, который наиболее близок к данному числу.
- Дано вещественное число R и массив вещественных чисел. Найти элемент массива, который наименее близок к данному числу.
- Дан целочисленный массив. Преобразовать его, вставив перед каждым положительным элементом нулевой элемент.
- Дан целочисленный массив. Преобразовать его, вставив перед каждым отрицательным элементом нулевой элемент.
- Дан целочисленный массив. Преобразовать его, вставив после каждого положительного элемента нулевой элемент.
- Дан целочисленный массив. Преобразовать его, вставив после каждого отрицательного элемента нулевой элемент.
- Дан целочисленный массив. Упорядочить его по возрастанию.
- Дан целочисленный массив. Упорядочить его по убыванию.
- Дан целочисленный массив. Вывести индексы массива в том порядке, в котором соответствующие им элементы образуют убывающую последовательность.
- Дан целочисленный массив. Вывести индексы массива в том порядке, в котором соответствующие им элементы образуют возрастающую последовательность.
- Дан целочисленный массив. Найти индекс минимального элемента.
- Дан целочисленный массив. Найти индекс максимального элемента.
- Дан целочисленный массив. Найти индекс первого минимального элемента.
- Дан целочисленный массив. Найти индекс первого максимального элемента.
- Дан целочисленный массив. Найти индекс последнего минимального элемента.
- Дан целочисленный массив. Найти индекс последнего максимального элемента.
- Дан целочисленный массив. Найти количество минимальных элементов.
- Дан целочисленный массив. Найти количество максимальных элементов.
- Дан целочисленный массив. Найти минимальный четный элемент.
- Дан целочисленный массив. Найти минимальный нечетный элемент.
- Дан целочисленный массив. Найти максимальный четный элемент.
- Дан целочисленный массив. Найти максимальный нечетный элемент.
- Дан целочисленный массив. Найти минимальный положительный элемент.
- Дан целочисленный массив. Найти максимальный отрицательный элемент.
- Дан целочисленный массив и интервал a..b. Найти минимальный из элементов в этом интервале.
- Дан целочисленный массив и интервал a..b. Найти максимальный из элементов в этом интервале.
- Дан целочисленный массив. Найти количество элементов, расположенных перед первым минимальным.
- Дан целочисленный массив. Найти количество элементов, расположенных перед первым максимальным.
- Дан целочисленный массив. Найти количество элементов, расположенных после первого максимального.
- Дан целочисленный массив. Найти количество элементов, расположенных после первого минимального .
- Дан целочисленный массив. Найти количество элементов, расположенных перед последним максимальным.
- Дан целочисленный массив. Найти количество элементов, расположенных перед последним минимальным.
- Дан целочисленный массив. Найти количество элементов, расположенных после последнего максимального.
- Дан целочисленный массив. Найти количество элементов, расположенных после последнего минимального .
- Дан целочисленный массив. Найти индекс первого экстремального (то есть минимального или максимального) элемента.
- Дан целочисленный массив. Найти индекс последнего экстремального (то есть минимального или максимального) элемента.
- Дан целочисленный массив. Найти количество элементов, между первым и последним минимальным.
- Дан целочисленный массив. Найти количество элементов, между первым и последним максимальным.
- Дан целочисленный массив. Найти два наибольших элемента.
- Дан целочисленный массив. Найти два наименьших элемента.
- Дан целочисленный массив. Найти максимальное количество подряд идущих минимальных элементов.
- Дан целочисленный массив. Найти максимальное количество подряд идущих максимальных элементов.
- Дан целочисленный массив. Вывести вначале все его четные элементы, а затем - нечетные.
- Дан целочисленный массив. Вывести вначале все его нечетные элементы, а затем - четные.
- Дан целочисленный массив. Проверить, чередуются ли в нем четные и нечетные числа.
- Дан целочисленный массив. Проверить, чередуются ли в нем положительные и отрицательные числа.
- Дано вещественное число R и массив вещественных чисел. Найти два элемента массива, сумма которых наиболее близка к данному числу.
- Дано вещественное число R и массив вещественных чисел. Найти два элемента массива, сумма которых наименее близка к данному числу.
- Дан целочисленный массив. Удалить все элементы, встречающиеся менее двух раз.
- Дан целочисленный массив. Удалить все элементы, встречающиеся более двух раз.
- Дан целочисленный массив. Удалить все элементы, встречающиеся ровно два раза.
- Дан целочисленный массив. Удалить все элементы, встречающиеся ровно три раза.
- Дан целочисленный массив. Найти среднее арифметическое модулей его элементов.
- Дан целочисленный массив. Найти среднее арифметическое квадратов его элементов.
- Дано целое число. Найти сумму его цифр.
- Дано целое число. Найти произведение его цифр.
- Дан целочисленный массив. Возвести в квадрат отрицательные элементы и в третью степень - положительные. Нулевые элементы - не изменять.
- Дан дипапазон a..b. Получить массив из чисел, расположенных в этом диапазоне (исключая сами эти числа), в порядке их возрастания, а также размер этого массива.
- Дан дипапазон a..b. Получить массив из чисел, расположенных в этом диапазоне (исключая сами эти числа), в порядке их убывания, а также размер этого массива.
- Дано число А и натуральное число N. Найти результат следующего выражения 1 + А + А*2 + А*3 + … + А*N.
- Дано число А и натуральное число N. Найти результат следующего выражения 1 - А + А*2 - А*3 + … + ((-1)**N)*А*N.
- Дано натуральное число N. Найти результат следующего произведения 1*2*…*N.
- Дано натуральное число N. Если N - нечетное, то найти произведение 1*3*…*N; если N - четное, то найти произведение 2*4*…*N.
- Дан целочисленный массив. Найти среднее арифметическое его элементов.
- Дан целочисленный массив. Найти все четные элементы.
- Дан целочисленный массив. Найти количество четных элементов.
- Дан целочисленный массив. Найти все нечетные элементы.
- Дан целочисленный массив. Найти количество нечетных элементов.
- Дан целочисленный массив и число К. Если существует элемент, меньший К, то вывести true; в противном случае вывести false.
- Дан целочисленный массив и число К. Если существует элемент, больший К, то вывести true; в противном случае вывести false.
- Дан целочисленный массив и число К. Если все элементы массива меньше К, то вывести true; в противном случае вывести false.
- Дан целочисленный массив и число К. Если все элементы массива больше К, то вывести true; в противном случае вывести false.
- Дан целочисленный массив и число К. Вывести количество элементов, меньших К.
- Дан целочисленный массив и число К. Вывести индекс первого элемента, большего К.
- Дан целочисленный массив и число К. Вывести индекс последнего элемента, меньшего К.
- Дан целочисленный массив. Вывести индексы элементов, которые меньше своего левого соседа, и количество таких чисел.
- Дан целочисленный массив. Вывести индексы элементов, которые меньше своего правого соседа, и количество таких чисел.
- Дан целочисленный массив. Вывести индексы элементов, которые больше своего правого соседа, и количество таких чисел.
- Дан целочисленный массив. Вывести индексы элементов, которые больше своего левого соседа, и количество таких чисел.
- Дан целочисленный массив. Проверить, образует ли он возрастающую последовательность.
- Дан целочисленный массив. Проверить, образует ли он убывающую последовательность.
- Дан целочисленный массив. Проверить, образует ли он упорядоченную последовательность.
- Дан целочисленный массив. Если данный массив образует убывающую последовательность, то вывести nil, в противном случае вывести номер первого числа, нарушающего закономерность.
- Дан целочисленный массив, содержащий по крайней мере два нуля. Вывести сумму чисел из данного массива, расположенных между первыми двумя нулями.
- Дан целочисленный массив, содержащий по крайней мере два нуля. Вывести сумму чисел из данного массива, расположенных между последними двумя нулями.
- Дан целочисленный массив и целое число К. Возвести в степень К все элементы массива.
- Дан целочисленный массив. Найти минимальный и максимальный элемент в массиве.
- Дан целочисленный массив. Поменять местами минимальный и максимальный элементы массива.
- Дан целочисленный массив. Переставить в обратном порядке элементы массива, расположенные между его минимальным и максимальным элементами.
Дан целочисленный массив. Необходимо вывести вначале его элементы с четными индексами, а затем - с нечетными.
правитьРешение:
a = [1, 2, 4, 5, 2, 1, 6, 11]
a.select.with_index { |_, index| index.even? } + a.select.with_index { |_, index| index.odd? }
# => [1, 4, 2, 6, 2, 5, 1, 11]
Или так:
a = [1, 2, 4, 5, 2, 1, 6, 11]
(a.partition.with_index { |_, index| index.even?}).flatten
# => [1, 4, 2, 6, 2, 5, 1, 11]
Дан целочисленный массив. Необходимо вывести вначале его элементы с нечетными индексами, а затем - четными.
правитьРешение:
a = [1, 2, 4, 5, 2, 1, 6, 11]
a.select.with_index { |_, index| index.odd? } + a.select.with_index { |_, index| index.even? }
# => [2, 5, 1, 11, 1, 4, 2, 6]
Дан целочисленный массив. Вывести номер первого из тех его элементов, которые удовлетворяют двойному неравенству: A[0] < A[i] < A[-1]. Если таких элементов нет, то вывести [ ].
правитьРешение:
a = [1, 5, 2, 3, 4]
a.index(a.select { |num| a[0] < num && num < a[-1] }.first) || []
# => 2
А можно и так:
a = [1, 7, 4, 5, 2, 1, 6, 4]
a.index { |i| a[0] < i && i < a[-1] } || []
# => 4
Задачи Малого ЦКТ ГОУ МГИУ (подготовительные курсы) http://sctc.msiu.ru
править
Эти задачи выдавались в качестве домашнего задания слушателям курсов Малого ЦКТ в 2006-2007 учебном году. |
- Написать программу вычисления суммы цифр, введенного с клавиатуры натурального числа.
- Ввести натуральное число и напечатать его минимальную цифру. Например, для 1234076 ответом будет 0, а для 77777 - 7.
- Ввести натуральное число и напечатать количество вхождений его максимальной цифры в число.Так для числа 77777 ответ будет 5, а для 12321 - ответ равен 1.
- Число 2005 можно представить в виде суммы последовательных натуральных чисел несколькими способами, например, 2005 = 1002+1003 = 399+400+401+402+403. Найдите количество подобных разложений для введенного с клавиатуры числа.
- Найти такое десятизначное число, что все его цифры различны, причем число, составленное из первых двух его цифр, делится на 2, из первых трех цифр - на 3, из четырех - на 4, и так далее, а само число делится на 10.
- Какое наибольшее количество цифр может быть в числе, если любое его "начало" делится на количество цифр этого начала?
- Напишите программу, которая для заданного натурального числа n определяет количество вхождений числа 3 в разложение заданного числа на простые сомножители.
- Найдите количество максимальных элементов в массиве.
- В массиве содержится n действительных чисел. Известно, что среди них имеется хотя бы одно отрицательное. Найдите величину наибольшего среди всех отрицательных чисел.
- Дан текст. Найдите наибольшее количество идущих подряд цифр в нем.
- Дан текст. Определите максимальное из имеющихся в нем чисел.
- Даны две строки. Определите, сколько начальных символов первой строки совпадает с начальными символами второй. Рассмотрите два случая: а) известно, что строки разные; б) строки могут совпась.
- Расширьте класс Time методом, определяющим количество дней, оставшихся до Нового года.
- Положительное целое число d называется наибольшим общим делителем (НОД)целых чисел a и b, если: а) d делит a и d делит b, б) для любого другого делителя этих чисел с (c != d), d делит c. Известно, что НОД(x, 0) = НОД(0, x) = x и НОД(x, y) = НОД(y, x%y), где x%y есть остаток от деления x на y. Расширьте класс Integer методом gcd (greatest common divisor), вычисляющим НОД двух целых чисел.
- В одном массиве записано количество мячей, забитых футбольной командой в каждой из 20 игр, в другом - количество пропущенных мячей в этой же игре. Для каждой игры определите словесный результат игры (выигрыш, проигрыш или ничью).
- В одном массиве записан рост некоторых студентов, а в другом (с тем же числом элементов) - их фамилии в том же порядке, в котором указан рост. Известно, что все студенты разного роста. Напечатайте фамилию самого высокого студента.
- Напишите функцию simplify(num), предназначенную для вынесения сомножителей заданного натурального числа num из под знака квадратного корня. Функция должна возвращать массив из двух натуральных чисел [a, b], таких, что N = a**2*b и не существует натуральных c > a и d,
при которых N = c**2*d. Примеры:
simplify(37) = [1, 37]
simplify(16) = [4, 1]
simplify(96) = [4, 6]
- Напишите функцию text_simplify(num), которая выводит результат работы предыдущей функции в виде строки текста. Примеры:
text_simplify(16) = "4"
text_simplify(96) = "4 корня квадратных из 6"
text_simplify(37) = "корень квадратный из 37"
text_simplify(50) = "5 корней квадратных из 2"