Ruby/Практикум/Строки: различия между версиями
→Дана строка в которой числа перечислены через пробел. Необходимо найти максимальное из этих чисел.: добавлено содержимое Метки: с мобильного устройства из мобильной версии |
DannyS712 (обсуждение | вклад) м <source> -> <syntaxhighlight> (phab:T237267) |
||
Строка 5: | Строка 5: | ||
'''Возможное решение:''' |
'''Возможное решение:''' |
||
< |
<syntaxhighlight lang=ruby>s = "1 2 3 4 5 6 7 8" |
||
p s.split.map{ |i| i.to_i }.max</ |
p s.split.map{ |i| i.to_i }.max</syntaxhighlight> |
||
'''Замечания по решению:''' |
'''Замечания по решению:''' |
||
Строка 12: | Строка 12: | ||
'''Возможное решение:''' |
'''Возможное решение:''' |
||
< |
<syntaxhighlight lang=ruby>s = "1 2 3 4 5 6 7 8" |
||
p s.split.map(&:to_i).max</ |
p s.split.map(&:to_i).max</syntaxhighlight> |
||
'''Замечания по решению:''' Ruby 1.9 |
'''Замечания по решению:''' Ruby 1.9 |
||
Строка 19: | Строка 19: | ||
'''Возможное решение:''' |
'''Возможное решение:''' |
||
< |
<syntaxhighlight lang=ruby>s = "1 2 3 4 5 6 7 8" |
||
p s.split.collect(&:to_i).max |
p s.split.collect(&:to_i).max |
||
</syntaxhighlight> |
|||
</source> |
|||
'''Замечания по решению:''' |
'''Замечания по решению:''' |
||
Строка 27: | Строка 27: | ||
'''Возможное решение:''' |
'''Возможное решение:''' |
||
< |
<syntaxhighlight lang=ruby>s = "1 2 3 4 5 6 7 8" |
||
puts s.split.max |
puts s.split.max |
||
</syntaxhighlight> |
|||
</source> |
|||
'''Замечания по решению:''' |
'''Замечания по решению:''' |
||
Строка 37: | Строка 37: | ||
'''Возможное решение:''' |
'''Возможное решение:''' |
||
< |
<syntaxhighlight lang=ruby>str = "ывfgфеф" |
||
p( str.split("").select{ |n| ( n>="а" || n>="А" )&&( n<= "я" || n<="Я" ) }.size )</ |
p( str.split("").select{ |n| ( n>="а" || n>="А" )&&( n<= "я" || n<="Я" ) }.size )</syntaxhighlight> |
||
'''Замечания по решению:''' |
'''Замечания по решению:''' |
||
Строка 45: | Строка 45: | ||
'''Возможное решение:''' |
'''Возможное решение:''' |
||
< |
<syntaxhighlight lang=ruby>str = "ывfgфеф" |
||
p str.scan(/[А-я]/).size</ |
p str.scan(/[А-я]/).size</syntaxhighlight> |
||
'''Замечания по решению:''' |
'''Замечания по решению:''' |
||
Строка 52: | Строка 52: | ||
'''Возможное решение:''' |
'''Возможное решение:''' |
||
< |
<syntaxhighlight lang=ruby>str = "ывЛgфmю" |
||
p str.count "А-я"</ |
p str.count "А-я"</syntaxhighlight> |
||
'''Замечания по решению:''' |
'''Замечания по решению:''' |
||
Строка 62: | Строка 62: | ||
'''Возможное решение:''' |
'''Возможное решение:''' |
||
< |
<syntaxhighlight lang=ruby>str = "lol" |
||
a = str.split("") |
a = str.split("") |
||
b = a.select{ |i| ("a".."z").include?(i) } |
b = a.select{ |i| ("a".."z").include?(i) } |
||
p( b == b.sort )</ |
p( b == b.sort )</syntaxhighlight> |
||
'''Замечания по решению:''' |
'''Замечания по решению:''' |
||
Строка 72: | Строка 72: | ||
'''Возможное решение:''' |
'''Возможное решение:''' |
||
< |
<syntaxhighlight lang=ruby>cTpoka = "acBdeFg" |
||
bb = ("A".."Z").to_a |
bb = ("A".."Z").to_a |
||
sbb = cTpoka.split("") - bb |
sbb = cTpoka.split("") - bb |
||
p( sbb == sbb.sort )</ |
p( sbb == sbb.sort )</syntaxhighlight> |
||
'''Замечания по решению:''' |
'''Замечания по решению:''' |
||
Строка 81: | Строка 81: | ||
'''Возможное решение:''' |
'''Возможное решение:''' |
||
< |
<syntaxhighlight lang=ruby>str = "acBdeFg" |
||
a=str.scan(/[a-z]/) |
a=str.scan(/[a-z]/) |
||
p a==a.sort</ |
p a==a.sort</syntaxhighlight> |
||
'''Замечания по решению:'''Решение правильно частично. Правильное решение |
'''Замечания по решению:'''Решение правильно частично. Правильное решение |
||
< |
<syntaxhighlight lang=ruby>str = "acBdeFg" |
||
a=str.scan(/\w/) |
a=str.scan(/\w/) |
||
p a==a.sort</ |
p a==a.sort</syntaxhighlight> |
||
'''Замечания по решению:''' Нифига подобного. Решение правильное. "\w" кроме строчных латинских букв еще включает прописные, а они отбрасываются по условию. |
'''Замечания по решению:''' Нифига подобного. Решение правильное. "\w" кроме строчных латинских букв еще включает прописные, а они отбрасываются по условию. |
||
Строка 94: | Строка 94: | ||
'''Возможное решение:''' |
'''Возможное решение:''' |
||
< |
<syntaxhighlight lang=ruby> |
||
a = "dfbxvsferwr" |
a = "dfbxvsferwr" |
||
a.split(//) == a.split(//).sort |
a.split(//) == a.split(//).sort |
||
</syntaxhighlight> |
|||
</source> |
|||
'''Замечания по решению:''' |
'''Замечания по решению:''' |
||
'''Возможное решение:''' |
'''Возможное решение:''' |
||
< |
<syntaxhighlight lang=ruby> |
||
st = 'abCDefDHijklmo Mp' |
st = 'abCDefDHijklmo Mp' |
||
res = true |
res = true |
||
st.scan(/[a-z]/).each_index{|i| i == 0 ? next : (res = false and exit if st[i] < st[i-1])} |
st.scan(/[a-z]/).each_index{|i| i == 0 ? next : (res = false and exit if st[i] < st[i-1])} |
||
res |
res |
||
</syntaxhighlight> |
|||
</source> |
|||
'''Замечания по решению:''' |
'''Замечания по решению:''' |
||
Строка 115: | Строка 115: | ||
'''Возможное решение:''' |
'''Возможное решение:''' |
||
< |
<syntaxhighlight lang=ruby>str="Point Line Triangle Square Pentagon" |
||
puts str.split(" ").sort_by{ rand }.join(" ")</ |
puts str.split(" ").sort_by{ rand }.join(" ")</syntaxhighlight> |
||
'''Замечания по решению:''' |
'''Замечания по решению:''' |
||
Строка 122: | Строка 122: | ||
'''Возможное решение:''' |
'''Возможное решение:''' |
||
< |
<syntaxhighlight lang=ruby>str="Point Line Triangle Square Pentagon" |
||
puts str.split.shuffle.join(' ')</ |
puts str.split.shuffle.join(' ')</syntaxhighlight> |
||
'''Замечания по решению:''' |
'''Замечания по решению:''' |
||
Строка 129: | Строка 129: | ||
'''Возможное решение:''' |
'''Возможное решение:''' |
||
< |
<syntaxhighlight lang=ruby>str="Point Line Triangle Square Pentagon" |
||
puts str.split.shuffle*' '</ |
puts str.split.shuffle*' '</syntaxhighlight> |
||
'''Замечания по решению:''' |
'''Замечания по решению:''' |
||
Строка 138: | Строка 138: | ||
'''Возможное решение:''' |
'''Возможное решение:''' |
||
< |
<syntaxhighlight lang=ruby>cTpoka = "бред" |
||
p( cTpoka.reverse.eql?( cTpoka ) )</ |
p( cTpoka.reverse.eql?( cTpoka ) )</syntaxhighlight> |
||
'''Замечания по решению:''' |
'''Замечания по решению:''' |
||
Строка 148: | Строка 148: | ||
'''Возможное решение:''' |
'''Возможное решение:''' |
||
< |
<syntaxhighlight lang=ruby>a = "geg" |
||
p( a.reverse == a )</ |
p( a.reverse == a )</syntaxhighlight> |
||
'''Замечания по решению:''' |
'''Замечания по решению:''' |
||
Строка 159: | Строка 159: | ||
'''Возможное решение:''' |
'''Возможное решение:''' |
||
< |
<syntaxhighlight lang=ruby>str="Are we not drawn onward, we few, drawn onward to new era?" |
||
str2 = str.downcase.scan(/\w+/).join |
str2 = str.downcase.scan(/\w+/).join |
||
p str2.reverse == str2</ |
p str2.reverse == str2</syntaxhighlight> |
||
'''Замечания по решению:''' |
'''Замечания по решению:''' |
||
Строка 172: | Строка 172: | ||
'''Возможное решение:''' |
'''Возможное решение:''' |
||
< |
<syntaxhighlight lang=ruby>str="а роза упала на лапу азора" |
||
p str.delete(" ").reverse == str.delete(" ")</ |
p str.delete(" ").reverse == str.delete(" ")</syntaxhighlight> |
||
'''Замечания по решению:''' |
'''Замечания по решению:''' |
||
Строка 182: | Строка 182: | ||
'''Возможное решение:''' |
'''Возможное решение:''' |
||
< |
<syntaxhighlight lang=ruby>a = "privet poka" |
||
p a.split("").sort_by{rand}.to_s</ |
p a.split("").sort_by{rand}.to_s</syntaxhighlight> |
||
'''Замечания по решению:''' |
'''Замечания по решению:''' |
||
Строка 191: | Строка 191: | ||
'''Возможное решение:''' |
'''Возможное решение:''' |
||
< |
<syntaxhighlight lang=ruby>s = "134saddfs a123" |
||
puts s.split("").sort_by{rand}.join</ |
puts s.split("").sort_by{rand}.join</syntaxhighlight> |
||
'''Замечания по решению:''' |
'''Замечания по решению:''' |
||
Строка 200: | Строка 200: | ||
'''Возможное решение:''' |
'''Возможное решение:''' |
||
< |
<syntaxhighlight lang=ruby>cTpoka="всякий бред" |
||
maccuB=cTpoka.split("") |
maccuB=cTpoka.split("") |
||
maccuB=maccuB.sort_by{rand} |
maccuB=maccuB.sort_by{rand} |
||
puts maccuB.to_s</ |
puts maccuB.to_s</syntaxhighlight> |
||
'''Замечания по решению:''' |
'''Замечания по решению:''' |
||
Строка 209: | Строка 209: | ||
'''Возможное решение:''' |
'''Возможное решение:''' |
||
< |
<syntaxhighlight lang=ruby> |
||
p "Realistic schedules are the key to creating good software".split(//).shuffle.join |
p "Realistic schedules are the key to creating good software".split(//).shuffle.join |
||
</syntaxhighlight> |
|||
</source> |
|||
=== Дана строка в которой записаны слова через пробел. Необходимо перемешать в каждом слове все символы в случайном порядке кроме первого и последнего. === |
=== Дана строка в которой записаны слова через пробел. Необходимо перемешать в каждом слове все символы в случайном порядке кроме первого и последнего. === |
||
Строка 217: | Строка 217: | ||
'''Возможное решение:''' |
'''Возможное решение:''' |
||
< |
<syntaxhighlight lang=ruby>a = "start checking" |
||
v = a.split(" ") |
v = a.split(" ") |
||
n = v.map{ |t| c = t[1..-2].split('').sort_by{ rand }.to_s; t[0..0] + c + t[-1..-1] } |
n = v.map{ |t| c = t[1..-2].split('').sort_by{ rand }.to_s; t[0..0] + c + t[-1..-1] } |
||
p n.join(" ")</ |
p n.join(" ")</syntaxhighlight> |
||
'''Замечания по решению:''' |
'''Замечания по решению:''' |
||
Строка 227: | Строка 227: | ||
'''Возможное решение:''' |
'''Возможное решение:''' |
||
< |
<syntaxhighlight lang=ruby> |
||
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(" ") |
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> |
|||
</source> |
|||
'''Возможное решение:''' |
'''Возможное решение:''' |
||
< |
<syntaxhighlight lang=ruby> |
||
inpt= "Another solution" |
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(' ') |
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 |
p outp |
||
</syntaxhighlight> |
|||
</source> |
|||
'''Замечания по решению:''' странно почему во втором решении первые <u>две</u> буквы не перемешиваются?<br /> |
'''Замечания по решению:''' странно почему во втором решении первые <u>две</u> буквы не перемешиваются?<br /> |
||
Строка 242: | Строка 242: | ||
'''Возможное решение:''' |
'''Возможное решение:''' |
||
< |
<syntaxhighlight lang=ruby> |
||
string = 'Дана строка в которой записаны слова через пробел. Необходимо перемешать в каждом слове все символы в случайном порядке кроме первого и последнего.' |
string = 'Дана строка в которой записаны слова через пробел. Необходимо перемешать в каждом слове все символы в случайном порядке кроме первого и последнего.' |
||
p string.split.map{|word| |
p string.split.map{|word| |
||
Строка 250: | Строка 250: | ||
end |
end |
||
}*' ' |
}*' ' |
||
</syntaxhighlight> |
|||
</source> |
|||
'''Замечания по решению:''' тут также, как и в предыдущих решениях, не реализована работа со знаками пунктуации. Можно было бы сделать проверку последнего символа в слове, но мне кажется должно быть более элегантное решение. Жду вариантов. |
'''Замечания по решению:''' тут также, как и в предыдущих решениях, не реализована работа со знаками пунктуации. Можно было бы сделать проверку последнего символа в слове, но мне кажется должно быть более элегантное решение. Жду вариантов. |
||
Строка 257: | Строка 257: | ||
'''Возможное решение:''' |
'''Возможное решение:''' |
||
< |
<syntaxhighlight lang=ruby> |
||
a = "Дана строка в которой записано... много?? знаков пунктуации, и даже циферки есть: 123456" |
a = "Дана строка в которой записано... много?? знаков пунктуации, и даже циферки есть: 123456" |
||
p a.gsub(/\b([\p{L}])([\p{L}]+)([\p{L}])\b/) {$3.insert(0, $1 + $2.split('').shuffle.join)} |
p a.gsub(/\b([\p{L}])([\p{L}]+)([\p{L}])\b/) {$3.insert(0, $1 + $2.split('').shuffle.join)} |
||
</syntaxhighlight> |
|||
</source> |
|||
'''Замечания по решению:''' |
'''Замечания по решению:''' |
||
'''Возможное решение:''' |
'''Возможное решение:''' |
||
< |
<syntaxhighlight lang=ruby> |
||
str = "There are no facts, only interpretations" |
str = "There are no facts, only interpretations" |
||
p str.split(' ').map{ |w| w[0] + w.split('')[1..-2].shuffle.join + w[-1] } * ' ' |
p str.split(' ').map{ |w| w[0] + w.split('')[1..-2].shuffle.join + w[-1] } * ' ' |
||
</syntaxhighlight> |
|||
</source> |
|||
'''Замечания по решению:''' |
'''Замечания по решению:''' |
||
'''Возможное решение:''' |
'''Возможное решение:''' |
||
< |
<syntaxhighlight lang=ruby> |
||
p string = "Дана строка; в которой записаны. слова через пробел: Необходимо перемешать в каждом слове все символы в случайном! порядке кроме? первого слова, предложения и последнего слова предложения." |
p string = "Дана строка; в которой записаны. слова через пробел: Необходимо перемешать в каждом слове все символы в случайном! порядке кроме? первого слова, предложения и последнего слова предложения." |
||
t = string.split(/ /) |
t = string.split(/ /) |
||
Строка 287: | Строка 287: | ||
end |
end |
||
p t = t[0]+" "+t1.join(" ")+" "+t[-1] |
p t = t[0]+" "+t1.join(" ")+" "+t[-1] |
||
</syntaxhighlight> |
|||
</source> |
|||
'''Замечания по решению:''' |
'''Замечания по решению:''' |
||
Строка 294: | Строка 294: | ||
'''Возможное решение:''' |
'''Возможное решение:''' |
||
< |
<syntaxhighlight lang=ruby>a = "123f" |
||
b = a.reverse |
b = a.reverse |
||
p a == b</ |
p a == b</syntaxhighlight> |
||
'''Замечания по решению:''' |
'''Замечания по решению:''' |
||
Строка 305: | Строка 305: | ||
'''Возможное решение:''' |
'''Возможное решение:''' |
||
< |
<syntaxhighlight lang=ruby>str = "PAS11asdsadsaHSAP" |
||
a = str.split("").select{ |elem| (elem>="A")&&(elem<="Z") }.join |
a = str.split("").select{ |elem| (elem>="A")&&(elem<="Z") }.join |
||
p( a == a.reverse )</ |
p( a == a.reverse )</syntaxhighlight> |
||
'''Замечания по решению:''' |
'''Замечания по решению:''' |
||
Строка 315: | Строка 315: | ||
'''Возможное решение:''' |
'''Возможное решение:''' |
||
< |
<syntaxhighlight lang=ruby>str = "PAS11asdsadsaHSAP" |
||
a = str.scan(/[A-Z]/) |
a = str.scan(/[A-Z]/) |
||
p a == a.reverse</ |
p a == a.reverse</syntaxhighlight> |
||
'''Замечания по решению:''' |
'''Замечания по решению:''' |
||
Строка 324: | Строка 324: | ||
'''Возможное решение:''' |
'''Возможное решение:''' |
||
< |
<syntaxhighlight lang=ruby>str = "ABCDsdipmDCBA" |
||
p str.gsub(/[a-zа-я]/,"") == str.gsub(/[a-zа-я]/,"").reverse</ |
p str.gsub(/[a-zа-я]/,"") == str.gsub(/[a-zа-я]/,"").reverse</syntaxhighlight> |
||
'''Замечания по решению:''' |
'''Замечания по решению:''' |
||
Строка 331: | Строка 331: | ||
'''Возможное решение:''' |
'''Возможное решение:''' |
||
< |
<syntaxhighlight lang=ruby>a="AbbAbbFnnAjkhgA" |
||
b="" |
b="" |
||
a.each_char{|x| b<<x if ('A'..'Z').include? x} |
a.each_char{|x| b<<x if ('A'..'Z').include? x} |
||
p b.eql?(b.reverse)</ |
p b.eql?(b.reverse)</syntaxhighlight> |
||
'''Замечания по решению:''' |
'''Замечания по решению:''' |
||
Строка 342: | Строка 342: | ||
'''Возможное решение:''' |
'''Возможное решение:''' |
||
< |
<syntaxhighlight lang=ruby>str = "bla blah blah" |
||
p str.split.count{|i| i.size.even?}</ |
p str.split.count{|i| i.size.even?}</syntaxhighlight> |
||
'''Замечания по решению:''' Ruby 1.9.1 |
'''Замечания по решению:''' Ruby 1.9.1 |
||
Строка 350: | Строка 350: | ||
'''Возможное решение:''' |
'''Возможное решение:''' |
||
< |
<syntaxhighlight lang=ruby>str = "bla blah blah" |
||
a = str.split |
a = str.split |
||
p a.select{ |n| n.size%2 == 0 }.size</ |
p a.select{ |n| n.size%2 == 0 }.size</syntaxhighlight> |
||
'''Замечания по решению:''' |
'''Замечания по решению:''' |
||
Строка 359: | Строка 359: | ||
'''Возможное решение:''' |
'''Возможное решение:''' |
||
< |
<syntaxhighlight lang=ruby>stroka = "abc cbur cbo64" |
||
a = stroka.split(" ").select{ |i| i.size % 2 == 0} |
a = stroka.split(" ").select{ |i| i.size % 2 == 0} |
||
p( a.size )</ |
p( a.size )</syntaxhighlight> |
||
'''Замечания по решению:''' |
'''Замечания по решению:''' |
||
Строка 368: | Строка 368: | ||
'''Возможное решение:''' |
'''Возможное решение:''' |
||
< |
<syntaxhighlight lang=ruby>m = "a aa aa a aa".split(" ") |
||
p( m.select{ |i| i.size % 2 == 0 }.size )</ |
p( m.select{ |i| i.size % 2 == 0 }.size )</syntaxhighlight> |
||
'''Замечания по решению:''' |
'''Замечания по решению:''' |
||
Строка 376: | Строка 376: | ||
'''Возможное решение:''' |
'''Возможное решение:''' |
||
< |
<syntaxhighlight lang=ruby>string = "oguH gBa Tpu" |
||
a = string.split(' ') |
a = string.split(' ') |
||
c = a.find_all{ |elem| elem.size%2 == 0 } |
c = a.find_all{ |elem| elem.size%2 == 0 } |
||
d = c.size |
d = c.size |
||
p d</ |
p d</syntaxhighlight> |
||
'''Замечания по решению:''' |
'''Замечания по решению:''' |
||
Строка 388: | Строка 388: | ||
'''Возможное решение:''' |
'''Возможное решение:''' |
||
< |
<syntaxhighlight lang=ruby>a = "Abbabb123" |
||
b = ('A'..'Z').to_a + ('0'..'9').to_a + "!@\"$%^&*()_+-=`~{}[](),.;:|\//".split("") |
b = ('A'..'Z').to_a + ('0'..'9').to_a + "!@\"$%^&*()_+-=`~{}[](),.;:|\//".split("") |
||
p( ( a.split("") - b ).join("") == (a.split("") - b ).join("").reverse )</ |
p( ( a.split("") - b ).join("") == (a.split("") - b ).join("").reverse )</syntaxhighlight> |
||
'''Замечания по решению:''' |
'''Замечания по решению:''' |
||
Строка 397: | Строка 397: | ||
'''Возможное решение:''' |
'''Возможное решение:''' |
||
< |
<syntaxhighlight lang=ruby>str = "Abbabb123" |
||
a = str.scan /[a-z]/ |
a = str.scan /[a-z]/ |
||
p a == a.reverse</ |
p a == a.reverse</syntaxhighlight> |
||
=== Дана строка. Необходимо подсчитать количество букв "А" в этой строке. === |
=== Дана строка. Необходимо подсчитать количество букв "А" в этой строке. === |
||
Строка 405: | Строка 405: | ||
'''Возможное решение:''' |
'''Возможное решение:''' |
||
< |
<syntaxhighlight lang=ruby>cTpoka = "тестовая строка" |
||
p( cTpoka.split("").select{ |i| i=="А" || i=="а" }.size )</ |
p( cTpoka.split("").select{ |i| i=="А" || i=="а" }.size )</syntaxhighlight> |
||
'''Замечания по решению:''' |
'''Замечания по решению:''' |
||
Строка 413: | Строка 413: | ||
'''Возможное решение:''' |
'''Возможное решение:''' |
||
< |
<syntaxhighlight lang=ruby>str = "Abbabb123" |
||
p str.scan(/[Aa]/).size</ |
p str.scan(/[Aa]/).size</syntaxhighlight> |
||
'''Возможное решение:''' |
'''Возможное решение:''' |
||
< |
<syntaxhighlight lang=ruby>str = "Abbabb123" |
||
p str.count 'Aa'</ |
p str.count 'Aa'</syntaxhighlight> |
||
'''Замечания по решению:''' |
'''Замечания по решению:''' |
||
Строка 428: | Строка 428: | ||
'''Возможное решение:''' |
'''Возможное решение:''' |
||
< |
<syntaxhighlight lang=ruby>m = "pa3 gBa Tpu" |
||
p m.split(" ").size</ |
p m.split(" ").size</syntaxhighlight> |
||
'''Замечания по решению:''' |
'''Замечания по решению:''' |
||
Строка 440: | Строка 440: | ||
'''Возможное решение:''' |
'''Возможное решение:''' |
||
< |
<syntaxhighlight lang=ruby>cTpoka = "поезд ехал быстро" |
||
p cTpoka.split.size</ |
p cTpoka.split.size</syntaxhighlight> |
||
'''Замечания по решению:''' |
'''Замечания по решению:''' |
||
'''Возможное решение:''' |
'''Возможное решение:''' |
||
< |
<syntaxhighlight lang=ruby> |
||
's sdk dkd'.count(' ').succ |
's sdk dkd'.count(' ').succ |
||
's sdk dkd'.scan(' ').size + 1 |
's sdk dkd'.scan(' ').size + 1 |
||
ну и там можно долго продолжать |
ну и там можно долго продолжать |
||
</syntaxhighlight> |
|||
</source> |
|||
'''Замечания по решению:''' |
'''Замечания по решению:''' |
||
Строка 457: | Строка 457: | ||
'''Возможное решение:''' |
'''Возможное решение:''' |
||
< |
<syntaxhighlight lang=ruby>s = "абв1где25жзи" |
||
mac = s.split("") |
mac = s.split("") |
||
a,b = mac.partition{ |e| ("0".."9").include?(e) } |
a,b = mac.partition{ |e| ("0".."9").include?(e) } |
||
s_1 = a+b |
s_1 = a+b |
||
puts( s_1.to_s )</ |
puts( s_1.to_s )</syntaxhighlight> |
||
'''Замечания по решению:''' зачем сначала разбивать массив в 2 переменные, а потом их клеить? |
'''Замечания по решению:''' зачем сначала разбивать массив в 2 переменные, а потом их клеить? |
||
Строка 470: | Строка 470: | ||
'''Возможное решение:''' |
'''Возможное решение:''' |
||
< |
<syntaxhighlight lang=ruby>cTpoka = "12а3буква" |
||
puts cTpoka.split('').partition{ |elem| (elem >= "0")&&(elem <= "9") }.flatten.join("")</ |
puts cTpoka.split('').partition{ |elem| (elem >= "0")&&(elem <= "9") }.flatten.join("")</syntaxhighlight> |
||
'''Замечания по решению:''' |
'''Замечания по решению:''' |
||
Строка 477: | Строка 477: | ||
'''Возможное решение:''' |
'''Возможное решение:''' |
||
< |
<syntaxhighlight lang=ruby>s = "абв1где25жзи" |
||
print s.split('').sort.join</ |
print s.split('').sort.join</syntaxhighlight> |
||
'''Замечания по решению:''' |
'''Замечания по решению:''' |
||
Строка 485: | Строка 485: | ||
'''Возможное решение:''' |
'''Возможное решение:''' |
||
< |
<syntaxhighlight lang=ruby>str="fghfg567fhf35fghf!*6111фыва8" |
||
print str.split("").partition{|e| e=~/\d/}.flatten.join</ |
print str.split("").partition{|e| e=~/\d/}.flatten.join</syntaxhighlight> |
||
'''Замечания по решению:''' |
'''Замечания по решению:''' |
||
Строка 494: | Строка 494: | ||
'''Возможное решение:''' |
'''Возможное решение:''' |
||
< |
<syntaxhighlight lang=ruby>m = "pa3 gBa Tpu" |
||
m.split(" ").sort_by{ rand }.join(" ")</ |
m.split(" ").sort_by{ rand }.join(" ")</syntaxhighlight> |
||
'''Замечания по решению:''' |
'''Замечания по решению:''' |
||
Строка 501: | Строка 501: | ||
'''Возможное решение:''' |
'''Возможное решение:''' |
||
< |
<syntaxhighlight lang=ruby>cTpoka = "МИР ТРУД МАЙ" |
||
puts cTpoka.split.sort_by{ rand }.join(" ")</ |
puts cTpoka.split.sort_by{ rand }.join(" ")</syntaxhighlight> |
||
'''Замечания по решению:''' |
'''Замечания по решению:''' |
||
'''Возможное решение:''' |
'''Возможное решение:''' |
||
< |
<syntaxhighlight lang=ruby>a = "all your base are belong to us" |
||
p a.split.shuffle.join(" ")</ |
p a.split.shuffle.join(" ")</syntaxhighlight> |
||
'''Замечания по решению:''' |
'''Замечания по решению:''' |
||
Строка 516: | Строка 516: | ||
'''Возможное решение:''' |
'''Возможное решение:''' |
||
< |
<syntaxhighlight lang=ruby>s="aa daaaa qaaa" |
||
p s.split(/ /).sort_by{|i| i.size}.join(" ")</ |
p s.split(/ /).sort_by{|i| i.size}.join(" ")</syntaxhighlight> |
||
'''Замечания по решению:''' |
'''Замечания по решению:''' |
||
Строка 525: | Строка 525: | ||
'''Возможное решение:''' |
'''Возможное решение:''' |
||
< |
<syntaxhighlight lang=ruby>m = "i got co" |
||
p m.split.sort_by(&:size).join(' ')</ |
p m.split.sort_by(&:size).join(' ')</syntaxhighlight> |
||
'''Замечания по решению:''' |
'''Замечания по решению:''' |
||
Строка 535: | Строка 535: | ||
'''Возможное решение:''' |
'''Возможное решение:''' |
||
< |
<syntaxhighlight lang=ruby>str = "slo va" |
||
a = str.split(" ").sort_by{ |i| i.size } |
a = str.split(" ").sort_by{ |i| i.size } |
||
p( a.to_s )</ |
p( a.to_s )</syntaxhighlight> |
||
'''Замечания по решению:''' |
'''Замечания по решению:''' |
||
Строка 545: | Строка 545: | ||
'''Возможное решение:''' |
'''Возможное решение:''' |
||
< |
<syntaxhighlight lang=ruby>m = "Tpu gBa pa3" |
||
m.split(" ").sort_by{ |str| str.size }</ |
m.split(" ").sort_by{ |str| str.size }</syntaxhighlight> |
||
'''Замечания по решению:''' |
'''Замечания по решению:''' |
||
Строка 554: | Строка 554: | ||
'''Возможное решение:''' |
'''Возможное решение:''' |
||
< |
<syntaxhighlight lang=ruby>a = 123415 |
||
b = a.to_s( 10 ).split("") |
b = a.to_s( 10 ).split("") |
||
c = b.uniq |
c = b.uniq |
||
p c.size</ |
p c.size</syntaxhighlight> |
||
'''Замечания по решению:''' |
'''Замечания по решению:''' |
||
Строка 566: | Строка 566: | ||
'''Возможное решение:''' |
'''Возможное решение:''' |
||
< |
<syntaxhighlight lang=ruby>a = 1234 |
||
p a.to_s(10).split('').uniq.size</ |
p a.to_s(10).split('').uniq.size</syntaxhighlight> |
||
'''Замечания по решению:''' |
'''Замечания по решению:''' |
||
Строка 576: | Строка 576: | ||
'''Возможное решение:''' |
'''Возможное решение:''' |
||
< |
<syntaxhighlight lang=ruby>x = 12344721 |
||
p( x.to_s.split('').uniq.size )</ |
p( x.to_s.split('').uniq.size )</syntaxhighlight> |
||
'''Замечания по решению:''' |
'''Замечания по решению:''' |
||
Строка 588: | Строка 588: | ||
'''Возможное решение:''' |
'''Возможное решение:''' |
||
< |
<syntaxhighlight lang=ruby>s = ["синий","белый","красный"] |
||
puts s.sort.sort_by{ |i| i.size }</ |
puts s.sort.sort_by{ |i| i.size }</syntaxhighlight> |
||
'''Замечания по решению:''' |
'''Замечания по решению:''' |
||
Строка 600: | Строка 600: | ||
'''Возможное решение:''' |
'''Возможное решение:''' |
||
< |
<syntaxhighlight lang=ruby>a = "i/input/jnd/file.ext" |
||
puts( a.split("/")[-1].split('.')[0] )</ |
puts( a.split("/")[-1].split('.')[0] )</syntaxhighlight> |
||
'''Замечания по решению:''' |
'''Замечания по решению:''' |
||
Строка 607: | Строка 607: | ||
'''Возможное решение:''' |
'''Возможное решение:''' |
||
< |
<syntaxhighlight lang=ruby>a = "i/input/jnd/file.ext" |
||
puts a.split(/\W/)[-2]</ |
puts a.split(/\W/)[-2]</syntaxhighlight> |
||
'''Замечания по решению:''' Ошибка, если в имени файла присутствует точка. |
'''Замечания по решению:''' Ошибка, если в имени файла присутствует точка. |
||
Строка 614: | Строка 614: | ||
'''Возможное решение:''' |
'''Возможное решение:''' |
||
< |
<syntaxhighlight lang=ruby> |
||
str='C:\\Program.Files\\Admin 1\\file.name.txt' |
str='C:\\Program.Files\\Admin 1\\file.name.txt' |
||
a=str.scan(/(.+)\./)[0].join |
a=str.scan(/(.+)\./)[0].join |
||
b=str.scan(/.+\\/).join |
b=str.scan(/.+\\/).join |
||
p a.sub(b,"") |
p a.sub(b,"") |
||
</syntaxhighlight> |
|||
</source> |
|||
'''Замечания по решению:''' |
'''Замечания по решению:''' |
||
Строка 625: | Строка 625: | ||
'''Возможное решение:''' |
'''Возможное решение:''' |
||
< |
<syntaxhighlight lang=ruby> |
||
s = 'c:\\some path\\this is a file.name.ext' |
s = 'c:\\some path\\this is a file.name.ext' |
||
s.match(/.*\\(.*)\./) |
s.match(/.*\\(.*)\./) |
||
puts $1 |
puts $1 |
||
</syntaxhighlight> |
|||
</source> |
|||
'''Замечания по решению:''' |
'''Замечания по решению:''' |
||
Строка 635: | Строка 635: | ||
'''Возможное решение:''' |
'''Возможное решение:''' |
||
< |
<syntaxhighlight lang=ruby> |
||
str = 'C:\\Program.Files\\Admin 1\\file.name.txt' |
str = 'C:\\Program.Files\\Admin 1\\file.name.txt' |
||
p str.split('\\').last.sub(/\.\w+$/,'') |
p str.split('\\').last.sub(/\.\w+$/,'') |
||
</syntaxhighlight> |
|||
</source> |
|||
'''Замечания по решению:''' |
'''Замечания по решению:''' |
||
Строка 644: | Строка 644: | ||
'''Возможное решение:''' |
'''Возможное решение:''' |
||
< |
<syntaxhighlight lang=ruby> |
||
str = 'C://Program.Files/Admin 1/file.name.txt' |
str = 'C://Program.Files/Admin 1/file.name.txt' |
||
p File.basename(str,'.txt') |
p File.basename(str,'.txt') |
||
</syntaxhighlight> |
|||
</source> |
|||
'''Замечания по решению:''' |
'''Замечания по решению:''' |
||
Строка 654: | Строка 654: | ||
#Сделано в английском варианте, потому что с кодировкой проблемы. |
#Сделано в английском варианте, потому что с кодировкой проблемы. |
||
''' Возможное решение ''' |
''' Возможное решение ''' |
||
< |
<syntaxhighlight lang=ruby> |
||
puts <<END |
puts <<END |
||
8. Найти в тексте даты формата «день.месяц.год». |
8. Найти в тексте даты формата «день.месяц.год». |
||
Строка 665: | Строка 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]).(\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(" ") |
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> |
|||
</source> |
|||
{{BookCat | filing = deep}} |
{{BookCat | filing = deep}} |
Версия от 15:55, 16 апреля 2020
Строки
Дана строка в которой числа перечислены через пробел. Необходимо найти максимальное из этих чисел.
Возможное решение:
s = "1 2 3 4 5 6 7 8"
p s.split.map{ |i| i.to_i }.max
Замечания по решению:
Возможное решение:
s = "1 2 3 4 5 6 7 8"
p s.split.map(&:to_i).max
Замечания по решению: Ruby 1.9
Возможное решение:
s = "1 2 3 4 5 6 7 8"
p s.split.collect(&:to_i).max
Замечания по решению:
Возможное решение:
s = "1 2 3 4 5 6 7 8"
puts s.split.max
Замечания по решению:
Дана строка. Необходимо найти общее количество русских символов.
Возможное решение:
str = "ывfgфеф"
p( str.split("").select{ |n| ( n>="а" || n>="А" )&&( n<= "я" || n<="Я" ) }.size )
Замечания по решению: Нижеследующее проще.
Возможное решение:
str = "ывfgфеф"
p str.scan(/[А-я]/).size
Замечания по решению:
Возможное решение:
str = "ывЛgфmю"
p str.count "А-я"
Замечания по решению: Ruby 1.9.1
Дана строка, состоящая из символов латиницы. Необходимо проверить, упорядочены ли строчные символы этой строки по возрастанию.
Возможное решение:
str = "lol"
a = str.split("")
b = a.select{ |i| ("a".."z").include?(i) }
p( b == b.sort )
Замечания по решению:
Возможное решение:
cTpoka = "acBdeFg"
bb = ("A".."Z").to_a
sbb = cTpoka.split("") - bb
p( sbb == sbb.sort )
Замечания по решению:
Возможное решение:
str = "acBdeFg"
a=str.scan(/[a-z]/)
p a==a.sort
Замечания по решению:Решение правильно частично. Правильное решение
str = "acBdeFg"
a=str.scan(/\w/)
p a==a.sort
Замечания по решению: Нифига подобного. Решение правильное. "\w" кроме строчных латинских букв еще включает прописные, а они отбрасываются по условию.
Возможное решение:
a = "dfbxvsferwr"
a.split(//) == a.split(//).sort
Замечания по решению:
Возможное решение:
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
Замечания по решению:
Дана строка в которой слова записаны через пробел. Необходимо перемешать все слова этой строки в случайном порядке.
Возможное решение:
str="Point Line Triangle Square Pentagon"
puts str.split(" ").sort_by{ rand }.join(" ")
Замечания по решению:
Возможное решение:
str="Point Line Triangle Square Pentagon"
puts str.split.shuffle.join(' ')
Замечания по решению:
Возможное решение:
str="Point Line Triangle Square Pentagon"
puts str.split.shuffle*' '
Замечания по решению:
Дана строка. Необходимо проверить, является ли она палиндромом.
Возможное решение:
cTpoka = "бред"
p( cTpoka.reverse.eql?( cTpoka ) )
Замечания по решению:
Возможное решение:
a = "geg"
p( a.reverse == a )
Замечания по решению: я не сторонник == по мне лучше a.eql? a.reverse или a.reverse.eql? a Возможное решение:
str="Are we not drawn onward, we few, drawn onward to new era?"
str2 = str.downcase.scan(/\w+/).join
p str2.reverse == str2
Замечания по решению:
Работает только для латиницы.
Возможное решение:
str="а роза упала на лапу азора"
p str.delete(" ").reverse == str.delete(" ")
Замечания по решению:
Работает для палиндромов, не содержащих символы в разных регистрах и знаки препинания.
Дана строка. Необходимо перемешать все символы строки в случайном порядке.
Возможное решение:
a = "privet poka"
p a.split("").sort_by{rand}.to_s
Замечания по решению:
Возможное решение:
s = "134saddfs a123"
puts s.split("").sort_by{rand}.join
Замечания по решению:
Возможное решение:
cTpoka="всякий бред"
maccuB=cTpoka.split("")
maccuB=maccuB.sort_by{rand}
puts maccuB.to_s
Замечания по решению:
Возможное решение:
p "Realistic schedules are the key to creating good software".split(//).shuffle.join
Дана строка в которой записаны слова через пробел. Необходимо перемешать в каждом слове все символы в случайном порядке кроме первого и последнего.
Возможное решение:
a = "start checking"
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(" ")
Замечания по решению: Если слово состоит из одной буквы (например, артикль 'a'), то на выходе получится 'aa' из-за такого присвоения: t[0..0] + c + t[-1..-1]. Здесь будет c = , а t[0..0] и t[-1..-1] дадут одинаковые результаты.
Возможное решение:
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(" ")
Возможное решение:
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
Замечания по решению: странно почему во втором решении первые две буквы не перемешиваются?
Кроме того код работает только с англ текстом. И кто вас учил всё в одну строку лепить?
Возможное решение:
string = 'Дана строка в которой записаны слова через пробел. Необходимо перемешать в каждом слове все символы в случайном порядке кроме первого и последнего.'
p string.split.map{|word|
if word.size > 2
word[0] + word[1...-1].split('').shuffle.join + word[-1]
else word
end
}*' '
Замечания по решению: тут также, как и в предыдущих решениях, не реализована работа со знаками пунктуации. Можно было бы сделать проверку последнего символа в слове, но мне кажется должно быть более элегантное решение. Жду вариантов.
BlindMan (обсуждение) 09:03, 30 сентября 2012 (UTC)
Возможное решение:
a = "Дана строка в которой записано... много?? знаков пунктуации, и даже циферки есть: 123456"
p a.gsub(/\b([\p{L}])([\p{L}]+)([\p{L}])\b/) {$3.insert(0, $1 + $2.split('').shuffle.join)}
Замечания по решению:
Возможное решение:
str = "There are no facts, only interpretations"
p str.split(' ').map{ |w| w[0] + w.split('')[1..-2].shuffle.join + w[-1] } * ' '
Замечания по решению:
Возможное решение:
p string = "Дана строка; в которой записаны. слова через пробел: Необходимо перемешать в каждом слове все символы в случайном! порядке кроме? первого слова, предложения и последнего слова предложения."
t = string.split(/ /)
t1 = t[1..-2].map! do |j|
if (j.size > 2)
if [".", ",", ";", ":", "!", "?"].include?(j[-1])
j[0..-2].split('').shuffle.join + j[-1]
else
j.split('').shuffle.join
end
else
j
end
end
p t = t[0]+" "+t1.join(" ")+" "+t[-1]
Замечания по решению:
Дана строка, состоящая из символов латиницы. Необходимо проверить, образуют ли прописные символы этой строки палиндром.
Возможное решение:
a = "123f"
b = a.reverse
p a == b
Замечания по решению: Решение неверное. Не учтено, что палиндром должны образовать прописные символы.
Возможное решение:
str = "PAS11asdsadsaHSAP"
a = str.split("").select{ |elem| (elem>="A")&&(elem<="Z") }.join
p( a == a.reverse )
Замечания по решению: Решение слишком громоздкое. Нет нужды преобразовывать строку в массив, а потом назад.
Возможное решение:
str = "PAS11asdsadsaHSAP"
a = str.scan(/[A-Z]/)
p a == a.reverse
Замечания по решению:
Возможное решение:
str = "ABCDsdipmDCBA"
p str.gsub(/[a-zа-я]/,"") == str.gsub(/[a-zа-я]/,"").reverse
Замечания по решению:
Возможное решение:
a="AbbAbbFnnAjkhgA"
b=""
a.each_char{|x| b<<x if ('A'..'Z').include? x}
p b.eql?(b.reverse)
Замечания по решению:
Дана строка в которой записаны слова через пробел. Необходимо посчитать количество слов с четным количеством символов.
Возможное решение:
str = "bla blah blah"
p str.split.count{|i| i.size.even?}
Замечания по решению: Ruby 1.9.1
Возможное решение:
str = "bla blah blah"
a = str.split
p a.select{ |n| n.size%2 == 0 }.size
Замечания по решению:
Возможное решение:
stroka = "abc cbur cbo64"
a = stroka.split(" ").select{ |i| i.size % 2 == 0}
p( a.size )
Замечания по решению:
Возможное решение:
m = "a aa aa a aa".split(" ")
p( m.select{ |i| i.size % 2 == 0 }.size )
Замечания по решению:
Возможное решение:
string = "oguH gBa Tpu"
a = string.split(' ')
c = a.find_all{ |elem| elem.size%2 == 0 }
d = c.size
p d
Замечания по решению:
Дана строка. Необходимо проверить образуют ли строчные символы латиницы палиндром.
Возможное решение:
a = "Abbabb123"
b = ('A'..'Z').to_a + ('0'..'9').to_a + "!@\"$%^&*()_+-=`~{}[](),.;:|\//".split("")
p( ( a.split("") - b ).join("") == (a.split("") - b ).join("").reverse )
Замечания по решению: Просто жуть какая-то.
Возможное решение:
str = "Abbabb123"
a = str.scan /[a-z]/
p a == a.reverse
Дана строка. Необходимо подсчитать количество букв "А" в этой строке.
Возможное решение:
cTpoka = "тестовая строка"
p( cTpoka.split("").select{ |i| i=="А" || i=="а" }.size )
Замечания по решению: Длинно.
Возможное решение:
str = "Abbabb123"
p str.scan(/[Aa]/).size
Возможное решение:
str = "Abbabb123"
p str.count 'Aa'
Замечания по решению: Ruby 1.9.1
Дана строка в которой записаны слова через пробел. Необходимо посчитать количество слов.
Возможное решение:
m = "pa3 gBa Tpu"
p m.split(" ").size
Замечания по решению:
народ, зачем эти лишние скобки кавычки и пробел
split(" "), split по умолчанию разбивает по пробелу
Возможное решение:
cTpoka = "поезд ехал быстро"
p cTpoka.split.size
Замечания по решению:
Возможное решение:
's sdk dkd'.count(' ').succ
's sdk dkd'.scan(' ').size + 1
ну и там можно долго продолжать
Замечания по решению:
Дана строка в которой содержатся цифры и буквы. Необходимо расположить все цифры в начале строки, а буквы -- в конце.
Возможное решение:
s = "абв1где25жзи"
mac = s.split("")
a,b = mac.partition{ |e| ("0".."9").include?(e) }
s_1 = a+b
puts( s_1.to_s )
Замечания по решению: зачем сначала разбивать массив в 2 переменные, а потом их клеить?
.to_s, как можно было заметить, не собирает массив в одну строку, кроме того puts уже содержит в себе .to_s
Возможное решение:
cTpoka = "12а3буква"
puts cTpoka.split('').partition{ |elem| (elem >= "0")&&(elem <= "9") }.flatten.join("")
Замечания по решению:
Возможное решение:
s = "абв1где25жзи"
print s.split('').sort.join
Замечания по решению:
Возможное решение:
str="fghfg567fhf35fghf!*6111фыва8"
print str.split("").partition{|e| e=~/\d/}.flatten.join
Замечания по решению:
Дана строка в которой записаны слова через пробел. Необходимо перемешать все слова в случайном порядке (спонсор задачи Мастер Йода).
Возможное решение:
m = "pa3 gBa Tpu"
m.split(" ").sort_by{ rand }.join(" ")
Замечания по решению:
Возможное решение:
cTpoka = "МИР ТРУД МАЙ"
puts cTpoka.split.sort_by{ rand }.join(" ")
Замечания по решению:
Возможное решение:
a = "all your base are belong to us"
p a.split.shuffle.join(" ")
Замечания по решению:
Дана строка в которой записаны слова через пробел. Необходимо упорядочить слова по количеству букв в каждом слове.
Возможное решение:
s="aa daaaa qaaa"
p s.split(/ /).sort_by{|i| i.size}.join(" ")
Замечания по решению:
Возможное решение:
m = "i got co"
p m.split.sort_by(&:size).join(' ')
Замечания по решению: Ruby 1.9.1
Возможное решение:
str = "slo va"
a = str.split(" ").sort_by{ |i| i.size }
p( a.to_s )
Замечания по решению:
Возможное решение:
m = "Tpu gBa pa3"
m.split(" ").sort_by{ |str| str.size }
Замечания по решению:
Дано натуральное число. Необходимо найти количество различных цифр в его десятичной записи.
Возможное решение:
a = 123415
b = a.to_s( 10 ).split("")
c = b.uniq
p c.size
Замечания по решению:
Возможное решение:
a = 1234
p a.to_s(10).split('').uniq.size
Замечания по решению:
Возможное решение:
x = 12344721
p( x.to_s.split('').uniq.size )
Замечания по решению:
Дан массив в котором находятся строки "белый", "синий" и "красный" в случайном порядке. Необходимо упорядочить массив так, чтобы получился российский флаг.
Возможное решение:
s = ["синий","белый","красный"]
puts s.sort.sort_by{ |i| i.size }
Замечания по решению:
Дана строка в которой записан путь к файлу. Необходимо найти имя файла без расширения.
Возможное решение:
a = "i/input/jnd/file.ext"
puts( a.split("/")[-1].split('.')[0] )
Замечания по решению:
Возможное решение:
a = "i/input/jnd/file.ext"
puts a.split(/\W/)[-2]
Замечания по решению: Ошибка, если в имени файла присутствует точка.
Возможное решение:
str='C:\\Program.Files\\Admin 1\\file.name.txt'
a=str.scan(/(.+)\./)[0].join
b=str.scan(/.+\\/).join
p a.sub(b,"")
Замечания по решению:
Возможное решение:
s = 'c:\\some path\\this is a file.name.ext'
s.match(/.*\\(.*)\./)
puts $1
Замечания по решению:
Возможное решение:
str = 'C:\\Program.Files\\Admin 1\\file.name.txt'
p str.split('\\').last.sub(/\.\w+$/,'')
Замечания по решению:
Возможное решение:
str = 'C://Program.Files/Admin 1/file.name.txt'
p File.basename(str,'.txt')
Замечания по решению:
Найти в тексте даты формата «день.месяц.год».
- Сделано в английском варианте, потому что с кодировкой проблемы.
Возможное решение
puts <<END
8. Найти в тексте даты формата «день.месяц.год».
Найдите дату, где день ограничен числом 31, а месяц 12. Год ограничивайте четырёхзначными числами.
Распознавайте месяц в виде «31.марта.2001».
END
str="Five miles out 03.06.1983 Just hold your heading 14.11.1012 true Got to get your finest out 20.January.2012"
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(" ")