[Python-de] Kleine Aufgabe, große Wirkung

Stephan Diehl stephan.diehl at gmx.net
Mon Apr 7 10:08:19 EDT 2003


def comp(tree,f):
    mylist = [tree]
    for item in mylist:
        if item is None:continue
        if f(item[0]):return item
        mylist.extend(item[1:])

if __name__ == '__main__':
    def func(test):
        return lambda x:x==test
    print comp(t,func(9))

Ich habe aber eine Nacht drüber geschlafen :-)

Stephan

On Sonntag, 6. April 2003 05:50, Christian Tismer wrote:
> Liebe Python-de Liste,
>
> wie Ihr wißt, arbeite ich mit meinem Stackless-Zeug zur Zeit
> fü IronPort. Die haben kürzlich neue Bewerber mit einer
> nicht ganz trivialen Aufgabe getestet und sind zu einem bestürzenden
> Ergebnis gekommen: Nicht eine Sau konnte den Test bestehen!
>
> Nun bin ich ja als Schweinepuckel bekannt, und habe mir gedacht,
> da mach' ich doch mal den gleichen Test mit den Hirnies aus
> Python-de, mal sehn, wer was kann und wer nicht.
>
> Die Aufgabe ist eigentlich nicht wirklich schwer und sollte
> für jedermann lösbar sein, der ein paar algorithmische
> Grundlagen drauf hat und diese auch anzuwenden weiß.
> (Auf weia, jetzt seit Ihr schon total sauer und auf 180,
> aber das wollte ich ja auch so erzeugen :-))
>
> Also, jetzt geht's los: Gegeben ist ein unsortierter Baum.
> Den sollt Ihr "breadth-first" durchsuchen, linear, also es ist
> gar kein Such-Problem, einfach nur eine Frage der richtigen
> Reihenfolge. Die Knoten des Baums sehen beispielsweise so aus:
>
>              1
>      2               3
>   4      5       6       7
> 8 9   10 11   12 13   14 15
>
> Was man tun soll, ist, diese Knoten in der durch die Zahlen
> angegebenen Reihenfolge zu durchsuchen. Der Vorschlag ist,
> eine Testfunktion zu übergeben, welche versucht, den richtigen
> Knoten zurückzugeben. Ich empfehle, ein print-Statement
> einzubauen, welches verifiziert, daß Ihr wirklich in der
> vorgegebenen Reihenfolge sucht.
>
> Der Einfachheit halber gebe ich hier einen Test-Baum vor, der
> trivialerweise die Knotennummern in dieser Reihenfolge
> enthält. Das ist zwar nicht der generelle Fall, aber für das
> Beispiel völlig ausreichend.
>
> Hier der Beispiel-Baum: [value, child1, child2]
>
> t = [1,
>       [2,
>        [4,
>         [8, None, None],
>         [9, None, None]],
>        [5,
>         [10, None, None],
>         [11, None, None]]],
>       [3,
>        [6,
>         [12, None, None],
>         [13, None, None]],
>        [7,
>         [14, None, None],
>         [15, None, None]]]]
>
> Jetzt bin ich wirklich gespannt, ob die Deutsche
> Informatik-Grundausbildung effektiver ist als die Amerikanische.
> Leute, die die Lösung schon wußten, bitte ich, sich zurückzunehmen.
> Ich muß zu meiner Schande gestehen, ich habe (nach einer dicken
> Fete, allerdings) glatt eine Viertelstunde für die Lösung
> gebraucht.
> Sie ist 9 Zeilen lang, und ich habe mir danach eine mit 7 Zeilen
> ansehen müssen, die zwar etwas länger rechnet, aber in der Tat
> etwas besser ist. Wie auch immer, jeder Lösung in der Größenordnung
> ist akzeptabel.
>
> Ich habe eine neue Firma gegründet, centera.de . Diese Firma wird
> Software-Lösungen aller Art bearbeiten, mit Präferenz auf
> Python, versteht sich. Wer obiges Problem in etwa in meiner Zeit
> lösen konnte, kann sich da mal gerne mal bei mir vorstellen.
> Ich brauche gute Leute, die auf Consulting-Basis mit mir arbeiten
> möchten.
>
> Sollten sich genügend viele finden, die mit dieser Aufgabe
> substantielle Probleme haben, schlage ich hingegen folgendes
> vor: Ich biete Euch ein "Coaching" an, bei dem intensiv mehrere
> Wochen lang geübt wird, solcherart Probleme zu lösen.
> Die hierbei geforderte Problemlösungsstrategie ist genau das, was
> die Informatik-Ausbildung hier und in anderen Ländern konsequent
> versäumt zu lehren und zu vermitteln. Zumindest war dies mein
> erster, niederschmetternder Eindruck nach dem Bericht von
> IronPort.
> Also, wer braucht eine Ausbildung als "Problemlöser"?
>
> ciao -- chris





More information about the Python-de mailing list