Question

How do you create a list-based matrix of 1's with given row and column counts? For example, like:

row=3,column=4 -> [[1,1,1,1],[1,1,1,1],[1,1,1,1]]
Was it helpful?

Solution 3

You can do this with replicate:

onesMatrix rows cols = replicate rows (replicate cols 1)

OTHER TIPS

import Control.Applicative
import Data.Functor 

matrix r c = [1] <* [1..c] <$ [1..r]

Here's an alternative method using list comprehension. Let's have a look at the basics:

Prelude> [ 2*x | x <- [1..4] ]
[2,4,6,8]

So that gives you one number for each element in the list [1..4]. Why not, instead of doubling x, just have a 1:

Prelude> [ 1 | x <- [1..4] ]
[1,1,1,1]

And if we want three of them, we can pull the same trick:

Prelude> [ [1|x<-[1..4]] | x<-[1..3] ]
[[1,1,1,1],[1,1,1,1],[1,1,1,1]]

Thus we can define

twoDlist r c = [ [1|x<-[1..c]] | x<-[1..r] ]

which gives

Prelude> twoDlist 3 4
[[1,1,1,1],[1,1,1,1],[1,1,1,1]]
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top