Thread Dynamisierung von Code - Grenzen der Machbarkeit?
(13 answers)
Opened by ArthurDent at 2017-02-21 23:02
Ok. Sehr fortgeschritten, finde ich.
Ich hab' das für mich mal nach Python übersetzt (da kapier' ich "List of List" besser): Code (python): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 #!/usr/bin/python # coding: utf-8 n = 3; k = 2; def toFlatString(todo1, curr_k, callevel, a = None): if a is None: a = [] for i in todo1: if isinstance(i, list): toFlatString(i, None, callevel + 1, a) else: a.append(str(i)) if callevel == 1: a.append(str(curr_k)) return ", ".join(a) todo_list = [[0, []]] while todo_list: todo = todo_list.pop() local_n = todo[0] + 1; for curr_k in range(k + 1): if local_n == n: print toFlatString(todo[1], curr_k, 1) else: todo_list.append([local_n, [todo[1], curr_k]]) (Die Funktion ist nur für das "print", braucht einen nicht zu kümmern: Perl drückt Listen von Listen platt, Python nicht, dafür die Funktion. Egal.) Man holt sich also eine Liste aus "todo_list" nach "todo" mit pop(). Und dann fügt man wieder eine Liste hinzu, die zwei Elemente enthält. Einmal local_n und dann noch eine Liste (Element 1 von todo). Die dann auch noch irgendwie ein paarmal um curr_k anwächst. Und das funktioniert dann auch noch allgemeingültig für verschiedene 'n' und 'k'. Hmmm. Wirklich genial. Ich gebe zu, daß ich darauf nicht gekommen wäre und schon gar nicht das mit Blick auf diese Kombinationen hätte schreiben können. Ich dachte noch, vielleicht wäre es einfacher zu verstehen, wenn man das, was "todo" enthält, als Objekt schreiben würde, mit local_n und todo[1] als Attributen? Hat bisher aber noch nicht geklappt. Ich bin jedenfalls sehr beeindruckt. Last edited: 2017-02-22 18:40:45 +0100 (CET) |