Die meisten Leute kennen Pascals Dreieck.
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
Pascals Dreieck ist ein Automat, bei dem der Wert einer Zelle die Summe der Zellen links oben und rechts oben ist. Jetzt definieren wir ein ähnliches Dreieck. Anstatt nur die Zellen nach links oben und rechts oben zu nehmen, nehmen wir alle Zellen entlang zweier unendlicher Linien, die sich nach links oben und rechts oben erstrecken. Genau wie Pascals Dreieck beginnen wir mit einer einzelnen 1
Zahl, die unendlich mit Nullen aufgefüllt ist, und bauen von dort abwärts.
Zum Beispiel, um die mit einem gekennzeichnete Zelle zu berechnen x
1
1 1
2 2 2
4 5 5 4
x
Wir würden die folgenden Zellen summieren
.
. .
2 . 2
. 5 5 .
x
Machen Sie unsere neue Zelle 14
.
Aufgabe
Wenn eine Zeilennummer ( n ) und ein Abstand von links ( r ) gegeben sind, wird der r- te Eintrag ungleich Null von links in der n- ten Zeile berechnet und ausgegeben . (das Äquivalent zu Pascals Dreieck ist nCr ). Sie können annehmen, dass r kleiner als n ist .
Dies ist Code-Golf . Ziel ist es, die Anzahl der Bytes in Ihrer Lösung zu minimieren.
Testfälle
0,0 -> 1
1,0 -> 1
2,0 -> 2
4,2 -> 14
6,3 -> 106
Hier sind die ersten paar Zeilen in Dreiecksform:
1
1 1
2 2 2
4 5 5 4
8 12 14 12 8
16 28 37 37 28 16
32 64 94 106 94 64 32
64 144 232 289 289 232 144 64
128 320 560 760 838 760 560 320 128
Antworten:
Jelly ,
1817 BytesVerwendet eine 0-basierte Indizierung.
Probieren Sie es online!
Wie es funktioniert
quelle
Python 3 , 72 Bytes
1 Byte dank Kritixi Lithos.
Probieren Sie es online!
quelle
n>=r>=0and
und ein Byte speichernn
0 ist, dann gibt es 1; Ansonsten gibt es 0. Es ist wien and ... or 1
, aber kürzer.0^0
ist1
in den meisten Programmiersprachen verfügbar .ES6,
8078 BytesIn Aktion!
Zwei Bytes dank Arnauld.
quelle
while(n&&r<n)
und können Sie 2 Bytes sparenwhile(o*r)
.PHP , 94 Bytes
rekursiver Weg 0-indiziert
Probieren Sie es online!
PHP , 125 Bytes
0-indiziert
Probieren Sie es online!
PHP> = 7.1, 159 Bytes
0-indiziert für Zeilen über 50
quelle
Python 3 , 61 Bytes
Dies gibt True für den Basisfall (0, 0) zurück , der standardmäßig zulässig ist .
Probieren Sie es online!
quelle
~n<-r<1
ist ziemlich schlau, ich habe gute 10 Minuten damit verbracht, Golf zu spielenn>=r>=0
.Pascal , 145 Bytes
Probieren Sie es online!
Verwendet die
T(n, r) = T(n-1, r-1) + T(n-1, r)
Rekursion.quelle