Skip to content

Instantly share code, notes, and snippets.

Avatar

Mitchell Szczepanczyk msszczep

View GitHub Profile
@msszczep
msszczep / lton2.clj
Created May 15, 2018
letters->numbers in Clojure, Take 2
View lton2.clj
(defn l->n [input]
"Given a string and the sequence a = 1, b = 2, ... z = 26, compute the total for the string.
Get a bonus point if the sequence 'zachary' appears in the string."
(let [point-values (zipmap (map char "abcdefghijklmnopqrstuvwxyz")
(range 1 27))
bonus-point (if (re-find #"zachary" (clojure.string/lower-case input)) 1 0)]
(->> input
(map char)
(map point-values)
(cons bonus-point)
@msszczep
msszczep / wordbox.clj
Created May 13, 2018
Wordbox in Clojure
View wordbox.clj
(defn get-wordboxes [word]
"Given a word like 'cat', make all possible wordboxes in English. Here's an example wordbox:
CAT
O*E
GUN
Note that the words 'cog', 'ten' and 'gun' come from the word 'cat'.
The code below is too slow for words of four-letters-long or longer. I was hoping to make a full-fledged
@msszczep
msszczep / lton.clj
Created May 4, 2018
letters->numbers in Clojure
View lton.clj
(defn letters->numbers [letters]
(let [letter-map (zipmap (map char "abcdefghijklmnopqrstuvwxyz")
(range 1 27))]
(->> letters
(map char)
(map letter-map)
(reduce +))))
@msszczep
msszczep / p112.clj
Created Apr 8, 2018
In progress solutions for 4Clojure problem #112
View p112.clj
(defn p112-take1 [n d]
(letfn [(recast-to-vec [acc]
(let [num-left (count (re-seq #"\[" (apply str acc)))
num-right (count (re-seq #"\]" (apply str acc)))
updated-seq (concat acc (repeat (- num-left num-right) "]"))]
(read-string (apply str (interpose " " updated-seq)))))
(recast-to-int [s]
(Integer. (clojure.string/replace s #"[\]\[]" "")))]
(loop [acc-value 0
acc-structure []
@msszczep
msszczep / scramboni.clj
Last active Apr 1, 2018
Scramboni in Clojure
View scramboni.clj
(defn scramboni [rack]
"Find all playable words in a given Scrabble rack. Use asterisks for blanks."
(letfn [(every-but-n? [n pred coll]
(->> coll
(map (comp (fn [x] (if x :true :false)) pred))
frequencies
(merge {:false 0})
:false
(>= n)))]
(let [scrabble-words (->> "/home/mitchells/Desktop/npr_sunday_puzzle_solutions/resources/ospd3.txt"
@msszczep
msszczep / command_line_arguments.py
Last active Feb 1, 2018
Python Toolbox files (with some shell and Perl as well)
View command_line_arguments.py
import sys
text = sys.argv[1]
print text
@msszczep
msszczep / gist:08dda9b2f4e1cdad2c00
Last active Jan 6, 2018
Subanagram Generator Draft in Clojure
View gist:08dda9b2f4e1cdad2c00
(defn subanagram-generator [submitted-word]
(let [words (->> (slurp "/Users/msszczep1/Scripts/npr_puzzle_scripts/ni2.txt")
(clojure.string/split-lines))
submitted-word-freqs (merge
(zipmap "abcdefghijklmnopqrstuvwxyz" (repeat 26 0))
(frequencies (clojure.string/lower-case submitted-word)))]
(->> words
(filter (fn [word]
(let [lc-word (clojure.string/lower-case word)]
(every? #(<= ((frequencies lc-word) %)
View gist:7697906c593a8567f2e1fdd8b15f7b12
| Surround parens | M-shift-9 |
| slurp right | ctrl-shift-right_arrow |
| barf right | ctrl-shift-left_arrow |
| slurf left | ctrl-shift-9 |
@msszczep
msszczep / SubanagramGenerator.elm
Created Sep 4, 2017
Subanagram Generator in Elm
View SubanagramGenerator.elm
port module SubanagramGenerator exposing (..)
import Html exposing (..)
import Html.Attributes exposing (..)
import Html.Events exposing (..)
import Html.App as App
import String exposing (toLower, toList)
import Ni2Dictionary
import Char exposing (isLower)
import Dict exposing (Dict)
@msszczep
msszczep / faceoff.clj
Created Jun 10, 2017
Faceoff: America's favorite new card game -- in Clojure
View faceoff.clj
(ns faceoff.core)
;; Make deck of cards, shuffle
;; loop:
;; does a player have zero cards?
;; if yes: game over
;; if no: faceoff
;; determine winner, winner gets cards added
;; if tie:
;; does 1 player have < 5 cards