Questa è la treccia di Pascal:
1 4 15 56 209 780 2911 10864 40545 151316 564719
1 3 11 41 153 571 2131 7953 29681 110771 413403 1542841
1 4 15 56 209 780 2911 10864 40545 151316 564719
L'ho completamente inventato. Blaise Pascal non aveva una treccia per quanto ne so, e se lo facesse probabilmente era fatto di capelli anziché di numeri.
Si definisce così:
- La prima colonna ha un singolo
1nel mezzo. - La seconda colonna ha una
1in alto e in basso. - Ora alterniamo inserendo un numero nel mezzo o due copie di un numero in alto e in basso.
- Se il numero va in cima o in fondo, sarà la somma dei due numeri adiacenti (ad es
56 = 15 + 41.). Se inclini leggermente la testa, questo è come un passo nel triangolo di Pascal. - Se il numero va nel mezzo, sarà la somma di tutti e tre i numeri adiacenti (ad es
41 = 15 + 11 + 15.).
Il tuo compito sarà stampare (una parte di) questa treccia.
Ingresso
È necessario scrivere un programma o una funzione, che riceve un singolo numero intero n, fornendo l'indice dell'ultima colonna da emettere.
Puoi scegliere se la prima colonna (stampando solo una 1riga sulla linea centrale) corrisponde a n = 0o n = 1. Questa deve essere una scelta coerente tra tutti i possibili input.
Produzione
Output Treccia di Pascal fino alla ncolonna th. Lo spazio bianco deve corrispondere esattamente al layout di esempio sopra, tranne per il fatto che è possibile riempire le linee più corte con la lunghezza delle linee più lunghe con spazi e si può facoltativamente produrre un singolo avanzamento riga finale.
In altre parole, ogni colonna dovrebbe essere esattamente larga quanto il numero (o coppia di numeri uguali) in quella colonna, i numeri nelle colonne successive non dovrebbero sovrapporsi e non dovrebbero esserci spazi tra le colonne.
È possibile stampare il risultato su STDOUT (o l'alternativa più vicina) oppure, se si scrive una funzione, è possibile restituire una stringa con lo stesso contenuto o un elenco di tre stringhe (una per ogni riga).
Maggiori dettagli
Puoi presumere che nnon sarà inferiore all'indice della prima colonna (quindi non inferiore 0o 1dipendente dall'indicizzazione ). Puoi anche supporre che l'ultimo numero nella treccia sia inferiore a 256 o il numero più grande rappresentabile dal tipo intero nativo della tua lingua, a seconda di quale sia maggiore . Quindi, se il tuo tipo intero nativo può memorizzare solo byte, puoi supporre che il più grande nsia 9o 10(a seconda che tu usi 0 o 1-based n) e se può memorizzare numeri interi a 32 bit firmati, nsarà al massimo 33o 34.
Si applicano le regole standard del code-golf . Vince il codice più corto.
OEIS
Ecco alcuni link OEIS pertinenti. Naturalmente, questi contengono spoiler per diversi modi per generare i numeri nella treccia:
Casi test
Questi casi di test utilizzano l'indicizzazione su 1 base. Ogni test case è composto da quattro righe, con la prima come input e le restanti tre come output.
1
1
---
2
1
1
1
---
3
1
1 3
1
---
5
1 4
1 3 11
1 4
---
10
1 4 15 56 209
1 3 11 41 153
1 4 15 56 209
---
15
1 4 15 56 209 780 2911
1 3 11 41 153 571 2131 7953
1 4 15 56 209 780 2911
---
24
1 4 15 56 209 780 2911 10864 40545 151316 564719 2107560
1 3 11 41 153 571 2131 7953 29681 110771 413403 1542841
1 4 15 56 209 780 2911 10864 40545 151316 564719 2107560