Я пытаюсь разобрать текстовый файл и надеюсь получить некоторую Ruby помощь в превращении массива в серию подмассивов на основе поиска и фильтрации определенных значений, в основном наличия нулей. В этом случае каждый подмассив должен содержать только одну пару 00Mom и 00Dad плюс элементы без нулей, которые следуют (например, дети), но не включая следующий экземпляр 00Mom и 00Dad, что будет go в следующем подмассе. -array.
Например, с этим массивом:
array1 = ["00Mom1", "00Dad1", "Kid1", "Kid2", "00Mom2", "00Dad2", "Child1", "Child2", "00Mom3", "Youngin1"]
Я бы хотел вывести этот массив подмассивов:
array2 = [["00Mom1", "00Dad1", "Kid1", "Kid2"], ["00Mom2", "00Dad2", "Child1", "Child2"], ["00Mom3", "Youngin1"]]
Моя первая мысль было использовать «00» в счетчике, но я не могу заставить его работать. Я думаю, что решение может заключаться в использовании вложенного массива, но не уверен. Это то, что у меня есть.
array1 = ["00Mom1", "00Dad1", "Kid1", "Kid2", "00Mom2", "00Dad2", "Child1", "Child2", "00Mom3", "Youngin1"]
zero_count = 0
array2 = []
new_array = []
subarray_count = 0
array1.map do |z|
if z[0] == "0"
zero_count = zero_count + 1
end
if zero_count == 3
new_array = array1.slice(0, subarray_count)
zero_count = 1
subarray_count = 0
array2 << new_array
end
subarray_count = subarray_count + 1
end
p array2
Вывод:
[["00Mom1", "00Dad1", "Kid1", "Kid2"], ["00Mom1", "00Dad1", "Kid1", "Kid2"]]
Но мне нужно:
[["00Mom1", "00Dad1", "Kid1", "Kid2"], ["00Mom2", "00Dad2", "Child1", "Child2"], ["00Mom3", "Youngin1"]]
Есть идеи? Спасибо.