Autonest an array
Haskell, 96 bytes
a#b|a<b=",{"|a>b="},{"|1<2=","
f(a:b:c)=show a++a#b++f(b:c)++['}'|a<b]
f[x]=show x++"}"
('{':).f
Usage example: ('{':).f $ [7,3,3,2,6,4]
-> "{7},{3,3},{2,{6},{4}}"
.
As Haskell doesn't have nested lists, I return the result as a string. The nesting algorithm is easy: a) print number, b) if the next number is greater (less, equal), print ,{
( },{
, ,
), c) make a recursive call with the rest of the list, d) print }
if the number is less than the next one, e) enclose everything in {
and }
.
Python 3, 98 bytes
p,*i=eval(input())
c=[p]
a=b=[c]
for x in i:
if x>p:b=c
if x!=p:c=[];b+=[c]
c+=[x];p=x
print(a)
Example:
$ python3 autonest.py <<< "[7, 3, 1, -8, 4, 8, 2, -9, 2, 8]"
[[7], [3], [1], [-8, [4, [8], [2], [-9, [2, [8]]]]]]
Java 8 197 187 193 192 bytes
Thanks to all the commenters who worked with me on this monstrosity. It was golfed down to 187 bytes until I found a costly bug. However due to the power of
String a(int[]b){int l=b.length,d=1,i=0;String c="{";for(;i<l-1;i++)if(b[i]>b[i+1])c+=b[i]+"},{";else if(b[i]<b[i+1]){d++;c+=b[i]+",{";}else c+=b[i]+",";c+=b[l-1];while(d-->0)c+="}";return c;}