#;2> (topological-sort
'((i am)
(not trying)
(confuse the)
(am trying)
(trying to)
(am not)
(trying the)
(to confuse)
(the issue))
eqv?)
(not i am trying to confuse the issue)
die Sublisten Bestellung auf diese Weise kann es machen mehr klar, was die richtige Ausgabe sollte sein:Topologisch-Sortierfehler in Huhn-Schema?
(i am)
(am not)
(not trying)
(trying to)
(to confuse)
(am trying)
(confuse the)
(trying the)
(the issue)
Es scheint, dass die Reihenfolge sein sollte:
i am not trying to confuse the issue
Ist das ein Bug oder fehle ich etwas?
---- Edit: ----
Kombination Sublisten mit gemeinsamen Köpfen:
(topological-sort
'((i am)
(not trying)
(confuse the)
(am trying not)
(trying to the)
(to confuse)
(the issue))
eqv?)
(i am not trying to confuse the issue)
So scheint es der richtige Ansatz zu Vorprozess ist der Eingang sicher zu stellen, dass keine zwei Teil-Listen teilen Sie den gleichen Kopf.
die Rosetta-Code topologische Sortierung Problem Solving:
(use srfi-1) ; list operators
(use srfi-69) ; hash-tables
(define data
'((des_system_lib std synopsys std_cell_lib des_system_lib dw02 dw01 ramlib ieee)
(dw01 ieee dw01 dware gtech)
(dw02 ieee dw02 dware)
(dw03 std synopsys dware dw03 dw02 dw01 ieee gtech)
(dw04 dw04 ieee dw01 dware gtech)
(dw05 dw05 ieee dware)
(dw06 dw06 ieee dware)
(dw07 ieee dware)
(dware ieee dware)
(gtech ieee gtech)
(ramlib std ieee)
(std_cell_lib ieee std_cell_lib)
(synopsys)))
(define table (make-hash-table))
(for-each
(lambda (xs)
(let ((head (car xs)) (tail (cdr xs)))
(for-each
(lambda(key)
(when (not (eqv? key head))
(hash-table-update!/default
table key (lambda (accum) (cons head accum)) '())))
tail)))
data)
(define answer
(topological-sort (hash-table->alist table) eqv?))
answer
Ein mögliches Ergebnis (da Hash-Tabellen ungeordnet sind, kann es jedes Mal anders sein):
(std ieee dware dw05 dw06 dw07 ramlib std_cell_lib gtech synopsys
dw02 dw01 des_system_lib dw03 dw04)
Der Versuch, die zur Validierung Antwort:
(any
(lambda (tail)
(any
(lambda (key)
(and (hash-table-exists? table key)
(member (car tail) (hash-table-ref table key))))
(cdr tail)))
(reverse (pair-fold cons '() answer)))
#f
Es scheint zu stimmen.
Eröffnet vor 2 Jahren #sadpanda – leppie
Obwohl klingt der OP Text wie Trolling – leppie