草庐IT

散列函数

全部标签

ruby - 用 Clojure 编写的阶乘函数的低性能

我是Clojure新手。在试验中,我编写了I函数来计算n!。我的Clojure代码如下:(defnfactorial[n](reduce*(biginteger1)(range1(incn))))然后我在repl中运行了以下内容。(time(factorial100))结果是这样的:"Elapsedtime:0.50832msecs"93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210

ruby-on-rails - 如何按照散列中的数字序列生成和填充缺失数据

我正在尝试创建一个函数来完成以下哈希中的小时序列。{name:"cardio",data:[["06:00",999],["09:00",154],["10:00",1059],["11:00",90]]}它应该在字段数据中创建所有缺失值["07:00",0],["08:00",0],["12:00",0],["13:00",0]...["23:00",0]预期结果:{name:"cardio",data:[["06:00",999],["07:00",0],["08:00",0],["09:00",154],["10:00",1059],["11:00",90]],["12:00",

Ruby:构建函数图

在Ruby下构建函数图的最简单方法是什么?关于特殊图形库有什么建议吗?更新:仅在Windows下:-(更新2:发现以下gem是迄今为止最好的解决方案https://github.com/clbustos/rubyvis 最佳答案 是gnuplot一个可能的选择?:require'gnuplot.rb'Gnuplot.open{|gp|Gnuplot::Plot.new(gp){|plot|plot.output"testgnu.pdf"plot.terminal"pdfcoloursize27cm,19cm"plot.xrange"

ruby - 如何将多个代码块传递给 Ruby 中的一个函数?

我对Ruby一窍不通,现在正在阅读有关它的一些文档。在阅读有关使用代码块和“yield”关键字的内容后,我有一个疑问,即是否可以将多个代码块传递给一个函数,并在被调用函数中随意使用这两个代码块。 最佳答案 您一次只能传递一个block,但block实际上是Proc实例,您可以传递任意数量的实例作为参数。defmymethod(proc1,proc2,&block)proc1.callyieldifblock_given?proc2.callendmymethod(Proc.new{},Proc.new{})do#...end但是,它

ruby-on-rails - 如何按散列值在 JSON 散列数组中进行搜索?

我正在使用Postgres的JSON数据类型来存储一些信息。例如,我有一个模型User,它有一个字段locations,它包含一个json文档(包含键和值对的对象数组),格式如下:[{"name":"Location1",kind:"house"},{"name":"Location2",kind:"house"},{"name":"Location3",kind:"office"},...{"name":"LocationX",kind:"house"}]我想用.where查询JSON数据类型。我想查询至少有一个位置为kind=office的用户。谢谢!

ruby - 遍历包含键/数组值对的散列,并遍历每个值

我有一个看起来像这样的散列:{"key1":["value1","value2","value3"],"key2":["value1","value2","value3","value4","value5"],"key3":["value1"],"key4":["value1","value2"]}如何遍历每个keyN,同时循环遍历该键中的所有值?如果有帮助,我有一个包含所有键的数组。谢谢 最佳答案 非常简单,真的:hash.eachdo|name,values|values.eachdo|value|#...endend您可以在最

ruby - 是否有类似 String#scan 的函数,但返回 MatchDatas 数组?

我需要一个函数来返回字符串中正则表达式的所有匹配项和找到匹配项的位置(我想突出显示字符串中的匹配项)。有一个String#match返回MatchData,但只针对第一个匹配项。有没有比类似的方法更好的方法matches=[]beginmatch=str.match(regexp)breakunlessmatchmatches 最佳答案 如果您只需要遍历MatchData对象,您可以在扫描block中使用Regexp.last_match,例如:string.scan(regex)domatch_data=Regexp.last_m

ruby - 将散列与 ruby​​ 中字符串的键/值合并

我正在尝试将散列与ruby​​中字符串的键/值合并。即h={:day=>4,:month=>8,:year=>2010}s="/my/crazy/url/:day/:month/:year"putss.interpolate(h)我所发现的只是迭代键并替换值。但是我不确定是否有更好的方法来做到这一点?:)classString definterpolate(e)  selfife.each{|k,v|self.gsub!(":#{k}","#{v}")} endend谢谢 最佳答案 无需重新发明Ruby内置函数:h={:day=>4

arrays - 在 ruby​​ 中巧妙地将散列数组转换为 CSV

我需要转换CSV文件中的哈希数组。我发现的各种方法涉及在数组中插入哈希值:classArraydefto_csv(csv_filename="hash.csv")require'csv'CSV.open(csv_filename,"wb")do|csv|csv不幸的是,这个方法要求数组中的每个元素都是完整的,例如,当我有这个数组时,它甚至不会返回有效的csv:myarray=[{foo:1,bar:2,baz:3},{bar:2,baz:3},{foo:2,bar:4,baz:9,zab:44}]我正在寻找一种创建csv的方法,它可以找到所有可能的header,并以正确的顺序分配值,并

ruby-on-rails - 这个 Ruby 函数在做什么?

我对它的返回方式感到困惑:defutc2user(t)ENV["TZ"]=current_user.time_zone_nameres=t.getlocalENV["TZ"]="UTC"resend它首先设置ENV变量,然后将'res'设置为本地值,然后重新分配ENV变量,然后返回res?不确定我是否理解这是如何从UTC转换为用户时区的? 最佳答案 第一行是将环境时区变量设置为用户的时区,以便在正确的时间为该用户获取res值。如果它没有设置为用户的,时间仍将是UTC。然后它将环境变量设置回UTC时间,我假设这是应用程序的默认时间。然