Ruby/Практикум/Массивы: различия между версиями
Содержимое удалено Содержимое добавлено
DannyS712 (обсуждение | вклад) м <source> -> <syntaxhighlight> (phab:T237267) |
|||
Строка 5:
'''Возможное решение:'''
<
p a.reverse.index(a.max)</
'''Замечания по решению:'''
Строка 12:
'''Возможное решение:'''
<
n = a.max
s = a.rindex(n)
m = a.size
k = m - s - 1</
'''Замечания по решению:'''
Строка 22:
'''Возможное решение:'''
<
p m[m.rindex(m.max)+1..-1].size</
'''Замечания по решению:'''
Строка 31:
'''Возможное решение:'''
<
p a.index(a.min)</
'''Замечания по решению:'''
Строка 40:
'''Возможное решение:'''
<
n = 3
p a[n] == a.max</
'''Замечания по решению:'''
Строка 50:
'''Возможное решение:'''
<
p (0...maccuB.size).sort_by{ |i| maccuB[i] }.reverse</
'''Замечания по решению:'''
Строка 62:
'''Возможное решение:'''
<
n = 2
p a[n] == a.min</
'''Замечания по решению:'''
Строка 72:
'''Возможное решение:'''
<
p a.rotate(3)
</syntaxhighlight>
'''Замечания по решению:'''
Строка 81:
'''Возможное решение:'''
<
p a[3...a.size] + a[0..2]</
'''Замечания по решению:'''
Строка 88:
'''Возможное решение:'''
<
b = a.push(a.shift)
c = b.push(b.shift)
d = c.push(c.shift)
p d</
'''Замечания по решению:'''
Строка 98:
'''Возможное решение:'''
<
3.times{ a<<a.shift }
p a</
'''Замечания по решению:'''
Строка 108:
'''Возможное решение:'''
<
p a.rotate(-2)
</syntaxhighlight>
'''Замечания по решению:'''
Строка 117:
'''Возможное решение:'''
<
p( m[-2..-2] + m[-1..-1] + m[0..-3] )</
'''Замечания по решению:'''
Строка 124:
'''Возможное решение:'''
<
2.times{arr.unshift(arr.pop)}
p arr</
'''Замечания по решению:'''
Строка 134:
'''Возможное решение:'''
<
a = m.min
m1 = m-[m.min]
b = m1.min
p(m.index(a), m.index(b))</
'''Замечания по решению:'''
Строка 147:
'''Возможное решение:'''
<
p a.sort.slice(0...2).map { |item| a.index(item) }</
'''Замечания по решению:'''
Строка 157:
'''Возможное решение:'''
<
m = [arr.index(arr.min)]
arr1 = arr
arr1[m[0]] = arr1.max+1
p m << arr1.index(arr1.min)</
'''Замечания по решению:'''
Строка 171:
'''Возможное решение:'''
<
p Array(0...a.size).sort_by{|i|a[i]}.first 2</
'''Замечания по решению:'''
Строка 179:
'''Возможное решение:'''
<
min1 = a.min
min2 = a.min_by {|i| !min1 }
p a.index(min1), a.index(min2)</
Строка 194:
'''Возможное решение:'''
<
a = m.rindex( m.min )
p m[0...a]</
'''Замечания по решению:'''
Строка 207:
'''Возможное решение:'''
<
m = [2, 3]
p (a&m).size</
'''Замечания по решению:'''
Строка 217:
'''Возможное решение:'''
<
d = (m.sort[0] - m.sort[-1]) - m.sort[1]
p d</
'''Замечания по решению:'''
Строка 230:
'''Возможное решение:'''
<
'''Замечания по решению:'''
'''Возможное решение:'''
<
b = [ a - [a[1]], a - [a[2]] ].sort
p b[1]
</syntaxhighlight>
'''Замечания по решению:'''
Строка 246:
'''Возможное решение:'''
<
p(
if m[0]== m[-1]
Строка 254:
else
m[0]
end)</
'''Замечания по решению:'''
Строка 261:
'''Возможное решение:'''
<
arr = [1,1,1,1,-12,1,1,1]
x = arr.uniq
Строка 269:
else p x[1]
end
</syntaxhighlight>
'''Замечания по решению:'''
Строка 275:
'''Возможное решение:'''
<
a = [1,1,1,1,-12,1,1,1]
p ( a.count{|x| x == a.uniq[0] } ) == 1 ? a.uniq[0] : a.uniq[1]
</syntaxhighlight>
'''Замечания по решению:'''
'''Возможное решение:'''
<
a = [1,1,1,-9,1,1,1,1]
p a.select { |num| a.count(num) == 1 }
</syntaxhighlight>
'''Замечания по решению:'''
'''Возможное решение:'''
<
a = [1,1,1,-9,1,1,1,1]
a.sort!
p (a[0] * (a[1] - a[0]) + a[-1] * (a[-1] - a[-2])) / (a[1] - a[0] - a[-1] + a[-2])
</syntaxhighlight>
=== Дан целочисленный массив. Необходимо переставить в обратном порядке элементы массива, расположенные между его минимальным и максимальным элементами. ===
Строка 300:
'''Возможное решение:'''
<
b = maccuB.min
c = maccuB.max
Строка 306:
d = maccuB.index( c )
maccuB[a+1..d-1] = maccuB[a+1..d-1].reverse
p maccuB</
'''Замечания по решению:'''
Строка 314:
'''Возможное решение:'''
<
p [m.min] + (m - ([m.min]+[m.max])).reverse + [m.max]</
'''Замечания по решению:'''Совсем плохой код, какие бы массивы ни были, он вырывает из них мин и макс элементы(где бы они ни были), потом всё оставшееся(что надо и не надо) переворачивает, а затем к концам прилепляет мин и макс и говорит что так и было
Строка 323:
'''Возможное решение:'''
<
mn, mx = arr.index(arr.min), arr.index(arr.max)
mn,mx = mx,mn if mn > mx
arr [mn+1...mx]=arr[mn+1...mx].reverse
p arr</
'''Замечания по решению:'''
Строка 337:
'''Возможное решение:'''
<
b=[a.index(a.min),a.index(a.max)].sort
p a[0..b[0]]+a[b[0]+1...b[1]].reverse+a[b[1]..a.size]</
'''Замечания по решению:'''
Строка 347:
'''Возможное решение:'''
<
p arr
max = arr.rindex(arr.max)
Строка 353:
left = min < max ? min : max
right = max > min ? max : min
p arr[0..left] + arr[left+1...right].reverse + arr[right..arr.size]</
'''Замечания по решению:'''
Строка 361:
'''Возможное решение:'''
<
p (m[m.index(m.min)..-1]+m[0..m.index(m.min)-1])</
'''Замечания по решению:'''
Строка 371:
'''Возможное решение:'''
<
(0...arr.index(arr.min)).each{arr<<arr.shift}
p arr</
'''Замечания по решению:'''
Строка 380:
'''Возможное решение:'''
<
a.index(a.min).times{a<<a.shift}
p a</
'''Замечания по решению:'''
Строка 389:
'''Возможное решение:'''
<
puts a.push a.slice! 0...a.index(a.min)</
'''Замечания по решению:'''
Строка 398:
'''Возможное решение:'''
<
a,b=1,3
p m[a..b].size</
'''Замечания по решению:'''
Строка 409:
'''Возможное решение:'''
<
i=[i1,i2].sort
p a[i[0]+1...i[1]].size</
'''Замечания по решению:'''
Строка 419:
'''Возможное решение:'''
<
c = m[i] < m[i-1]
d = m[i] < m[i+1]
c == d</
'''Замечания по решению:''' если c и d = false, то их сравнение c == d выдаст true. Нужно писать c && d, как в примере ниже
Строка 429:
'''Возможное решение:'''
<
b=maccuB[n+1]
c=maccuB[n-1]
(a<b)&&(a<c)</
'''Замечания по решению:'''
Строка 440:
'''Возможное решение:'''
<
p array[index-1..index+1].min==array[index]</
'''Замечания по решению:'''
Строка 449:
'''Возможное решение:'''
<
a = m.index( m.max )
b = m[0..a]
c = m[a+1..-1]
g = c.index( c.max ) + b.size</
'''Замечания по решению:'''
Строка 464:
'''Возможное решение:'''
<
a = [1,2,3,12,3,0,12,7,4,7,12,9,6]
b = a[(a.index(a.max) + 1)..-1]
p b[0...b.index(b.max)]
</syntaxhighlight>
'''Замечания по решению:'''
Строка 476:
'''Возможное решение:'''
<
m = [1,2,3,12,3,0,12,7,4,7,12,9,6]
fmin = m.index(m.max)
smin = (m[fmin+1..-1].index(m[fmin+1..-1].max)) + (fmin + 1)
p m[fmin+1 ... smin]
</syntaxhighlight>
'''Замечания по решению:'''
Строка 489:
'''Возможное решение:'''
<
a = m.max
b = m.min
Строка 496:
m[ d ] = b
m[ c ] = a
p m</
'''Замечания по решению:'''
Строка 505:
'''Возможное решение:'''
<
b=m.index(m.min)
a=m.max
m[c]=m[b]
m[b]=a</
'''Замечания по решению:'''
Строка 518:
'''Возможное решение:'''
<
imin, imax = a.index(a.min), a.index(a.max)
a[imin], a[imax] = a.max, a.min
p a</
'''Замечания по решению:'''
Строка 529:
'''Возможное решение:'''
<
maccuB2 = [3,4,5]
p( (maccuB1-maccuB2).size + (maccuB2-maccuB1).size )</
'''Замечания по решению:'''
Строка 541:
'''Возможное решение:'''
<
b = [ 2, 8, -6, 4, 2, -1 ]
p ((a+b)-(a&b)).uniq.size
</syntaxhighlight>
'''Возможное решение:'''
<
p (a | b).size
</syntaxhighlight>
[[Участник:BlindMan|BlindMan]] ([[Обсуждение участника:BlindMan|обсуждение]]) 20:34, 25 сентября 2012 (UTC)
'''Возможное решение:'''
<
b = [3,4,5,6,7,3]
puts (a|b).size-(a&b).size
</syntaxhighlight>
=== Дан целочисленный массив. Необходимо найти элементы, расположенные перед первым минимальным. ===
Строка 565:
'''Возможное решение:'''
<
a = m.index(m.min)
m[0...a]</
'''Замечания по решению:'''
Строка 578:
'''Возможное решение:'''
<
p [ m[-1] ] + m[0..-2]</
'''Замечания по решению:'''
Строка 588:
'''Возможное решение:'''
<
a.unshift(a.pop)</
'''Замечания по решению:'''
Строка 598:
'''Возможное решение:'''
<
zer=maccuB.size-1
na=maccuB[1..zer]
dub=maccuB[0]
na.push(dub)</
'''Замечания по решению:'''сдвиг влево, к тому же не оптимизировано
Строка 610:
'''Возможное решение:'''
<
(a.min..a.max).to_a - a</
'''Замечания по решению:'''
Строка 617:
'''Чуточку проще:'''
<
(a[0]..a[-1]).to_a - a
</syntaxhighlight>
[[Участник:BlindMan|BlindMan]] ([[Обсуждение участника:BlindMan|обсуждение]]) 20:50, 25 сентября 2012 (UTC)
Строка 630:
'''Возможное решение:'''
<
m[m.index( m.max )+1 .. -1]</
'''Замечания по решению:'''
Строка 640:
'''Возможное решение:'''
<
x = maccuB.index( maccuB.max )
maccuB[x+1..-1].size</
'''Замечания по решению:'''
Строка 653:
'''Возможное решение:'''
<
a,b = 3,5
p( maccuB[a..b].sort.rindex( maccuB.min ) )</
'''Замечания по решению:'''
Строка 665:
'''Возможное решение:'''
<
d=1..3
p arr[d].select{|e| e==arr.min}.size</
'''Замечания по решению:'''
Строка 674:
'''Возможное решение:'''
<
y = any_arr[0..5]
p y.count(any_arr.min)</
'''Замечания по решению:'''
Строка 685:
'''Возможное решение:'''
<
m = m.uniq
m = m.sort
p m.shift
p m.shift</
'''Замечания по решению:'''
Строка 698:
'''Возможное решение:'''
<
p m.sort.uniq[0..1]</
'''Замечания по решению:'''
Строка 708:
'''Возможное решение:'''
<
p mac.min
mac.delete( mac.min )
p mac.min</
'''Замечания по решению:'''
Строка 720:
'''Возможное решение:'''
<
p mac.min, (mac - [mac.min]).min</
'''Замечания по решению:'''
Строка 730:
'''Возможное решение:'''
<
p array.sort.uniq.first 2</
'''Замечания по решению:'''
Строка 739:
'''Возможное решение:'''
<
p m.pop
p m.pop</
'''Замечания по решению:'''
Строка 750:
'''Возможное решение:'''
<
maccuB.max
maccuB.delete(maccuB.max)
maccuB.max</
'''Замечания по решению:'''
Строка 761:
'''Возможное решение:'''
<
p arr.sort.uniq[-2..-1]</
'''Замечания по решению:'''
Строка 771:
'''Возможное решение:'''
<
p array.sort.uniq.last 2</
'''Замечания по решению:'''
Строка 781:
'''Возможное решение:'''
<
'''Замечания по решению:'''
Строка 789:
'''Возможное решение:'''
<
a = m.index(m.min)
b = m.rindex(m.min)
m[a+1...b]</
'''Замечания по решению:'''
Строка 802:
'''Возможное решение:'''
<
p (arr.rindex(arr.min) - arr.index(arr.min) - 1)</
'''Замечания по решению:'''
Строка 812:
'''Возможное решение:'''
<
maccuB.push(m)</
'''Замечания по решению:'''
Строка 822:
'''Возможное решение:'''
<
maccuB[1..-1] + [ m[0] ]</
'''Замечания по решению:'''
Строка 834:
'''Возможное решение:'''
<
_max = macc.max
_ind = macc.index(_max)
Строка 840:
_a = _ind + 1
_b = _rind - 1
macc[_a.._b]</
'''Замечания по решению:'''
Строка 849:
'''Возможное решение:'''
<
a=maccuB.index(maccuB.max)
maccuB=maccuB[a+1..-1].reverse
a=maccuB.index(maccuB.max)
maccuB=maccuB[0..a-1].reverse</
'''Замечания по решению:'''
Строка 860:
'''Возможное решение:'''
<
p array[array.index(max)+1..array.rindex(max)-1]</
Строка 870:
'''Возможное решение:'''
<
a,b = 1,5
p m.max == m[a..b].max</
'''Замечания по решению:'''
Строка 881:
'''Возможное решение:'''
<
a = 0
b = 5
p( maccuB[a..b].include?( maccuB.max ) )</
'''Замечания по решению:'''
Строка 895:
'''Возможное решение:'''
<
i = 3
(m[i] < m[i-1]) && (m[i] < m[i+1])</
'''Замечания по решению:'''
Строка 906:
'''Возможное решение:'''
<
n = 8
p( (m[n-1] < m[n])&&(m[n] > m[n+1]) )</
'''Замечания по решению:'''
|