如何将数字转换为红宝石中的单词?
我知道某处有一块宝石.试图在没有宝石的情况下实现它.我只需要用英语单词的数字来表示整数.发现这个,但它非常混乱.如果您对如何实现更清晰易读的解决方案有任何想法,请分享.
http://raveendran.wordpress.com/2009/05/29/ruby-convert-number-to-english-word/
这是我一直在努力的方面.但在实施量表时遇到一些问题.代码仍然是一团糟.我希望它在正常运行时更具可读性.
class Numberswords
def in_words(n)
words_hash = {0=>"zero",1=>"one",2=>"two",3=>"three",4=>"four",5=>"five",6=>"six",7=>"seven",8=>"eight",9=>"nine",
10=>"ten",11=>"eleven",12=>"twelve",13=>"thirteen",14=>"fourteen",15=>"fifteen",16=>"sixteen",
17=>"seventeen", 18=>"eighteen",19=>"nineteen",
20=>"twenty",30=>"thirty",40=>"forty",50=>"fifty",60=>"sixty",70=>"seventy",80=>"eighty",90=>"ninety"}
scale = [000=>"",1000=>"thousand",1000000=>" million",1000000000=>" billion",1000000000000=>" trillion", 1000000000000000=>" quadrillion"]
if words_hash.has_key?(n)
words_hash[n]
#still working on this middle part. Anything above 999 will not work
elsif n>= 1000
print n.to_s.scan(/.{1,3}/) do |number|
print number
end
#print value = n.to_s.reverse.scan(/.{1,3}/).inject([]) { |first_part,second_part| first_part << (second_part == "000" ? "" : second_part.reverse.to_i.in_words) }
#(value.each_with_index.map { |first_part,second_part| first_part == "" ? "" : first_part + scale[second_part] }-[""]).reverse.join(" ")
elsif n …Run Code Online (Sandbox Code Playgroud) 在计算序列中的字符时需要有关此代码的帮助.
这就是我要的:
word("aaabbcbbaaa") == [["a", 3], ["b", 2], ["c", 1], ["b", 2], ["a", 3]]
word("aaaaaaaaaa") == [["a", 10]]
word("") == []
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
def word(str)
words=str.split("")
count = Hash.new(0)
words.map {|char| count[char] +=1 }
return count
end
Run Code Online (Sandbox Code Playgroud)
我得到了一句话("aaabbcbbaaa")=> [["a",6],["b",4],["c",1]],这不是我想要的.我想计算每个序列.我更喜欢没有正则表达式的解决方案.谢谢.
这段代码找到了两个矩形的交集,但我无法完全理解它.当我尝试将其映射到纸上时,它甚至不会形成矩形:
def rec_intersection(rect1, rect2)
x_min = [rect1[0][0], rect2[0][1]].max
x_max = [rect1[1][0], rect2[1][1]].min
y_min = [rect1[0][0], rect2[0][1]].max
y_max = [rect1[1][0], rect2[1][1]].min
return nil if ((x_max < x_min) || (y_max < y_min))
return [[x_min, y_min], [x_max, y_max]]
end
rec_intersection([[1, 1], [2, 2]],[[0, 0], [5, 5]])
Run Code Online (Sandbox Code Playgroud)
上面的代码返回[[1, 1], [2, 2]].有人可以解释这个过程吗?
我需要帮助来解决这个ruby数组问题.
获取数组的所有子集.仅限独特套装.没有重复任何数字. num_subset([1,2,3])==>结果应该是[[], ["1"], ["1", "2"], ["1", "2", "3"], ["1", "3"], ["2"], ["2", "3"], ["3"]]
def num_subset(arr)
holder =[]
order_subset = [[]]
(arr.length).times do |m|
arr.map do |n|
holder += [n]
order_subset << holder
end
holder =[] # resets holder
arr.shift # takes the first element out
end
order_subset
end
Run Code Online (Sandbox Code Playgroud)
我的结果是==> [[], ["1"], ["1", "2"], ["1", "2", "3"], ["2"], ["2", "3"], ["3"].我的问题是我错过了一个结果 ["1", "3"]
需要一些帮助指出我正确的方向.已经花了好几个小时.不要使用#combination捷径.我需要手动解决这个问题.
我需要帮助找到部分单词匹配.它应该返回与目标三个连续字母匹配的单词.例如:
WORDS = ["born", "port" ,"cort", "mort"]
find_match("corn", WORDS) => returns ["born", "cort"]
Run Code Online (Sandbox Code Playgroud)
应找到部分匹配"corn".和"b orn "和" cor t"匹配.
正则表达式可能不是解决此类问题的最佳方法.如果您有其他想法,请随时分享.
ruby ×5
numbers ×2
string ×2
algorithm ×1
arrays ×1
count ×1
cpu-word ×1
enumerable ×1
expression ×1
intersection ×1
match ×1
partial ×1
sequence ×1