我正在尝试一个代码,当for - loops方法将生成字母时将打开一个文件,当这些字母将连接在一起形成'abcd'时,这将返回脚本并打印txt文件。 我尝试了不同的可能性,但目前只能停止脚本并打印所有时间字母,也打印文件。但从来没有能够让所有人一起工作。
def words(target)
filename = ARGV.first
txt = open(filename)
('a'..'z').each do |i|
('a'..'z').each do |j|
('a'..'z').each do |h|
('a'..'z').each do |g|
together = i+j+h+g
print together
case together
when together == target
return print txt.read
end
end
end
end
end
end
words("abcd")
提前致谢。
答案 0 :(得分:1)
('a'..'z').
to_a.
repeated_permutation(4).
map(&:join).
detect { |w| w == target }
答案 1 :(得分:0)
这不是case
的工作方式,您应该使用if
代替:
def words(target)
filename = ARGV.first
txt = open(filename)
('a'..'z').each do |i|
('a'..'z').each do |j|
('a'..'z').each do |h|
('a'..'z').each do |g|
together = i+j+h+g
print together
if together == target
return print txt.read
end
end
end
end
end
end
words("abcd")
或者,如果您坚持使用case
(由于某种原因):
case together
when target
return print txt.read
end