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