ruby gem algorithms使用

ruby gem algorithms使用
昨天在网上找ruby中栈的使用,我以为在标准库中有stack的实现,结果没有。在https://ruby-china.org/topics/18985  上找到一文章,介绍了algorithms, 于是安装,
sudo gem install algorithms
可惜不会使用,于是从https://rubygems.org/search?utf8=%E2%9C%93&query=excel
下载源码,再用7zip打开,再从测试文档中研究其使用方法,一用之下,发现真是爽呢。
这样,我就可以把数据结构中一些算法用ruby写出来了,比如括号匹配,比如转二进制。
或者进行"3+2*4"之类计算,多好。
象把8转为二进制的计算:
require 'algorithms'
def to2(num)
  a=Containers::Stack.new
  while(num !=0)
    a.push(num % 2)
    num /= 2
  end
  while(not a.empty?)
    puts a.pop
  end
end
to2(8)
当然,有更简单的方法,

下面是我写的检查括号是否匹配的程序:
require 'algorithms'
def is_ok(str)
  a=Containers::Stack.new
  str.each_char do |i|
    if i == '(' or i=='[' or i=='{'
      a.push(i)
    elsif i==')' and a.next == '('
      a.pop
    elsif i==']' and a.next =='['
      a.pop
    elsif i=='}' and a.next =='{'
      a.pop
    elsif i==')' or i==']' or i=='}'
      a.push(i)
    end
  end
  if a.empty?
    return true
  else
    return false
  end
end
puts is_ok('((2+3)-(4-2)')
感觉,有了这样标准算法,真是幸福呀。
 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值