2016 Update
This commit is contained in:
parent
948b86eafa
commit
dcf5d15da3
7965 changed files with 139854 additions and 31002 deletions
|
|
@ -0,0 +1,53 @@
|
|||
-- Return the next term in the self-referential sequence
|
||||
function findNext (nStr)
|
||||
local nTab, outStr, pos, count = {}, "", 1, 1
|
||||
for i = 1, #nStr do nTab[i] = nStr:sub(i, i) end
|
||||
table.sort(nTab, function (a, b) return a > b end)
|
||||
while pos <= #nTab do
|
||||
if nTab[pos] == nTab[pos + 1] then
|
||||
count = count + 1
|
||||
else
|
||||
outStr = outStr .. count .. nTab[pos]
|
||||
count = 1
|
||||
end
|
||||
pos = pos + 1
|
||||
end
|
||||
return outStr
|
||||
end
|
||||
|
||||
-- Return boolean indicating whether table t contains string s
|
||||
function contains (t, s)
|
||||
for k, v in pairs(t) do
|
||||
if v == s then return true end
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
-- Return the sequence generated by the given seed term
|
||||
function buildSeq (term)
|
||||
local sequence = {}
|
||||
repeat
|
||||
table.insert(sequence, term)
|
||||
if not nextTerm[term] then nextTerm[term] = findNext(term) end
|
||||
term = nextTerm[term]
|
||||
until contains(sequence, term)
|
||||
return sequence
|
||||
end
|
||||
|
||||
-- Main procedure
|
||||
nextTerm = {}
|
||||
local highest, seq, hiSeq = 0
|
||||
for i = 1, 10^6 do
|
||||
seq = buildSeq(tostring(i))
|
||||
if #seq > highest then
|
||||
highest = #seq
|
||||
hiSeq = {seq}
|
||||
elseif #seq == highest then
|
||||
table.insert(hiSeq, seq)
|
||||
end
|
||||
end
|
||||
io.write("Seed values: ")
|
||||
for _, v in pairs(hiSeq) do io.write(v[1] .. " ") end
|
||||
print("\n\nIterations: " .. highest)
|
||||
print("\nSample sequence:")
|
||||
for _, v in pairs(hiSeq[1]) do print(v) end
|
||||
Loading…
Add table
Add a link
Reference in a new issue