Как узнать количество элементов двумерного массива, прочитанного из файла? - PullRequest
0 голосов
/ 29 августа 2018

У меня есть файл. Внутри файла я сохранил двумерный массив, примерно такой:

[[0, 0, 1, 0, 1, 0, 1, 0, 1, 0], [0, 0, 0, 0, 0, 0, 1, 1, 0, 0], [0, 0, 0, 0, 1, 1, 1, 1, 0, 0], [0, 0, 0, 1, 0, 0, 1, 0, 0, 0], [0, 1, 1, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 1, 1, 1, 0], [0, 1, 1, 0, 1, 0, 1, 0, 1, 0], [0, 1, 0, 0, 0, 0, 0, 1, 0, 0], [0, 0, 0, 1, 0, 0, 0, 1, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]

Длина массивов может варьироваться, и они не всегда имеют длину 10 элементов.

Я читаю массив из файла, используя этот метод:

map = IO.readlines("test.txt")

и когда я печатаю результат, используя:

map.each {|x| puts "#{x}"}

вывод - это то, что я ожидаю. Но если я попытаюсь получить длину строки, используя:

puts map[0].length

Я получаю 320 вместо 10 (что я и ожидаю).

Может кто-нибудь объяснить мне, почему я получаю 320 вместо 10?

1 Ответ

0 голосов
/ 29 августа 2018

Вместо IO#readlines следует использовать JSON#parse, поскольку это действительный json:

require 'json'    
JSON.parse(File.read("test.txt"))
#⇒ [[0, 0, 1, 0, 1, 0, 1, 0, 1, 0],
#   [0, 0, 0, 0, 0, 0, 1, 1, 0, 0],
#   [0, 0, 0, 0, 1, 1, 1, 1, 0, 0],
#   [0, 0, 0, 1, 0, 0, 1, 0, 0, 0],
#   [0, 1, 1, 0, 0, 0, 0, 0, 0, 0],
#   [0, 0, 0, 0, 0, 0, 1, 1, 1, 0],
#   [0, 1, 1, 0, 1, 0, 1, 0, 1, 0],
#   [0, 1, 0, 0, 0, 0, 0, 1, 0, 0],
#   [0, 0, 0, 1, 0, 0, 0, 1, 0, 0],
#   [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...