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
1
nel mezzo. - La seconda colonna ha una
1
in 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 1
riga sulla linea centrale) corrisponde a n = 0
o n = 1
. Questa deve essere una scelta coerente tra tutti i possibili input.
Produzione
Output Treccia di Pascal fino alla n
colonna 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 n
non sarà inferiore all'indice della prima colonna (quindi non inferiore 0
o 1
dipendente 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 n
sia 9
o 10
(a seconda che tu usi 0 o 1-based n
) e se può memorizzare numeri interi a 32 bit firmati, n
sarà al massimo 33
o 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