Re: Advent of Code
Verfasst: Samstag 1. Dezember 2018, 13:50
				
				Eine Musterlösung in dem Sinne ist mir nicht bekannt. Es gibt zu jedem Tag einen Thread im offiziellen Subreddit, in dem jeder seine Lösung vorstellen kann: https://www.reddit.com/r/adventofcode/c ... solutions/
Für viele scheint das allerdings eher ein Wettbewerb um den cleversten One-Liner zu sein (sicher auch wegen des Leaderboards), daher zeigen die Python-Lösungen meiner Meinung nach nicht immer unbedingt das sauberste Python.
Hier mal meine Lösung, die sicher auch nicht mustergültig ist:
(Wenn man für 'seen' eine Liste nimmt statt eines Sets, wird es übrigens sehr langsam; darauf bezog sich mein erster Post).
Und hier noch meine Lösung in AWK:
			Für viele scheint das allerdings eher ein Wettbewerb um den cleversten One-Liner zu sein (sicher auch wegen des Leaderboards), daher zeigen die Python-Lösungen meiner Meinung nach nicht immer unbedingt das sauberste Python.
Hier mal meine Lösung, die sicher auch nicht mustergültig ist:
Code: Alles auswählen
#!/usr/bin/env python3
import fileinput
from itertools import cycle
def main():
    adjustments = [int(line) for line in fileinput.input()]
    print('Sum:', sum(adjustments))
    frequencies = set()
    frequency = 0
    for adjustment in cycle(adjustments):
        frequency += adjustment
        if frequency in frequencies:
            print("Repeat:", frequency)
            break
        frequencies.add(frequency)
if __name__ == '__main__':
    main()
Und hier noch meine Lösung in AWK:
Code: Alles auswählen
#!/usr/bin/awk -f
{
    sum += $1
    buffer[NR-1] = $1
}
END {
    print "Sum:", sum
    frequency = 0
    i = 0
    size = length(buffer)
    while (1) {
        frequency += buffer[i]
        if (frequency in seen) {
            print "Repeat:", frequency
            break
        }
        seen[frequency] = 1
        i = (i+1) % size
    }
}
 
 
 Insofern finde ich es sehr gut, wenn wir hier pythonische Lösungen sammeln können.
 Insofern finde ich es sehr gut, wenn wir hier pythonische Lösungen sammeln können. , das muss ich mir merken
 , das muss ich mir merken   
 
