A week passes & not much development.
Should you, 3298, lack inspiration you might consider 2old2randr's solution for 6 digit inputs starting with a "1", my adaptation of which is here:
Code:
« DUP
IF HEAD 1 ‹
THEN NIP NTYPE 5
ROLL 6 ROLL DROP2
ALGO2
ELSE OBJ→ ROLL
DROP DUP 6 PICK -
DUP 1 + 10 MOD SWAP
2 + 10 MOD 0 7.
NDUPN DROP → num d4
d3 d2 d1 d0 m1 m2
p1 p2 p3 x y z c
«
IF m1 m2 *
THEN 9 d4 +
DUP 2 / IP DUP 'y'
STO - 10001 * 9090
+ 'p1' STO y 10001
* d3 1010 * + 'p2'
STO m1 101 * 9 d4 +
m1 + 10 / IP 'c'
STO d1 9 - d3 - c -
10 MOD DUP 'z' STO
10 * + 'p3' STO c 9
+ d3 + z + 10 / IP
'c' STO 10 d2 + c -
m1 - DUP
IF 9 >
THEN 9 -
100 * 'p2' STO+ 900
ELSE 100 *
END 'p1'
STO+
ELSE
IF m2 NOT
d2 AND
THEN 9 d4 +
DUPDUP 2 / IP 'y'
STO y - 10001 *
9090 + 'p1' STO y
10001 * d3 1010 * +
'p2' STO 909 SWAP 9
+ 10 / IP 'c' STO
d1 9 - d3 - c - 10
MOD 'z' STO z 10 *
+ 'p3' STO c 9 + d3
+ z + 10 / IP 'c'
STO 10 d2 + c - 9 -
DUP
IF 9 >
THEN 9 -
100 * 'p2' STO+ 900
ELSE 100
*
END 'p1'
STO+
ELSE
IF m2 d2
+ NOT
THEN
CASE d4
1 ‰
THEN
IF d4
THEN 90009
ELSE 80008
END 'p1' STO 10001
d3 1010 * + 'p2'
STO 9009 d1 d3 - 1
- 10 MOD DUP 'z'
STO 110 * + 'p3'
STO 1 d3 + z + 10 /
IP 'c' STO 10 c - z
- DUP
IF 9 >
THEN 9 - 100 * 'p2'
STO+ 900
ELSE 100 *
END 'p1' STO+
END
d4 2 ==
THEN
90009 'p1' STO
20002 d3 1010 * +
'p2' STO 9009 d1 d3
- 2 - 10 MOD DUP
'z' STO 110 * +
'p3' STO 2 d3 + z +
10 / IP 'c' STO
IF c 2 ‹
THEN 10 c - z - DUP
IF 9 >
THEN 9 - 100 *
'p2' STO+ 900
ELSE 100 *
END 'p1' STO+
ELSE 128821 'p1'
STO 171 'p2' STO 8
'p3' STO
END
END
100001 1 d3 1 - 10
MOD 1 + d3 - 10 /
IP DUP 'c' STO -
10010 * + 'p1' STO
d3 1 - 10 MOD 'y'
STO d1 d3 - 1 - c +
10 MOD DUP 'z' STO
10 * 808 + 'p3' STO
2 c - y + z + d1 -
10 / IP 'c' STO 2 c
- 100 * d4 1 -
10001 * + y 1010 *
+ 'p2' STO
END
ELSE
IF m1
NOT d3 *
THEN
IF d4
9 ‹
THEN
10 d4 + 2 / IP 'y'
STO 90009 d3 1 -
1010 * + 'p1' STO
d4 1 + 10001 * 'p2'
STO 19 d4 + 10 / IP
'c' STO d1 d3 - 1 +
c - 10 MOD DUP 'z'
STO 10 * 909 + 'p3'
STO c d3 + 1 - z +
10 / IP 'c' STO d2
1 + c - DUP
IF 9 >
THEN 9 - 100 * 'p2'
STO+ 900
ELSE 100 *
END 'p1' STO+
ELSE
0 0 0 0 → c1 c2 c3
mu
« 0 'y' STO d1 3 -
DO
UNTIL DUP 'y'
INCR - 10 MOD 8 <
END d3 y - 10 MOD
'x' STO 3 y + SWAP
y - 10 MOD + d1 -
10 / IP 'c1' STO d2
x - 1 - c1 - 10 MOD
x + c1 + 1 + d2 -
10 / IP 'c2' STO
IF c2 1 >
THEN 1 'mu' STO 1
'c2' STO 9 'x' STO
END x y + d3 - 10
/ IP 'c3' STO
100001 3 c3 - 10010
* + x mu - 1100 * +
'p1' STO 60006 y c2
- mu + 1010 * + d2
x - 1 - c1 - mu +
10 MOD 100 * + 'p2'
STO d1 3 - y - 10
MOD c2 + mu - c3 +
10 * 101 + 'p3' STO
»
END
ELSE
IF m1
d3 + NOT
THEN
CASE d4 NOT
THEN
CASE d2 DUP NOT
d1 AND d1 9 ‹ AND
OR
THEN 100001
num OVER - PALIN
DROP
END d2 d1 +
NOT
THEN 100001 8
0
END 90109
9889 101
END
END d4 1 ==
THEN
CASE d2 1 > d2
1 == d1 AND OR
THEN 110011
num OVER - PALIN
DROP
END d2 1 ==
d1 NOT AND
THEN 109901
191 8
END d2 1 ==
d1 1 == AND
THEN 110011
99 0
END d2 NOT d1
1 > AND
THEN 110011
d1 DUP 2 - 11 * 11
ROT - OVER NOT ::
SWAP IFT
END 100001 d2
NOT d1 1 == AND
THEN 10001 8
END 9999 0
END
END d4 2 ==
THEN
CASE d2 1 > d2
1 == d1 1 > AND OR
THEN 120021
num OVER - PALIN
DROP
END d2 1 ==
d1 NOT AND
THEN 119911
181 9
END d2 d1 * 1
==
THEN 119911
191 9
END d2 NOT d1
2 > AND
THEN 120021
CASE d1 3 ‹
THEN d1 3
- 10 * d1 3 - + 13
d1 -
END 9 1
END
END d2 NOT d1
2 == AND
THEN 119911
101 9
END d2 NOT d1
1 == AND
THEN 100001
20002 8
END 119911 88
2
END
END 0 'y' STO d1
1 -
DO
UNTIL DUP 'y'
INCR - 10 MOD DUP 9
‹ AND
END d4 3 ==
THEN 0 0 → c1 c2
« 2 y + SWAP y
- 10 MOD + d1 - 10
/ IP 'c1' STO 9 y -
d2 y + 2 + 10 MOD +
9 + d2 - 10 / IP
'c2' STO 100001 9 y
- c1 - 1100 * +
20002 y c2 - 1 + c1
+ 1010 * + d2 y + 2
+ 10 MOD 100 * + d1
1 - y - 10 MOD c2 +
1 - c1 - 10 * 909 +
»
END 1 y + SWAP y
- 10 MOD + d1 - 10
/ IP 11 y - d2 y +
1 - 10 MOD + d2 -
10 / IP → c1 c2
« 120021 10 y -
c1 - 1100 * + d4 3
- 10001 * y c2 - c1
+ 1010 * + d2 y + 1
- 10 MOD 100 * + d1
2 - y - 10 MOD c2 +
c1 - 10 * 101 +
»
END 'p3' STO 'p2'
STO 'p1' STO
END
END
END
END
END p1 R→I p2
R→I p3 R→I
»
END
»
Alternatively you could adopt peruna's solution restricted to numbers with a maximum of six digits - this would not give a "canonical" partition as in the proof, but as far as I'm concerned any valid tripartite partition is good, the ones specified in the proof are just as good as any other, eg the partition in posting #1.