Twoim zadaniem jest analiza danych wejściowych i wyjściowych formuły dla n-tego terminu, jeśli jest to sekwencja arytmetyczna, w przeciwnym razie powinien wypisać „NAAP”.
Wejście
Dane wejściowe (z STDIN) będą się składać z kilku liczb, od 4 do 10 liczb, przy czym każda liczba będzie w zakresie od -1000 do 1000 włącznie, oddzielonych separatorem (spacja, przecinek lub średnik [którykolwiek z nich ma być Twoje preferencje]). Oto kilka przykładowych danych wejściowych.
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 `;`)
Wynik
Program powinien najpierw sprawdzić, czy dane wejściowe są postępem arytmetycznym, czy nie.
Postępy arytmetyczne (AP) w pigułce: każdy AP będzie miał wspólną różnicę. Jest to różnica między $ n $ a $ {n-1} $ th warunkami (w zasadzie $ a (n + 1) - a (n) $ gdzie a
jest funkcja dla sequnce). Różnica pozostaje taka sama dla dowolnej wartości $ n $ w AP. Jeśli nie ma wspólnego różnica, to nie arytmetyczną sekwencji. Aby obliczyć wartość n-tego terminu, użyj tej formuły $ a (n) = a (1) + (n-1) d $, gdzie $ a (1) $ jest pierwszym terminem, a $ d $ jest powszechne różnica.
Jeśli nie jest to postęp arytmetyczny, program powinien wydrukować komunikat o błędzie „NAAP” (skrót od „Not An Arytmetic Progress”).
Jeśli jest to postęp arytmetyczny, program powinien wypisać uproszczony n-ty termin sekwencji do STDOUT.
Przykład:
> 1,3,5,7,9
2n-1
Objaśnienie: Jest to AP, ponieważ istnieje wspólna różnica (3 $ - 1 = 2 $). Następnie używasz wzoru $ a (n) = a (1) + (n-1) d $
Dlatego wyjściem jest 2n-1
(zauważ brak spacji)
Standardowe luki są domyślnie niedozwolone.
Możesz utworzyć funkcję, jeśli chcesz (z tablicą liczb jako parametrem). Jeśli nie, musisz utworzyć pełny program, który pobiera dane wejściowe jako ciąg lub tablicę i odpowiednio wyświetla dane wyjściowe.
Przypadki testowe:
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
To jest golf golfowy, więc wygrywa najkrótszy kod w bajtach! (przepraszam za złą matematykę)
Wszelkie sugestie są mile widziane!
0,0,0,0
i 3,1,-1,-3,-5
ciąg arytmetyczny? Jeśli tak, myślę, że byłyby to dobre przypadki testowe, ponieważ złamały metodę, którą próbowałem.