Как читать по числу на каждой итерации цикла в Ruby? - PullRequest
0 голосов
/ 17 июня 2019

Как читать по числу на каждой итерации цикла?Динамическая работа важна (не один раз, чтобы прочитать всю строку и преобразовать в массив), на каждой итерации, брать одно число из строки файла и работать с ним.Как это сделать правильно?

input.txt:

5
1 7 5 2 3 

Работа со второй строкой файла.

fin     = File.open("input.txt", "r")
fout    = File.open("output.txt", "w")
n       = fin.readline.to_i

heap_min = Heap.new(:min)
heap_max = Heap.new(:max)

for i in 1..n

    a = fin.read.to_i #code here <-- 

    heap_max.push(a)
    if heap_max.size > heap_min.size
        tmp = heap_max.top
        heap_max.pop
        heap_min.push(tmp)
    end 
    if heap_min.size > heap_max.size
        tmp = heap_min.top
        heap_min.pop
        heap_max.push(tmp)
    end 
    if heap_max.size == heap_min.size
        heap_max.top > heap_min.top ? median = heap_min.top : median = heap_max.top
    else
        median = heap_max.top
    end
    fout.print(median, " ")
end

Ответы [ 2 ]

0 голосов
/ 18 июня 2019

Если вы на 100% уверены, что ваш файл разделен числами пробелами, вы можете попробовать это:

a = fin.gets(' ', -1).to_i
0 голосов
/ 17 июня 2019

Чтение 2-й строки файла:

line2 =  File.readlines('input.txt')[1]

Преобразование в массив целых чисел:

array = line2.split(' ').map(&:to_i).compact
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...