Multifactorial: Difference between revisions

m (→‎{{header|R}}: Syntax highlighting.)
Line 1,672:
===Sequence solution===
This task doesn't use big enough numbers to need efficient code, so R can solve this very succinctly.
<lang rsplus>mfactmFact <- function(n, deg){ prod(seq(from = n, to = 1, by = -deg))}
cat("Simple version:\n")
print(outer(1:10, 1:5, Vectorize(mfactmFact)))</lang>
If we really insist on a pretty table, then we can add some names and transpose the output.
<lang rsplus>mfactmFact <- function(n, deg){ prod(seq(from = n, to = 1, by = -deg))}
#cat("Pretty" version:\n")
n<-1:10; names(n)<-n
print(t(outer(setNames(1:10, 1:10), setNames(1:5, paste0("Degree ", 1:5, ":")), Vectorize(mFact))))</lang>
deg<-1:5; names(deg)<-paste("Degree",deg)
t(outer(n,deg,Vectorize(mfact)))</lang>
{{out}}
<pre>Simple version:
<pre>> outer(1:10,1:5,Vectorize(mfact))
[,1] [,2] [,3] [,4] [,5]
[1,] 1 1 1 1 1
Line 1,692:
[9,] 362880 945 162 45 36
[10,] 3628800 3840 280 120 50
Pretty version:
 
Degree 5 1 2 3 4 5 6 14 7 8 24 369 50</pre>10
#"Pretty" version:
Degree 1: 1 2 6 24 120 720 5040 40320 362880 3628800
> t(outer(n,deg,Vectorize(mfact)))
Degree 2: 1 2 3 48 15 5 48 6 7 8 105 384 9 945 103840
Degree 13: 1 2 63 4 10 18 28 80 24 120162 720 5040 40320 362880 3628800280
Degree 24: 1 2 3 84 5 12 15 21 48 105 32 384 45 945 3840120
Degree 35: 1 2 3 4 10 5 6 18 14 28 24 80 36 162 28050</pre>
Degree 4 1 2 3 4 5 12 21 32 45 120
Degree 5 1 2 3 4 5 6 14 24 36 50</pre>
 
=={{header|Racket}}==
331

edits