Skip to content

Instantly share code, notes, and snippets.

@elvisgiv
Last active January 13, 2017 10:33
Show Gist options
  • Save elvisgiv/c9a7242d783a254539d2bb7f99907116 to your computer and use it in GitHub Desktop.
Save elvisgiv/c9a7242d783a254539d2bb7f99907116 to your computer and use it in GitHub Desktop.

Task: method for random string any size

def random_string(n)
  (0...n).map { ('a'..'z').to_a[rand(26)] }.join
end

Task: Удалить из строки все слова, длина которых меньше пяти символов. В строке не используются знаки препинания.

string = "asdf adsfkjhg lskjdfglksjdfg dfg h ffd ffdfd lskjdfglhsdfkjg weprtwuiert sldfkgj vsbnm,ckdsfgj"
str_arr = string.split(" ")
str_arr.delete_if {|word| word.length < 5}
puts str_arr.join(" ")

Task: Ввести массив строк и найти в нем максимальную по длине строку. 1) Не учитывать случай, когда таких строк несколько 2) Если строка с максимальной длиной не одна, вывести все.

arr_of_string = ["qwer slkdfjglskjfgdh lskdjfghlksdjfgh lskdjfghlsdkjfghsdlkjfgh lskdjfhglksdfjgh",
                 "skdjfglsfkdjhglsdkjhg sdflgkjsdlfg;sdfgjk  ;sldkjfg;lksdjfg;lsdkjfg  sdfgdsfgsdfgsdfgsdfg",
                 "sl;fdkgn;lsdfjg;sldkfjg;kjgh;lkj;fh sd;lkghj;ldkfg hd;flg nbxcmvbn.xc,vmbn cxvnmbmn msjdtgwert  wertdfshjkgsdfg sfdg"
]
# max length
puts arr_of_string.max_by(&:length)
# min length
puts arr_of_string.min_by(&:length)

Task: Добавить в строку пробелы после знаков препинания, если они там отсутствуют.

string = "dfsg.sdfg,sdfgsdf, sdfgdsfgsdfg,sdfdsfgg!sdghsdg"
v = string.delete(" ")
d = v.split(',')
s = d.join(", ")
a= s.split('.')
q = a.join(". ")
r= s.split('!')
e = r.join("! ")

puts e

Task: Требуется в произвольной строке удалить последнее слово, т.е. все символы после последнего пробела в строке.

string = "qwer slkdfjglskjfgdh lskdjfghlksdjfgh lskdjfghlsdkjfghsdlkjfgh lskdjfhglksdfjgh"
arrstr = string.split(" ")
as = arrstr.pop
s = arrstr.join(" ")

puts string
puts s

Task: Дан массив слов. Заменить последние три символа слов, имеющих выбранную длину на символ "$".

string = "qwer slkdfjglskjfgdh lskdjfghlksdjfgh lskdjfghlsdkjfghsdlkjfgh lskdjfhglksdfjgh"
arrstr = string.split(" ")

arrstr.map! do |word|
  if word.length > 4
    word.gsub(/.{3}$/, "$")
  else
    word
  end
end

puts arrstr.join(" ")

Task: Дана строка символов. Группы символов, разделенные одним или несколькими пробелами и не содержащие пробелов внутри себя, будем называть словами. В самом длинном слове заменить все буквы «l» на «%».

string = "qwer slkdfjglskjfgdh lskdjfghlksdjfgh lskdjfghlsdkjfghsdlkjfgh lskdjfhglk sdfjgh"
arrstr = string.split(" ")
longest_word = arrstr.max_by(&:length)
# the same resault
#longstr = arrstr.inject do |memo, word|
    #memo.length > word.length ? memo : word
#end
# find index by value
long_word_index = arrstr.index(longest_word)
longest_word.gsub!("l", "%")
# delete by index
arrstr.delete_at(long_word_index)
# insert by index
arrstr.insert(long_word_index, longest_word)
# join
new_string = arrstr.join(" ")

puts string
puts new_string

Task: Найти слово, стоящее в тексте под определенным номером, и вывести его первую букву.

number = 30
string = "qwer slkdfjglskjfgdh lskdjfghlksdjfgh fskdjfghlsdkjfghsdlkjfgh kskdjfhglk sdfjgh"
arrstr = string.split(" ")
size = arrstr.size
if number <= size + 1
  word_by_number = arrstr[number]
  first_letter = word_by_number[0]
  puts first_letter
else
  puts "string do not contain #{number} words, please enter from 0 to #{size + 1}"
end

Task: Вводится строка слов. Вывести слова в обратном порядке.

string = "qwer slkdfjglskjfgdh lskdjfghlksdjfgh fskdjfghlsdkjfghsdlkjfgh kskdjfhglk sdfjgh"
arrstr = string.split(" ")
# reverse array elements
new_arr = arrstr.reverse
#
new_str = new_arr.join(" ")

puts string
puts new_str

Task: вывести все методы для массива, которые заканчиваются на "?"

array = [1, 2, 2, 3]
puts array.methods.grep(/\?$/).sort
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment