tasks a-s
This commit is contained in:
parent
47bf37c096
commit
b83f433714
12433 changed files with 156208 additions and 123 deletions
|
|
@ -0,0 +1,38 @@
|
|||
link printf
|
||||
|
||||
procedure main()
|
||||
every L := !longestselfrefseq(1000000) do
|
||||
every printf(" %i : %i\n",i := 1 to *L,L[i])
|
||||
end
|
||||
|
||||
|
||||
procedure longestselfrefseq(N) #: find longest sequences from 1 to N
|
||||
|
||||
mlen := 0
|
||||
every L := selfrefseq(n := 1 to N) do {
|
||||
if mlen <:= *L then
|
||||
ML := [L]
|
||||
else if mlen = *L then
|
||||
put(ML,L)
|
||||
}
|
||||
|
||||
return ML
|
||||
end
|
||||
|
||||
procedure selfrefseq(n) #: return list of sequence oeis:A036058 for seed n
|
||||
S := set()
|
||||
L := []
|
||||
every p := seq(1) do
|
||||
if member(S,n) then return L # ends at a repeat
|
||||
else {
|
||||
insert(S,n)
|
||||
put(L,n)
|
||||
n := nextselfrefseq(n)
|
||||
}
|
||||
end
|
||||
|
||||
procedure nextselfrefseq(n) #: return next element of sequence oeis:A036058
|
||||
every (Counts := table(0))[integer(!n)] +:= 1 # count digits
|
||||
every (n := "") ||:= (0 < Counts[i := 9 to 0 by -1]) || i # assemble counts
|
||||
return integer(n)
|
||||
end
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
link strings # to get csort()
|
||||
|
||||
procedure main(A)
|
||||
limit := A[1] | 1000000 # Allow alternate limit
|
||||
mSq := 0
|
||||
# May have multiple 'unique' sequence sets (unrelated seeds) so use table
|
||||
every s := [n := 1 to limit, sequence(n)] do {
|
||||
if mSq <:= *s[2] then mT := table() # new max, start over
|
||||
if mSq == *s[2] then insert((/mT[n := csort(n)] := set()) | mT[n],s)
|
||||
}
|
||||
dumpSequences(mT)
|
||||
end
|
||||
|
||||
procedure sequence(n) # produce sequence of SDS with seed n
|
||||
every (repeats := [], iter := seq(), put(repeats, n)) do
|
||||
if (n := nElem(n)) == !repeats then return repeats # Converged
|
||||
end
|
||||
|
||||
procedure nElem(n) # given n, produce its self-description
|
||||
every (n1 := "", c := !cset(n)) do
|
||||
(every (d := 0) +:= (upto(c, n),1)) | (n1 := d||c||n1)
|
||||
return n1
|
||||
end
|
||||
|
||||
procedure dumpSequences(seqTab) # Show each 'unique' sequence in table
|
||||
every writes("Seeds:" | (!!seqTab)[1], " ")
|
||||
write("\n\nIterations: ",*(!!seqTab)[2])
|
||||
every s := !seqTab do (write() & every write(!(!s\1)[2]))
|
||||
end
|
||||
Loading…
Add table
Add a link
Reference in a new issue