RosettaCodeData/Task/Combinations-and-permutations/Bracmat/combinations-and-permutations.bracmat
2015-02-20 09:02:09 -05:00

56 lines
1,005 B
Text

( ( C
= n k coef
. !arg:(?n,?k)
& (!n+-1*!k:<!k:?k|)
& 1:?coef
& whl
' ( !k:>0
& !coef*!n*!k^-1:?coef
& !k+-1:?k
& !n+-1:?n
)
& !coef
)
& ( P
= n k result
. !arg:(?n,?k)
& !n+-1*!k:?k
& 1:?result
& whl
' ( !n:>!k
& !n*!result:?result
& !n+-1:?n
)
& !result
)
& 0:?i
& whl
' ( 1+!i:~>12:?i
& div$(!i.3):?k
& out$(!i P !k "=" P$(!i,!k))
)
& 0:?i
& whl
' ( 10+!i:~>60:?i
& div$(!i.3):?k
& out$(!i C !k "=" C$(!i,!k))
)
& ( displayBig
=
. @(!arg:?show [50 ? [?length)
& !show "... (" !length+-50 " more digits)"
| !arg
)
& 5 50 500 1000 5000 15000:?is
& whl
' ( !is:%?i ?is
& div$(!i.3):?k
& out$(str$(!i " P " !k " = " displayBig$(P$(!i,!k))))
)
& 0:?i
& whl
' ( 100+!i:~>1000:?i
& div$(!i.3):?k
& out$(str$(!i " C " !k " = " displayBig$(C$(!i,!k))))
)
);