Skip to content

Instantly share code, notes, and snippets.

@chase-lambert
chase-lambert / generate_arrays.rs
Last active May 17, 2023 00:42
rendezvous with cassidoo challenge: 23.01.29
pub fn generate_arrays(n: i32) -> Vec<Vec<i32>> {
(1..=n).map(|x| (1..=x).collect()).collect()
}
#[test]
fn generate_arrays_test() {
assert_eq!(
generate_arrays(4),
vec![vec![1], vec![1, 2], vec![1, 2, 3], vec![1, 2, 3, 4]]
);
@chase-lambert
chase-lambert / generate_arrays.clj
Last active May 17, 2023 00:41
rendezvous with cassidoo challenge: 23.01.29
(ns generate-arrays
(:require [clojure.test :refer [deftest is]))
(defn generate-arrays [n]
(mapv #(vec (range 1 (inc %))) (range 1 (inc n))))
(deftest generate-arrays-test
(is (= (generate-arrays 4) [[1] [1 2] [1 2 3] [1 2 3 4]]))
(is (= (generate-arrays 1) [[1]])))
@chase-lambert
chase-lambert / num_balanced.clj
Last active May 17, 2023 00:41
rendezvous with cassidoo challenge: 23.02.20
(ns num-balanced
(:require [clojure.test :refer [deftest is]))
(defn paren-as-num [c]
(case c
\( 1
\) -1
0))
(defn num-balanced [s-of-parens]
@chase-lambert
chase-lambert / repeated_groups.clj
Last active May 15, 2024 18:14
rendezvous with cassidoo challenge: 23.02.26
(ns repeated-groups
(:require [clojure.test :refer [deftest is]))
(defn repeated-groups [nums]
(->> nums
(partition-by identity)
(filter #(> (count %) 1))
(into [])))
;; Using transducers instead which gives
@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))
@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 / 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 / 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 / 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 / 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?)