Antwort: [Python-de] Noch eine Denksportaufgabe

Axel_Gerke at peacock.de Axel_Gerke at peacock.de
Thu Oct 10 17:30:17 EDT 2002


Hallo zusammen,

Tino Wildenhain und meine Wenigkeit haben mal diese nette Aufgabe
durchgesprochen
und sind zu folgender Lösung gekommen:

>>> def nrotate(l,n):
...     n=n % len(l) # bound checking
...     return l[-n:]+l[:-n]


Gruß
Tino + Axel



Gerhard Häring, 10.10.2002 10:47:50
>Im DSE Wiki wird gerade folgende Aufgabe gestellt
>(http://www.wikiservice.at/dse/wiki.cgi?SoftwareDenkSport_2):
>
>    Schreibe eine Prozedur, die die Elemente eines Arrays mit M Elementen um n
>    rotiert. -M < n < M
>
>    Beispiel: M = 6, n = 2. Vorher: {1, 2, 3, 4, 5, 6} Nachher: {5, 6, 1, 2, 3,

>4}
>
>    Versuche Speicherbedarf zu minimieren.
>
>Eine simple Python-Lösung von mir wäre:
>
>    def rot(lst, n):
>        if n < 0: n = len(lst) + n
>        for i in xrange(n):
>            lst.insert(0, lst.pop(-1))
>
>diese wurde aber kritisiert, weil sie nicht mit ARRAYs arbeitet. Gesucht ist
>also eine Lösung, die mit wirklichen ARRAYs arbeitet (z. B. array.array oder
>einfach die listenspezifischen Methoden wie pop/insert/append/... weglassen).
>
>-- Gerhard
>
>
>
>_______________________________________________
>Python-de maillist  -  Python-de at starship.python.net
>http://starship.python.net/mailman/listinfo/python-de






More information about the Python-de mailing list