matrix_multiplication.sf 557 B

12345678910111213141516171819202122232425262728293031323334
  1. #!/usr/bin/ruby
  2. #
  3. ## https://rosettacode.org/wiki/Matrix_multiplication
  4. #
  5. func matrix_multi(a, b) {
  6. var m = [[]];
  7. a.range.each { |r|
  8. b.first.range.each { |c|
  9. b.range.each { |i|
  10. m[r][c] := 0 += (a[r][i] * b[i][c]);
  11. }
  12. }
  13. };
  14. return m;
  15. };
  16.  
  17. var a = [
  18. [1, 2],
  19. [3, 4],
  20. [5, 6],
  21. [7, 8]
  22. ];
  23.  
  24. var b = [
  25. [1, 2, 3],
  26. [4, 5, 6]
  27. ];
  28.  
  29. matrix_multi(a, b).each {|line|
  30. say line.map{|i|'%3d'.sprintf(i)}.join(', ');
  31. };