2016-11-17 2 views
0

Ich versuche, eine Liste zu nehmen und eine neue mit einer anderen Struktur zu erstellen.
Prolog: neue Liste Struktur der bekannten Liste erstellen


Die erste Liste, die ich habe, ist so etwas wie diese:

List 1 out of X: 
[[4,2,5,1,1,7,4], 
[1,0,2,1,5,4,4], 
[2,8,0,2,2,6,2], 
[8,9,2,0,1,6,2], 
[6,2,0,3,0,2,2], 
[3,6,6,3,0,2,9], 
[6,2,1,4,3,3,9]] 

Der Code, den ich im Moment habe, ist dies:

oneMap(V,[_,_,V]). 
listMap([],[]). 
listMap([H|T],[H1|T1]):- 
listMap(T,T1),oneMap(H,H1). 

Das Problem hier ist, dass ich je bekommen Zeile in der Liste in meiner neuen Liste, aber ich möchte den Wert innerhalb der Zeile.

Ein Teil der Produktion im Moment:

[[_G21217,_G21220,[4,2,5,1,1,7,4]],[_G21202,_G21205,[1,0,2,1,5,4,4]],... 

der Suche nach so etwas wie:

[[_G21217,_G21220,4],[_G21202,_G21205,2],[_G21202,_G21205,5],... 
+2

Sie wissen, dass '[A | [B | [C | [_, _, V]]]]] dasselbe ist wie' [A, B, C, _, _, V] '? – lurker

+0

In meinem Kopf war es eine Liste in einer Liste innerhalb einer Liste, aber ich sehe jetzt, dass ich nur den ersten Schwanz von jedem "Header" nehme. – elektronet

+1

Vielleicht würde ein konkreteres Beispiel dafür, wie es aussehen soll, helfen. Sie könnten eine kleinere Beispielmatrix zur Veranschaulichung verwenden (wie eine 3x3 anstelle einer 7x7). – lurker

Antwort

0

Die Lösung:

okay, ich nach einiger Zeit gefunden etwas, das mir bei meinem Doppellistenproblem geholfen hat:

oneMap(V,[_,_,V]). 

listMap1([],[]). 
listMap2([],[]). 

listMap1([H|T],[H1|T1]):- 
listMap1(T,T1),listMap2(H,H1). 

listMap2([H|T],[H1|T1]):- 
listMap2(T,T1), oneMap(V,H1). 

Wenn jemand eine klügere Lösung hätte, würde ich es gerne hören.