Il tuo compito è analizzare l'input e l'output della formula per l'ennesimo termine se si tratta di una sequenza aritmetica, altrimenti dovrebbe stampare "NAAP".
Ingresso
L'input (da STDIN) sarà composto da pochi numeri, tra 4 e 10 numeri in cui ciascun numero sarà compreso nell'intervallo tra -1000 e 1000 inclusi, separati da un delimitatore (uno spazio o una virgola o un punto e virgola [qualunque sia la tua preferenza]). Ecco alcuni esempi di input.
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 `;`)
Produzione
Il programma dovrebbe prima verificare se l'ingresso è una progressione aritmetica o meno.
Arithmetic Progressions (AP) in breve: ogni AP avrà una differenza comune. Questa è la differenza tra $ n $ e $ {n-1} $ th termini (sostanzialmente $ a (n + 1) - a (n) $ dove a
è la funzione per il sequnce). Questa differenza rimane invariata per qualsiasi valore di $ n $ in un AP. Se non v'è alcuna differenza comune, allora è non una sequenza aritmetica. Per calcolare il valore del n-esimo termine, utilizzare questa formula $ a (n) = a (1) + (n-1) d $ dove $ a (1) $ è il primo termine e $ d $ è il comune differenza.
Se non si tratta di una progressione aritmetica, il programma dovrebbe stampare il messaggio di errore "NAAP" (abbreviazione di "Not An Arithmetic Progression").
Se si tratta di una progressione aritmetica, il programma dovrebbe stampare su STDOUT l'ennesimo termine semplificato della sequenza.
Esempio:
> 1,3,5,7,9
2n-1
Spiegazione: Questo è un AP perché esiste una differenza comune ($ 3 - 1 = 2 $). Quindi usi la formula $ a (n) = a (1) + (n-1) d $
Pertanto l'output è 2n-1
(notare l'assenza di spazi)
Le scappatoie standard non sono consentite per impostazione predefinita.
È possibile creare una funzione se lo si desidera (con l'array di numeri come parametro). In caso contrario, è necessario creare un programma completo che accetta l'input come una stringa o un array e ne genera l'output.
Casi test:
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
Questo è code-golf quindi vince il codice più breve in byte! (scusa per il cattivo matematica-jax)
Eventuali suggerimenti sono benvenuti!
0,0,0,0
e 3,1,-1,-3,-5
progressioni aritmetiche? Se è così, penso che sarebbero buoni casi di test, dal momento che hanno rotto un metodo che stavo provando.