Ваше завдання - проаналізувати введення та виведення формули для 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} $ го (в основному $ a (n + 1) - a (n) $, де a
функція для послідовності). Ця різниця залишається однаковою для будь-якого значення $ n $ в AP. Якщо немає загальної різниці, то це не арифметична послідовність. Щоб обчислити значення n-го терміна, використовуйте цю формулу $ a (n) = a (1) + (n-1) d $, де $ a (1) $ - перший член, а $ d $ - загальний різниця.
Якщо це не арифметична прогресія, то програма повинна надрукувати повідомлення про помилку "NAAP" (скорочення "Не арифметична прогресія").
Якщо це є арифметичною прогресією, то програма повинна надрукувати спрощену п-й член послідовності до 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
арифметичні прогресії? Якщо так, я думаю, що вони були б хорошими тестовими справами, оскільки вони порушили метод, який я намагався.