Mathieu Carbou on Wed, 07 Nov 2012 15:27:05 +0100 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
Re: sseraching in dynamic list |
Hi, Really thank you! It works fine. I reformated a little. Mathieu. On 06-Nov-2012 15:30, Max Alekseyev wrote: > Mathieu, > Please find my implementation of hashmap attached. I'd be glad you > find it helpful. > Regards, > Max > > I've implemented hashmap > > On Sun, Nov 4, 2012 at 4:20 PM, Mathieu Carbou <mathieu.carbou@gmail.com> wrote: >> Hello, >> >> I have a case where I need to put key-value items in a dynamic sorted >> list and then search into: >> >> l=List() >> listput([2,4]) >> listput([1,7]) >> listput([0,3]) >> listsort(l) >> setsearch(l, ...) >> >> The issue is that only vecsearch takes a cmpf function, not setsearch. >> >> Is it possible to add it, or to indicate me a better way to do this ? >> >> Actually I'd like to simulate a HashMap, where the key is unique and the >> value can be anything. In my case, the sorting is not necessary, but >> since PARI has no Map, I think I need to use the sort feature of lists >> to be able to search back in them. >> >> Thank you. >> >> -- >> >> Mathieu Carbou >> Cell: 514-660-4287 >> >> -- Mathieu Carbou Cell: 514-660-4287
Map() = [Set(),List()]; mapsearch(m,k) = setsearch(m[1],k); mapput(m,k,v) = { local(l, i=setsearch(m[1],k)); if(i, m[2][i]=v; return(m)); i=setsearch(m[1],k,1); if(i>#m[2], listput(m[2],v), listinsert(m[2],v,i)); return([setunion(m[1],[k]), m[2]]); } mapget(m,k) = { local(i=setsearch(m[1],k)); if(i, return(m[2][i])); error("e_MAPGET"); }