Сравните ключи массива в RUBY - PullRequest
0 голосов
/ 14 ноября 2018

У меня есть такая структура:

$ArrayX = [8349310431,8349314513,......]
$ArrayY = [667984788,667987788,......]
$ArrayZ = [148507632380,153294624079,.....]

$range_map = $ArrayX.zip([$ArrayY.map(&:to_i), 
             $ArrayZ.map(&:to_i)].transpose).sort

puts $range_map ={[8349310431=>[667984788, 148507632380],  
                 8349314513=>[667987788, 153294624079]}

Мне нужно сравнить ключ с остальными ключами, и если вычитание между ключами меньше 100, этот ключ нужно напечатать

1 Ответ

0 голосов
/ 14 ноября 2018

Я исправил ваш код также в соответствии с вашими потребностями и решил далее:

$ArrayX = [8349310431,8349314513]
$ArrayY = [667984788,667987788]
$ArrayZ = [148507632380,153294624079]

$range_map = $ArrayX.zip([$ArrayY.map(&:to_i), $ArrayZ.map(&:to_i)].transpose).sort

$ArrayX = [8349310431,8349314513]
 => [8349310431, 8349314513]
$ArrayY = [667984788,667987788]
 => [667984788, 667987788]
$ArrayZ = [148507632380,153294624079]
 => [148507632380, 153294624079] 

$range_map = Hash[$ArrayX.zip([$ArrayY.map(&:to_i), $ArrayZ.map(&:to_i)].transpose).sort]
 => {8349310431=>[667984788, 148507632380], 8349314513=>[667987788, 153294624079]}

keys = $range_map.keys
valid_keys = keys.select { |k| keys.detect { |x| (x-k).abs > 100 } }
$range_map.slice(*valid_keys)

Если конкретный ключ имеет разницу более 100 с одним из остальных ключей, он будет действителен для фильтрации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...