aboutsummaryrefslogtreecommitdiff
path: root/challenge-261/deadmarshal/sml/ch1.sml
blob: 008daf234c5dc0acf25926f2310dc0fa45a11d13 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
fun element_digit_sum list =
    let fun flatten list =
	    let fun aux acc list =
		    case list of
			[] => acc
		      | []::t => aux acc t
		      | (x::y)::t => aux (x::acc) (y::t)
	    in
	      List.rev (aux [] list)
	    end
	fun number_to_list n =
	    List.map(fn s => valOf(Int.fromString s))
		    (List.map(fn d => str d)
			     ((String.explode o Int.toString) n))
	val nums = List.map number_to_list list
	val flats = flatten nums
    in
      abs((List.foldr op+ 0 flats) - (List.foldr op+ 0 list))
    end

val _ =
    print(Int.toString(element_digit_sum [1,2,3,45]) ^ "\n");
    print(Int.toString(element_digit_sum [1,12,3]) ^ "\n");
    print(Int.toString(element_digit_sum [1,2,3,4]) ^ "\n");
    print(Int.toString(element_digit_sum [236,416,336,350]) ^ "\n");