Skip to content

Instantly share code, notes, and snippets.

@bobbicodes
Last active December 9, 2022 05:53
Show Gist options
  • Save bobbicodes/24866e520dd51371aa1c041475e8f26a to your computer and use it in GitHub Desktop.
Save bobbicodes/24866e520dd51371aa1c041475e8f26a to your computer and use it in GitHub Desktop.
Finding common approaches with the Exercism Clojure Representer
;; Representer: https://github.com/exercism/clojure-representer/blob/main/src/clojure_representer/main.clj
(let [solution-representation
(map
#(slurp (str "resources/armstrong_numbers/"
% "/src/expected-representation.txt"))
(range 500))
solution-code
(map
#(slurp (str "resources/armstrong_numbers/"
% "/src/armstrong_numbers.clj"))
(range 500))
frequencies (frequencies solution-representation)]
(take 10
(reverse (sort-by :times-used
(for [n (range 500)]
{:solution-number n
:solution-code (read-code (nth solution-code n))
:solution-representation (nth solution-representation n)
:times-used (get frequencies (nth solution-representation n) frequencies)})))))
;; Output:
({:solution-number 426,
:solution-code
(do
(ns armstrong-numbers)
(defn
armstrong?
[nunber]
(->>
(str nunber)
seq
(map str)
(map read-string)
(map (fn* [p1__15725#] (reduce * (repeat (count (str nunber)) p1__15725#))))
(reduce +)
(= nunber)))),
:solution-representation
"(do\n (do\n (clojure.core/in-ns 'armstrong-numbers)\n ((fn*\n PLACEHOLDER-0\n ([]\n (do\n (clojure.lang.Var/pushThreadBindings\n #:clojure.lang.Compiler{LOADER\n (.getClassLoader\n (.getClass PLACEHOLDER-0))})\n (try\n (clojure.core/refer 'clojure.core)\n (finally (clojure.lang.Var/popThreadBindings)))))))\n (if\n (.equals 'armstrong-numbers 'clojure.core)\n nil\n (do\n (clojure.lang.LockingTransaction/runInTransaction\n (fn*\n ([]\n (clojure.core/commute\n @#'clojure.core/*loaded-libs*\n clojure.core/conj\n 'armstrong-numbers))))\n nil)))\n (def\n PLACEHOLDER-1\n (fn*\n ([PLACEHOLDER-1]\n (clojure.lang.Util/equiv\n PLACEHOLDER-1\n (reduce\n +\n (map\n (fn*\n ([PLACEHOLDER-1]\n (reduce\n *\n (repeat\n (clojure.lang.RT/count (str PLACEHOLDER-1))\n PLACEHOLDER-1))))\n (map read-string (map str (seq (str PLACEHOLDER-1)))))))))))\n",
:times-used 9}
{:solution-number 398,
:solution-code
(do
(ns armstrong-numbers)
(defn
armstrong?
[num]
(->>
(str num)
(seq)
(map str)
(map read-string)
(map (fn* [p1__15690#] (reduce * (repeat (count (str num)) p1__15690#))))
(reduce +)
(= num)))),
:solution-representation
"(do\n (do\n (clojure.core/in-ns 'armstrong-numbers)\n ((fn*\n PLACEHOLDER-0\n ([]\n (do\n (clojure.lang.Var/pushThreadBindings\n #:clojure.lang.Compiler{LOADER\n (.getClassLoader\n (.getClass PLACEHOLDER-0))})\n (try\n (clojure.core/refer 'clojure.core)\n (finally (clojure.lang.Var/popThreadBindings)))))))\n (if\n (.equals 'armstrong-numbers 'clojure.core)\n nil\n (do\n (clojure.lang.LockingTransaction/runInTransaction\n (fn*\n ([]\n (clojure.core/commute\n @#'clojure.core/*loaded-libs*\n clojure.core/conj\n 'armstrong-numbers))))\n nil)))\n (def\n PLACEHOLDER-1\n (fn*\n ([PLACEHOLDER-1]\n (clojure.lang.Util/equiv\n PLACEHOLDER-1\n (reduce\n +\n (map\n (fn*\n ([PLACEHOLDER-1]\n (reduce\n *\n (repeat\n (clojure.lang.RT/count (str PLACEHOLDER-1))\n PLACEHOLDER-1))))\n (map read-string (map str (seq (str PLACEHOLDER-1)))))))))))\n",
:times-used 9}
{:solution-number 375,
:solution-code
(do
(ns armstrong-numbers)
(defn
armstrong?
[num]
(->>
num
(str)
(seq)
(map str)
(map read-string)
(map (fn* [p1__15668#] (reduce * (repeat (count (str num)) p1__15668#))))
(reduce +)
(= num)))),
:solution-representation
"(do\n (do\n (clojure.core/in-ns 'armstrong-numbers)\n ((fn*\n PLACEHOLDER-0\n ([]\n (do\n (clojure.lang.Var/pushThreadBindings\n #:clojure.lang.Compiler{LOADER\n (.getClassLoader\n (.getClass PLACEHOLDER-0))})\n (try\n (clojure.core/refer 'clojure.core)\n (finally (clojure.lang.Var/popThreadBindings)))))))\n (if\n (.equals 'armstrong-numbers 'clojure.core)\n nil\n (do\n (clojure.lang.LockingTransaction/runInTransaction\n (fn*\n ([]\n (clojure.core/commute\n @#'clojure.core/*loaded-libs*\n clojure.core/conj\n 'armstrong-numbers))))\n nil)))\n (def\n PLACEHOLDER-1\n (fn*\n ([PLACEHOLDER-1]\n (clojure.lang.Util/equiv\n PLACEHOLDER-1\n (reduce\n +\n (map\n (fn*\n ([PLACEHOLDER-1]\n (reduce\n *\n (repeat\n (clojure.lang.RT/count (str PLACEHOLDER-1))\n PLACEHOLDER-1))))\n (map read-string (map str (seq (str PLACEHOLDER-1)))))))))))\n",
:times-used 9}
{:solution-number 364,
:solution-code
(do
(ns armstrong-numbers)
(defn
armstrong?
[n]
(->>
(str n)
seq
(map str)
(map read-string)
(map (fn* [p1__15657#] (reduce * (repeat (count (str n)) p1__15657#))))
(reduce +)
(= n)))),
:solution-representation
"(do\n (do\n (clojure.core/in-ns 'armstrong-numbers)\n ((fn*\n PLACEHOLDER-0\n ([]\n (do\n (clojure.lang.Var/pushThreadBindings\n #:clojure.lang.Compiler{LOADER\n (.getClassLoader\n (.getClass PLACEHOLDER-0))})\n (try\n (clojure.core/refer 'clojure.core)\n (finally (clojure.lang.Var/popThreadBindings)))))))\n (if\n (.equals 'armstrong-numbers 'clojure.core)\n nil\n (do\n (clojure.lang.LockingTransaction/runInTransaction\n (fn*\n ([]\n (clojure.core/commute\n @#'clojure.core/*loaded-libs*\n clojure.core/conj\n 'armstrong-numbers))))\n nil)))\n (def\n PLACEHOLDER-1\n (fn*\n ([PLACEHOLDER-1]\n (clojure.lang.Util/equiv\n PLACEHOLDER-1\n (reduce\n +\n (map\n (fn*\n ([PLACEHOLDER-1]\n (reduce\n *\n (repeat\n (clojure.lang.RT/count (str PLACEHOLDER-1))\n PLACEHOLDER-1))))\n (map read-string (map str (seq (str PLACEHOLDER-1)))))))))))\n",
:times-used 9}
{:solution-number 287,
:solution-code
(do
(ns armstrong-numbers)
(defn
armstrong?
[num]
(->>
(str num)
seq
(map str)
(map read-string)
(map (fn* [p1__15598#] (reduce * (repeat (count (str num)) p1__15598#))))
(reduce +)
(= num)))),
:solution-representation
"(do\n (do\n (clojure.core/in-ns 'armstrong-numbers)\n ((fn*\n PLACEHOLDER-0\n ([]\n (do\n (clojure.lang.Var/pushThreadBindings\n #:clojure.lang.Compiler{LOADER\n (.getClassLoader\n (.getClass PLACEHOLDER-0))})\n (try\n (clojure.core/refer 'clojure.core)\n (finally (clojure.lang.Var/popThreadBindings)))))))\n (if\n (.equals 'armstrong-numbers 'clojure.core)\n nil\n (do\n (clojure.lang.LockingTransaction/runInTransaction\n (fn*\n ([]\n (clojure.core/commute\n @#'clojure.core/*loaded-libs*\n clojure.core/conj\n 'armstrong-numbers))))\n nil)))\n (def\n PLACEHOLDER-1\n (fn*\n ([PLACEHOLDER-1]\n (clojure.lang.Util/equiv\n PLACEHOLDER-1\n (reduce\n +\n (map\n (fn*\n ([PLACEHOLDER-1]\n (reduce\n *\n (repeat\n (clojure.lang.RT/count (str PLACEHOLDER-1))\n PLACEHOLDER-1))))\n (map read-string (map str (seq (str PLACEHOLDER-1)))))))))))\n",
:times-used 9}
{:solution-number 265,
:solution-code
(do
(ns armstrong-numbers)
(defn
armstrong?
[num]
(->>
(str num)
seq
(map str)
(map read-string)
(map (fn* [p1__15572#] (reduce * (repeat (count (str num)) p1__15572#))))
(reduce +)
(= num)))),
:solution-representation
"(do\n (do\n (clojure.core/in-ns 'armstrong-numbers)\n ((fn*\n PLACEHOLDER-0\n ([]\n (do\n (clojure.lang.Var/pushThreadBindings\n #:clojure.lang.Compiler{LOADER\n (.getClassLoader\n (.getClass PLACEHOLDER-0))})\n (try\n (clojure.core/refer 'clojure.core)\n (finally (clojure.lang.Var/popThreadBindings)))))))\n (if\n (.equals 'armstrong-numbers 'clojure.core)\n nil\n (do\n (clojure.lang.LockingTransaction/runInTransaction\n (fn*\n ([]\n (clojure.core/commute\n @#'clojure.core/*loaded-libs*\n clojure.core/conj\n 'armstrong-numbers))))\n nil)))\n (def\n PLACEHOLDER-1\n (fn*\n ([PLACEHOLDER-1]\n (clojure.lang.Util/equiv\n PLACEHOLDER-1\n (reduce\n +\n (map\n (fn*\n ([PLACEHOLDER-1]\n (reduce\n *\n (repeat\n (clojure.lang.RT/count (str PLACEHOLDER-1))\n PLACEHOLDER-1))))\n (map read-string (map str (seq (str PLACEHOLDER-1)))))))))))\n",
:times-used 9}
{:solution-number 264,
:solution-code
(do
(ns armstrong-numbers)
(defn
armstrong?
[n]
(->>
(str n)
seq
(map str)
(map read-string)
(map (fn* [p1__15570#] (reduce * (repeat (count (str n)) p1__15570#))))
(reduce +)
(= n)))),
:solution-representation
"(do\n (do\n (clojure.core/in-ns 'armstrong-numbers)\n ((fn*\n PLACEHOLDER-0\n ([]\n (do\n (clojure.lang.Var/pushThreadBindings\n #:clojure.lang.Compiler{LOADER\n (.getClassLoader\n (.getClass PLACEHOLDER-0))})\n (try\n (clojure.core/refer 'clojure.core)\n (finally (clojure.lang.Var/popThreadBindings)))))))\n (if\n (.equals 'armstrong-numbers 'clojure.core)\n nil\n (do\n (clojure.lang.LockingTransaction/runInTransaction\n (fn*\n ([]\n (clojure.core/commute\n @#'clojure.core/*loaded-libs*\n clojure.core/conj\n 'armstrong-numbers))))\n nil)))\n (def\n PLACEHOLDER-1\n (fn*\n ([PLACEHOLDER-1]\n (clojure.lang.Util/equiv\n PLACEHOLDER-1\n (reduce\n +\n (map\n (fn*\n ([PLACEHOLDER-1]\n (reduce\n *\n (repeat\n (clojure.lang.RT/count (str PLACEHOLDER-1))\n PLACEHOLDER-1))))\n (map read-string (map str (seq (str PLACEHOLDER-1)))))))))))\n",
:times-used 9}
{:solution-number 254,
:solution-code
(do
(ns armstrong-numbers)
(defn
armstrong?
[n]
(->>
(str n)
seq
(map str)
(map read-string)
(map (fn* [p1__15564#] (reduce * (repeat (count (str n)) p1__15564#))))
(reduce +)
(= n)))),
:solution-representation
"(do\n (do\n (clojure.core/in-ns 'armstrong-numbers)\n ((fn*\n PLACEHOLDER-0\n ([]\n (do\n (clojure.lang.Var/pushThreadBindings\n #:clojure.lang.Compiler{LOADER\n (.getClassLoader\n (.getClass PLACEHOLDER-0))})\n (try\n (clojure.core/refer 'clojure.core)\n (finally (clojure.lang.Var/popThreadBindings)))))))\n (if\n (.equals 'armstrong-numbers 'clojure.core)\n nil\n (do\n (clojure.lang.LockingTransaction/runInTransaction\n (fn*\n ([]\n (clojure.core/commute\n @#'clojure.core/*loaded-libs*\n clojure.core/conj\n 'armstrong-numbers))))\n nil)))\n (def\n PLACEHOLDER-1\n (fn*\n ([PLACEHOLDER-1]\n (clojure.lang.Util/equiv\n PLACEHOLDER-1\n (reduce\n +\n (map\n (fn*\n ([PLACEHOLDER-1]\n (reduce\n *\n (repeat\n (clojure.lang.RT/count (str PLACEHOLDER-1))\n PLACEHOLDER-1))))\n (map read-string (map str (seq (str PLACEHOLDER-1)))))))))))\n",
:times-used 9}
{:solution-number 137,
:solution-code
(do
(ns armstrong-numbers)
(defn
armstrong?
[number]
"checks if given number is an armstrong number"
(->>
(str number)
seq
(map str)
(map read-string)
(map (fn* [p1__15478#] (reduce * (repeat (count (str number)) p1__15478#))))
(reduce +)
(= number)))),
:solution-representation
"(do\n (do\n (clojure.core/in-ns 'armstrong-numbers)\n ((fn*\n PLACEHOLDER-0\n ([]\n (do\n (clojure.lang.Var/pushThreadBindings\n #:clojure.lang.Compiler{LOADER\n (.getClassLoader\n (.getClass PLACEHOLDER-0))})\n (try\n (clojure.core/refer 'clojure.core)\n (finally (clojure.lang.Var/popThreadBindings)))))))\n (if\n (.equals 'armstrong-numbers 'clojure.core)\n nil\n (do\n (clojure.lang.LockingTransaction/runInTransaction\n (fn*\n ([]\n (clojure.core/commute\n @#'clojure.core/*loaded-libs*\n clojure.core/conj\n 'armstrong-numbers))))\n nil)))\n (def\n PLACEHOLDER-1\n (fn*\n ([PLACEHOLDER-1]\n (clojure.lang.Util/equiv\n PLACEHOLDER-1\n (reduce\n +\n (map\n (fn*\n ([PLACEHOLDER-1]\n (reduce\n *\n (repeat\n (clojure.lang.RT/count (str PLACEHOLDER-1))\n PLACEHOLDER-1))))\n (map read-string (map str (seq (str PLACEHOLDER-1)))))))))))\n",
:times-used 9}
{:solution-number 438,
:solution-code
(do
(ns armstrong-numbers)
(defn digits [n] (->> n str (map (comp read-string str))))
(defn exp [x n] (reduce * (repeat n x)))
(defn exp-digits [n] (let [digits (digits n) count (count digits)] (map (fn [digit] (exp digit count)) digits)))
(defn armstrong? [n] (->> (exp-digits n) (reduce +) (= n)))),
:solution-representation
"(do\n (do\n (clojure.core/in-ns 'armstrong-numbers)\n ((fn*\n PLACEHOLDER-0\n ([]\n (do\n (clojure.lang.Var/pushThreadBindings\n #:clojure.lang.Compiler{LOADER\n (.getClassLoader\n (.getClass PLACEHOLDER-0))})\n (try\n (clojure.core/refer 'clojure.core)\n (finally (clojure.lang.Var/popThreadBindings)))))))\n (if\n (.equals 'armstrong-numbers 'clojure.core)\n nil\n (do\n (clojure.lang.LockingTransaction/runInTransaction\n (fn*\n ([]\n (clojure.core/commute\n @#'clojure.core/*loaded-libs*\n clojure.core/conj\n 'armstrong-numbers))))\n nil)))\n (def\n PLACEHOLDER-1\n (fn*\n ([PLACEHOLDER-1] (map (comp read-string str) (str PLACEHOLDER-1)))))\n (def\n PLACEHOLDER-2\n (fn*\n ([PLACEHOLDER-3 PLACEHOLDER-3]\n (reduce * (repeat PLACEHOLDER-3 PLACEHOLDER-3)))))\n (def\n PLACEHOLDER-5\n (fn*\n ([PLACEHOLDER-5]\n (let*\n [PLACEHOLDER-5\n (PLACEHOLDER-1 PLACEHOLDER-5)\n PLACEHOLDER-7\n (clojure.lang.RT/count PLACEHOLDER-5)]\n (map\n (fn*\n ([PLACEHOLDER-8] (PLACEHOLDER-2 PLACEHOLDER-8 PLACEHOLDER-7)))\n PLACEHOLDER-5)))))\n (def\n PLACEHOLDER-10\n (fn*\n ([PLACEHOLDER-10]\n (clojure.lang.Util/equiv\n PLACEHOLDER-10\n (reduce + (PLACEHOLDER-5 PLACEHOLDER-10)))))))\n",
:times-used 4})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment