101 lines
1.6 KiB
Plaintext
101 lines
1.6 KiB
Plaintext
text
|
|
next(text s, integer show)
|
|
{
|
|
integer l;
|
|
record v;
|
|
data d;
|
|
text u;
|
|
|
|
l = length(s);
|
|
while (l) {
|
|
integer e;
|
|
|
|
l -= 1;
|
|
e = 0;
|
|
u = insert("", 0, character(s, l));
|
|
r_g_integer(e, v, u);
|
|
r_f_integer(v, u, e + 1);
|
|
}
|
|
|
|
if (r_last(v, u)) {
|
|
do {
|
|
b_paste(d, -1, itoa(r_q_integer(v, u)));
|
|
b_paste(d, -1, u);
|
|
} while (r_less(v, u, u));
|
|
}
|
|
|
|
if (show) {
|
|
o_text(b_string(d));
|
|
o_newline();
|
|
}
|
|
|
|
return b_string(d);
|
|
}
|
|
|
|
integer
|
|
depth(text s, integer i, record r)
|
|
{
|
|
integer d;
|
|
|
|
d = 0;
|
|
r_g_integer(d, r, s);
|
|
if (d <= 0) {
|
|
i += 1;
|
|
if (d) {
|
|
d += i;
|
|
} else {
|
|
d = -i;
|
|
}
|
|
r_f_integer(r, s, d);
|
|
i = depth(next(s, 0), i, r);
|
|
d = r_q_integer(r, s);
|
|
if (d <= 0) {
|
|
d = i + 1;
|
|
r_r_integer(r, s, d);
|
|
}
|
|
}
|
|
|
|
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_text(cat3("longest length is ", itoa(d), "\n"));
|
|
while (l_length(l)) {
|
|
text s;
|
|
|
|
o_newline();
|
|
r_clear(r);
|
|
lf_e_integer(i, l);
|
|
o_integer(i);
|
|
o_newline();
|
|
e = d - 1;
|
|
s = itoa(i);
|
|
while (e) {
|
|
s = next(s, 1);
|
|
e -= 1;
|
|
}
|
|
}
|
|
|
|
return 0;
|
|
}
|