49 lines
1.2 KiB
AppleScript
49 lines
1.2 KiB
AppleScript
on juggler(n)
|
|
script o
|
|
property sequence : {n}
|
|
end script
|
|
|
|
set i to 1
|
|
set {max, pos} to {n, i}
|
|
repeat until (n = 1)
|
|
set n to n ^ (n mod 2 + 0.5) div 1
|
|
set end of o's sequence to n
|
|
set i to i + 1
|
|
if (n > max) then set {max, pos} to {n, i}
|
|
end repeat
|
|
|
|
return {n:n, sequence:o's sequence, |length|:i, max:max, maxPos:pos}
|
|
end juggler
|
|
|
|
on intToText(n)
|
|
if (n < 2 ^ 29) then return n as integer as text
|
|
set lst to {n mod 10 as integer}
|
|
set n to n div 10
|
|
repeat until (n = 0)
|
|
set beginning of lst to n mod 10 as integer
|
|
set n to n div 10
|
|
end repeat
|
|
|
|
return join(lst, "")
|
|
end intToText
|
|
|
|
on join(lst, delim)
|
|
set astid to AppleScript's text item delimiters
|
|
set AppleScript's text item delimiters to delim
|
|
set txt to lst as text
|
|
set AppleScript's text item delimiters to astid
|
|
return txt
|
|
end join
|
|
|
|
on task()
|
|
set output to {}
|
|
repeat with n from 20 to 39
|
|
set {|length|:len, max:max, maxPos:pos} to juggler(n)
|
|
set end of output to join({n, ": l[n] = ", len - 1, ", h[n] = ", intToText(max), ", i[n] = ", pos - 1}, "")
|
|
end repeat
|
|
|
|
return join(output, linefeed)
|
|
end task
|
|
|
|
task()
|