Ruby/Практикум/Строки: различия между версиями
Содержимое удалено Содержимое добавлено
→Дана строка в которой числа перечислены через пробел. Необходимо найти максимальное из этих чисел.: добавлено содержимое Метки: с мобильного устройства из мобильной версии |
DannyS712 (обсуждение | вклад) м <source> -> <syntaxhighlight> (phab:T237267) |
||
Строка 5:
'''Возможное решение:'''
<
p s.split.map{ |i| i.to_i }.max</
'''Замечания по решению:'''
Строка 12:
'''Возможное решение:'''
<
p s.split.map(&:to_i).max</
'''Замечания по решению:''' Ruby 1.9
Строка 19:
'''Возможное решение:'''
<
p s.split.collect(&:to_i).max
</syntaxhighlight>
'''Замечания по решению:'''
Строка 27:
'''Возможное решение:'''
<
puts s.split.max
</syntaxhighlight>
'''Замечания по решению:'''
Строка 37:
'''Возможное решение:'''
<
p( str.split("").select{ |n| ( n>="а" || n>="А" )&&( n<= "я" || n<="Я" ) }.size )</
'''Замечания по решению:'''
Строка 45:
'''Возможное решение:'''
<
p str.scan(/[А-я]/).size</
'''Замечания по решению:'''
Строка 52:
'''Возможное решение:'''
<
p str.count "А-я"</
'''Замечания по решению:'''
Строка 62:
'''Возможное решение:'''
<
a = str.split("")
b = a.select{ |i| ("a".."z").include?(i) }
p( b == b.sort )</
'''Замечания по решению:'''
Строка 72:
'''Возможное решение:'''
<
bb = ("A".."Z").to_a
sbb = cTpoka.split("") - bb
p( sbb == sbb.sort )</
'''Замечания по решению:'''
Строка 81:
'''Возможное решение:'''
<
a=str.scan(/[a-z]/)
p a==a.sort</
'''Замечания по решению:'''Решение правильно частично. Правильное решение
<
a=str.scan(/\w/)
p a==a.sort</
'''Замечания по решению:''' Нифига подобного. Решение правильное. "\w" кроме строчных латинских букв еще включает прописные, а они отбрасываются по условию.
Строка 94:
'''Возможное решение:'''
<
a = "dfbxvsferwr"
a.split(//) == a.split(//).sort
</syntaxhighlight>
'''Замечания по решению:'''
'''Возможное решение:'''
<
st = 'abCDefDHijklmo Mp'
res = true
st.scan(/[a-z]/).each_index{|i| i == 0 ? next : (res = false and exit if st[i] < st[i-1])}
res
</syntaxhighlight>
'''Замечания по решению:'''
Строка 115:
'''Возможное решение:'''
<
puts str.split(" ").sort_by{ rand }.join(" ")</
'''Замечания по решению:'''
Строка 122:
'''Возможное решение:'''
<
puts str.split.shuffle.join(' ')</
'''Замечания по решению:'''
Строка 129:
'''Возможное решение:'''
<
puts str.split.shuffle*' '</
'''Замечания по решению:'''
Строка 138:
'''Возможное решение:'''
<
p( cTpoka.reverse.eql?( cTpoka ) )</
'''Замечания по решению:'''
Строка 148:
'''Возможное решение:'''
<
p( a.reverse == a )</
'''Замечания по решению:'''
Строка 159:
'''Возможное решение:'''
<
str2 = str.downcase.scan(/\w+/).join
p str2.reverse == str2</
'''Замечания по решению:'''
Строка 172:
'''Возможное решение:'''
<
p str.delete(" ").reverse == str.delete(" ")</
'''Замечания по решению:'''
Строка 182:
'''Возможное решение:'''
<
p a.split("").sort_by{rand}.to_s</
'''Замечания по решению:'''
Строка 191:
'''Возможное решение:'''
<
puts s.split("").sort_by{rand}.join</
'''Замечания по решению:'''
Строка 200:
'''Возможное решение:'''
<
maccuB=cTpoka.split("")
maccuB=maccuB.sort_by{rand}
puts maccuB.to_s</
'''Замечания по решению:'''
Строка 209:
'''Возможное решение:'''
<
p "Realistic schedules are the key to creating good software".split(//).shuffle.join
</syntaxhighlight>
=== Дана строка в которой записаны слова через пробел. Необходимо перемешать в каждом слове все символы в случайном порядке кроме первого и последнего. ===
Строка 217:
'''Возможное решение:'''
<
v = a.split(" ")
n = v.map{ |t| c = t[1..-2].split('').sort_by{ rand }.to_s; t[0..0] + c + t[-1..-1] }
p n.join(" ")</
'''Замечания по решению:'''
Строка 227:
'''Возможное решение:'''
<
p "Realistic schedules are the key to creating good software".scan(/\w+/).collect{|w| [w[0..0], w.length > 2 ? w[1..-2].split(//).shuffle.join : nil, w.length >= 2 ? w[-1..-1]: nil].join}.join(" ")
</syntaxhighlight>
'''Возможное решение:'''
<
inpt= "Another solution"
outp= inpt.scan(/\w+/).map{|w| if w.length<4; w else w[0,1]+ w[1..-2].split('').shuffle.join<< w[-1] end}.join(' ')
p outp
</syntaxhighlight>
'''Замечания по решению:''' странно почему во втором решении первые <u>две</u> буквы не перемешиваются?<br />
Строка 242:
'''Возможное решение:'''
<
string = 'Дана строка в которой записаны слова через пробел. Необходимо перемешать в каждом слове все символы в случайном порядке кроме первого и последнего.'
p string.split.map{|word|
Строка 250:
end
}*' '
</syntaxhighlight>
'''Замечания по решению:''' тут также, как и в предыдущих решениях, не реализована работа со знаками пунктуации. Можно было бы сделать проверку последнего символа в слове, но мне кажется должно быть более элегантное решение. Жду вариантов.
Строка 257:
'''Возможное решение:'''
<
a = "Дана строка в которой записано... много?? знаков пунктуации, и даже циферки есть: 123456"
p a.gsub(/\b([\p{L}])([\p{L}]+)([\p{L}])\b/) {$3.insert(0, $1 + $2.split('').shuffle.join)}
</syntaxhighlight>
'''Замечания по решению:'''
'''Возможное решение:'''
<
str = "There are no facts, only interpretations"
p str.split(' ').map{ |w| w[0] + w.split('')[1..-2].shuffle.join + w[-1] } * ' '
</syntaxhighlight>
'''Замечания по решению:'''
'''Возможное решение:'''
<
p string = "Дана строка; в которой записаны. слова через пробел: Необходимо перемешать в каждом слове все символы в случайном! порядке кроме? первого слова, предложения и последнего слова предложения."
t = string.split(/ /)
Строка 287:
end
p t = t[0]+" "+t1.join(" ")+" "+t[-1]
</syntaxhighlight>
'''Замечания по решению:'''
Строка 294:
'''Возможное решение:'''
<
b = a.reverse
p a == b</
'''Замечания по решению:'''
Строка 305:
'''Возможное решение:'''
<
a = str.split("").select{ |elem| (elem>="A")&&(elem<="Z") }.join
p( a == a.reverse )</
'''Замечания по решению:'''
Строка 315:
'''Возможное решение:'''
<
a = str.scan(/[A-Z]/)
p a == a.reverse</
'''Замечания по решению:'''
Строка 324:
'''Возможное решение:'''
<
p str.gsub(/[a-zа-я]/,"") == str.gsub(/[a-zа-я]/,"").reverse</
'''Замечания по решению:'''
Строка 331:
'''Возможное решение:'''
<
b=""
a.each_char{|x| b<<x if ('A'..'Z').include? x}
p b.eql?(b.reverse)</
'''Замечания по решению:'''
Строка 342:
'''Возможное решение:'''
<
p str.split.count{|i| i.size.even?}</
'''Замечания по решению:''' Ruby 1.9.1
Строка 350:
'''Возможное решение:'''
<
a = str.split
p a.select{ |n| n.size%2 == 0 }.size</
'''Замечания по решению:'''
Строка 359:
'''Возможное решение:'''
<
a = stroka.split(" ").select{ |i| i.size % 2 == 0}
p( a.size )</
'''Замечания по решению:'''
Строка 368:
'''Возможное решение:'''
<
p( m.select{ |i| i.size % 2 == 0 }.size )</
'''Замечания по решению:'''
Строка 376:
'''Возможное решение:'''
<
a = string.split(' ')
c = a.find_all{ |elem| elem.size%2 == 0 }
d = c.size
p d</
'''Замечания по решению:'''
Строка 388:
'''Возможное решение:'''
<
b = ('A'..'Z').to_a + ('0'..'9').to_a + "!@\"$%^&*()_+-=`~{}[](),.;:|\//".split("")
p( ( a.split("") - b ).join("") == (a.split("") - b ).join("").reverse )</
'''Замечания по решению:'''
Строка 397:
'''Возможное решение:'''
<
a = str.scan /[a-z]/
p a == a.reverse</
=== Дана строка. Необходимо подсчитать количество букв "А" в этой строке. ===
Строка 405:
'''Возможное решение:'''
<
p( cTpoka.split("").select{ |i| i=="А" || i=="а" }.size )</
'''Замечания по решению:'''
Строка 413:
'''Возможное решение:'''
<
p str.scan(/[Aa]/).size</
'''Возможное решение:'''
<
p str.count 'Aa'</
'''Замечания по решению:'''
Строка 428:
'''Возможное решение:'''
<
p m.split(" ").size</
'''Замечания по решению:'''
Строка 440:
'''Возможное решение:'''
<
p cTpoka.split.size</
'''Замечания по решению:'''
'''Возможное решение:'''
<
's sdk dkd'.count(' ').succ
's sdk dkd'.scan(' ').size + 1
ну и там можно долго продолжать
</syntaxhighlight>
'''Замечания по решению:'''
Строка 457:
'''Возможное решение:'''
<
mac = s.split("")
a,b = mac.partition{ |e| ("0".."9").include?(e) }
s_1 = a+b
puts( s_1.to_s )</
'''Замечания по решению:''' зачем сначала разбивать массив в 2 переменные, а потом их клеить?
Строка 470:
'''Возможное решение:'''
<
puts cTpoka.split('').partition{ |elem| (elem >= "0")&&(elem <= "9") }.flatten.join("")</
'''Замечания по решению:'''
Строка 477:
'''Возможное решение:'''
<
print s.split('').sort.join</
'''Замечания по решению:'''
Строка 485:
'''Возможное решение:'''
<
print str.split("").partition{|e| e=~/\d/}.flatten.join</
'''Замечания по решению:'''
Строка 494:
'''Возможное решение:'''
<
m.split(" ").sort_by{ rand }.join(" ")</
'''Замечания по решению:'''
Строка 501:
'''Возможное решение:'''
<
puts cTpoka.split.sort_by{ rand }.join(" ")</
'''Замечания по решению:'''
'''Возможное решение:'''
<
p a.split.shuffle.join(" ")</
'''Замечания по решению:'''
Строка 516:
'''Возможное решение:'''
<
p s.split(/ /).sort_by{|i| i.size}.join(" ")</
'''Замечания по решению:'''
Строка 525:
'''Возможное решение:'''
<
p m.split.sort_by(&:size).join(' ')</
'''Замечания по решению:'''
Строка 535:
'''Возможное решение:'''
<
a = str.split(" ").sort_by{ |i| i.size }
p( a.to_s )</
'''Замечания по решению:'''
Строка 545:
'''Возможное решение:'''
<
m.split(" ").sort_by{ |str| str.size }</
'''Замечания по решению:'''
Строка 554:
'''Возможное решение:'''
<
b = a.to_s( 10 ).split("")
c = b.uniq
p c.size</
'''Замечания по решению:'''
Строка 566:
'''Возможное решение:'''
<
p a.to_s(10).split('').uniq.size</
'''Замечания по решению:'''
Строка 576:
'''Возможное решение:'''
<
p( x.to_s.split('').uniq.size )</
'''Замечания по решению:'''
Строка 588:
'''Возможное решение:'''
<
puts s.sort.sort_by{ |i| i.size }</
'''Замечания по решению:'''
Строка 600:
'''Возможное решение:'''
<
puts( a.split("/")[-1].split('.')[0] )</
'''Замечания по решению:'''
Строка 607:
'''Возможное решение:'''
<
puts a.split(/\W/)[-2]</
'''Замечания по решению:''' Ошибка, если в имени файла присутствует точка.
Строка 614:
'''Возможное решение:'''
<
str='C:\\Program.Files\\Admin 1\\file.name.txt'
a=str.scan(/(.+)\./)[0].join
b=str.scan(/.+\\/).join
p a.sub(b,"")
</syntaxhighlight>
'''Замечания по решению:'''
Строка 625:
'''Возможное решение:'''
<
s = 'c:\\some path\\this is a file.name.ext'
s.match(/.*\\(.*)\./)
puts $1
</syntaxhighlight>
'''Замечания по решению:'''
Строка 635:
'''Возможное решение:'''
<
str = 'C:\\Program.Files\\Admin 1\\file.name.txt'
p str.split('\\').last.sub(/\.\w+$/,'')
</syntaxhighlight>
'''Замечания по решению:'''
Строка 644:
'''Возможное решение:'''
<
str = 'C://Program.Files/Admin 1/file.name.txt'
p File.basename(str,'.txt')
</syntaxhighlight>
'''Замечания по решению:'''
Строка 654:
#Сделано в английском варианте, потому что с кодировкой проблемы.
''' Возможное решение '''
<
puts <<END
8. Найти в тексте даты формата «день.месяц.год».
Строка 665:
p str.scan(/([0-2]\d|3[0-1]).(0[1-9]|1[0-2]).(\d{4})/).map{|e| e.join('.')}.join(" ")
p str.scan(/([0-2]\d|3[0-1]).(0[1-9]|1[0-2]|January|February|March|April|May|June|July|August|September|October|November|December).(\d{4})/).map{|e| e.join('.')}.join(" ")
</syntaxhighlight>
{{BookCat | filing = deep}}
|