Сравнение элементов в матрицах в Ruby - PullRequest
0 голосов
/ 05 февраля 2020

Я пытаюсь сделать сопоставление между двумя матрицами в ruby. У меня есть данные в файлах: fichero.txt содержит:
1 1 1 1 1 1 1
1 1 1 1 1 1 1
1 1 1 1 1 1 1
1 1 1 1 1 1 1

fichero2.txt содержит:
1 0 1 0 1 0 1
0 1 0 1 0 1 0
1 0 1 0 1 0 1
0 1 0 1 0 1 0

Это мой код


require matrix
    m1 = Matrix.build(7,4){|row,col|}
    m2 = Matrix.build(7,4){|row,col|}
    File.foreach("fichero2.txt") do |line|
    m1 =  line
    puts m1
    end

    File.foreach("fichero.txt") do |line2|
    m2 = line2
    puts m2

    end

    for i in (0..3)
        for j in (0..6) 
            if m2[i,j] ==  m1[i,j]
              print "V "
            end
        end
    end

Рекомендуется вывести 14 раз "V", потому что есть 14 равных элементов. Но это печатает 10 раз "v", и я не понимаю, почему. Можете ли вы сказать мне, почему печатает 10 раз вместо 14? Я правильно храню данные?

1 Ответ

1 голос
/ 05 февраля 2020

См. Следующий фрагмент кода для примера. Замените имена файлов своими собственными.

#!/usr/bin/env ruby
#
# USAGE:
#   matrix.rb
#
# Description:
#   Demonstration how to compare two matrixes
#
# StackOverflow: 
#   Question 60068512
#
# Author:
#   Polar Bear      https://stackoverflow.com/users/12313309/polar-bear
#
# Date: Wed Feb 5 12:43:00 PST 2020
#
#

$debug = 0              # debug flag

matrix1 = 'file1.dat'
matrix2 = 'file2.dat'

def read_matrix(filename)
  matrix = []
  i = 0

  File.foreach(filename) { |line|
    matrix[i] = line.split
    i += 1
  }

  return matrix
end

def matrix_compare(m1,m2)
  matrix = []

  for i in (0..m1.size-1)
    matrix[i] = []
    for j in (0..m1[0].size-1)
      matrix[i][j] = m2[i][j] == m1[i][j] ? 'V' : ' '
    end
  end

  return matrix
end

def matrix_show(m)
  m.each do |row|
    row.each do |elem|
      printf "%c ",elem
    end
    puts
  end
end

m1 = read_matrix(matrix1)
m2 = read_matrix(matrix2)

m3 = matrix_compare(m1,m2)

puts '
+--------------+
| Matrix m3    |
+--------------+
'

matrix_show(m3)

exit 0

Вывод

+--------------+
| Matrix m3    |
+--------------+
V   V   V   V 
  V   V   V   
V   V   V   V 
  V   V   V   
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...