''' HP codewars 2012 - problem 15 Queueing Theory, 9 points Es hatte etwas gedauert sich wieder etwas in die Stringoperationen hineinzufinden und die Queue aufzubauen. Ansonsten eher Tipparbeit. ''' def data_verarbeiten(data): ''' Bekommt die Daten und soll sie verarbeiten und das Ergebnis als String zurueckgeben... ''' # Variablen queue = [[] for i in range(9)] # Liste zum Abarbeiten queueLen = 0 # Laenge der Queue string = "" # Nimmt das Ergebnis auf stringLen = 0 # Laenge des Strings ablaufplan = [] # Regelt die Entnahme aus den Schlangen # Variablen uebernehmen data = data.split("\n") stringLen, queueLen = map(int,data[0].split(" ")) ablaufplan = [int(a[1]) - 1 for a in data[-1].split(" ")] # Einrichten der Queue string = " " * stringLen for zeile in range(1,queueLen+1): # Der range ist so gewaehlt, dass die erste Zeile (0) # mit den Metadaten und auch die letzte Zeile (queueLen+2) # mit dem Ablaufplan nicht geparst wird queue_id, position, content = data[zeile].split(" ") queue_id = int(queue_id[-1]) - 1 queue[queue_id].append([position,content]) # Wir arbeiten die queue ab for id in ablaufplan: # Ueber die id wird auf die jeweilige Zeile zugegriffen start, content = queue[id].pop(0) # Start und Ende festlegen start = int(start) ende = start + len(content) if start == 0: # z. B. # 0123456789 # WORT # 456789 string = content + string[ende:] else: # z. B. # 0123456789 # WORT # 012 789 string = string[:start] + content + string[ende:] return string data = """44 13 Q1 35 KNOWN Q1 20 IMPORT Q3 24 GRANT Q1 4 IN Q1 15 MADE Q1 32 AN Q2 39 LEDGE Q2 5 NOTION Q2 6 A Q2 16 OR Q3 0 IMAGE Q3 12 IS Q3 30 THIS Q1 Q3 Q3 Q3 Q2 Q1 Q2 Q1 Q3 Q1 Q2 Q2 Q1""" print(data_verarbeiten(data))Zumindest wird das Problem so gelöst.
Mittwoch, 6. Februar 2013
Queueing Theory (HP Codewars)
Die Lösung des Problems 15 „Queueing Theory“ von HP Codewars 2012 war nicht so kompliziert, sieht man von einigen Details ab. Problematisch vielleicht lediglich, dass eigentlich eine objektorientierte Umsetzung erwartet worden wäre:
Abonnieren
Kommentare zum Post (Atom)
Keine Kommentare:
Kommentar veröffentlichen