Data update
This commit is contained in:
parent
ed705008a8
commit
0df55f9f24
2196 changed files with 32999 additions and 3075 deletions
21
Task/Hailstone-sequence/Bruijn/hailstone-sequence.bruijn
Normal file
21
Task/Hailstone-sequence/Bruijn/hailstone-sequence.bruijn
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
:import std/Combinator .
|
||||
:import std/List .
|
||||
:import std/Math M
|
||||
:import std/Number/Binary .
|
||||
|
||||
# hailstone sequence using binary shifts
|
||||
hailstone y [[(0 =? (+1b)) {}0 go]]
|
||||
go 0 : (=²?0 (1 /²0) (1 (↑¹0 + 0)))
|
||||
|
||||
# --- tests ---
|
||||
|
||||
seq-27 hailstone (+27b)
|
||||
|
||||
:test (∀seq-27) ((+112))
|
||||
:test (take (+4) seq-27) ((+27b) : ((+82b) : ((+41b) : {}(+124b))))
|
||||
:test (take (+4) <~>seq-27) ((+1b) : ((+2b) : ((+4b) : {}(+8b))))
|
||||
|
||||
below-100000 [0 : ∀(hailstone 0)] <$> seq
|
||||
seq take (+99999) (iterate ++‣ (+1b))
|
||||
|
||||
main [head (max-by (M.compare ⋔ tail) below-100000)]
|
||||
|
|
@ -36,7 +36,7 @@ public program()
|
|||
int longestNumber := 0;
|
||||
auto recursiveLengths := new Map<int,int>(4096,4096);
|
||||
|
||||
for(int i := 1, i < maxNumber, i+=1)
|
||||
for(int i := 1; i < maxNumber; i+=1)
|
||||
{
|
||||
var chainLength := Hailstone(i, recursiveLengths);
|
||||
if (longestChain < chainLength)
|
||||
|
|
|
|||
42
Task/Hailstone-sequence/Refal/hailstone-sequence.refal
Normal file
42
Task/Hailstone-sequence/Refal/hailstone-sequence.refal
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
$ENTRY Go {
|
||||
= <ShowHailstone 27>
|
||||
<ShowLongest 100000>;
|
||||
}
|
||||
|
||||
Hailstone {
|
||||
1 = 1;
|
||||
s.N, <Mod s.N 2>: {
|
||||
0 = s.N <Hailstone <Div s.N 2>>;
|
||||
1 = s.N <Hailstone <+ 1 <* 3 s.N>>>;
|
||||
};
|
||||
};
|
||||
|
||||
ShowHailstone {
|
||||
s.N, <Hailstone s.N>: e.Seq,
|
||||
<Lenw e.Seq>: s.Len s.1 s.2 s.3 s.4 e.X s.D4 s.D3 s.D2 s.D1
|
||||
= <Prout 'The hailstone sequence for the number '
|
||||
<Symb s.N> ' has ' <Symb s.Len> ' elements,\n'
|
||||
'starting with ' s.1 s.2 s.3 s.4
|
||||
'and ending with ' s.D4 s.D3 s.D2 <Symb s.D1>'.'>;
|
||||
}
|
||||
|
||||
FindLongest {
|
||||
s.Max = <FindLongest s.Max 1 1 1>;
|
||||
s.Max s.Max s.Long s.Len = s.Long s.Len;
|
||||
s.Max s.Cur s.Long s.Len,
|
||||
<Hailstone s.Cur>: e.CurSeq,
|
||||
<Lenw e.CurSeq>: s.CurLen e.X,
|
||||
<+ s.Cur 1>: s.Next,
|
||||
<Compare s.CurLen s.Len>: {
|
||||
'+' = <FindLongest s.Max s.Next s.Cur s.CurLen>;
|
||||
s.X = <FindLongest s.Max s.Next s.Long s.Len>;
|
||||
};
|
||||
};
|
||||
|
||||
ShowLongest {
|
||||
s.Max, <FindLongest s.Max>: s.Long s.Len
|
||||
= <Prout 'The number < ' <Symb s.Max> ' which has the longest'
|
||||
' hailstone sequence is ' <Symb s.Long> '.\n'
|
||||
'The length of its Hailstone sequence is '
|
||||
<Symb s.Len> '.'>;
|
||||
};
|
||||
Loading…
Add table
Add a link
Reference in a new issue