# Multiplication Table in Kotlin

## The challenge

Create an NxN multiplication table, of size provided in parameter.

for example, when given `size` is 3:

``````1 2 3
2 4 6
3 6 9
``````

for given example, the return value should be: `[[1,2,3],[2,4,6],[3,6,9]]`

## The solution in Kotlin

Option 1:

``````package solution

object Solution {
fun multiplicationTable(size: Int) = Array<IntArray>(size) {
i -> (1..size).map { it * (i + 1) }.toIntArray()
}
}
``````

Option 2:

``````package solution

object Solution {
fun multiplicationTable(size: Int): Array<IntArray> {
return Array(size){i -> IntArray(size){(it + 1) * (i + 1)}}
}
}
``````

Option 3:

``````package solution

object Solution {
fun multiplicationTable(size: Int): Array<IntArray> =
(1..size)
.map { outer ->
(1..size).map {
inner -> outer * inner
}.toIntArray()
}.toTypedArray()
}
``````

## Test cases to validate our solution

``````package solution

import org.junit.Test
import kotlin.test.assertTrue

class ExampleTests {
private fun Array<IntArray>.stringify(): String = "[\n" + Array(this.size,{ "  [ " + this[it].map { n -> n.toString() }.joinToString(", ") + " ]" }).joinToString("\n") + "\n]"

@Test fun `Basic Test`() {
val size = 3
val user = Solution.multiplicationTable(size)

val sol = arrayOf(
intArrayOf(1,2,3),
intArrayOf(2,4,6),
intArrayOf(3,6,9)
)

assertTrue(user.contentDeepEquals(sol), "Expected:\n\${sol.stringify()}\nGot:\n\${user.stringify()}")
}
}
``````