Aloha liebe Gemeinde,
ich stehe aktuell vor dem Problem eine Liste in eine Linkssequenz umwandeln zu müssen. Bevor jemand fragt: das habe ich mir nicht selber ausgedacht sondern unser Übungsgruppenleiter in der Uni.
Jetzt zu meiner eigentlichen Frage: Linkssequenzen werden doch eigentlich als Tupel dargestellt und können daher nicht verändert werden, solange das Programm läuft. Also dürfte es doch auch nicht möglich sein während der Laufzeit ein leeres Tupel mit den Listenelementen aufzufüllen oder gibt es da eine Variante die ich nur noch nicht kenne?
Info-Sheet Linkssequenzen
Beste Grüße
Simon
Liste in Linkssequenz umwandeln
Etwas Code-Golf:
Code: Alles auswählen
left_sequence = lambda items: (it:=iter(items)) and ((a, left_sequence(it)) if (a:=next(it, it)) is not it else ())
- __blackjack__
- User
- Beiträge: 13103
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
Für Code-Golf sind die Namen etwas lang und es wird auch ohne Not jedes beliebige iterierbare (endliche) Objekt verarbeitet statt nur Listen. Eine Lösung für Listen bekommt man in 37 Zeichen hin.
Eine Lösung für beliebige iterierbare Objekte würde ich mit `reduce()` und `more_itertools.always_reversible()` schreiben. Hier mal mit Hy, nicht das ich am Ende noch Hausaufgaben 1:1 löse:
Eine Lösung für beliebige iterierbare Objekte würde ich mit `reduce()` und `more_itertools.always_reversible()` schreiben. Hier mal mit Hy, nicht das ich am Ende noch Hausaufgaben 1:1 löse:
Code: Alles auswählen
#!/usr/bin/env hy
(import functools [reduce]
hyrule *
more-itertools [always-reversible])
(require hyrule *)
(defn list->cons-list [items]
(reduce (fn [a b] #(b a)) (always-reversible items) #()))
(defmain []
(pprint (list->cons-list [1 2 3])))
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
als ich den Hy-Code sah, da fühlte ich mich an alte Zeiten erinnert, als ich mich mal kurze Zeit mit Common Lisp beschäftigt hatte und hatte mich gefragt, warum kommt er jetzt hier mit irgendwas das sich Hy nennt und wie Lisp aussieht?. Nach einer kurzen Suche im Web dann "was zur Hölle? Gibt es denn zu allem was man sich nicht ausdenken kann ein Python-Modul?" akuter Anfall von völliger Verblüffung! Danke dafür...