Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
69
Task/Digital-root/Eiffel/digital-root.e
Normal file
69
Task/Digital-root/Eiffel/digital-root.e
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
class
|
||||
APPLICATION
|
||||
|
||||
inherit
|
||||
ARGUMENTS
|
||||
|
||||
create
|
||||
make
|
||||
|
||||
feature {NONE} -- Initialization
|
||||
|
||||
digital_root_test_values: ARRAY [INTEGER_64]
|
||||
-- Test values.
|
||||
once
|
||||
Result := <<670033, 39390, 588225, 393900588225>> -- base 10
|
||||
end
|
||||
|
||||
digital_root_expected_result: ARRAY [INTEGER_64]
|
||||
-- Expected result values.
|
||||
once
|
||||
Result := <<1, 6, 3, 9>> -- base 10
|
||||
end
|
||||
|
||||
make
|
||||
local
|
||||
results: ARRAY [INTEGER_64]
|
||||
i: INTEGER
|
||||
do
|
||||
from
|
||||
i := 1
|
||||
until
|
||||
i > digital_root_test_values.count
|
||||
loop
|
||||
results := compute_digital_root (digital_root_test_values [i], 10)
|
||||
if results [2] ~ digital_root_expected_result [i] then
|
||||
print ("%N" + digital_root_test_values [i].out + " has additive persistence " + results [1].out + " and digital root " + results [2].out)
|
||||
else
|
||||
print ("Error in the calculation of the digital root of " + digital_root_test_values [i].out + ". Expected value: " + digital_root_expected_result [i].out + ", produced value: " + results [2].out)
|
||||
end
|
||||
i := i + 1
|
||||
end
|
||||
end
|
||||
|
||||
compute_digital_root (a_number: INTEGER_64; a_base: INTEGER): ARRAY [INTEGER_64]
|
||||
-- Returns additive persistence and digital root of `a_number' using `a_base'.
|
||||
require
|
||||
valid_number: a_number >= 0
|
||||
valid_base: a_base > 1
|
||||
local
|
||||
temp_num: INTEGER_64
|
||||
do
|
||||
create Result.make_filled (0, 1, 2)
|
||||
from
|
||||
Result [2] := a_number
|
||||
until
|
||||
Result [2] < a_base
|
||||
loop
|
||||
from
|
||||
temp_num := Result [2]
|
||||
Result [2] := 0
|
||||
until
|
||||
temp_num = 0
|
||||
loop
|
||||
Result [2] := Result [2] + (temp_num \\ a_base)
|
||||
temp_num := temp_num // a_base
|
||||
end
|
||||
Result [1] := Result [1] + 1
|
||||
end
|
||||
end
|
||||
Loading…
Add table
Add a link
Reference in a new issue