A CLI tool that reads JSON from stdin then writes it to stdout in EDN format.
➜ clojure -A:native-image
open System | |
// Data types // | |
/// Describes an Address, its physical location, and the times it will be occupied. | |
[<StructuredFormatDisplay("{Name}")>] | |
type Address = { | |
Name: string | |
Street: string | |
City: string |
// A sequence of integers is defined as F(N) = F(N-1) * F(N-2), | |
// with F(0) = 1 and F(1) = 2. | |
// Write a function which, given N, prints N and F(N) | |
// f(2) = F(2-1) * F(2-2) = F(1) * F(0) = 2 * 1 = 2 | |
// f(3) = f(3-1) * f(3-2) = f(2) * f(1) = 2 * 2 = 4 | |
// f(4) = f(4-1) * f(4-2) = f(3) * f(2) = 4 * 2 = 8 | |
// f(5) = f(5-1) * f(5-2) = f(4) * f(3) = 8 * 4 = 32 | |
// f(6) = f(6-1) * f(6-2) = f(5) * f(4) = 32 * 8 = 256 | |
// recursive |
(ns playground.test | |
(:require [clojure.spec.alpha :as s] | |
[clojure.spec.gen.alpha :as sgen] | |
[clojure.spec.test.alpha :as stest] | |
[clojure.string :as cs] | |
[clojure.walk :as walk])) | |
(def op-keys #{:and :or}) | |
(s/def ::expression |
(defn parts | |
"Returns integer partitions for n." | |
([n] | |
(parts n n [] [])) | |
([n m acc prefix] | |
(if (= 0 n) | |
(conj acc prefix) | |
(reduce | |
(fn [st i] | |
(into st (parts (- n i) i acc (conj prefix i)))) |
(ns unicode.emoji | |
"Parses Unicode.org Emoji specifications." | |
(:require [clojure.java.io :as io] | |
[clojure.string :as cs])) | |
(defn slurp-lines | |
"Returns lines from unicode emoji file. Optionally reads file of same name | |
from resources." | |
[file & [resource?]] | |
(-> (if resource? |
{% if site.stackoverflow_username %} | |
<li> | |
<a href="https://stackoverflow.com/story/{{ site.stackoverflow_username }}"> | |
<span class="icon icon--stackoverflow"> | |
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" x="0px" y="0px" viewBox="0 0 120 120" style="enable-background:new 0 0 120 120;" xml:space="preserve"> | |
<polygon fill="#828282" points="84.4,93.8 84.4,70.6 92.1,70.6 92.1,101.5 22.6,101.5 22.6,70.6 30.3,70.6 30.3,93.8 "/> | |
<path fill="#828282" d="M38.8,68.4l37.8,7.9l1.6-7.6l-37.8-7.9L38.8,68.4z M43.8,50.4l35,16.3l3.2-7l-35-16.4L43.8,50.4z M53.5,33.2 l29.7,24.7l4.9-5.9L58.4,27.3L53.5,33.2z M72.7,14.9l-6.2,4.6l23,31l6.2-4.6L72.7,14.9z M38,86h38.6v-7.7H38V86z"/> | |
</svg> | |
</span> |
(defn query-lazy ;; adapted from https://stackoverflow.com/a/39775018 | |
[[sql & params] & {:as opts}] | |
(jdbc/with-db-transaction [tx (db/connection)] | |
(jdbc/query tx | |
(into [(jdbc/prepare-statement (:connection tx) sql {:fetch-size 100})] params) | |
opts))) |
(ns Player | |
(:require [clojure.pprint :refer [print-table pprint]] | |
[clojure.set :as set]) | |
(:gen-class)) | |
(defmacro debug [& body] `(binding [*out* *err*] (do ~@body))) | |
(def split-by (juxt filter remove)) | |
(defn read-map [ks] | |
(let [vs (repeatedly (count ks) read)] | |
(zipmap ks vs))) |
;; "human" date/time format parsing | |
(def human-time-parser | |
(insta/parser | |
"S = H (':' M)? ' '? P? (' ' Z)? | |
H = #'[1-9]' | #'1[0-2]' | |
M = #'0[0-9]' | #'[1-5][0-9]' | |
P = AM | PM | |
AM = 'A' 'M'? | |
PM = 'P' 'M'? |