Size: a a a

Saint P Ruby Community

2020 May 20

DS

Dmitriy Strukov in Saint P Ruby Community
Я подумал о алгоритме: идти последовательно по каждому digit'у сравнивать с 5 и если меньше то вставлять
источник

DS

Dmitriy Strukov in Saint P Ruby Community
def find_max(number, insert_digit = 5)
 digits = number.abs.to_s.chars.map(&:to_i)

 index_to_replace =
   if number < 0
     digits.find_index { |digit| insert_digit <= digit }
   else
     digits.find_index { |digit| insert_digit >= digit }
   end

 digits.insert(
   index_to_replace || digits.size,
   insert_digit
 )

 digits.join().to_i
end
источник

D

Dmitry in Saint P Ruby Community
сходу вижу что неоптимально)
источник

DS

Dmitriy Strukov in Saint P Ruby Community
Dmitry
сходу вижу что неоптимально)
А чего не так :))?
источник

АШ

Алексей Шеин... in Saint P Ruby Community
number.abs - число может быть отрицательно?
источник

DS

Dmitriy Strukov in Saint P Ruby Community
Алексей Шеин
number.abs - число может быть отрицательно?
Да
источник

АШ

Алексей Шеин... in Saint P Ruby Community
Тогда алгоритм надо доработать
источник

DS

Dmitriy Strukov in Saint P Ruby Community
Но тогда будет вот так:

-1
-15
источник

DS

Dmitriy Strukov in Saint P Ruby Community
Т.е число, которое ближе к нулю
источник

АШ

Алексей Шеин... in Saint P Ruby Community
Т.е. логика инверсируется
источник

D

Dmitry in Saint P Ruby Community
Dmitriy Strukov
А чего не так :))?
сейчас накидаю вариант как я думаю лучше будет
источник

PP

Pavel Peganov in Saint P Ruby Community
Ну во-от, а я уже хотел было предложить
.sub(/([0-5])/, "5\\1")
источник

DS

Dmitriy Strukov in Saint P Ruby Community
Dmitry
сейчас накидаю вариант как я думаю лучше будет
Мой вариант выдал 50% на Codility
источник

DS

Dmitriy Strukov in Saint P Ruby Community
Такое себе, но там ещё сложновато понять что в кейсах проверяется, доступа нет
источник

D

Dmitry in Saint P Ruby Community
Pavel Peganov
Ну во-от, а я уже хотел было предложить
.sub(/([0-5])/, "5\\1")
прикольный вариант, но много кейсов когда не пройдет
источник

PP

Pavel Peganov in Saint P Ruby Community
Dmitry
прикольный вариант, но много кейсов когда не пройдет
Ну, отрицательные все (наверное) завалит, да.
источник

DS

Dmitriy Strukov in Saint P Ruby Community
Dmitry
сейчас накидаю вариант как я думаю лучше будет
Оу кажется я уже увидел что знак минуса потерял
источник

D

Dmitry in Saint P Ruby Community
Dmitriy Strukov
Мой вариант выдал 50% на Codility
а что значит 50%?
источник

DS

Dmitriy Strukov in Saint P Ruby Community
Dmitry
а что значит 50%?
Что на 50% тестов код успешно прошел
источник

D

Dmitry in Saint P Ruby Community
Pavel Peganov
Ну, отрицательные все (наверное) завалит, да.
завалятся все числа от 65)
источник