Last active
December 9, 2022 05:53
-
-
Save bobbicodes/24866e520dd51371aa1c041475e8f26a to your computer and use it in GitHub Desktop.
Finding common approaches with the Exercism Clojure Representer
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
;; 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