63 lines
2.2 KiB
AppleScript
63 lines
2.2 KiB
AppleScript
-- Generate a list of the ludic numbers up to and including n.
|
|
on ludicsTo(n)
|
|
if (n < 1) then return {}
|
|
-- Start with an array of numbers from 2 to n and a ludic collection already containing 1.
|
|
script o
|
|
property array : {}
|
|
property ludics : {1}
|
|
end script
|
|
repeat with i from 2 to n
|
|
set end of o's array to i
|
|
end repeat
|
|
-- Collect ludics and sieve the array until a ludic matches or exceeds the remaining
|
|
-- array length, at which point the array contains just the remaining ludics.
|
|
set thisLudic to 2
|
|
set arrayLength to n - 1
|
|
repeat while (thisLudic < arrayLength)
|
|
set end of o's ludics to thisLudic
|
|
repeat with i from 1 to arrayLength by thisLudic
|
|
set item i of o's array to missing value
|
|
end repeat
|
|
set o's array to o's array's numbers
|
|
set thisLudic to beginning of o's array
|
|
set arrayLength to (count o's array)
|
|
end repeat
|
|
|
|
return (o's ludics) & (o's array)
|
|
end ludicsTo
|
|
|
|
on doTask()
|
|
script o
|
|
property ludics : ludicsTo(22000)
|
|
end script
|
|
|
|
set output to {}
|
|
set astid to AppleScript's text item delimiters
|
|
set AppleScript's text item delimiters to ", "
|
|
set end of output to "First 25 ludic numbers:"
|
|
set end of output to (items 1 thru 25 of o's ludics) as text
|
|
repeat with i from 1 to (count o's ludics)
|
|
if (item i of o's ludics > 1000) then exit repeat
|
|
end repeat
|
|
set end of output to "There are " & (i - 1) & " ludic numbers ≤ 1000."
|
|
set end of output to "2000th-2005th ludic numbers:"
|
|
set end of output to (items 2000 thru 2005 of o's ludics) as text
|
|
set end of output to "Triplets < 250:"
|
|
set triplets to {}
|
|
repeat with x in o's ludics
|
|
set x to x's contents
|
|
if (x > 243) then exit repeat
|
|
if ((x + 2) is in o's ludics) and ((x + 6) is in o's ludics) then
|
|
set end of triplets to "{" & {x, x + 2, x + 6} & "}"
|
|
end if
|
|
end repeat
|
|
set end of output to triplets as text
|
|
set AppleScript's text item delimiters to linefeed
|
|
set output to output as text
|
|
set AppleScript's text item delimiters to astid
|
|
|
|
return output
|
|
end doTask
|
|
|
|
return doTask()
|