Skip to content

Instantly share code, notes, and snippets.

@alexandersazonof
Last active December 16, 2018 18:12
Show Gist options
  • Save alexandersazonof/29eda5023417dd10582a8d5bc2e3617f to your computer and use it in GitHub Desktop.
Save alexandersazonof/29eda5023417dd10582a8d5bc2e3617f to your computer and use it in GitHub Desktop.
#Дан целочисленный массив. Преобразовать его, вставив перед каждым положительным элементом нулевой элемент
number_array = [1, -2, -1, 4]
sort_array = number_array.each_with_object([]) do |item , sort_array |
sort_array << 0 if item.positive?
sort_array << item
end
puts sort_array
@aya-soft
Copy link

aya-soft commented Nov 27, 2018

  1. опять имя массива не отражает смысл: number
  2. Рубисты стремятся к лаконичности: sort_number = [] уже достаточно и понятно
  3. В простых выражениях принято не ставить скобки, если нет аргументов: Array.new
  4. Замени if на тернарный оператор
  5. Попробуй использовать each_with_object, чтобы избавиться от sort_number = Array.new()
  6. Придумай решение с методом flatten

@alexandersazonof
Copy link
Author

  1. опять имя массива не отражает смысл: number
  2. Рубится стремятся к лаконичности: sort_number = [] уже достаточно и понятно
  3. В простых выражениях принято не ставить скобки, если нет аргументов: Array.new
  4. Замени if на тернарный оператор
  5. Попробуй использовать each_with_object, чтобы избавиться от sort_number = Array.new()
  6. Придумай решение с методом flatten

1 С именами я понял проблему
5 sort_array = digital_array.each_with_object([]) do |item , sort_array |
item>0 ? sort_array.push(0, item) : sort_array<<item
end
6 flatten преобразует многомерный массив в одномерный , я не понимаю как здесь можно это реализовать

@aya-soft
Copy link

aya-soft commented Dec 2, 2018

  1. опять с проблемами у тебя беда, надо sort_array << item
  2. ну посмотри внимательно, ты из одного массива делаешь другой, добавляя то 2 элемента, то один
    вот и подумай, причем тут flatten

@alexandersazonof
Copy link
Author

alexandersazonof commented Dec 2, 2018

  1. опять с проблемами у тебя беда, надо sort_array << item
  2. ну посмотри внимательно, ты из одного массива делаешь другой, добавляя то 2 элемента, то один
    вот и подумай, причем тут flatten

вот такое решение :

number_array = [1, -2, -1, 4]

sort_array = number_array.each_with_object([]) do |item , sort_array |
  if item.positive?
    sort_array << 0
  end
  sort_array << item
end.flatten

puts sort_array

@aya-soft
Copy link

aya-soft commented Dec 2, 2018

  1. можешь переписать это условие в виде модификатора?
    if item.positive?
    sort_array << 0
    end
  2. а зачем flatten тут? ты же добавляешь элементы по одному

@alexandersazonof
Copy link
Author

  1. можешь переписать это условие в виде модификатора?
    if item.positive?
    sort_array << 0
    end
  2. а зачем flatten тут? ты же добавляешь элементы по одному

1 sort_array << 0 if item.positive?
2 убрал

@aya-soft
Copy link

aya-soft commented Dec 6, 2018

ок, Придумай решение с методом flatten - еще не сделал

@alexandersazonof
Copy link
Author

ок, Придумай решение с методом flatten - еще не сделал

number_array = [1, -2, -1, 4]
sort_array = number_array.collect { |item| item > 0 ? [0, item] : item }.flatten
puts sort_array

@aya-soft
Copy link

🥇

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment