Post Reply 
Multinomial Coefficient
05-15-2015, 08:37 PM
Post: #1
Multinomial Coefficient
hi all,
two version of a program to calculate Multinomial Coefficient.
This program accept an integer for "n" (total of k) and a list with brackets {} for the list of the k (like {1,4,4,2}) and give a integer that represent permutations in a multi set.

Enjoy!

Salvo Micciché

Code:

EXPORT Multinomial()
BEGIN
local n,k;
input ({n, {k}}, "Multinomial Coefficient", {"n", "k_i list"}, {"Total n", "input {k_i list} with comma"}, {0,0});
// we need integers (also for list)
n:=IP(n); k:=IP(k);

return n!/∏List(k!);
END;

A version in CAS, without input routine...

Code:

#cas
multinom(args):=
// Multinomial by Salvo M. multinom(n,{list k_i})
BEGIN
local n, k, argv,argc;
argv:=[args];
argc:=size(argv);
IF argc !=2 THEN
return "Input: integer n, {list k}"; 
ELSE
n:=argv(1);
k:=argv(2);
IF (type(k) != DOM_LIST) THEN return "Second argument must be a list"; ELSE
// controllo interi
 n:= ip(n); k:= ip(k);
 return  n!/∏LIST(k!);
END; // if inner

END; // if out

END;
#end

This program has a control if user doesn't input 2 arguments (no more, no less), if the second argument is not a list and rounds both arguments, to get integers.

Caveat: with this version (#cas program) integer part command -ip()- must be lowercase or ip(k) doesn't works for the list giving wrong results.

(Thanks Parisse for hint about the CAS version!)

∫aL√0mic (IT9CLU) :: HP Prime 50g 41CX 71b 42s 39s 35s 12C 15C - DM42, DM41X - WP34s Prime Soft. Lib
Visit this user's website Find all posts by this user
Quote this message in a reply
Post Reply 




User(s) browsing this thread: 1 Guest(s)