编写Ruby代码的正确方法是什么?

Arpit

我正在解决金字塔问题,在该问题中,通过在每次迭代中减去两个连续的数字,将数组随时间缩减为单个元素。

输入:[1、5、9、2、3、5、6]

迭代

[4,4,-7,1,2,1],

[0,-11,8,1,-1],

[-11,19,-7,-2],

[30,-26,5],

[-56,31],

[87]

输出:87

解决此问题的最佳方法是什么?这可以通过继承数组并创建一个新类来完成,但我不知道如何做。请帮忙。我写这段代码来解决它:

a = [1,5,9,2,3,5,6]

class Array
  def pyr
    a = self.each_cons(2).to_a.map! { |e| e[1] - e[0] }
    a
  end
end

while a.length > 1
  a = a.pyr
  ans = a[0]
end
p ans
纳森达

我看到三种解决方法。

重新打开Array类

当然,如果在您的特定ruby脚本/项目中这是数组的基本功能,请重新打开该类。但是,如果您要重新打开课程,至少要确保该名称有意义。pyr为什么不写全名,以免发生冲突,例如next_pyramid_iteration(我从来没有听说过这个金字塔问题,所以请问我是不是这里的基地)。

使类从Array继承

class Pyramid < Array

  def next_iteration 
    self.each_const(2).map! { |e| e[1] - e[o] }
  end

end

然后您的计算将变为

pyramid = Pyramid.new([1,5,9,2,3,5,6])

while pyramid.length > 1
  pyramid.next_iteration
end

pyramid[0]  

进行特定的班级进行计算

我不太确定您要达到什么目标,但是为什么不只做一个知道如何计算金字塔的特定班级呢?

class PyramidCalculator

  def initialize(arr)
    @pyramid = arr
  end

  def calculate
    while @pyramid.length > 1
      do_next_iteration
    end
    @pyramid.first  
  end 

  def self.calculate(arr)
    PyramidCalculator.new(arr).calculate
  end

  protected

  def do_next_iteration
    @pyramid = @pyramid.each_const(2).map! { |e| e[1] - e[o] }
  end 
end

因为我添加了便利类方法,所以现在可以计算出如下结果:

PyramidCalculator.calculate([1,5,9,2,3,5,6])

我个人的偏爱将是最后的选择:)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

编写haskell函数的正确方法是什么

来自分类Dev

编写此代码的更好方法是什么?

来自分类Dev

清除代码的正确方法是什么?

来自分类Dev

解释此代码的正确方法是什么?

来自分类Dev

用抽象方法编写Javadoc的正确方法是什么

来自分类Dev

编写此代码的正确方法是什么,以便我创建的表 td:button 用我列出的项目行进行罢工?

来自分类Dev

用Java编写自己的事件的正确方法是什么

来自分类Dev

编写此函数的正确(有效)方法是什么?

来自分类Dev

在Go中编写独特渠道的正确方法是什么?

来自分类Dev

编写用Flow验证的Jest测试的正确方法是什么?

来自分类Dev

用奇点gs编写断点的正确方法是什么?

来自分类Dev

为资源编写拦截器的正确方法是什么?

来自分类Dev

编写此多条件if语句的正确方法是什么?

来自分类Dev

编写与状态相关的内联 CSS“样式”的正确方法是什么?

来自分类Dev

编写无阻塞connect()代码的理想方法是什么?

来自分类Dev

编写sencha触摸代码的最佳方法是什么?

来自分类Dev

在Go中封装平台特定代码的正确方法是什么?

来自分类Dev

测试抛出IntegrityError的SQLAlchemy代码的正确方法是什么?

来自分类Dev

获得char代码点的正确方法是什么?

来自分类Dev

在Perl中动态重复加载代码的正确方法是什么?

来自分类Dev

在AngularJS代码中使用此扩展的正确方法是什么?

来自分类Dev

在Rust中组织代码/测试的正确方法是什么?

来自分类Dev

在代码围栏的markdown中添加类的正确方法是什么

来自分类Dev

从CUDA代码生成SASS和PTX的正确方法是什么

来自分类Dev

测试抛出IntegrityError的SQLAlchemy代码的正确方法是什么?

来自分类Dev

在Perl中动态重复加载代码的正确方法是什么?

来自分类Dev

运行注入代码的集成测试库的正确方法是什么?

来自分类Dev

在Ruby变量中分配JSON的正确方法是什么?

来自分类Dev

正确的方法是什么?

Related 相关文章

  1. 1

    编写haskell函数的正确方法是什么

  2. 2

    编写此代码的更好方法是什么?

  3. 3

    清除代码的正确方法是什么?

  4. 4

    解释此代码的正确方法是什么?

  5. 5

    用抽象方法编写Javadoc的正确方法是什么

  6. 6

    编写此代码的正确方法是什么,以便我创建的表 td:button 用我列出的项目行进行罢工?

  7. 7

    用Java编写自己的事件的正确方法是什么

  8. 8

    编写此函数的正确(有效)方法是什么?

  9. 9

    在Go中编写独特渠道的正确方法是什么?

  10. 10

    编写用Flow验证的Jest测试的正确方法是什么?

  11. 11

    用奇点gs编写断点的正确方法是什么?

  12. 12

    为资源编写拦截器的正确方法是什么?

  13. 13

    编写此多条件if语句的正确方法是什么?

  14. 14

    编写与状态相关的内联 CSS“样式”的正确方法是什么?

  15. 15

    编写无阻塞connect()代码的理想方法是什么?

  16. 16

    编写sencha触摸代码的最佳方法是什么?

  17. 17

    在Go中封装平台特定代码的正确方法是什么?

  18. 18

    测试抛出IntegrityError的SQLAlchemy代码的正确方法是什么?

  19. 19

    获得char代码点的正确方法是什么?

  20. 20

    在Perl中动态重复加载代码的正确方法是什么?

  21. 21

    在AngularJS代码中使用此扩展的正确方法是什么?

  22. 22

    在Rust中组织代码/测试的正确方法是什么?

  23. 23

    在代码围栏的markdown中添加类的正确方法是什么

  24. 24

    从CUDA代码生成SASS和PTX的正确方法是什么

  25. 25

    测试抛出IntegrityError的SQLAlchemy代码的正确方法是什么?

  26. 26

    在Perl中动态重复加载代码的正确方法是什么?

  27. 27

    运行注入代码的集成测试库的正确方法是什么?

  28. 28

    在Ruby变量中分配JSON的正确方法是什么?

  29. 29

    正确的方法是什么?

热门标签

归档