Ваша задача состоит в том, чтобы проанализировать ввод и вывод формулы для n-го члена, если это арифметическая последовательность, в противном случае она должна вывести «NAAP».
вход
Ввод (из STDIN) будет состоять из нескольких чисел, от 4 до 10 чисел, где каждое число будет в диапазоне от -1000 до 1000 включительно, разделенных разделителем (пробел, запятая или точка с запятой [в зависимости от того, что ваши предпочтения]). Вот несколько примеров ввода.
12,14,16,18 //valid
-3 4 5 1 -2 -4 //valid
45;35;-35 //invalid (only three numbers are present instead of the minimum of 4 numbers)
2,32;21,321 //invalid (it uses two different delimiters: `,` and `;`)
Выход
Программа должна сначала проверить, является ли ввод арифметической прогрессией или нет.
Арифметические прогрессии (AP) в двух словах: у каждого AP будет общая разница. В этом разница между $ n $ и $ {n-1} $ th членами (в основном $ a (n + 1) - a (n) $ где a
- функция для последовательности). Эта разница остается неизменной для любого значения $ n $ в точке доступа. Если нет общей разницы, то это не арифметическая последовательность. Чтобы вычислить значение n-го члена, используйте эту формулу $ a (n) = a (1) + (n-1) d $, где $ a (1) $ - первое слагаемое, а $ d $ - общее разница.
Если это не арифметическая прогрессия, то программа должна напечатать сообщение об ошибке «NAAP» (сокращение от «Not An Arithmetic Progression»).
Если это является арифметической прогрессией, то программа должна напечатать упрощенную п-й член последовательности к STDOUT.
Пример:
> 1,3,5,7,9
2n-1
Пояснение: Это AP, потому что есть общая разница ($ 3 - 1 = 2 $). Тогда вы используете формулу $ a (n) = a (1) + (n-1) d $
Поэтому вывод есть 2n-1
(обратите внимание на отсутствие пробелов)
Стандартные лазейки по умолчанию запрещены.
Вы можете создать функцию, если хотите (с массивом чисел в качестве параметра). Если нет, то вы должны создать полную программу, которая принимает входные данные в виде строки или массива и выводит соответственно.
Тестовые случаи:
1.
1,3,5,7,9
2n-1
2.
1 3 12312 7 9
NAAP
3.
-6;8;22;36;50
14n-20
4.
5,1,-3,-7,-11,-15
-4n+9
5.
-5,-7,-9,-11,-13,-15
-2n-3
6.
3,3,3,3,3,3,3,3,3
0n+3
7.
-4,-5,-6,-7
-1n-3
Это код-гольф, поэтому выигрывает самый короткий код в байтах! (извините за плохую математику)
Любые предложения приветствуются!
0,0,0,0
и 3,1,-1,-3,-5
арифметические прогрессии? Если так, то я думаю, что они были бы хорошими тестовыми примерами, поскольку они нарушили метод, который я пробовал.