....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
- Advent of Code 2019 hat begonnen - Machen Sie mit!
- Advent of Code 2019 - Tag 2
- Advent des Codes: Wie Excel mir den Tag rettete und auch meinem Sohn den Tag rettete
- Advent des Codes - Tag 4: Visualisieren
- Advent des Codes - Tag 5: Saintaerkla2s
- Advent of Code - Tag 6: Wie ich an AoC hängen geblieben bin
- Advent of Code - Tag 7: Teilen Sie Ihren Arbeitsablauf
- Advent of Code - Tag 8: Wie einfache Dinge für manche Menschen sehr schwer sein können
- Advent of Code - Tag 9: Wie ich anfing, Spaß am Lösen von Programmierrätseln zu haben
- Advent of Code - Tag 10: Weltraum-Cowboys schießen Pixel in den Himmel
- Advent des Codes - Tag 11: Sein oder nicht sein
- Advent of Code - Tag 12: Nach dem Mond schießen
- Advent des Codes - Tag 14: Kettenreaktion
- Advent des Codes - Tag 16: Flüche
- Advent of Code - Tag 17: Vakuumieren eines Gerüsts mit dem Intcode-Programm
- Wie kleine grüne Männchen mir geholfen haben, ein Rätsel zu lösen
- Advent of Code - Tag 20: Ein bisschen Überarbeitung
- Advent of Code - Tag 21: Es ist ein Marathon, kein Sprint
- Advent of Code - Tag 22: Mischen von Karten bis in alle Ewigkeit
- Advent of Code - Tag 23: Das Netzwerk ist zuverlässig
- Advent of Code - Tag 24 & 25: Unkonventionelles Denken
Verfasst von
Serge Beaumont
Contact



