How sort list?
- Subject: How sort list?
- From: aleksas.domarkas at post.skynet.lt
- Date: Mon, 12 Jul 2010 13:34:42 +0300
How sort list?
I need
[[7,1],[10,9],[5,7],[4,2],[6,8],[1,6],[9,4],[3,5],[8,10],[2,3]]
transform to
[[1,6],[6,8],[8,10],[10,9],[9,4],[4,2],[2,3],[3,5],[5,7],[7,1]]
Solution:
(%i1) L:[[7,1],[10,9],[5,7],[4,2],[6,8],[1,6],[9,4],[3,5],[8,10],[2,3]];
(%o1) [[7,1],[10,9],[5,7],[4,2],[6,8],[1,6],[9,4],[3,5],[8,10],[2,3]]
1 method:
(%i2) F(k):=block([f],if k=1 then (define(f(x),x[1]=1),sublist(L,f)[1])
else (define(f(x),x[1]=F(k-1)[2]),sublist(L,f)[1]))$
(%i3) sol:makelist(F(k),k,1,10);
(%o3) [[1,6],[6,8],[8,10],[10,9],[9,4],[4,2],[2,3],[3,5],[5,7],[7,1]]
2 method:
(%i9) load(graphs)$
(%i5) g:create_graph([10,9,8,7,6,5,4,3,2,1],L)$
(%i6) hamilton_cycle(g);
(%o6) [1,6,8,10,9,4,2,3,5,7,1]
(%i7) vertices_to_path(%);
(%o7) [[7,1],[5,7],[3,5],[2,3],[4,2],[9,4],[10,9],[8,10],[6,8],[1,6]]
(%i8) sol:reverse(%);
(%o8) [[1,6],[6,8],[8,10],[10,9],[9,4],[4,2],[2,3],[3,5],[5,7],[7,1]]
best! Aleksas Domarkas