Add tasks for all the new languages
This commit is contained in:
parent
9dc3c2bb62
commit
bba7bfd280
13208 changed files with 134745 additions and 0 deletions
31
Task/Matrix-multiplication/Nim/matrix-multiplication.nim
Normal file
31
Task/Matrix-multiplication/Nim/matrix-multiplication.nim
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
import strfmt
|
||||
|
||||
type Matrix[M,N: static[int]] = array[M, array[N, float]]
|
||||
|
||||
let a = [[1.0, 1.0, 1.0, 1.0],
|
||||
[2.0, 4.0, 8.0, 16.0],
|
||||
[3.0, 9.0, 27.0, 81.0],
|
||||
[4.0, 16.0, 64.0, 256.0]]
|
||||
|
||||
let b = [[ 4.0 , -3.0 , 4/3.0, -1/4.0 ],
|
||||
[-13/3.0, 19/4.0, -7/3.0, 11/24.0],
|
||||
[ 3/2.0, -2.0 , 7/6.0, -1/4.0 ],
|
||||
[ -1/6.0, 1/4.0, -1/6.0, 1/24.0]]
|
||||
|
||||
proc `$`(m: Matrix): string =
|
||||
result = "(["
|
||||
for r in m:
|
||||
if result.len > 2: result.add "]\n ["
|
||||
for val in r: result.add val.format("8.2f")
|
||||
result.add "])"
|
||||
|
||||
proc `*`[M,P,N](a: Matrix[M,P]; b: Matrix[P,N]): Matrix[M,N] =
|
||||
for i in result.low .. result.high:
|
||||
for j in result[0].low .. result[0].high:
|
||||
for k in a[0].low .. a[0].high:
|
||||
result[i][j] += a[i][k] * b[k][j]
|
||||
|
||||
echo a
|
||||
echo b
|
||||
echo a * b
|
||||
echo b * a
|
||||
Loading…
Add table
Add a link
Reference in a new issue