Created
November 6, 2014 20:05
-
-
Save film42/29e35440e96f051ee62a to your computer and use it in GitHub Desktop.
This file contains 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
(ns prime) | |
;; (coll, n) -> coll' | |
(defn- prime-check [coll n] | |
(empty? (filter #(zero? (mod n %)) coll))) | |
(defn is-prime? [n] | |
(loop [prime-list [] value 2] | |
(cond | |
;; Have the list, check for prime | |
(> value (Math/sqrt n)) (prime-check prime-list n) | |
;; Still building | |
(true? (prime-check prime-list value)) | |
(recur (conj prime-list value) (inc value)) | |
:else | |
(recur prime-list (inc value))))) | |
(defn dissoc-vec [coll idx] | |
(concat (subvec coll 0 idx) | |
(subvec coll (inc idx)))) | |
(defn product-except-index [coll] | |
(map #(reduce * (dissoc-vec coll %)) | |
(range (count coll)))) | |
(defn rep [num lst] | |
(doseq [i lst n (range num)] | |
(println i))) | |
((fn [delim lst] | |
(let [coll (vec lst)] | |
(loop [acc [] i 0] | |
(cond | |
(= i (count coll)) (doseq [x acc] (println x)) | |
(> delim (coll i)) (recur (conj acc (coll i)) (inc i)) | |
:esle (recur acc (inc i)))))) 25 [-41 46 -28 21 52 83 -29 84 27 40]) | |
((fn [lst] | |
(let [coll (vec lst) | |
odds (map #(coll %) | |
(filter odd? (range (count coll))))] | |
(doseq [i odds] (println i)))) [1 2 3 4 5 6]) | |
(defn factorial [n] | |
(reduce * (range 1 (inc n)))) | |
(defn pascals-triangle-pos [n r] | |
(let [n_fac (factorial n) | |
r_fac (factorial r)] | |
(/ n_fac (* r_fac (factorial (- n r)))))) | |
(defn pascals-square [k] | |
(doseq [i (range 1 (inc k))] | |
(let [tier (map #(pascals-triangle-pos (dec i) %) (range i))] | |
(println (clojure.string/join " " tier))))) | |
(pascals-square (Integer/parseInt (read-line))) | |
(defn string-group [str] | |
(let [coll (clojure.string/split str #"")] | |
(loop [acc [] part [] v coll] | |
(cond | |
(nil? (first v)) (if-not (empty? part) (conj acc part) acc) | |
(empty? part) (recur acc (conj part (first v)) (rest v)) | |
(= (first part) (first v)) (recur acc (conj part (first v)) (rest v)) | |
:else (recur (conj acc part) [(first v)] (rest v)))))) | |
(defn string-compress [s] | |
(let [grouped (string-group s)] | |
(println | |
(apply str (map #(str (first %) | |
(if (= 1 (count %)) "" (count %))) grouped))))) | |
(string-compress (read-line)) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment