From: Pankaj S. <pan...@gm...> - 2014-04-23 17:15:43
|
Hi, 1) `member` function works only on first level of list, ex, ----------------------------------------------------------------------- %IN:: li : [[a, b, c],[2,3,4,[3,4,5,[00,99,88,[77,66,55,"+"]]]],[ff,gg,tt], [[t, y, u,[jj,kk,ll]]]] $ %IN:: member([a,b,c],li) /*True*/ %IN:: member(b,li); /*False*/ ----------------------------------------------------------- In my opinion this is not completely correct. So, I tried writing this, -------------------------------------------------------------------- member1(lis,l):=block([li:lis,p:false],load(basic),if member(l,li) then p:true else (while(not li=[]) do (li:apply(append,li), if(member(l,li)) then p:true,li:sublist(li,listp))),p)$ Usage:: member1(b,li); /*True*/ member1([a,b,c],li)/*True*/ member1 ("+",li)/*True*/ -------------------------------------------------------- Should it not be included in maxima ? 2) I found that there is no function to reach to some specific level in nested lists and collect the same level lists from various sublists, so I tried, ------------------------------------------------------------------ atlevel(lis,n):=block([li:lis,elem:[]],load(basic),for i:1 thru n do (li:apply(append,li), push(sublist(li,lambda([x],(symbolp(x) or integerp(x) or operatorp(x) or stringp(x) or floatnump(x)))),elem), li:sublist(li,listp)),[reverse(elem),li])$ Usage:: atlevel(li,2); /* [[[a,b,c,2,3,4,ff,gg,tt],[3,4,5,t,y,u]],[[0,99,88,[77,66,55,"a"]],[jj,kk,ll]]] */ %IN:: atlevel(li,4) /* [[[a,b,c,2,3,4,ff,gg,tt],[3,4,5,t,y,u],[0,99,88,jj,kk,ll],[77,66,55,"a"]],[]] ------------------------------------------------------------------- It collects two lists, one of them collects elements in each level before the level specified and next collects the sublists at specified level. These are very tiny functions but can be helpful in list manipulation. Please try these and suggest optimizations. ----------- Regards, Pankaj Sejwal _______________________________________________ "The more I read, the more I acquire, the more certain I am that I know nothing.” - Voltaire <http://www.goodreads.com/author/show/5754446.Voltaire> |