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
1w środku. - Druga kolumna ma
1na 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 1wiersz w środkowej linii) odpowiada n = 0lub n = 1. To musi być spójny wybór dla wszystkich możliwych danych wejściowych.
Wydajność
Wyjmij warkocz Pascala do nkolumny. 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 nnie będzie to mniej niż indeks pierwszej kolumny (czyli nie mniej niż 0lub w 1zależ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 njest 9lub 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, nbędzie co najwyżej 33lub 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