Skip to content

Instantly share code, notes, and snippets.

@chase-lambert
chase-lambert / separate_and_sort.clj
Created September 12, 2023 17:39
rendezvous with cassidoo challenge: 23-09-11
(ns separate-and-sort
(:require [clojure.test :refer [deftest is]]))
(defn separate-and-sort [nums]
(let [nums (sort (remove zero? nums))]
(reduce (fn [[evens odds] n]
(if (even? n)
[(conj evens n) odds]
[evens (conj odds n)]))
[[] []]
@chase-lambert
chase-lambert / min_subs.clj
Created September 4, 2023 22:06
rendezvous with cassidoo challenge: 23-09-04
(ns min-subs
(:require [clojure.test :refer [deftest is]]))
(defn min-subs [nums k]
(let [subarrays (partition k 1 nums)]
(reduce (fn [min-array next-array]
(let [[sum-a sum-b]
(map (partial apply +) [min-array next-array])]
(if (< sum-a sum-b)
min-array
@chase-lambert
chase-lambert / faulty_keeb.clj
Last active August 17, 2023 03:34
rendezvous with cassidoo challenge: 23-08-13
(ns faulty-keeb
(:require [clojure.test :refer [deftest is]]))
(defn faulty-keeb [s]
(let [vowels #{\a \e \i \o \u \A \E \I \O \U}
vowel? (fn [c] (vowels c))]
(reduce (fn [acc c]
(if (vowel? c)
(apply str (reverse acc))
(str acc c)))
@chase-lambert
chase-lambert / maximum_profit.clj
Last active July 28, 2023 17:29
rendezvous with cassidoo challenge: 23-07-23
(ns maximum-profit
(:require [clojure.test :refer [deftest is]))
(defn maximum-profit [prices]
(loop [n (first prices)
xs (rest prices)
acc []]
(if (seq xs)
(let [max-profit (apply max
(map #(- % n) xs))]
@chase-lambert
chase-lambert / explode_string.clj
Last active July 20, 2023 15:52
rendezvous with cassidoo challenge: 23-07-16
(ns explode-string
(:require
[clojure.string :as string]
[clojure.test :refer [deftest is]))
(defn explode-string [s]
(->> (group-by identity s)
vals
(map (partial apply str))
(remove string/blank?)
@chase-lambert
chase-lambert / binary_pal.rs
Created May 17, 2023 00:37
rendezvous with cassidoo challenge: 23.05.14
pub fn binary_pal(n: i32) -> bool {
let s = format!("{n:b}");
s == s.chars().rev().collect::<String>()
}
#[test]
fn binary_pal_test() {
assert_eq!(binary_pal(5), true);
assert_eq!(binary_pal(10), false);
@chase-lambert
chase-lambert / roll_dice.clj
Last active May 17, 2023 00:41
rendezvous with cassidoo challenge: 23.03.27
(ns roll-dice
(:require
[clojure.string :as string]
[clojure.test :refer [deftest is]))
(defn roll-dice [dice-str]
(let [roll-die (fn [die-size]
(inc (rand-int die-size)))]
(->> (string/split dice-str #"\+") ;; ["1d8" "2d10"]
(map #(string/split % #"d")) ;; (["1" "8"] ["2" "10"])
@chase-lambert
chase-lambert / scramble.clj
Last active May 17, 2023 00:41
rendezvous with cassidoo challenge: 23.03.05
(ns scramble
(:require [clojure.string :as string]))
(defn scramble-word [w]
(let [middle-letters (subs w 1 (dec (count w)))
mixed-middle (shuffle (seq middle-letters))]
(str (first w) (apply str mixed-middle) (last w))))
(defn scramble [s]
(string/join " "
@chase-lambert
chase-lambert / chatgpt-cli.clj
Last active June 7, 2023 08:35
chatGPT API cli
#!/usr/bin/env bb
;; You need to have an OpenAI API key and set it like:
;; export OPENAI_API_KEY=<your key> in your .bashrc
;;
;; Make sure you have babashka installed
;; https://github.com/babashka/babashka#installation
;;
;; One way to run this is to install bbin
;; https://github.com/babashka/bbin
@chase-lambert
chase-lambert / area.clj
Last active March 3, 2023 03:26
random nerd snipe messing around
(ns area
(:require
[clojure.math :as math]
[criterium.core :as crit]))
(defmulti area :shape)
(defmethod area :square [{:keys [side]}]
(* side side))