25 lines
476 B
Lua
25 lines
476 B
Lua
#!/usr/bin/env luajit
|
|
bit32=bit32 or bit
|
|
local lib={
|
|
hailstone=function(n)
|
|
local seq={n}
|
|
while n>1 do
|
|
n=bit32.band(n,1)==1 and 3*n+1 or n/2
|
|
seq[#seq+1]=n
|
|
end
|
|
return seq
|
|
end
|
|
}
|
|
|
|
if arg[0] and arg[0]:match("hailstone.lua") then
|
|
local function printf(fmt, ...) io.write(string.format(fmt, ...)) end
|
|
local seq=lib.hailstone(27)
|
|
printf("27 has %d numbers in sequence:\n",#seq)
|
|
for _,i in ipairs(seq) do
|
|
printf("%d ", i)
|
|
end
|
|
printf("\n")
|
|
else
|
|
return lib
|
|
end
|