Вернуть циклы for и распечатать текстовый файл
Я пробую код, который откроет файл, когда метод for - loop будет генерировать буквы, и когда эти буквы будут объединены вместе и сформировать "abcd", это вернет скрипт и напечатает текстовый файл. Я пробовал разные возможности, но на данный момент смог остановить сценарий и напечатать все время письма, а также распечатать файл. Но никогда не удавалось заставить все работать вместе.
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")
Заранее спасибо.
2 ответа
Решение
Это не как 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
('a'..'z').
to_a.
repeated_permutation(4).
map(&:join).
detect { |w| w == target }