Blog

Advent of Code Tag 21: Es ist ein Marathon, kein Sprint

Serge Beaumont

Aktualisiert Oktober 21, 2025
3 Minuten

....Aaaund hier sind wir nun, im letzten Abschnitt des #AdventOfCode 2019 Rätsel-A-Ganzes! Wie jedes Jahr hat das böse Genie Eric Wastl die Rätsel allmählich gesteigert, und jetzt sind wir bei den Rätseln angelangt, die Sie sich ansehen und denken: "Oooh, noch eins? Ich habe es erst am Vortag gelöst!"

Und nicht nur das, Advent of Code bringt mich dazu, so zu handeln, wie es dem Weihnachtsthema entspricht. Der Versuch, diese Rätsel zu lösen, hat mich mehr als einmal dazu gebracht, meine Augen zum Himmel zu erheben und um Inspiration zu beten - und das, obwohl ich Atheist bin :-).

Das zeigt sich in meinem Visualisierungscode. Während meine ersten Visualisierer schicke Dinger mit Grafiken und Curses waren, möchte ich jetzt nur noch ein paar schnelle Print-Anweisungen einbauen, um zu sehen, was los ist. So wurde PrintVisualiser geboren, der kleine Bruder von Visualizer und CursesVisualizer.

Es hat sich herausgestellt, dass es einen netten Nebeneffekt hat. Ich versuche, mit Numpy nicht zu "schummeln", und es hat sich herausgestellt, dass es bei einer spärlichen Matrix oder sogar einer nicht so spärlichen Matrix völlig ausreicht, ein Wörterbuch zu verwenden, das durch ein x,y-Tupel indiziert ist!

class PrintVisualizer(object):
    """Einfachster Visualisierer, erzeugt einfach eine Reihe von print()-Anweisungen."""
    def __init__(self, area: (Point, Point) = None, default_char=EMPTY):
  self.points = dict()
  self.default_char = default_char
  self.area = Fläche
  def plot(self, xy, c):
  self.points[xy] = c
  def print(self, padding=0):
  if self.area:
  min_xy, max_xy = self.area
  sonst:
  min_xy, max_xy = min_max(self.points, padding)
  for y in range(min_xy.y, max_xy.y + 1):
  Zeile = Liste()
  for x in range(min_xy.x, max_xy.x + 1):
  if (x, y) in self.points:
  line.append(self.points[(x, y)])
  sonst:
  line.append(self.default_char)
  print(''.join(Zeile))

Also, auf zu meinen letzten Tagen: Mal sehen, ob ich mehr als die 21 Tage schaffe, die ich letztes Jahr geschafft habe!

Advent des Codes 2019 Serie

Verfasst von

Serge Beaumont

Contact

Let’s discuss how we can support your journey.