33 lines
1.1 KiB
Plaintext
33 lines
1.1 KiB
Plaintext
N:=0d1_000_001;
|
|
|
|
fcn lookAndJustSaying(seed){ // numeric String --> numeric String
|
|
"9876543210".pump(String,'wrap(n){
|
|
(s:=seed.inCommon(n)) and String(s.len(),n) or ""
|
|
});
|
|
}
|
|
fcn sequence(seed){ // numeric string --> sequence until it repeats
|
|
seq:=L();
|
|
while(not seq.holds(seed)){ seq.append(seed); seed=lookAndJustSaying(seed); }
|
|
seq
|
|
}
|
|
fcn decending(str) //--> True if digits are in descending (or equal) order
|
|
{ (not str.walker().zipWith('<,str[1,*]).filter1()) }
|
|
|
|
szs:=List.createLong(25); max:=0;
|
|
foreach seed in (N){
|
|
z:=seed.toString();
|
|
if(decending(z)){ // 321 generates same sequence as 312,132,123,213
|
|
len:=sequence(z).len();
|
|
if(len>max) szs.clear();
|
|
if(len>=max){ szs.append(seed.toString()); max=len; }
|
|
}
|
|
}
|
|
|
|
// List permutations of longest seeds
|
|
// ("9900"-->(((9,0,0,9),...))-->((9,0,0,9),...)-->("9009"...)
|
|
// -->remove numbers w/leading zeros-->remove dups
|
|
zs:=szs.apply(Utils.Helpers.permute).flatten().apply("concat")
|
|
.filter(fcn(s){ s[0]!="0" }) : Utils.Helpers.listUnique(_);
|
|
println(max," iterations for ",zs.concat(", "));
|
|
zs.pump(Console.println,sequence,T("concat",", "));
|