Ruby массив в подмассивы на основе значений элементов - PullRequest
0 голосов
/ 16 июня 2020

Я пытаюсь разобрать текстовый файл и надеюсь получить некоторую 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"]]

Есть идеи? Спасибо.

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