2016-06-11 70 views
-3

如何从数字数组:转换数字阵列字符串数组

a = [4,1,3] 

,并使阵列:

s = ["****","*","***"] 

因此,每个编号对应的单元格达的明星

+0

这个问题不显示在OP的任何努力尝试学习如何回答自己的问题。该问题要求提供编码解决方案,但没有明确指定要在标签中使用的语言。如果应该发布此信息,则可能更适合于http://codegolf.stackexchange.com/ – mkrufky

+1

缺乏努力不是有效的紧密原因。出于这个原因,我正在投票开放。另请参阅[关闭投票不是超级Downvote](http://meta.gamedev.stackexchange.com/questions/2115/a-close-vote-is-not-a-super-downvote) –

回答

4

您可以使用map像这样:

a = [4,1,3] 
s = a.map { |count| '*' * count } 
#=> ["****", "*", "***"] 
+0

它也可以是写成'a.map(&?*。method(:*))'(参见http://stackoverflow.com/questions/23695653/can-you-supply-arguments-to-the-mapmethod-syntax-in-红宝石) –

+1

@MladenJablanović:是的,可以。然而,对于Ruby的新手来说,这看起来有点复杂。因为它需要解释'* *',它将是字符串,然后调用'map'中的乘法方法,该方法将应用于特定迭代上的元素/值。所以,保持简单。无论如何,谢谢你的链接。 – Surya

0

如果你是好与被替换数组的内容,那么,下面会做:

a.fill {|i| "*" * a[i]} 
#=> ["****", "*", "***"]