Oto warkocz Pascala:
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
Całkowicie to wymyśliłem. O ile wiem, Blaise Pascal nie miał warkocza, a jeśli tak, to prawdopodobnie zrobiono go z włosów zamiast cyfr.
Jest zdefiniowane w następujący sposób:
- Pierwsza kolumna ma jeden
1
w środku. - Druga kolumna ma
1
na górze i na dole. - Teraz naprzemiennie umieszczamy liczbę w środku lub dwie kopie liczby na górze i na dole.
- Jeśli liczba będzie na górze lub na dole, będzie to suma dwóch sąsiednich liczb (np
56 = 15 + 41
.). Jeśli lekko przechylisz głowę, jest to jak krok w trójkącie Pascala. - Jeśli liczba znajdzie się na środku, będzie to suma wszystkich trzech sąsiednich liczb (np
41 = 15 + 11 + 15
.).
Twoim zadaniem będzie wydrukowanie (jakiejś części) tego warkocza.
Wkład
Powinieneś napisać program lub funkcję, która otrzyma jedną liczbę całkowitą n
, podając indeks ostatniej kolumny, która ma zostać wyprowadzona.
Możesz wybrać, czy pierwsza kolumna (drukująca tylko jeden 1
wiersz w środkowej linii) odpowiada n = 0
lub n = 1
. To musi być spójny wybór dla wszystkich możliwych danych wejściowych.
Wydajność
Wyjmij warkocz Pascala do n
kolumny. Biała spacja musi dokładnie odpowiadać powyższemu przykładowemu układowi, z tą różnicą, że można dopełnić krótsze linie do długości dłuższych linii spacjami i opcjonalnie wyprowadzić pojedyncze końcowe podawanie linii.
Innymi słowy, każda kolumna powinna być dokładnie tak szeroka jak liczba (lub para równych liczb) w tej kolumnie, liczby w kolejnych kolumnach nie powinny się pokrywać i między kolumnami nie powinno być spacji.
Możesz wydrukować wynik do STDOUT (lub najbliższej alternatywy), lub jeśli napiszesz funkcję, możesz zwrócić ciąg znaków o tej samej treści lub listę trzech ciągów (po jednym dla każdej linii).
Dalsze szczegóły
Możesz założyć, że n
nie będzie to mniej niż indeks pierwszej kolumny (czyli nie mniej niż 0
lub w 1
zależności od twojego indeksowania). Możesz także założyć, że ostatnia liczba w oplocie jest mniejsza niż 256 lub największa liczba reprezentowana przez rodzimą liczbę całkowitą twojego języka, w zależności od tego, która wartość jest większa . Więc jeśli rodzimy typ liczb całkowitych może przechowywać tylko bajty, możesz założyć, że największy n
jest 9
lub 10
(w zależności od tego, czy używasz 0 lub 1 n
) i czy może on przechowywać 32-bitowe liczby całkowite ze znakiem, n
będzie co najwyżej 33
lub 34
.
Obowiązują standardowe zasady gry w golfa . Najkrótszy kod wygrywa.
OEIS
Oto kilka odpowiednich linków OEIS. Oczywiście zawierają one spoilery na różne sposoby generowania liczb w oplocie:
Przypadki testowe
Te przypadki testowe wykorzystują indeksowanie 1-zasadowe. Każdy przypadek testowy składa się z czterech linii, z których pierwsza to dane wejściowe, a pozostałe trzy to dane wyjściowe.
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