I am trying to get the longest string from an multidimensional array, however it is not working for some reason.
我试图从多维数组中获取最长的字符串,但是由于某些原因它不能工作。
This is what I have:
这就是我所拥有的:
a =
["MAKKGKPRPDHRPPAHNPHYAHDPPPYSQQQPPLQQQNYAQQMNRQHARPRPSPPSEVSDCVKYSLFLYNCIFWVSMHSS"],
["MHHGGGGGNRQHARPRPSPPSEVSDCVKYSLFLYNCIFWVSMHSS"], ["MTYINLGVTRTGDLMIGRHRP"],
["MRIYNRVCFQTAGCYLQNLVTTSIQPARVWTY"], ["MAACGLGRVFSAFKVDEMD"],
["MPSGFVGKRSGFCQFCCSHI"], ["MTYSTAKEGAYPFRNFN"]]
p a.max_by{|v|v}[0] # => "MTYSTAKEGAYPFRNFN"
Could someone please let me know what I am doing wrong?
有人能告诉我我做错了什么吗?
4 个解决方案
#1
6
=> a.flatten.max_by(&:size)
=> # "MAKKGKPRPDHRPPAHNPHYAHDPPPYSQQQPPLQQQNYAQQMHHGGGGGNRQHARPRPSPPSEVSDCVKYSLFLYNCIFWVSMHSS"
#2
5
a = [
["MAKKGKPRPDHRPPAHNPHYAHDPPPYSQQQPPLQQQNYAQQMHHGGGGGNRQHARPRPSPPSEVSDCVKYSLFLYNCIFWVSMHSS"],
["MHHGGGGGNRQHARPRPSPPSEVSDCVKYSLFLYNCIFWVSMHSS"],
["MTYINLGVTRTGDLMIGRHRP"],
["MRIYNRVCFQTAGCYLQNLVTTSIQPARVWTY"],
["MAACGLGRVFSAFKVDEMD"],
["MPSGFVGKRSGFCQFCCSHI"],
["MTYSTAKEGAYPFRNFN"]
]
p a.max_by { |v| v[0].size }[0]
output:
输出:
"MAKKGKPRPDHRPPAHNPHYAHDPPPYSQQQPPLQQQNYAQQMHHGGGGGNRQHARPRPSPPSEVSDCVKYSLFLYNCIFWVSMHSS"
Simply specifying v
, comparisons are done with each element (single-element array). They are compared lexicographically.
只需指定v,就可以对每个元素(单元素数组)进行比较。他们是按相比。
#3
2
This should work:
这应该工作:
a.max_by { |v| v.first.size }[0]
#4
2
=> a = [["MAKKGKPRPDHRPPAHNPHYAHDPPPYSQQQPPLQQQNYAQQMHHGGGGGNRQHARPRPSPPSEVSDCVKYSLFLYNCIFWVSMHSS"],
["MHHGGGGGNRQHARPRPSPPSEVSDCVKYSLFLYNCIFWVSMHSS"],
["MTYINLGVTRTGDLMIGRHRP"],
["MRIYNRVCFQTAGCYLQNLVTTSIQPARVWTY"],
["MAACGLGRVFSAFKVDEMD"],
["MPSGFVGKRSGFCQFCCSHI"],
["MTYSTAKEGAYPFRNFN"]
]
=> a.flatten.sort_by(&:length).last
#=> "MAKKGKPRPDHRPPAHNPHYAHDPPPYSQQQPPLQQQNYAQQMHHGGGGGNRQHARPRPSPPSEVSDCVKYSLFLYNCIFWVSMHSS"
#1
6
=> a.flatten.max_by(&:size)
=> # "MAKKGKPRPDHRPPAHNPHYAHDPPPYSQQQPPLQQQNYAQQMHHGGGGGNRQHARPRPSPPSEVSDCVKYSLFLYNCIFWVSMHSS"
#2
5
a = [
["MAKKGKPRPDHRPPAHNPHYAHDPPPYSQQQPPLQQQNYAQQMHHGGGGGNRQHARPRPSPPSEVSDCVKYSLFLYNCIFWVSMHSS"],
["MHHGGGGGNRQHARPRPSPPSEVSDCVKYSLFLYNCIFWVSMHSS"],
["MTYINLGVTRTGDLMIGRHRP"],
["MRIYNRVCFQTAGCYLQNLVTTSIQPARVWTY"],
["MAACGLGRVFSAFKVDEMD"],
["MPSGFVGKRSGFCQFCCSHI"],
["MTYSTAKEGAYPFRNFN"]
]
p a.max_by { |v| v[0].size }[0]
output:
输出:
"MAKKGKPRPDHRPPAHNPHYAHDPPPYSQQQPPLQQQNYAQQMHHGGGGGNRQHARPRPSPPSEVSDCVKYSLFLYNCIFWVSMHSS"
Simply specifying v
, comparisons are done with each element (single-element array). They are compared lexicographically.
只需指定v,就可以对每个元素(单元素数组)进行比较。他们是按相比。
#3
2
This should work:
这应该工作:
a.max_by { |v| v.first.size }[0]
#4
2
=> a = [["MAKKGKPRPDHRPPAHNPHYAHDPPPYSQQQPPLQQQNYAQQMHHGGGGGNRQHARPRPSPPSEVSDCVKYSLFLYNCIFWVSMHSS"],
["MHHGGGGGNRQHARPRPSPPSEVSDCVKYSLFLYNCIFWVSMHSS"],
["MTYINLGVTRTGDLMIGRHRP"],
["MRIYNRVCFQTAGCYLQNLVTTSIQPARVWTY"],
["MAACGLGRVFSAFKVDEMD"],
["MPSGFVGKRSGFCQFCCSHI"],
["MTYSTAKEGAYPFRNFN"]
]
=> a.flatten.sort_by(&:length).last
#=> "MAKKGKPRPDHRPPAHNPHYAHDPPPYSQQQPPLQQQNYAQQMHHGGGGGNRQHARPRPSPPSEVSDCVKYSLFLYNCIFWVSMHSS"