inst/notes-day-23b-moves.R

f <- function(x1, y1, x2, y2) {
  abs(x2 - x1) + abs(y1 - y2)
}

make_tracker <- function() {
  q <- 0
  function(x1 = 0, y1 = 0, x2 = 0, y2 = 0) {
    q <<- q + f(x1, y1, x2, y2)
    q
  }
}
a <- make_tracker()
b <- make_tracker()
c <- make_tracker()
d <- make_tracker()

# input

#############
#...........#
  #B#C#A#B#
  #D#C#B#A#
  #D#B#A#C#
  #C#D#D#A#
  #########


# first part
#12345678901
#############
#AA.....B.CC#
  #B#.#.#B#
  #D#.#.#A#
  #D#B#.#C#
  #C#D#D#A#
  #########
#  3 5 7 901

a(7, 2,  1, 1)
b(7, 3,  8, 1)
c(5, 2, 11, 1)
c(5, 3, 10, 1)
a(7, 4,  2, 1)

#############
#AA.D.....CC#
  #B#.#.#.#
  #D#B#.#A#
  #D#B#.#C#
  #C#B#D#A#
  #########
#  3 5 7 901

b(5, 4, 6, 1)
d(5, 5, 4, 1)
b(6, 1, 5, 5)
b(8, 1, 5, 4)
b(9, 2, 9, 1)
b(9, 1, 5, 3)

#############
#AA.D.D...AA#
  #B#.#.#.#
  #D#B#C#.#
  #D#B#C#.#
  #C#B#C#.#
  #########
#  3 5 7 901

d(7, 5, 6, 1)
c(10, 1, 7, 5)
c(11, 1, 7, 4)
a(9, 3, 11, 1)
c(9, 4, 7, 1)
c(7, 1, 7, 3)
a(9, 5, 10, 1)


#############
#AA.......AA#
  #.#B#.#D#
  #.#B#C#D#
  #.#B#C#D#
  #C#B#C#D#
  #########
#  3 5 7 901

d(6, 1, 9, 5)
d(4, 1, 9, 4)

b(3, 2, 5, 1)
b(5, 1, 5, 2)

d(3, 3, 3, 1)
d(3, 1, 9, 3)

d(3, 4, 3, 1)
d(3, 1, 9, 2)

#############
#AA.......AA#
  #.#B#.#D#
  #.#B#C#D#
  #.#B#C#D#
  #C#B#C#D#
  #########
#  3 5 7 901

c(3, 5, 3, 1)
c(3, 1, 7, 2)
a(2, 1, 3, 5)
a(1, 1, 3, 4)
a(10, 1, 3, 3)
a(11, 1, 3, 2)

a() + 10 * b() + 100 * c() + 1000 * d()
tjmahr/adventofcode21 documentation built on Jan. 8, 2022, 10:41 a.m.