Skip to content

Instantly share code, notes, and snippets.

Avatar

nbogie

View GitHub Profile
@nbogie
nbogie / P99.scala
Created Aug 17, 2011
scala 99 solns poor
View P99.scala
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 Sep 7, 2011
poor soln h99 problems p28
View p28.hs
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 Sep 13, 2011
poor soln h99 problemss: p56 - symmetrical binary trees
View p56.hs
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
View badfnparser.hs
-- 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 Nov 2, 2011
Question on typeclasses: Can we make all instances of Enum and Bool instances of Generator?
View typeclass_question.hs
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 Jun 21, 2016
trim as regex in js
View trim.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 Jul 5, 2016
Attempted recreation of @anuteja 's problem.
View problem.component.ts
//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 Feb 13, 2017
applescript and js for midipipe to play/pause youtube video in chrome via a midi event.
View midipipe-youtube-midi-control.applescript
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 Feb 13, 2017
midipipe midi youtube playback controller applescript. This one maps a continuous controller's value to the playback speed.
View midipipe-youtube-midi-control-advanced.applescript
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 Feb 23, 2017
applescript (for midipipe) for MIDI control of VLC. Very basic due to VLC's limited applescript dictionary.
View midipipe-vlc-midi-control.applescript
#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
You can’t perform that action at this time.