Das ist Pascals Braid:
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
Ich habe das total erfunden. Blaise Pascal hatte, soweit ich das beurteilen kann, kein Zopf, und wenn er es tat, bestand es wahrscheinlich aus Haaren anstelle von Zahlen.
Es ist wie folgt definiert:
- Die erste Spalte hat eine Single
1
in der Mitte. - Die zweite Spalte hat
1
oben und unten ein. - Jetzt wechseln wir zwischen einer Zahl in der Mitte oder zwei Kopien einer Zahl oben und unten.
- Wenn die Zahl oben oder unten steht, handelt es sich um die Summe der beiden benachbarten Zahlen (z
56 = 15 + 41
. B. ). Wenn Sie Ihren Kopf ein wenig neigen, ist dies wie ein Schritt in Pascals Dreieck. - Wenn die Zahl in die Mitte geht, ist es die Summe aller drei benachbarten Zahlen (zB
41 = 15 + 11 + 15
).
Ihre Aufgabe wird es sein, dieses Geflecht (teilweise) zu drucken.
Eingang
Sie sollten ein Programm oder eine Funktion schreiben, die eine einzelne Ganzzahl erhält n
und den Index der letzten auszugebenden Spalte angibt.
Sie können wählen, ob die erste Spalte (nur eine einzige 1
in der mittleren Zeile) n = 0
oder entspricht n = 1
. Dies muss eine konsistente Wahl für alle möglichen Eingaben sein.
Ausgabe
Gib Pascals Braid in die n
dritte Spalte aus. Das Leerzeichen muss genau dem obigen Beispiellayout entsprechen, außer dass Sie die kürzeren Zeilen mit Leerzeichen auf die Länge der längeren Zeilen auffüllen und optional einen einzelnen Zeilenvorschub ausgeben können.
Mit anderen Worten, jede Spalte sollte genau so breit sein wie die Zahl (oder das Paar gleicher Zahlen) in dieser Spalte, die Zahlen in aufeinanderfolgenden Spalten sollten sich nicht überlappen und es sollten keine Leerzeichen zwischen den Spalten vorhanden sein.
Sie können das Ergebnis entweder an STDOUT (oder an die nächstgelegene Alternative) ausgeben oder beim Schreiben einer Funktion entweder eine Zeichenfolge mit demselben Inhalt oder eine Liste mit drei Zeichenfolgen (eine für jede Zeile) zurückgeben.
Weitere Details
Sie können davon ausgehen, dass dies n
nicht weniger als der Index der ersten Spalte ist (also nicht weniger als 0
oder 1
abhängig von Ihrer Indizierung). Sie können auch davon ausgehen, dass die letzte Zahl im Geflecht kleiner als 256 ist oder die größte Zahl, die durch den systemeigenen Ganzzahltyp Ihrer Sprache dargestellt werden kann, je nachdem, welcher Wert größer ist . Also , wenn Ihre Mutter Integer - Typ nur Bytes speichern kann, können Sie davon ausgehen , dass der größte n
ist 9
oder 10
(je nachdem , ob Sie verwenden 0- oder 1-basiert n
) , und wenn es 32-Bit - Integer unterzeichnet speichern kann, n
wird in den meisten 33
oder 34
.
Es gelten die Standardregeln für Code-Golf . Der kürzeste Code gewinnt.
OEIS
Hier einige relevante OEIS-Links. Natürlich enthalten diese Spoiler für verschiedene Arten, die Zahlen im Geflecht zu generieren:
- Oben / Unten: A001353 oder A010905 oder A106707 oder A195503
- Mitte: A001835 oder A079935
- Beide: A002530
Testfälle
Diese Testfälle verwenden eine Indexierung auf 1 Basis. Jeder Testfall besteht aus vier Zeilen, von denen die erste die Eingabe und die restlichen drei die Ausgabe sind.
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