[Prolog] Dezimal zu Text umwandeln

Also meine Aufgabenstellung sieht so aus das ich eine Liste mit mehreren Listen ausgeben muss, die wiederum mit 0/1 Elementen befühlt ist. Also stimmt ja eigentlich bei mir, nur halt im ASCII - Code.
Und das mit den Listenoperator vor den drei Punkten, ist das er einfach nicht alles aufschreibt, keine Ahnung warum eigentlich. Meine Datei hat nein Zeilen, jeder kleine Liste steht für eine Zeile, in der neunten Liste steht dann nur mehr [ ... | ... ].
 
Jetzt weiß ich, wie Du Dir die Daten ausgeben lässt. Es ist üblich in Prolog, dass Zeichenketten als Listen von ASCII-Codes ausgegeben werden und dass längere Listen ab einem gewissem Punkt angekürzt werden. Jedoch kann ich Dir auf Anhieb auch nicht sagen, wie Du Dir alles mit einmal ausgeben lassen kannst, so dass Du alles so siehst, wie Du es gerne hättest.

Prinzipiell musst Du auf jede Zeile convert/2 anwenden, damit Du am Ende eine Liste von Listen hast, in denen die Werte dann als Nullen und Einsen stehen.
Code:
each_line( [] | [] ).
each_line( [ InputLine | InputRest ], [ OutputLine | OutputRest ] ) :- convert( InputLine, OutputLine ), each_line( InputRest, OutputRest ).
Code:
? :- readFile( 'demograph.grf', LSS ),each_line( LSS, ConvertedLines ).
ConvertedLines = [[0, " ", 1, " ", 0, " ", 0, " "|...], [1, " ", 0, " ", 0, " ", 1|...],

Übrigens scheint es bei Deinen Daten so zu sein, dass jedes zweite Zeichen ein Leerzeichen ist und somit quasi als Trennzeichen zwischen den Nullen und Einsen steht, was ich persönlich für sehr überflüssig halte, wenn es nur Nullen und Einsen sind. Aber das nur am Rand.
 
ok das mit dem konvertieren funktioniert nicht so einfach; aber ich hab ein bisschen im internet gesucht, und bin auf was interessantes gestoßen, was ich in meiner angabe komplett überlesen habe. in der Datei die ich einlesen muss, ist eine adjazenzmatrix und diese muss ich dann ausgeben, die frage ist nur wie! ;)
 
Laut Dokumentation gibt es im SWI-Prolog ein Prädikat string_to_list/2 mit dem Du eine Zeichenkette in eine Liste umwandeln kannst. Ansonsten müsste das alles so stimmen. Oder wo tritt bei Dir der Fehler auf?
 

Neue Beiträge

Zurück