array = [];
data = Hash.new {|h,k| h[k]=[]}
File.foreach("import.dat").with_index do |line|
a, b = line.split("-")
a.strip!
b.strip!
data[a] << b
data[b] << a
end
class String
def is_lower?
self == self.downcase
end
end
def recursive_dfs(data,doubled,visited,path,from)
if from == "end"
$i = $i+1
return true
end
if visited.include?(from)
return false if from == 'start' || doubled
doubled = true
end
data[from].each do |dest|
if from.is_lower?
visited = visited + [from]
end
recursive_dfs(data,doubled,visited,path,dest)
end
end
$i = 0
recursive_dfs(data,true,[],[],"start")
p $i
$i = 0
recursive_dfs(data,false,[],[],"start")
p $iメモ
再帰関数を使って解く問題②。経路探索。Day 9の問題は途中で良くわからなくなったが、こっちの問題はなんとか最後まで解くことが出来た。いずれにせよ、再帰関数にある苦手意識を払拭しなくては。