File: matrix.ruby

package info (click to toggle)
jruby 9.4.8.0%2Bds-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 89,244 kB
  • sloc: ruby: 548,574; java: 276,189; yacc: 25,873; ansic: 6,178; xml: 6,111; sh: 1,855; sed: 94; makefile: 78; jsp: 48; tcl: 40; exp: 12
file content (40 lines) | stat: -rw-r--r-- 739 bytes parent folder | download | duplicates (9)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#!/usr/bin/ruby
# -*- mode: ruby -*-
# $Id: matrix.ruby,v 1.2 2005-03-23 06:11:41 bfulgham Exp $
# http://shootout.alioth.debian.org/
#
# Contributed by Christopher Williams

n = (ARGV[0] || 60).to_i
size = 30

def mkmatrix(rows, cols)
  count = 0
  Array.new(rows) do |i| 
    Array.new(cols) {|j| count +=1 }
  end
end

def mmult(rows, cols, m1, m2)
  m3 = []
  for i in 0 .. (rows - 1)
    row = []
    for j in 0 .. (cols - 1)
      val = 0
      for k in 0 .. (cols - 1)
        val += m1[i][k] * m2[k][j]
      end
      row << val
    end
    m3 << row
  end
  m3
end

m1 = mkmatrix(size, size)
m2 = mkmatrix(size, size)
mm = []
n.times do
  mm = mmult(size, size, m1, m2)
end
puts "#{mm[0][0]} #{mm[2][3]} #{mm[3][2]} #{mm[4][4]}"