Code: Alles auswählen
def reverse(seq, i=0):
if i < len(seq)/2:
seq[i],seq[-(i+1)] = seq[-(i+1)], seq[i]
reverse(seq, i+1)
Code: Alles auswählen
def reverse(seq, i=0):
if i < len(seq)/2:
seq[i],seq[-(i+1)] = seq[-(i+1)], seq[i]
reverse(seq, i+1)
Code: Alles auswählen
def stupidhomework(l):
return l[-1:] + stupidhomework(l[0:-1]) if l else []
Code: Alles auswählen
reduce(lambda xs, x: [x]+xs, [1,2,3], [])
Code: Alles auswählen
(define (reverse alist)
(foldl cons '() alist))
Schlimmer noch: Er "löscht" die Ausgangsliste.Defnull hat geschrieben:Ganz abgesehen davon überschreibst du ein buildin. Böse!
Code: Alles auswählen
>>> l
[0, 1, 2]
>>> reversed(l)
[2, 1, 0]
>>> l
[]
Code: Alles auswählen
reverse :: [a] -> [a]
reverse [] = []
reverse (x:xs) = reverse xs ++ [x]
Code: Alles auswählen
def f(a):
if len(a) > 1:
m = len(a) / 2
return f(a[m:]) + f(a[:m])
return a
Code: Alles auswählen
let rec reverse = function
| [] -> []
| x :: xs -> (reverse xs) @ [x]
Die bisher coolste Lösung finde ich.bords0 hat geschrieben:Divide-and-conquer darf natürlich nicht fehlen!Code: Alles auswählen
def f(a): if len(a) > 1: m = len(a) / 2 return f(a[m:]) + f(a[:m]) return a
Ja, gefällt mir auch gut. Ließe sich auch so schreiben:Defnull hat geschrieben:Die bisher coolste Lösung finde ich.bords0 hat geschrieben:Divide-and-conquer darf natürlich nicht fehlen!Code: Alles auswählen
def f(a): if len(a) > 1: m = len(a) / 2 return f(a[m:]) + f(a[:m]) return a
Code: Alles auswählen
f = lambda a: f(a[len(a)/2:])+f(a[:len(a)/2]) if len(a)>1 else a
Danke für die Lösung. Ich war schon am verzweifeln, weil ich immer das hier versucht habe: [...]lunar hat geschrieben:Ocaml:Code: Alles auswählen
let rec reverse = function | [] -> [] | x :: xs -> (reverse xs) @ [x]
Code: Alles auswählen
...
def reverse(l: List[Any]): List[Any] = l match {
case List() => l
case _ => reverse(l.tail) ::: l.head
}
...
Code: Alles auswählen
USING: sequences syntax ;
IN: reverser
: reverse ( seq -- newseq ) { } [ prefix ] reduce ;
Code: Alles auswählen
USING: kernel ;
IN: sequences
: reverse ( seq -- newseq )
[
dup [ length ] keep new-sequence [ 0 swap copy ] keep
reverse!
] keep like ;
Code: Alles auswählen
List myReverse := method(
if(self isEmpty, List clone, self slice(0, -1) myReverse prepend(self last))
)