Pascal matrix generation: Difference between revisions

Add Factor example
(Add Factor example)
Line 1,189:
[1, 4, 10, 20, 35]
[1, 5, 15, 35, 70]
</pre>
 
=={{header|Factor}}==
{{works with|Factor|0.99}}
<lang factor>USING: arrays fry io kernel math math.combinatorics
math.matrices prettyprint sequences ;
IN: rosetta-code.pascal-matrix
 
: pascal ( n quot -- m )
'[
dup 2array matrix-coordinates [ first2 @ nCk ]
matrix-map
] call ; inline
 
: lower ( n -- m ) [ ] pascal ;
: upper ( n -- m ) lower flip ;
: symmetric ( n -- m ) [ dup [ + ] dip ] pascal ;
 
: pascal-matrix-demo ( -- )
5 [ lower "Lower:" ] [ upper "Upper:" ]
[ symmetric "Symmetric:" ] tri
[ print simple-table. nl ] 2tri@ ;
 
MAIN: pascal-matrix-demo</lang>
{{out}}
<pre>
Lower:
1 0 0 0 0
1 1 0 0 0
1 2 1 0 0
1 3 3 1 0
1 4 6 4 1
 
Upper:
1 1 1 1 1
0 1 2 3 4
0 0 1 3 6
0 0 0 1 4
0 0 0 0 1
 
Symmetric:
1 1 1 1 1
1 2 3 4 5
1 3 6 10 15
1 4 10 20 35
1 5 15 35 70
</pre>
 
1,808

edits