5
A
回答
1
枚举只到N,
或
开发给出了一些N,F功能(N)为您提供了您可能的解决方案范围中的第n项。
对于您的情况,您可以将您的范围视为基数为26的数字系统。重新编号是一个众所周知的问题。即使在红宝石(由我的一个同事制作)中,也有一个example on my site从基数为10的数字变为基数为26的数字(用字母表表示)。这种算法的一些变化可能也适用于你。
更新 也许它没有下沉,这是你的答案:d
这里的Ruby代码,让您范围的第n个元素:
def rbase(value)
a = ('a'..'z')
b = a.to_a
base = b.length
text = []
begin
value, rest = value.divmod(base)
text << b[rest]
end until value.zero?
text.reverse.join
end
那么你可以使用它就是这样。
irb(main):030:0> rbase(789).rjust(10,'a')
=> "aaaaaaabej"
8
一个快速简便的方法:
("aaaaa".."zzzzz").first(42).last # ==> "aaabp"
如果由于某种原因,你不得不一遍又一遍地做这个,或者如果你需要避免为第一N个元素的中间阵列,可以写点东西像:
module Enumerable
def skip(n)
return to_enum :skip, n unless block_given?
each_with_index do |item, index|
yield item unless index < n
end
self
end
end
("aaaaa".."zzzzz").skip(41).first # ==> "aaabp"
注:我假设你想要的任何可枚举的作品,而不是字母范围的解决方案(在这种情况下,你应该直接计算的话)。我也假设红宝石1.8.7+,否则升级或require "backports"
+0
我不知道'['list']。first(n)'...太棒了! – Pete 2010-06-23 17:24:16
相关问题
- 1. 从日期对象获得日期范围的红宝石
- 2. 红宝石 - 从字符串获得第n个字符
- 3. 红宝石 - 获得不间断范围/从阵列
- 4. 红宝石阵列范围
- 5. 红宝石范围部分
- 6. 红宝石 - 块范围
- 7. 红宝石串范围
- 8. 使用范围 - 红宝石
- 9. 红宝石范围/绑定
- 10. 范围/段树红宝石
- 11. 红宝石创建范围
- 12. 红宝石范围变量
- 13. 红宝石:基于范围
- 14. 了解红宝石范围
- 15. 返回范围红宝石
- 16. 从红宝石专属范围获得最大价值的最快方法
- 17. 红宝石从规范文件
- 18. 红宝石从日期范围
- 19. 获得一个降序范围序列中的红宝石
- 20. 如何获得红宝石2.0模块#prepend在红宝石1.8?
- 21. 检查两个范围的红宝石
- 22. 红宝石/导轨的日期范围
- 23. 红宝石使用范围变量?
- 24. 添加范围红宝石独特
- 25. Sinatra:帮手和红宝石范围
- 26. 红宝石 - 词法范围VS继承
- 27. 红宝石范围打印额外
- 28. 获得从红宝石文件+ YARD
- 29. 更改的代码称为红宝石块内的范围
- 30. 红宝石 - 有例外的范围内的随机数
你到底需要什么来使用它?你想要生成一个随机字符串? – 2010-04-28 19:29:13