gpt4 book ai didi

ruby - 为什么拒绝不是拒绝?

转载 作者:数据小太阳 更新时间:2023-10-29 08:26:54 25 4
gpt4 key购买 nike

此代码为 my initial stab在 Exercism.io 上的汉明距离问题上,但是当字符串 a 长于字符串 b 时它失败了,我试图理解为什么。

def self.compute(a, b)
a.split('').reject.with_index { |c, i| c == b[i] }.size
end

我通过修剪第一个字符串解决了这个问题...

def self.compute(a, b)
a[0...b.size].split('').reject.with_index { |c, i| c == b[i] }.size
end

...但我不明白为什么 reject 包含额外的字符。当我检查比较结果时,它们似乎是错误的,正如我所预料的那样,但仍包含在结果中。

谁能告诉我为什么?

最佳答案

I don't understand why reject is including the extra characters. When I check the comparisons, they seem to be coming up false

正确。当您拒绝时,false 表示“接受”——与拒绝相反。

问题仅仅是您没有理解“拒绝”的含义。当您遇到这样的问题时,调试。在这种情况下,这样做的方法是消除多余的 Material 并专注于让您感到困惑的事情。删除 size 调用,只查看 reject 调用的结果:

def compute(a, b)
a.split('').reject.with_index { |c, i| c == b[i] }
end
result = compute("hey", "ha")
puts result

输出是"e""y"。这是有道理的:

  • 在第一次通过时,"h" == "h" 并被拒绝。

  • 在第二遍中,"e" != "a" 并被接受。

  • 第三遍,"y"没有可比性,无法成功;因此我们未能拒绝——所以“y”被接受了。这就是你要问的。

关于ruby - 为什么拒绝不是拒绝?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28219686/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com