code_junkie

Calculate the digital root of a number

Nov 11th, 2011
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.70 KB | None | 0 0
  1. digitalRoot n
  2. | n < 10 = n
  3. | otherwise = digitalRoot . sum . map (c -> read [c]) . show $ n
  4.  
  5. digital-root: func [n [integer!] /local added expanded] [
  6. either n < 10 [
  7. n
  8. ][
  9. expanded: copy []
  10. foreach c to-string n [
  11. append expanded to-integer to-string c
  12. ]
  13. added: 0
  14. foreach e expanded [
  15. added: added + e
  16. ]
  17. digital-root added
  18. ]
  19. ]
  20.  
  21. public class DigitalRoot
  22. {
  23. public static int GetDigitalRoot(long inputNumber)
  24. {
  25. if (inputNumber%9==0)
  26. return 9;
  27. else
  28. return inputNumber%9;
  29. }
  30. }
  31.  
  32. public class DigitalRoot
  33. {
  34. public static int GetDigitalRoot(long inputNumber)
  35. {
  36. if (inputNumber%9==0)
  37. return 9;
  38. else
  39. return inputNumber%9;
  40. }
  41. }
  42.  
  43. dr = 1 + ((n - 1) % 9);
  44.  
  45. while($n>9){my$t;for(split//,$n){$t+=$_}$n=$t}
  46.  
  47. while ($number > 9) {
  48. my $total;
  49. for $digit (split(//,$number)) {
  50. $total += $digit
  51. }
  52. $number=$total;
  53. }
  54.  
  55. $n=($n%9?$n%9:9);
  56.  
  57. digitalRoot n
  58. | m9 == 0 = 9
  59. | otherwise = m9
  60. where
  61. m9 = n `mod` 9
  62.  
  63. def dr(n:Int) = (n % 9) match {case 0 => 9; case x => x}
  64.  
  65. def dr(x):
  66. if x < 10: return x
  67. return dr(sum(int(c) for c in str(x)))
  68.  
  69. def dr2(x):
  70. if x == 0: return 0
  71. if x % 9 == 0: return 9
  72. else: return x % 9
  73.  
  74. #include <stdio.h>
  75. #include <stdlib.h>
  76. #include <string.h>
  77.  
  78. unsigned int digital_root(const char *string)
  79. {
  80. int i;
  81. unsigned int v = 0;
  82.  
  83. /* Add all digits. */
  84. for(i = 0; isdigit(string[i]); i++)
  85. v += string[i] - '0';
  86.  
  87. /* Recursion necessary? */
  88. if(v >= 10)
  89. {
  90. char buf[32];
  91. snprintf(buf, sizeof buf, "%u", v);
  92. return digital_root(buf);
  93. }
  94. return v;
  95. }
  96.  
  97. int main(int argc, char *argv[])
  98. {
  99. int i;
  100.  
  101. for(i = 1; argv[i] != NULL; i++)
  102. printf("%s: %un", argv[i], digital_root(argv[i]));
  103. return EXIT_SUCCESS;
  104. }
  105.  
  106. (defun digital-root (x)
  107. (setf x (1+ (mod (- x 1) 9))))
  108.  
  109. @echo off
  110. setlocal enabledelayedexpansion
  111.  
  112. set /a number = %1
  113. set /a droot = 0
  114.  
  115. :loop
  116. rem Sum up digits
  117. if %number% leq 0 goto check
  118. set /a droot += !number! %% 10
  119. set /a number ^/= 10
  120. goto loop
  121.  
  122. :check
  123. rem Got a single-digit number?
  124. if %droot% leq 9 goto end
  125.  
  126. rem Do one more pass
  127. set /a number = droot
  128. set /a droot = 0
  129. goto loop
  130.  
  131. :end
  132. echo %droot%
  133.  
  134. @echo off
  135. setlocal enabledelayedexpansion
  136.  
  137. set /a number = %1
  138. set /a droot = 0
  139.  
  140. :loop
  141. if %number% leq 0 goto end
  142. set /a droot += !number! %% 10
  143. if !droot! gtr 9 set /a droot -= 9
  144. set /a number ^/= 10
  145. goto loop
  146.  
  147. :end
  148. echo %droot%
  149.  
  150. @set /a dr = (%1 - 1) %% 9 + 1
  151. @echo %dr%
  152.  
  153. >digitalroot.bat 42
  154. 6
  155. >digitalroot.bat 256
  156. 4
  157.  
  158. public static int DigitalRoot(this int source)
  159. {
  160. int result =
  161. source.ToString().ToCharArray().Sum(x => int.Parse(x.ToString()));
  162. return (result > 9) ? result.DigitalRoot() : result;
  163. }
  164.  
  165. def digitalRoot(n)
  166. s = n.to_i.to_s
  167. while (s.length > 1) do
  168. result = 0
  169. s.each do |d|
  170. result += d.to_i
  171. end
  172. s = result.to_i.to_s
  173. end
  174. return s.to_i
  175. end
  176.  
  177. def digitalRoot(n)
  178. return 1 + ((n.to_i - 1) % 9)
  179. end
  180.  
  181. int DigitalRoot(int number)
  182. {
  183. if ( number < 10) return number;
  184. else
  185. {
  186. int counter = 0; int h = 0;
  187. for (int f = 10; number / (f / 10) > 0; f *= 10)
  188. {
  189. counter += ((number % f) - h) / (f / 10);
  190. h = number % f;
  191. }
  192. return DigitalRoot(counter);
  193. }
  194. }
  195.  
  196. int DigitalRoot(int number)
  197. {
  198. return number % 9 == 0 ? 9 : number % 9;
  199. }
  200.  
  201. <?php
  202. function digitalRoot($num)
  203. {
  204. while($num > 9)
  205. {
  206. $num = array_sum(str_split($num));
  207. }
  208. return $num;
  209. }
  210. echo digitalRoot('65536');
  211. ?>
  212.  
  213. function getDigitalRoot($n)
  214. {
  215. // Don't forget to allow for 0
  216. return (($n%9) == 0 && ($n != 0) )? 9: $n%9;
  217. }
  218.  
  219. function getDigitalRoot($n)
  220. {
  221. while($n>9)
  222. {
  223. // Create array from the digits
  224. $vals = str_split($n);
  225. // Sum up the array. If it's not a single digit, we'll loop again
  226. $n = array_sum($vals);
  227. }
  228. return n;
  229. }
  230.  
  231. Input: 99
  232. Output: 9
  233.  
  234. Input: 102
  235. Output: 3
  236.  
  237. def digitalSum(n)
  238. return 1+((n-1)%9)
  239. end
  240.  
  241. def digitalRoot(n):
  242. sum = 0
  243. for d in str(n):
  244. sum += int(d)
  245. if sum > 9: sum -= 9
  246. return sum
  247.  
  248. def digitalRoot(n):
  249. return 0 if n==0 else 1+((n-1)%9)
  250.  
  251. sub digitalroot ( $number is copy ){
  252. while ($number > 9) {
  253. $number = [+] split( "", $number );
  254. }
  255. return $number;
  256. }
  257.  
  258. multi digitalroot ( $number where{ .perl >= 10 } ){
  259. return digitalroot( [+] split( "", $number ) );
  260. }
  261. multi digitalroot ( $number where{ .perl <= 9 } ){
  262. return $number;
  263. }
  264.  
  265. $n=($n%9??$n%9!!9);
Add Comment
Please, Sign In to add comment