17 lines
584 B
Text
17 lines
584 B
Text
fcn longestSequence(ns){ // based on Patience sorting
|
|
piles:=L();
|
|
backPtr:='wrap(np){ return(np-1,if(np) piles[np-1].len()-1 else -1) }; // maybe (-1,-1)
|
|
foreach n in (ns){ newPile:=True; // create list of sorted lists
|
|
foreach e,p in (piles.enumerate()){
|
|
if(n<p[-1][0]){
|
|
p.del(1,-1) // only need the first and last elements
|
|
.append(T(n,backPtr(e))); newPile=False;
|
|
break;
|
|
}
|
|
}
|
|
if(newPile) piles.append(L(T(n,backPtr(piles.len()))));
|
|
}
|
|
reg r=L(),p=-1,n=0;
|
|
do{ n,p=piles[p][n]; r.write(n); p,n=p; }while(p!=-1);
|
|
r.reverse()
|
|
}
|