Advertisement
Guest User

AoC day 1 part 1

a guest
Dec 3rd, 2015
186
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.71 KB | None | 0 0
  1. function print_map()
  2.     local onceVisited = 0
  3.     for i=1, #map do
  4.         for j=1, #map[i] do
  5.             io.write(map[i][j])
  6.             if map[i][j] ~= 0 then
  7.                 onceVisited = onceVisited + 1
  8.             end
  9.         end
  10.         print("")
  11.     end
  12.     print("Number of houses visted atleast once: " .. onceVisited)
  13. end
  14.  
  15. function gen_dirs(file)
  16.     local result = {}
  17.     local vector = {0,0}
  18.     local maxX = 0
  19.     local maxY = 0
  20.     local minX = 0
  21.     local minY = 0
  22.     if type(file) == "string" then
  23.         for line in io.lines(file) do
  24.             for i in string.gmatch(line, ".") do
  25.                 if i == "^" then
  26.                     vector[2] = vector[2] + 1
  27.                 elseif i == "v" then
  28.                     vector[2] = vector[2] - 1
  29.                 elseif i == ">" then
  30.                     vector[1] = vector[1] + 1
  31.                 elseif i == "<" then
  32.                     vector[1] = vector[1] - 1
  33.                 end
  34.                
  35.                 maxX = (vector[1] > maxX) and vector[1] or maxX
  36.                 maxY = (vector[2] > maxY) and vector[2] or maxY
  37.                 minX = (vector[1] < minX) and vector[1] or minX
  38.                 minY = (vector[2] < minY) and vector[2] or minY
  39.                 result[#result + 1] = i
  40.             end
  41.         end
  42.     end
  43.     return result, maxX, maxY, minX, minY
  44. end
  45.  
  46.  
  47. directions, maxX, maxY, minX, minY = gen_dirs("problem_3.txt")
  48. print(maxX .. " " .. maxY .. " " .. minX .. " " .. minY)
  49. padX = maxX + math.abs(minX)
  50. padY = maxY + math.abs(minY)
  51.  
  52.  
  53. map = {}
  54. for i=1, padY + 8 do
  55.     map[i] = {}
  56.     for j=1,padX + 8 do
  57.         map[i][j] = 0
  58.     end
  59. end
  60.  
  61. posX = padX - maxX + 1
  62. posY = padY - maxY
  63. map[posY][posX] = map[posY][posX] + 1
  64. for i=1,#directions do
  65.     if directions[i] == "^" then
  66.         posY = posY - 1
  67.     elseif directions[i] == "v" then
  68.         posY = posY + 1
  69.     elseif directions[i] == ">" then
  70.         posX = posX + 1
  71.     elseif directions[i] == "<" then
  72.         posX = posX - 1
  73.     end
  74.     map[posY][posX] = map[posY][posX] + 1
  75. end
  76.  
  77. print_map()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement