Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function print_map()
- local onceVisited = 0
- for i=1, #map do
- for j=1, #map[i] do
- io.write(map[i][j])
- if map[i][j] ~= 0 then
- onceVisited = onceVisited + 1
- end
- end
- print("")
- end
- print("Number of houses visted atleast once: " .. onceVisited)
- end
- function gen_dirs(file)
- local result = {}
- local vector = {0,0}
- local maxX = 0
- local maxY = 0
- local minX = 0
- local minY = 0
- if type(file) == "string" then
- for line in io.lines(file) do
- for i in string.gmatch(line, ".") do
- if i == "^" then
- vector[2] = vector[2] + 1
- elseif i == "v" then
- vector[2] = vector[2] - 1
- elseif i == ">" then
- vector[1] = vector[1] + 1
- elseif i == "<" then
- vector[1] = vector[1] - 1
- end
- maxX = (vector[1] > maxX) and vector[1] or maxX
- maxY = (vector[2] > maxY) and vector[2] or maxY
- minX = (vector[1] < minX) and vector[1] or minX
- minY = (vector[2] < minY) and vector[2] or minY
- result[#result + 1] = i
- end
- end
- end
- return result, maxX, maxY, minX, minY
- end
- directions, maxX, maxY, minX, minY = gen_dirs("problem_3.txt")
- print(maxX .. " " .. maxY .. " " .. minX .. " " .. minY)
- padX = maxX + math.abs(minX)
- padY = maxY + math.abs(minY)
- map = {}
- for i=1, padY + 8 do
- map[i] = {}
- for j=1,padX + 8 do
- map[i][j] = 0
- end
- end
- posX = padX - maxX + 1
- posY = padY - maxY
- map[posY][posX] = map[posY][posX] + 1
- for i=1,#directions do
- if directions[i] == "^" then
- posY = posY - 1
- elseif directions[i] == "v" then
- posY = posY + 1
- elseif directions[i] == ">" then
- posX = posX + 1
- elseif directions[i] == "<" then
- posX = posX - 1
- end
- map[posY][posX] = map[posY][posX] + 1
- end
- print_map()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement