【问题标题】:Comparing a specific character of an array index in Ruby比较Ruby中数组索引的特定字符
【发布时间】:2016-11-05 18:20:24
【问题描述】:

我要做的是通过散列函数输入数字,并将生成的散列存储到数组中。我正在尝试查找是否有任何数字导致在最后一个字符中匹配的类似哈希值。我正在尝试找到最大可能的匹配字符。

我创建了一个哈希数组。 我的代码正在做这样的事情:

创建哈希数组
我=1
用 i 做一些计算,得到一个新的结果,称之为“结果”
然后我将结果放入指向创建它的对象的哈希中
哈希[结果]=i

那么我有这样的事情:

{"abcd"=>1}
增加 i
循环直到某个条件

所以当我增加 i 并再次通过一些计算时,我想通过首先比较结果末尾的字符来检查是否与之前的结果有任何相似之处

假设当我计算 2 时得到“hwed”,我想要一种方法来比较并看到最后一个字符中的“abcd”和“hwed”匹配。有谁知道我该怎么做。

【问题讨论】:

  • 感觉哈希不是这种比较的正确数据结构。也许后缀树(或类似的东西)可能是更好的选择。所有结果总是四个字符长吗?您是只对最后一个字符感兴趣还是有时对更长的后缀感兴趣?
  • 嗨,我实际上是通过 sha256 散列输入数字,我正在存储结果,并尝试查找是否有数字会产生相似的散列,并以一定的长度匹配。在我将它们转换为字符串后,生成的哈希将始终为 64 长度

标签: arrays ruby hash


【解决方案1】:

您正在尝试做的事情(执行一系列操作并存储每个计算的结果)可以很简单地完成,尽管在 Ruby 中通常有许多其他潜在的方法可以做到这一点。

您没有很好地解释您的问题,无法理解您实际上想要实现的目标。但在一般意义上提供帮助:

hash = {
  word1: { word: "cat", computations: [] }
  word2: { word: "dog", computations: [] }
  word3: { word: "pig", computations: [] }
}

hash.each do |key, val|
  # each key is a symbol and each val is a hash
  100.times do
    val[:computations] << val[:word].chars.shuffle.join
  end
end

所以现在computations 数组填充了word 字符串的 100 次随机播放。那时你可以对计算数组做任何你需要的事情(比如比较)

【讨论】:

    猜你喜欢
    • 2014-01-03
    • 2021-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 2015-09-07
    • 2021-10-24
    相关资源
    最近更新 更多