Sum digits of an integer: Difference between revisions
Content added Content deleted
No edit summary |
Not a robot (talk | contribs) (Add CLU) |
||
Line 1,219: | Line 1,219: | ||
user=> (sum-digits "clojure" 32) |
user=> (sum-digits "clojure" 32) |
||
147</pre> |
147</pre> |
||
=={{header|CLU}}== |
|||
<syntaxhighlight lang="clu">% Find the digits of a number in a given base |
|||
digits = iter (n, base: int) yields (int) |
|||
while n>0 do |
|||
yield(n // base) |
|||
n := n / base |
|||
end |
|||
end digits |
|||
% Sum the digits of a number in a given base |
|||
digitsum = proc (n, base: int) returns (int) |
|||
sum: int := 0 |
|||
for digit: int in digits(n, base) do |
|||
sum := sum + digit |
|||
end |
|||
return(sum) |
|||
end digitsum |
|||
start_up = proc () |
|||
po: stream := stream$primary_output() |
|||
stream$putl(po, int$unparse(digitsum(1, 10))) |
|||
stream$putl(po, int$unparse(digitsum(1234, 10))) |
|||
stream$putl(po, int$unparse(digitsum(254, 16))) % 0xFE = 254 |
|||
stream$putl(po, int$unparse(digitsum(3854, 16))) % 0xF0E = 3854 |
|||
end start_up</syntaxhighlight> |
|||
{{out}} |
|||
<pre>1 |
|||
10 |
|||
29 |
|||
29</pre> |
|||
=={{header|Common Lisp}}== |
=={{header|Common Lisp}}== |