在训练营的铁轨预备工作的初级红宝石,哪个解决方案是正确的?

时间:2017-10-06 17:29:32

标签: ruby-on-rails

鉴于此问题,您会使用哪个答案? (第一个是新兵训练营的方法,第二个是我的)当测试训练营的方法时,它永远不会返回所需的答案,但在测试我的方法时它起作用。我觉得作为一个初学者,新兵训练营是不对的,所以我想知道是否有一些我缺少的东西。谢谢您的帮助!对不起,问题格式怪异。我非常新。 (这是适用于App Academy的Jumpstart所以基本上是训练营前训练营)

编写一个方法,该方法以降序和字符串形式返回非负整数的数字数组,例如

descending_digits(4291) #=> ["9", "4", "2", "1"]

def descending_digits(int)

**# your code goes here**

end

#method 1

int.to_s.split("").sort.reverse

#method 2

int.sort.reverse.join(" ").split

2 个答案:

答案 0 :(得分:1)

method 1 is correct here is explanation

a = 4291 # a is variable number 4291
=> 4291
irb(main):005:0> a.to_s  # convert a to string
=> "4291"
irb(main):006:0> a.to_s.split("") # split each character
=> ["4", "2", "9", "1"]
irb(main):007:0> a.to_s.split("").sort # sort it, default is ascending
=> ["1", "2", "4", "9"]
irb(main):008:0> a.to_s.split("").sort.reverse # reverse it to descending
=> ["9", "4", "2", "1"]

method 2

a = 4291
a.sort # will return an error

答案 1 :(得分:0)

您的方法(#method 2)不正确,因为>>> import random >>> import numpy as np >>> bytearray(random.getrandbits(8) for _ in range(3 * 4 * 4)) bytearray(b'{)jg\xba\xbe&\xd1\xb9\xdd\xf9@\xadL?GV\xca\x19\xfb\xbd\xad\xc2C\xa8,+\x8aEGpo\x04\x89=e\xc3\xef\x17H@\x90]\xd5^\x94~/') >>> rgb = bytearray(random.getrandbits(8) for _ in range(3 * 4 * 4)) >>> np.array(rgb) array([112, 68, 7, 41, 175, 109, 124, 111, 116, 6, 124, 168, 146, 60, 125, 133, 1, 74, 251, 194, 79, 14, 72, 236, 188, 56, 52, 145, 125, 236, 86, 108, 235, 9, 215, 49, 190, 16, 90, 9, 114, 43, 214, 65, 132, 128, 145, 214], dtype=uint8) >>> np.array(rgb).reshape(4,4,3) array([[[112, 68, 7], [ 41, 175, 109], [124, 111, 116], [ 6, 124, 168]], [[146, 60, 125], [133, 1, 74], [251, 194, 79], [ 14, 72, 236]], [[188, 56, 52], [145, 125, 236], [ 86, 108, 235], [ 9, 215, 49]], [[190, 16, 90], [ 9, 114, 43], [214, 65, 132], [128, 145, 214]]], dtype=uint8) 是一种数组方法,而不是sortstring方法。

https://ruby-doc.org/core-2.2.0/Array.html#method-i-sort