Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
67
Task/Hailstone-sequence/Eiffel/hailstone-sequence.e
Normal file
67
Task/Hailstone-sequence/Eiffel/hailstone-sequence.e
Normal file
|
|
@ -0,0 +1,67 @@
|
|||
class
|
||||
APPLICATION
|
||||
|
||||
create
|
||||
make
|
||||
|
||||
feature
|
||||
|
||||
make
|
||||
local
|
||||
test: LINKED_LIST [INTEGER]
|
||||
count, number, te: INTEGER
|
||||
do
|
||||
create test.make
|
||||
test := hailstone_sequence (27)
|
||||
io.put_string ("There are " + test.count.out + " elements in the sequence for the number 27.")
|
||||
io.put_string ("%NThe first 4 elements are: ")
|
||||
across
|
||||
1 |..| 4 as t
|
||||
loop
|
||||
io.put_string (test [t.item].out + "%T")
|
||||
end
|
||||
io.put_string ("%NThe last 4 elements are: ")
|
||||
across
|
||||
(test.count - 3) |..| test.count as t
|
||||
loop
|
||||
io.put_string (test [t.item].out + "%T")
|
||||
end
|
||||
across
|
||||
1 |..| 99999 as c
|
||||
loop
|
||||
test := hailstone_sequence (c.item)
|
||||
te := test.count
|
||||
if te > count then
|
||||
count := te
|
||||
number := c.item
|
||||
end
|
||||
end
|
||||
io.put_string ("%NThe longest sequence for numbers below 100000 is " + count.out + " for the number " + number.out + ".")
|
||||
end
|
||||
|
||||
hailstone_sequence (n: INTEGER): LINKED_LIST [INTEGER]
|
||||
-- Members of the Hailstone Sequence starting from 'n'.
|
||||
require
|
||||
n_is_positive: n > 0
|
||||
local
|
||||
seq: INTEGER
|
||||
do
|
||||
create Result.make
|
||||
from
|
||||
seq := n
|
||||
until
|
||||
seq = 1
|
||||
loop
|
||||
Result.extend (seq)
|
||||
if seq \\ 2 = 0 then
|
||||
seq := seq // 2
|
||||
else
|
||||
seq := ((3 * seq) + 1)
|
||||
end
|
||||
end
|
||||
Result.extend (seq)
|
||||
ensure
|
||||
sequence_terminated: Result.last = 1
|
||||
end
|
||||
|
||||
end
|
||||
Loading…
Add table
Add a link
Reference in a new issue