require 'roo' def load_patterns(file) xlsx = Roo::Spreadsheet.open(file) xlsx.sheets.each_with_object({}) do |sheet_name, patterns| xlsx.default_sheet = sheet_name matrix = (1..8).map { |row| (1..8).map { |col| xlsx.cell(row, col).to_s.strip.downcase == 'x' ? 1 : -1 } } patterns[sheet_name.to_sym] = matrix end end