Size: a a a

pro.rb (Ruby/Rails / RU)

2020 September 09

ML

Michael Lutsko in pro.rb (Ruby/Rails / RU)
ShadoWalkeR
Как то так
invites.sort_by! { |invite| (call['Timestamp']-invite['time']).to_i.abs }
наговнокодил конечно, но по моему выполняет задачу



array =  ['2020-09-05 14:23:57'.to_time, '2020-09-05 15:44:32'.to_time, '2020-09-05 15:46:03'.to_time, '2020-09-05 15:46:44'.to_time]
base =  '2020-09-05 15:46:11'.to_time
closest = Float::INFINITY
i = 0

while i < array.size do
 temp = (array[i] - base).abs

 if temp < closest
   closest = temp
   result = array[i]
 end

 i +=1
end

result
источник

DE

Dmitry Evgenevich in pro.rb (Ruby/Rails / RU)
не кошерно while i < array.size do => array.size.times do
😁
источник

S

ShadoWalkeR in pro.rb (Ruby/Rails / RU)
sorted_hash = Hash.new
sorted_hash[(array[i] - base).abs] = array[i]
А потом просто первую пару дернуть)
источник

ML

Michael Lutsko in pro.rb (Ruby/Rails / RU)
Dmitry Evgenevich
не кошерно while i < array.size do => array.size.times do
😁
тогда уже так

array =  ['2020-09-05 14:23:57'.to_time, '2020-09-05 15:44:32'.to_time, '2020-09-05 15:46:03'.to_time, '2020-09-05 15:46:44'.to_time]
base =  '2020-09-05 15:46:04'.to_time

def find_pair(array, base)
 closest = Float::INFINITY
 result = ''

 array.each do |item|
   temp = (item - base).abs
   if temp < closest
     closest = temp
     result = item
   end
 end

 result
end

find_pair(array, base)
источник

DE

Dmitry Evgenevich in pro.rb (Ruby/Rails / RU)
Michael Lutsko
тогда уже так

array =  ['2020-09-05 14:23:57'.to_time, '2020-09-05 15:44:32'.to_time, '2020-09-05 15:46:03'.to_time, '2020-09-05 15:46:44'.to_time]
base =  '2020-09-05 15:46:04'.to_time

def find_pair(array, base)
 closest = Float::INFINITY
 result = ''

 array.each do |item|
   temp = (item - base).abs
   if temp < closest
     closest = temp
     result = item
   end
 end

 result
end

find_pair(array, base)
.👍
источник

ML

Michael Lutsko in pro.rb (Ruby/Rails / RU)
@ShadoWalkeR31 спасибо за задачку)) немного растормошил мозг)))
источник

S

ShadoWalkeR in pro.rb (Ruby/Rails / RU)
Да незачто - искать нестандартные решения в принципе полезно для мозга
источник

DS

Dmitriy Strukov in pro.rb (Ruby/Rails / RU)
Michael Lutsko
тогда уже так

array =  ['2020-09-05 14:23:57'.to_time, '2020-09-05 15:44:32'.to_time, '2020-09-05 15:46:03'.to_time, '2020-09-05 15:46:44'.to_time]
base =  '2020-09-05 15:46:04'.to_time

def find_pair(array, base)
 closest = Float::INFINITY
 result = ''

 array.each do |item|
   temp = (item - base).abs
   if temp < closest
     closest = temp
     result = item
   end
 end

 result
end

find_pair(array, base)
а если таких записей миллион :))?
источник

ML

Michael Lutsko in pro.rb (Ruby/Rails / RU)
Dmitriy Strukov
а если таких записей миллион :))?
глупо выгружать миллион когда у тебя есть точка отсчета, достаточно выгрузить две записи
источник

АШ

Алексей Шеин... in pro.rb (Ruby/Rails / RU)
array.min_by { |item| (item.to_i - base.to_i).abs }

А так не пойдет?
источник

ML

Michael Lutsko in pro.rb (Ruby/Rails / RU)
Алексей Шеин
array.min_by { |item| (item.to_i - base.to_i).abs }

А так не пойдет?
За это я и люблю этот язык)) все уже придумали до тебя ))
источник

АШ

Алексей Шеин... in pro.rb (Ruby/Rails / RU)
тому, кто прочел доку по Enumerable, никогда не придется писать .each и while снова
источник

IN

Ivan Naumov in pro.rb (Ruby/Rails / RU)
Алексей Шеин
тому, кто прочел доку по Enumerable, никогда не придется писать .each и while снова
ну, в рубях не все алгоритмы оптимальные, для некоторых случаев лучше свой написать
источник

АШ

Алексей Шеин... in pro.rb (Ruby/Rails / RU)
никто про алгоритмы не говорит, я говорю о замене .each и велосипедах которые на нем строят, на встроенные методы из Enumerable
источник

IN

Ivan Naumov in pro.rb (Ruby/Rails / RU)
Алексей Шеин
никто про алгоритмы не говорит, я говорю о замене .each и велосипедах которые на нем строят, на встроенные методы из Enumerable
sort_by min_by minmax и т.д. - это все реализации тех или иных алгоритмов)
источник

АШ

Алексей Шеин... in pro.rb (Ruby/Rails / RU)
sort_by - еще могу согласиться, алгоритмов сортировок довольно много, но вот min_by и minmax - там линейный 1-проходный алгоритм, что там выдумывать?
источник

IN

Ivan Naumov in pro.rb (Ruby/Rails / RU)
Алексей Шеин
sort_by - еще могу согласиться, алгоритмов сортировок довольно много, но вот min_by и minmax - там линейный 1-проходный алгоритм, что там выдумывать?
у тебя не обязательно линал может быть, для нахождения экстремума в многомерной вложенности - не эффективно
источник

IN

Ivan Naumov in pro.rb (Ruby/Rails / RU)
алгоритмы выборки - не только в таком виде бывают)
источник

АШ

Алексей Шеин... in pro.rb (Ruby/Rails / RU)
не думаю, что minmax работает с многомерными массивами
источник

IN

Ivan Naumov in pro.rb (Ruby/Rails / RU)
ну поэтому я и сказал что для некоторых
источник