7. Дан целочисленный массив. Преобразовать его, прибавив к нечетным числам последний элемент. Первый и последний элементы массива не и... править

a = [1, 2, 3, -4, -5, 6, -7, 8, 9];                                                                                 
a = a.find_all{|nechet| nechet.odd?}.map{|e| e+a[-1]}

это в общем то сложит все элементы нового массива с последним числом в массиве, а как добиться, чтобы первый и последний не складывало? 217.118.81.27 11:53, 16 января 2012 (UTC) Например так.Ответить

a=(1...a.size-1).to_a.map{|i| a[i]=(a[i].odd?)? (a[i]+a[-1]):a[i]}

Найти такое десятизначное число, что все его цифры различны, причем число, составленное из первых двух его цифр, делится на 2, из первых трех цифр - на 3, из четырех - на 4, и так далее, а само число делится на 10. править

Компактнее ничего придумать не удалось.

for a in 1.. 9 do
for b in [2,4,6,8] do if (a!=b)&&((pow2=a*10+b)%2==0) then  #чётность
for c in 1..9 do if(c!=a)&&(c!=b)&&((pow3=pow2*10+c)%3==0) then
for d in [2,4,6,8] do if(d!=a)&&(d!=b)&&(d!=c)&&((pow4=pow3*10+d)%4==0) then #чётность
# на 5 делится только число с 0 и 5 на конце, при этом 0 уже занят в 10 разряде
for f in [2,4,6,8] do if(f!=a)&&(f!=b)&&(f!=c)&&(f!=d)&&((pow6=pow4*100+50+f)%6==0) then #чётность
for g in 1..9 do if(g!=a)&&(g!=b)&&(g!=c)&&(g!=d)&&(g!=f)&&((pow7=pow6*10+g)%7==0) then
for h in [2,4,6,8] do if(h!=a)&&(h!=b)&&(h!=c)&&(h!=d)&&(h!=f)&&(h!=g)&&((pow8=pow7*10+h)%8==0) then #чётность
for i in 1..9 do if(i!=a)&&(i!=b)&&(i!=c)&&(i!=d)&&(i!=f)&&(i!=g)&&(i!=h)&&((pow9=pow8*10+i)%9==0) then
# на 10 делится только число с 0 на конце
print "10! #{pow9}0\n"
end end end end end end end end end end end end end end end    #=> 10! 3816547290

--Evgeny.V.Orlov (обсуждение) 14:28, 15 мая 2013 (UTC)Ответить

Вернуться на страницу «Ruby/Задачник».