Size: a a a

Чат по руби

2020 June 18

P

Paul in Чат по руби
не пойму
источник

И

Иван in Чат по руби
сама задача описана довольно точно - minimize the sum of the elements in the final array
источник

P

Paul in Чат по руби
мм, да, согласен.
источник

P

Paul in Чат по руби
тогда как понимать пример?
источник

.

./sh in Чат по руби
Paul
но они начинают с 7
По их логике начали с минимального, дошли до максимального элемента в изначальном массиве
В примере k = 4
За три операции проход от минимального 7 до максимального 20
На последней операции выбрали максимальное и с ним произвели действия
источник

P

Paul in Чат по руби
сек, я сейчас накидаю алгоритм, что мы тут с Иваном обсудили
источник

И

Иван in Чат по руби
Paul
тогда как понимать пример?
мне кажется просто решили не писать в правильном порядке что бы не слишком сильно раскрывать алгоритм
источник

И

Иван in Чат по руби
иначе по примеру можно было бы понять что каждый раз надо просто брать максмимум
источник

В

Владимир in Чат по руби
Может все же минимальное количество элементов в конечном массиве?
источник

P

Paul in Чат по руби
оно не может уменьшиться
источник

P

Paul in Чат по руби
при бесконечном k массив будет состоять из единиц, но его длина будет как у входящего
источник

В

Владимир in Чат по руби
А разве не надо каждую операцию выполнять с получившимися прежде цифрами?
источник

P

Paul in Чат по руби
там выполняется деление на 2 и ceil, любое i > 1 неизбежно становится единицей и потом сотается во всех итерациях
источник

P

Paul in Чат по руби
В общем, вот рабочий код:
def minSum(num, k)
 k.times do
   max = num.max
   ind = num.index(max)
   num.delete_at(ind)
   num.insert(ind, (max / 2.0).ceil)
 end
 num.sum
end

p minSum([10 ,20, 7], 4)
источник

P

Paul in Чат по руби
засад здесь две: надо иметь ввиду, что деление Int дает целое чисо, поэтому нужно один из операндов привести к Float (я использовал запись 2.0) и второе — delete(max) просто, но не прокатит, сломает всю логику, когда в массиве будет больше одного элемента со значением max
источник

И

Иван in Чат по руби
удалять вообще не обязательно можешь просто сделать num[ind] = new_value
источник

P

Paul in Чат по руби
кстати, да, можно и так
источник

.

./sh in Чат по руби
Иван
удалять вообще не обязательно можешь просто сделать num[ind] = new_value
По условию необходимо
источник

P

Paul in Чат по руби
по идее, должен быть верный результат и всё. если можно оптимизировать алгоритм, то это только в плюс
источник

P

Paul in Чат по руби
эх,  кривое описание всё портит.
источник