Skip to content

Instantly share code, notes, and snippets.

@alexandersazonof
Last active December 16, 2018 17:46
Show Gist options
  • Save alexandersazonof/6fa33e8ddcbed99f281f171737968d15 to your computer and use it in GitHub Desktop.
Save alexandersazonof/6fa33e8ddcbed99f281f171737968d15 to your computer and use it in GitHub Desktop.
#Дана строка в которой записаны слова через пробел. Необходимо упорядочить слова по количеству букв в каждом слове.
str = "Alexander Yan Dasha Mari 1 s 123 1231 2124"
array = str.split.sort_by(&:length).join " "
puts array
@aya-soft
Copy link

  1. Что делает .split, вызванный без параметров?
  2. array.each { |e| str+=e +" " } - как вместо этого использовать метод противоположный по смыслу split?
  3. как это короче записать? array.sort { |a, b| a.size <=> b.size }

@alexandersazonof
Copy link
Author

  1. Что делает .split, вызванный без параметров?
  2. array.each { |e| str+=e +" " } - как вместо этого использовать метод противоположный по смыслу split?
  3. как это короче записать? array.sort { |a, b| a.size <=> b.size }

1 Тоже самое что и .split " "
2 sort.reverse
3 .join " "

@aya-soft
Copy link

aya-soft commented Dec 2, 2018

  1. лучше использовать цепочку вызовов на одной строке, если она не очень большая, чем плодить строки с ненужными переменными
    array = str.split
    array = array.sort.reverse
    puts array.join " "

@aya-soft
Copy link

aya-soft commented Dec 2, 2018

  1. sort.reverse - это неверно!!!
    просто sort - отсортирует не по длине строки, а по алфавиту
    reverse - просто перевернет массив наоборот

@alexandersazonof
Copy link
Author

  1. лучше использовать цепочку вызовов на одной строке, если она не очень большая, чем плодить строки с ненужными переменными
    array = str.split
    array = array.sort.reverse
    puts array.join " "

1 array = str.split.sort.join " "
2 Я думал нужно отсортировать по возрастанию

@aya-soft
Copy link

aya-soft commented Dec 2, 2018

Нет, в задании написано "по кол-ву букв в слове", так что доделывай, сейчас неправильно

@alexandersazonof
Copy link
Author

alexandersazonof commented Dec 2, 2018

Нет, в задании написано "по кол-ву букв в слове", так что доделывай, сейчас неправильно

str = "Alexander Yan Dasha Mari 1 s 123 1231 2124"
array = str.split.sort_by(&:length).join " "
puts array

@aya-soft
Copy link

Саша, отлично!

Еще момент, лучше, чтобы было однообразное применение конструкций языка, если при вызове метода ты ставишь скобки, тогда ставь везде!

array = str.split.sort_by(&:length).join(" ")

@aya-soft
Copy link

🥇

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