Data update
This commit is contained in:
parent
ed705008a8
commit
0df55f9f24
2196 changed files with 32999 additions and 3075 deletions
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