Skip to content

Instantly share code, notes, and snippets.

@nbogie
nbogie / P99.scala
Created August 17, 2011 22:42
scala 99 solns poor
object P1 {
def sampleList() = List(1, 10, 100, 2, 20, 200, 5)
def last[A](xs: List[A]): A =
xs match {
case Nil => sys.error("last on empty list")
case x :: Nil => x
case x :: rest => last(rest)
}
@nbogie
nbogie / p28.hs
Created September 7, 2011 21:09
poor soln h99 problems p28
import Data.List (elemIndex, sortBy, group, sort)
import Data.Ord (comparing)
import Data.Maybe (fromJust)
main = print demo
demo = lsort ["", "ab3","r3","fg3","d3","ijk1","mn","1", "abcdef1"]
lsort :: (Ord a) => [[a]] -> [[a]]
lsort xs = sortBy (comparing lfreq) xs
where
@nbogie
nbogie / p56.hs
Created September 13, 2011 23:49
poor soln h99 problemss: p56 - symmetrical binary trees
main = print $ demo
demo = isSym tree1
-- test data
tree1 = (Branch 'x' (Branch 'x' Empty Empty) (Branch 'x' Empty Empty))
tree2 = (Branch 'x' (Branch 'x' Empty Empty) Empty)
data Tree = Branch Char Tree Tree | Empty
isSym :: Tree -> Bool
-- Naive attempt at functional parsing
-- (so there is lots of plumbing in each combinator)
--
-- NOTE: This is NOT a good example of haskell to learn from.
--
import qualified Data.Map as M
import Prelude hiding ( (>>=), (>>), return)
main = interact $ unlines . map runTest . tail . lines
@nbogie
nbogie / typeclass_question.hs
Created November 2, 2011 22:30
Question on typeclasses: Can we make all instances of Enum and Bool instances of Generator?
class Generator a where
generate :: [a]
data Media = Book | Video deriving (Enum, Bounded, Show)
data Category = Fiction | NonFiction deriving (Enum, Bounded, Show)
data Item = Item Media Category deriving (Show)
instance Generator Media where
generate = [minBound..maxBound]
@nbogie
nbogie / trim.js
Last active June 21, 2016 01:56
trim as regex in js
function trim(str){
return str.replace(/^\s*((?:.|\n)*?)\s*$/, "$1");
}
var testCases = [
[" a" , "a"],
["A " , "A"],
[" a " , "a"],
["a b! " , "a b!"],
@nbogie
nbogie / problem.component.ts
Last active July 5, 2016 23:59
Attempted recreation of @anuteja 's problem.
//Working towards a minimal demonstration of the problem.
//This currently works as expected :(
import { Component } from '@angular/core';
@Component({
moduleId: module.id,
selector: 'problem',
styles: [`
.original { color: green; }
.different { color: orange; }
`],
@nbogie
nbogie / midipipe-youtube-midi-control.applescript
Last active February 13, 2017 22:31
applescript and js for midipipe to play/pause youtube video in chrome via a midi event.
on runme(message)
tell application "Google Chrome"
if (item 1 of message = 191) then
# Play or pause a video.
repeat with t in tabs of windows
tell t
@nbogie
nbogie / midipipe-youtube-midi-control-advanced.applescript
Last active February 13, 2017 22:32
midipipe midi youtube playback controller applescript. This one maps a continuous controller's value to the playback speed.
on runme(message)
tell application "Google Chrome"
if (item 1 of message = 191) then
# Play or pause a video.
repeat with t in tabs of windows
tell t
@nbogie
nbogie / midipipe-vlc-midi-control.applescript
Last active February 23, 2017 08:07
applescript (for midipipe) for MIDI control of VLC. Very basic due to VLC's limited applescript dictionary.
#VLC is bad at being controlled by applescript.
# Consider instead using Transcribe! for studying videos - it offers lots of midi control.
#returns true if the message represents a positive change of
# the given controller number, as will happen when depressing buttons a midi keyb.
# We ignore messages with value bytes 0, as those are sent on button releases.
on isMidiButtonPressed(msg, controllerNumber)
return (isControlChange(msg, controllerNumber) and (item 3 of msg > 0))
end isMidiButtonPressed