الحصول على صفيف ثنائي الأبعاد كحد أقصى بطريقة أكثر روبيا؟

StackOverflow https://stackoverflow.com/questions/3593659

  •  01-10-2019
  •  | 
  •  

سؤال

خلفية: في روبي لدي صفيف ثنائي الأبعاد مثل ما يلي:

count[[english_word, french_word]] = ...
pp count
{["my", "une"]=>0.0,
 ["my", "voiture"]=>0.2,
 ["red", "maison"]=>0.9,
...
}

(السبب في أنني فعلت هذا بدلاً من count[english_word][french_word] هل لم أكن متأكدًا من كيفية الالتفاف على أخطاء UNDEF ، ورأيت هذا الجملة المقترح على سعة مكدس)

لقد ملأت بنية البيانات بزوج من الحلقات المتداخلة باستخدام أ english_vocab و french_vocab صفائف من كل الكلمات.

سؤال: أود أن أكون قادرًا على الحصول على أقصى كلمة إنجليزية معينة.

english_word = 'foo'
max_count = 0
french_vocab.each do |french_word|
   count = count[[english_word, french_word]]
   if count > max_count
       max_count = count
   end
end

يمكنني القيام بذلك مع حلقة متداخلة بسيطة ، لكنني أتساءل عما إذا كانت هناك طريقة أجمل روبي في فعل نفس الشيء؟

هل كانت مفيدة؟

المحلول

أعتقد أنه أسهل بكثير مما تفكر فيه.

hash = {
  ["my", "une"]=>0.0,
  ["my", "voiture"]=>0.2,
  ["red", "maison"]=>0.9,
}

puts hash.find_all{|a| a[0][0] == 'my' }.max[1]
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top