Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
53
Task/Executable-library/Limbo/executable-library-1.limbo
Normal file
53
Task/Executable-library/Limbo/executable-library-1.limbo
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
implement Execlib;
|
||||
|
||||
include "sys.m"; sys: Sys;
|
||||
include "draw.m";
|
||||
|
||||
Execlib: module {
|
||||
init: fn(ctxt: ref Draw->Context, args: list of string);
|
||||
hailstone: fn(i: big): list of big;
|
||||
};
|
||||
|
||||
init(nil: ref Draw->Context, nil: list of string)
|
||||
{
|
||||
sys = load Sys Sys->PATH;
|
||||
|
||||
seq := hailstone(big 27);
|
||||
l := len seq;
|
||||
|
||||
sys->print("hailstone(27): ");
|
||||
for(i := 0; i < 4; i++) {
|
||||
sys->print("%bd, ", hd seq);
|
||||
seq = tl seq;
|
||||
}
|
||||
sys->print("⋯");
|
||||
|
||||
while(len seq > 4)
|
||||
seq = tl seq;
|
||||
|
||||
while(seq != nil) {
|
||||
sys->print(", %bd", hd seq);
|
||||
seq = tl seq;
|
||||
}
|
||||
sys->print(" (length %d)\n", l);
|
||||
|
||||
max := 1;
|
||||
maxn := big 1;
|
||||
for(n := big 2; n < big 100000; n++) {
|
||||
cur := len hailstone(n);
|
||||
if(cur > max) {
|
||||
max = cur;
|
||||
maxn = n;
|
||||
}
|
||||
}
|
||||
sys->print("hailstone(%bd) has length %d\n", maxn, max);
|
||||
}
|
||||
|
||||
hailstone(i: big): list of big
|
||||
{
|
||||
if(i == big 1)
|
||||
return big 1 :: nil;
|
||||
if(i % big 2 == big 0)
|
||||
return i :: hailstone(i / big 2);
|
||||
return i :: hailstone(big 3 * i + big 1);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue