main.jl 984 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. using BenchmarkTools
  2. using DataStructures
  3. selfdir = joinpath(splitdir(@__FILE__)[1], "input")
  4. data = readlines(selfdir)
  5. test_instr = split(
  6. """
  7. F10
  8. N3
  9. F7
  10. R90
  11. F11
  12. """)
  13. a = collect(zip(first.(test_instr), parse.(Int, [i[2:end] for i in test_instr])))
  14. instr = collect(zip(first.(data), parse.(Int, [i[2:end] for i in data])))
  15. #--------part1
  16. function get_man(instr)
  17. sides = ['E', 'S', 'W', 'N']
  18. s = 1
  19. direc = DefaultDict(0)
  20. for (dir, dis) in instr
  21. if dir == 'F'
  22. direc[sides[s]] += dis
  23. elseif dir == 'R'
  24. s += Int(dis/90)
  25. s = s > 4 ? s % 4 : s
  26. elseif dir == 'L'
  27. s -= Int(dis/90)
  28. s = s < 1 ? 4 + s : s
  29. else
  30. direc[dir] += dis
  31. end
  32. end
  33. abs(direc['E']-direc['W']) + abs(direc['N']-direc['S'])
  34. end
  35. #--------part2
  36. sides = ['E', 'S', 'W', 'N']
  37. s = 1
  38. waypoint = DefaultDict(0)
  39. ship = DefaultDict(0)
  40. waypoint['E'] = 10
  41. waypoint['N'] = 1
  42. get_man(instr)