September 19, 2018

Just Juxt #36: The Balance of N (4clojure #115)

Balanced Numbers

A balanced number is one whose component digits have the same sum on the left and right halves of the number.

Write a function which accepts an integer n, and returns true iff n is balanced.

(ns live.test
  (:require [cljs.test :refer-macros [deftest is testing run-tests]]))
  
(defn bal-num [n]
  (-> n
      str
      count
      (/ 2)
      ((juxt take take-last)
       (str n))
      (->> (map sort) (reduce =))))

(deftest bal-num-test
  (is (= true (bal-num 11)))
  (is (= true (bal-num 121)))
  (is (= false (bal-num 123)))
  (is (= true (bal-num 0)))
  (is (= false (bal-num 88099)))
  (is (= true (bal-num 89098)))
  (is (= true (bal-num 89089)))
  (is (= (take 20 (filter bal-num (range)))
         [0 1 2 3 4 5 6 7 8 9 11 22 33 44 55 66 77 88 99 101]))) 
  
(run-tests)
Tags: coding exercises KLIPSE 4clojure Cryogen juxt