Advertisement
call23re

AoC 2017 D3P2

Dec 3rd, 2017
205
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.26 KB | None | 0 0
  1. local created = {['0,0']=1,['1,0']=1}
  2. local target = 368078
  3.  
  4. local Direction = 'U'
  5. local Directions = {['U']={0,-1},['D']={0,1},['L']={-1,0},['R']={1,0}}
  6. local Coordinate = {1,0}
  7. local len = 1
  8. Part.Create(0, 0, 1, workspace, true)
  9. Part.Create(1, 0, 1, workspace, true)
  10.  
  11. function getSurroundings()
  12.     local x,y = Coordinate[1], Coordinate[2]
  13.     local function c(y,x)
  14.         return created[x .. ',' .. y]
  15.     end
  16.     return {c(y-1,x), c(y+1,x), c(y-1,x-1), c(y-1,x+1), c(y+1,x+1), c(y+1,x-1), c(y,x-1), c(y,x+1)}
  17. end
  18.  
  19. function getNum(surroundings)
  20.     local num = 0
  21.     for _,v in pairs(surroundings) do
  22.         num = num + v
  23.     end
  24.     num = (num == 0 and 1 or num)
  25.     return num
  26. end
  27.  
  28. for _ = 1,20 do
  29.     for i = 1,len do
  30.         local dir = Directions[Direction]
  31.         Coordinate[1] = Coordinate[1] + dir[1]
  32.         Coordinate[2] = Coordinate[2] + dir[2]
  33.         local surroundings = getSurroundings()
  34.         local num = getNum(surroundings)
  35.         created[Coordinate[1]..','..Coordinate[2]] = num
  36.         Part.Create(Coordinate[1], Coordinate[2], num, workspace, true)
  37.         if num > target then
  38.             print(num)
  39.             return
  40.         end
  41.     end
  42.     Direction = (Direction=='R' and 'U' or Direction == 'U' and 'L' or Direction == 'L' and 'D' or Direction == 'D' and 'R')
  43.     len = len + (Direction=='D' and 0 or Direction == 'U' and 0 or 1)
  44. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement