Hallo zusammen, ich würde mich sehr freuen, wenn ihr mir bei meiner Aufgabe helfen könntet. ich komme leider nicht weiter. Die Aufgabe ist:
//gibt ein pair von zwei listen zurück:
// -die linke liste enthält alle Elemente, auf die das Prädikat p zutrifft
// -die rechte liste enthält alle Elemente, auf die das Prädikat p nicht zutrifft
fun<A> partition(list: List<A>, p: (A) -> Boolean): Pair<List<A>, List<A>>
Diese Funktion muss iterativ(mit veränderlichen Variablen und Schleifen) implementiert werden.
Vielen Dank im Voraus!
Funktionen höherer Ordnung auf listen
Wir liefern keine Lösungen auf Bestellung. Siehe auch
viewtopic.php?f=1&t=1689
Was hast du probiert? Was ist dir unklar?
viewtopic.php?f=1&t=1689
Was hast du probiert? Was ist dir unklar?
- __blackjack__
- User
- Beiträge: 14056
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@deri: Das ist kein gültiges Python. Du solltest das erst einmal in gültiges Python übersetzen. Und dann gibt's die Funktionalität schon fast so im `more_itertools`-Modul:
In Kotlin, wonach die Syntax von der Funktionssignatur aussieht, könnte man das so lösen:
Code: Alles auswählen
#!/usr/bin/env python3
from typing import Callable, Iterable, List, T, Tuple
from more_itertools import partition as _partition
def partition(
iterable: Iterable[T], predicate: Callable[[T], bool]
) -> Tuple[List[T], List[T]]:
"""
Gib ein Paar von zwei Listen zurück. Die erste Liste enthält alle Elemente
auf die das Prädikat zutrifft, die Zweite alle Elemente auf die das Prädikat
nicht zutrifft.
"""
return tuple(map(list, reversed(_partition(predicate, iterable))))
def main():
print(partition(range(10), lambda n: n % 2 == 0))
if __name__ == "__main__":
main()
Code: Alles auswählen
fun<A> partition(list: List<A>, p: (A) -> Boolean): Pair<List<A>, List<A>> {
val xs = ArrayList<A>()
val ys = ArrayList<A>()
for (a in list) (if (p(a)) xs else ys).add(a)
return Pair(xs, ys)
}
“Vir, intelligence has nothing to do with politics!” — Londo Mollari