Advent of Code 2023, Tag 1

preview_player
Показать описание
Lösung Part1 & Part2

Code 506720-952fc6c0 unter "Join" eingeben.

Рекомендации по теме
Комментарии
Автор

Junge junge Part 2 Lösung ist so genial von dir gelöst. Ich liebe deine Videos weil ich mich danach am falschen Arbeitsplatz und dümmlich fühlen kann (:

hackbratan
Автор

Ich bin dieses Jahr auch wieder dabei. :) Habe seit dem letzten Advent of Code nicht mehr wirklich programmiert und deswegen die regex und string methoden nicht mehr gekannt und das dann über indizes und ein dictionary gelöst, hab aber etwas gebraucht muss ich sagen. Bei der ersten Aufgabe habe ich die Ascii codes der Zahlen benutzt um sie im String zu finden. Deinen Ansatz finde ich auch sehr interessant und die verwendeten Funktionen hab ich mir gleich mal notiert.^^

richirossel
Автор

Mein Ansatz zu Part2 war es, ...






die Tatsache zu nutzen, dass uns die Zahlen in der Mitte nicht interessieren. Daher habe ich die Position des ersten und des letzten Zahlenwortes gesucht und dann an diese Positionen die jeweils entsprechende Zahl ersetzt.

maikfriemel
Автор

Einfach den Text Buchstabe/Zahl für Buchstabe/Zahl durchgehen und einfach den ersten gesuchten merken. Für den letzten geht man einfach bis zum Schluss und setzt den bei gefunden.

amiganer
Автор

So tricky! Die Lösung ist in Effizienz schwer zu toppen.
Für Teil 1 hab ich mit ‚strip()’ die Buchstaben vorn und hinten abgeschnitten. Das war noch easy. Aber Teil 2 war heavy. Ich hab es mit ‚find()‘ ab Index und einem dictionary gelöst.

olliklee
Автор

Ich habe das Problem mit finditer gelöst nachdem Suchen und Ersetzen nicht klappen wollte.

torestelzner
Автор

bei der Erklärung zu Part 2 ist mir als erster Gedanke zur Lösung "o1ne" als replacement gekommen. Deine Lösung ist aber viel sicherer :D

dietrichwaldschmidt
Автор

Hi Gravitar, du meintest einmal in einem Video, das du nicht studiert hast. Was machst du beruflich, wenn ich fragen darf und wie hast du das Programmieren gelernt?

pyuc
Автор

Part 2 hat mich ebenfalls für den ersten Tag sehr überrascht. Wenn das so weitergeht .... ??? Dein Ansatz dafür ist sehr interessant. Natürlich, ist ja auch vom Profi! Ich habe Part 2 aber schon mittels ".startswith" gelöst (siehe weiter unten). Freue mich schon auf deine morgige Lösung zu Tag 2.
Achtung Spoiler!!!




with open ("input.txt") as f:
data = [line for line in f.read().split("\n")]

#Part 2
def find2(line):
string = ""
for i, z in enumerate(line):
for k in Dic:
if line[i:].startswith(k):
string += str(Dic[k])
break
else:
if z.isdigit():
string += z
break
return string

Dic = {"one":1, "two":2, "three":3, "four":4, "five":5, "six":6, "seven":7, "eight":8, "nine":9}
Value2 = []
for line in data:
number = find2(line)
number = number[0] + number[-1]
Value2.append(int(number))
print("Part 2: ", sum(Value2))

romanbuchta