77 lines
1.1 KiB
Plaintext
77 lines
1.1 KiB
Plaintext
text
|
|
next(text s)
|
|
{
|
|
integer c, e, l;
|
|
index v;
|
|
data d;
|
|
|
|
l = ~s;
|
|
while (l) {
|
|
v[-s[l -= 1]] += 1;
|
|
}
|
|
|
|
for (c, e in v) {
|
|
b_form(d, "%d%c", e, -c);
|
|
}
|
|
|
|
return d;
|
|
}
|
|
|
|
integer
|
|
depth(text s, integer i, record r)
|
|
{
|
|
integer d;
|
|
|
|
d = 0;
|
|
r_j_integer(d, r, s);
|
|
if (d <= 0) {
|
|
i += 1;
|
|
d += d ? i : -i;
|
|
r[s] = d;
|
|
i = depth(next(s), i, r);
|
|
d = r[s];
|
|
if (d <= 0) {
|
|
r[s] = d = i + 1;
|
|
}
|
|
}
|
|
|
|
return d;
|
|
}
|
|
|
|
integer
|
|
main(void)
|
|
{
|
|
integer d, e, i;
|
|
record r;
|
|
list l;
|
|
|
|
d = 0;
|
|
i = 1000000;
|
|
while (i) {
|
|
i -= 1;
|
|
e = depth(itoa(i), 0, r);
|
|
if (e == d) {
|
|
lb_p_integer(l, i);
|
|
} elif (d < e) {
|
|
d = e;
|
|
l_clear(l);
|
|
lb_p_integer(l, i);
|
|
}
|
|
}
|
|
|
|
o_("longest length is ", d, "\n");
|
|
while (l_o_integer(i, l, 0)) {
|
|
text s;
|
|
|
|
o_("\n", i, "\n");
|
|
e = d - 1;
|
|
s = itoa(i);
|
|
while (e) {
|
|
o_(s = next(s), "\n");
|
|
e -= 1;
|
|
}
|
|
}
|
|
|
|
return 0;
|
|
}
|