gpt4 book ai didi

ruby - 你怎么能找到一个词的所有字谜?

转载 作者:太空宇宙 更新时间:2023-11-03 17:11:06 26 4
gpt4 key购买 nike

我试图用 Ruby 获取一个单词的所有变位词,但我的代码不起作用,对于字符串“ant”我只得到三个结果。任何帮助将不胜感激。

class Anagram
attr_reader :word
def initialize(word)
@word = word.downcase
end

def anagram_maker
@word_bank = []
index = @word.length
minus_one = index - 1

while (index * minus_one) != 0
anagram = @word.split('').shuffle.join
@word_bank << anagram
index -= 1
end
@word_bank = @word_bank.uniq
end

def display
anagram_maker
if @word_bank.count > 1
@word_bank.each do |anagram|
puts anagram
end
else
puts "Not enough letters for an anagram"
end
end

end

不确定在这里还能尝试什么。

最佳答案

您的代码非常不符合 Ruby 的习惯。

计算字符串的变位词就是计算字符串字符的排列,而 Ruby 使这项任务变得非常简单。重现您的 Anagram 类的示例是:

class Anagram
def initialize(word)
@word = word
end

def display
# In Ruby 2.0 @word.chars will return an array, no need for `to_a`.
@word.chars.to_a.permutation.map(&:join).uniq.each do |anagram|
puts anagram
end
end
end

anagram = Anagram.new('ant')
anagram.display

# Output
# ant
# atn
# nat
# nta
# tan
# tna

回答你的问题:你只得到三个字谜,因为 anagram_maker 方法内的 while 循环执行了三次(字符串的长度)。此外,我猜想只是打乱字符并不是生成排列的正确方法,请参阅“Algorithm to generate anagrams”以获取有关实现字谜算法的更多信息。

关于ruby - 你怎么能找到一个词的所有字谜?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20518894/

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