Sum digits of an integer: Difference between revisions

→‎{{header|Elixir}}: add String version
No edit summary
(→‎{{header|Elixir}}: add String version)
Line 580:
 
=={{header|Elixir}}==
<lang elixir>defmodule DSRC do
def sum_digits(n), do: sum_digitssumDigits(n, base\\10)
def sum_digitssumDigits(n, base) when is_integer(n) do
n |> Integer.digits(n, base) |> Enum.sum
end
def sumDigits(n, base) when is_binary(n) do
String.codepoints(n) |> Enum.map(&String.to_integer(&1, base)) |> Enum.sum
end
end
 
test_cases = Enum.each([{1, 10}, {1234, 10}, {0xfe, 16}, {0xf0e, 16}], fn {n,base} ->
IO.puts "#{Integer.to_string(n,base)}(#{base}) sums to #{ RC.sumDigits(n,base) }"
for {n, base} <- test_cases, do: IO.puts(DS.sum_digits(n, base))</lang>
end)
IO.puts ""
Enum.each([{"1", 10}, {"1234", 10}, {"fe", 16}, {"f0e", 16}], fn {n,base} ->
IO.puts "#{n}(#{base}) sums to #{ RC.sumDigits(n,base) }"
end)</lang>
 
{{out}}
<pre>
1(10) sums to 1
1
1234(10) sums to 10
10
FE(16) sums to 29
29
F0E(16) sums to 29
29
 
1(10) sums to 1
1234(10) sums to 10
fe(16) sums to 29
f0e(16) sums to 29
</pre>
 
Anonymous user